{"_id":"@akepka/pi-cursor-cli-provider","_rev":"6-2c1e5e3df01015e084cf05ddfb9067ca","name":"@akepka/pi-cursor-cli-provider","dist-tags":{"latest":"0.10.1"},"versions":{"0.9.0":{"name":"@akepka/pi-cursor-cli-provider","version":"0.9.0","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"author":{"name":"Adrian Kepka"},"license":"MIT","_id":"@akepka/pi-cursor-cli-provider@0.9.0","maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"8304a8269ac56567f55b5ec3be2f7d54c138013f","tarball":"https://registry.npmjs.org/@akepka/pi-cursor-cli-provider/-/pi-cursor-cli-provider-0.9.0.tgz","fileCount":8,"integrity":"sha512-1uQC2HTWk9P3NmgU378pxDKwDOM+pymqrJb5zVf/ug3UmxHwSPL0cVAo16tBfPelY8H0cLAUA5n9V0GLwm6hHg==","signatures":[{"sig":"MEQCIFacFbS6SJ2hJ1BpUQqrHQ79MUEFfwUSFz7RlhC+KFC6AiBjuNnOn/Wq70iJtvbS8qnTsdfUyKFvQRQd4twXAEWWAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":369613},"type":"module","engines":{"node":">=20"},"gitHead":"5effff3b9d5471152d47c1b2ad40ddb38925d7b1","scripts":{"lint":"npx biome check","format":"npx biome check --write","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"akepka","email":"strus155@gmail.com"},"repository":{"url":"git+https://github.com/Strus/pi-cursor-cli-provider.git","type":"git"},"_npmVersion":"11.6.2","description":"Cursor CLI provider extension for Pi","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.13"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-cursor-cli-provider_0.9.0_1777209643414_0.2654162753401377","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@akepka/pi-cursor-cli-provider","version":"0.9.1","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"author":{"name":"Adrian Kepka"},"license":"MIT","_id":"@akepka/pi-cursor-cli-provider@0.9.1","maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"c39cdb3973a41803f5d832098c9e48378d5fcd37","tarball":"https://registry.npmjs.org/@akepka/pi-cursor-cli-provider/-/pi-cursor-cli-provider-0.9.1.tgz","fileCount":8,"integrity":"sha512-6inRj0+mYXdJOQRtIvYxTXPJ1D4IKLiat/RH8i6QGHYht0DSbdoVWuZpV8pllHADUvlu/u8GTldCIYJ/q45Pfg==","signatures":[{"sig":"MEYCIQCav8MawCGRqsDegVV7gx4q6NUVtIovBhoAZC/rKXURCAIhAOfwUsNs2OCo6aRrdQvtNaoBc9E12EW4W2EroZi19KLF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":369613},"type":"module","engines":{"node":">=20"},"gitHead":"5effff3b9d5471152d47c1b2ad40ddb38925d7b1","scripts":{"lint":"npx biome check","format":"npx biome check --write","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"akepka","email":"strus155@gmail.com"},"repository":{"url":"git+https://github.com/Strus/pi-cursor-cli-provider.git","type":"git"},"_npmVersion":"11.6.2","description":"Cursor CLI provider extension for Pi","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.13"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-cursor-cli-provider_0.9.1_1777210232969_0.858755023152139","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@akepka/pi-cursor-cli-provider","version":"0.9.2","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"author":{"name":"Adrian Kepka"},"license":"MIT","_id":"@akepka/pi-cursor-cli-provider@0.9.2","maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d3cf515f52b783af4aaa44fc040514ecce548b26","tarball":"https://registry.npmjs.org/@akepka/pi-cursor-cli-provider/-/pi-cursor-cli-provider-0.9.2.tgz","fileCount":8,"integrity":"sha512-kUrLTALrlRdWJIFBLP1d36ndnz9U5N8srVRjDzy+PQVoxSbCmIfGbWMewwvridrLnSsWfxu15/uqYs1DDeBjdg==","signatures":[{"sig":"MEUCIHEF8SSCsVP+8e47EC1CL1faNtVTMcpzwk+qgDOKTfoHAiEAnXWjQY3FjyrwA5stqKov+RON1+nutatkN51pLbYC/iI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370201},"type":"module","engines":{"node":">=20"},"gitHead":"ba95862ce1f793092051a4eee84ecb528fc5a66b","scripts":{"lint":"npx biome check","format":"npx biome check --write","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"akepka","email":"strus155@gmail.com"},"repository":{"url":"git+https://github.com/Strus/pi-cursor-cli-provider.git","type":"git"},"_npmVersion":"11.6.2","description":"Cursor CLI provider extension for Pi","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.13"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-cursor-cli-provider_0.9.2_1777225630789_0.34517798872588523","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@akepka/pi-cursor-cli-provider","version":"0.9.3","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"author":{"name":"Adrian Kepka"},"license":"MIT","_id":"@akepka/pi-cursor-cli-provider@0.9.3","maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"9c0951000459eb2ee773296733c372d89025ebe0","tarball":"https://registry.npmjs.org/@akepka/pi-cursor-cli-provider/-/pi-cursor-cli-provider-0.9.3.tgz","fileCount":8,"integrity":"sha512-Bzio20VKy2PJYlanUwTFgX5cItiOOPJvPrbmubfb976bcOcVzk7rD1SuMOXMzDMq9iu0Dq2d2vNDl85hKw76tg==","signatures":[{"sig":"MEQCIHRxLYgS1czZl4I5jG/CR4erYpFv23yR2bc2XXxTh23CAiByf/WtBbj1quubhgud6aRilDE4NXKwJo6+MHXqXQK+4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370339},"type":"module","engines":{"node":">=20"},"gitHead":"520e16af1794ba0bf97a8fe84664e00a61e3266a","scripts":{"lint":"npx biome check","format":"npx biome check --write","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"akepka","email":"strus155@gmail.com"},"repository":{"url":"git+https://github.com/Strus/pi-cursor-cli-provider.git","type":"git"},"_npmVersion":"11.13.0","description":"Cursor CLI provider extension for Pi","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.13"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-cursor-cli-provider_0.9.3_1779370856458_0.5288720407026386","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@akepka/pi-cursor-cli-provider","version":"0.10.0","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"author":{"name":"Adrian Kepka"},"license":"MIT","_id":"@akepka/pi-cursor-cli-provider@0.10.0","maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"4904572e20234912930261d639624e552049f735","tarball":"https://registry.npmjs.org/@akepka/pi-cursor-cli-provider/-/pi-cursor-cli-provider-0.10.0.tgz","fileCount":10,"integrity":"sha512-elhpO4uDJxnG1wwcFnyofsysrbaHPb5QTHjEyi+5x7isHPBfYYTdUZXcC2oeb2c/MZ2uf4330QS6j5EHvnE12A==","signatures":[{"sig":"MEUCIQCSQgggTNjKEKauTlBQkfrznQ1w7RGfKoDUpAgh0xu8jgIgF2L7ZTDbm2b+akcRalmpMtROEKqA+txzczQRTna322U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402270},"type":"module","engines":{"node":">=20"},"gitHead":"90720b70dce266ea64370d7982391c40033d11aa","scripts":{"lint":"npx biome check","format":"npx biome check --write","typecheck":"npx tsc --noEmit"},"_npmUser":{"name":"akepka","email":"strus155@gmail.com"},"repository":{"url":"git+https://github.com/Strus/pi-cursor-cli-provider.git","type":"git"},"_npmVersion":"11.16.0","description":"Cursor CLI provider extension for Pi","directories":{},"_nodeVersion":"25.2.1","dependencies":{"typebox":"1.1.38","@earendil-works/pi-tui":"0.74.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@biomejs/biome":"^2.4.13"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-cursor-cli-provider_0.10.0_1781775663735_0.24272529869483805","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@akepka/pi-cursor-cli-provider","version":"0.10.1","description":"Cursor CLI provider extension for Pi","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"author":{"name":"Adrian Kepka"},"type":"module","license":"MIT","pi":{"extensions":["./src/index.ts"]},"engines":{"node":">=20"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"scripts":{"lint":"npx biome check","format":"npx biome check --write","typecheck":"npx tsc --noEmit"},"devDependencies":{"@biomejs/biome":"^2.4.13","@earendil-works/pi-ai":"0.79.1","@earendil-works/pi-coding-agent":"0.79.1","typescript":"^5.9.3"},"repository":{"type":"git","url":"git+https://github.com/Strus/pi-cursor-cli-provider.git"},"bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","dependencies":{"@earendil-works/pi-tui":"0.79.1","typebox":"1.1.38"},"gitHead":"de387eb5cfaa68ea84df6686d7a03616e3d6d6e7","_id":"@akepka/pi-cursor-cli-provider@0.10.1","_nodeVersion":"25.2.1","_npmVersion":"11.16.0","dist":{"integrity":"sha512-DPiZVsMLzMdaBQLdW0Imt/erHlbqCrFr/bG5w6aUvSaAwBMUIcdoKO1YfeIrRf45zQN+PFHkLbKaRgUwv2bUrA==","shasum":"339387913d3f0e68505b88b6f44448aa34b214da","tarball":"https://registry.npmjs.org/@akepka/pi-cursor-cli-provider/-/pi-cursor-cli-provider-0.10.1.tgz","fileCount":10,"unpackedSize":404122,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGlwmuQtAhg1MhkroSNujvDkxJGzr+G/Y9UOsTVrPNs1AiBfD/FtWI1rICU36Ar5TzCp8ir+gpslCKETa/PDjHQE/g=="}]},"_npmUser":{"name":"akepka","email":"strus155@gmail.com"},"directories":{},"maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-cursor-cli-provider_0.10.1_1781788429742_0.22421040806016967"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-26T13:20:43.199Z","modified":"2026-06-18T13:13:50.051Z","0.9.0":"2026-04-26T13:20:43.567Z","0.9.1":"2026-04-26T13:30:33.107Z","0.9.2":"2026-04-26T17:47:10.975Z","0.9.3":"2026-05-21T13:40:56.681Z","0.10.0":"2026-06-18T09:41:03.952Z","0.10.1":"2026-06-18T13:13:49.914Z"},"bugs":{"url":"https://github.com/Strus/pi-cursor-cli-provider/issues"},"author":{"name":"Adrian Kepka"},"license":"MIT","homepage":"https://github.com/Strus/pi-cursor-cli-provider#readme","keywords":["pi","pi-package","pi-coding-agent","extension","provider","cursor"],"repository":{"type":"git","url":"git+https://github.com/Strus/pi-cursor-cli-provider.git"},"description":"Cursor CLI provider extension for Pi","maintainers":[{"name":"akepka","email":"strus155@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"./header.jpeg\" alt=\"Pi x Cursor image\" width=\"400\" />\n</p>\n\n# pi-cursor-cli-provider\n\n<p align=\"left\">\n  <a href=\"https://www.npmjs.com/package/@akepka/pi-cursor-cli-provider\">\n    <img src=\"https://img.shields.io/npm/v/%40akepka%2Fpi-cursor-cli-provider\" alt=\"npm version\" />\n  </a>\n</p>\n\nA [Pi Coding Agent](https://github.com/badlogic/pi-mono) custom provider that routes model requests through the **Cursor\nCLI**, enabling you to use your Cursor subscription inside Pi.\n\nThis project is a heavily modified fork of [netandreus/pi-cursor-provider](https://github.com/netandreus/pi-cursor-provider).\n\n<p align=\"center\">\n    <a href=\"./screenshot.png\">\n      <img src=\"./screenshot.png\" alt=\"Terminal screenshot with extension output visible\" width=\"600\" />\n    </a>\n</p>\n\n# Motivation\n\n(if you don't feel like reading all this, go straight to [Installation](#installation))\n\nI spent a long time looking for a proper Cursor provider for Pi, but the ones that worked best were too \"hacky\" in my\nopinion - they used the reverse-engineered API to call Cursor endpoints directly, masquerading as the legitimate Cursor\nCLI. They also had various issues, such as not passing the system prompt properly.\n\nI also tried to write my own extension based on the [ACP protocol](https://agentcommunicationprotocol.dev/). I even got\nit to the point where I could use it with Cursor - but Cursor does not expose all models through ACP. And the ones it\ndoes expose are available in only one variant - for example, only with \"medium\" thinking. That makes this approach, in my\nopinion, unusable.\n\nAfter all that, I stumbled upon [netandreus/pi-cursor-provider](https://github.com/netandreus/pi-cursor-provider). It\nworked, and most importantly, it used the legitimate Cursor CLI without any hacks. But it was not super polished - tool\ncall rendering was basically just raw text, all session history was sent as a prompt on every turn, images were not\nsupported, etc. Still, the idea was cool, so I decided to build on top of it.\n\n# Installation\n\n### npm\n\n```bash\npi install npm:@akepka/pi-cursor-cli-provider\n```\n\n### git\n\n```bash\npi install git:github.com/Strus/pi-cursor-cli-provider\n```\n\nFor the extension to work, **you need to have [Cursor CLI](https://cursor.com/docs/cli/installation) installed and\nauthenticated**. Authentication can be done either with the `agent login` command or with a token generated from the\nCursor dashboard and set as the `CURSOR_API_KEY` environment variable. See the [Cursor CLI docs](https://cursor.com/docs/cli/reference/authentication) for more\ninformation.\n\n# Usage\n\nJust start Pi and everything should work. Models are auto-discovered on startup, so you can choose them with\n`/models` or `/scoped-models` as usual. Pi's thinking effort settings are mapped to Cursor model names - you choose the\nbase model name and set the thinking level with `shift-tab`, as you normally would.\n\n# How it works\n\nEach Pi turn spawns a Cursor Agent CLI subprocess. The first turn sends the full Pi transcript; later turns resume the\nsaved Cursor chat session and send only the newest user prompt:\n\n```bash\nagent --print --yolo --output-format stream-json --model <id> --trust --workspace <cwd> \"<full prompt>\"\n\n# later turns\nagent --print --yolo --output-format stream-json --model <id> --resume <session-id> --trust --workspace <cwd> \"<latest user prompt>\"\n```\n\nCursor session IDs are saved and associated with Pi session IDs. Thanks to that, even if you resume the Pi session, the\nprovider does not need to send the full conversation to Cursor CLI again, but can resume the Cursor session too.\n\nThe CLI's NDJSON stdout is read line by line, and its output is mapped, when possible, to Pi native rendering elements\n(for example, thinking blocks).\n\nCursor CLI supports images when you provide a file path to them, so images pasted into Pi are supported out of the box,\nas Pi provides the path to a temporary file when you paste an image. In non-interactive mode, if the prompt contains a\nblob of image data, that data is saved as a temporary file, and the path to that file is then passed to the Cursor CLI.\n\n# Installing and enabling MCP tools in Cursor Agent for Pi\n\nTo use Pi-related MCP tools (e.g. `pi-auto`) when the Cursor Agent runs on behalf of Pi, connect the MCP server, enable\nit for the agent, and allow its tools in the CLI config.\n\n### 1. Connect MCP server to agent\n\nAdd the server to `~/.cursor/mcp.json`. Example for `pi-auto`:\n\n```json\n{\n  \"mcpServers\": {\n      \"pi-auto\": {\n          \"command\": \"pi-auto-mcp\",\n          \"lifecycle\": \"keep-alive\",\n          \"directTools\": true\n      }\n  }\n}\n```\n\n### 2. Enable the MCP server\n\nList MCP servers; new ones need approval:\n\n```bash\nagent mcp list\n\n# Example output: pi-auto: not loaded (needs approval)\n```\n\nEnable and approve the server:\n\n```bash\nagent mcp enable pi-auto\n\n# Example output: ✓ Enabled and approved MCP server: pi-auto\n```\n\nVerify that the tools are available:\n\n```bash\nagent mcp list-tools pi-auto\n```\n\nExample output:\n\n```\nTools for pi-auto (8):\n- pi_get_priority ()\n- pi_get_provider (scope, projectPath)\n- pi_get_strategy ()\n- pi_get_usage (period)\n- pi_set_priority (priority)\n- pi_set_provider (provider, model, scope, projectPath)\n- pi_set_strategy (strategy)\n- pi_suggest_provider (period)\n```\n\n### 3. Allow tools from this MCP\n\nEnsure `~/.cursor/cli-config.json` allows the MCP tools. For example:\n\n```json\n\"permissions\": {\n  \"allow\": [ \"Shell(ls)\", \"Mcp(pi-auto:*)\" ],\n  \"deny\": []\n}\n```\n\n`Mcp(pi-auto:*)` lets the agent use any tool from the `pi-auto` server.\n\n# Possible improvements\n\n### Delegating tool calls to Pi\n\nI do not know if this would actually be an improvement, but it is an idea I saw in the\n[rchern/pi-claude-cli](https://github.com/rchern/pi-claude-cli/) extension: when the CLI outputs a tool call, you kill\nthe CLI, execute the tool call natively with Pi, and then resume the CLI session while providing the tool call results.\nThis would allow the use of Pi native tools instead of Cursor's built-in ones. I do not know, though, how well that would work in practice.\n\n# Limitations\n\n### Context/token counts are estimates\n\nCursor CLI does not report exact token/context usage at the end. The provider estimates usage from the serialized prompt\nand streamed Cursor output so Pi can still show an approximate context percentage.\n\n# Troubleshooting\n\n#### I don't see any Cursor models\n\nYour Cursor CLI executable (`agent`) was not found. Make sure you have it in `PATH`, or set the `CURSOR_AGENT_PATH` or\n`AGENT_PATH` environment variable to the path of the `agent` executable.\n\n# Alternatives\n\n- [pi-frontier/pi-cursor-agent](https://github.com/sudosubin/pi-frontier/tree/main/pi-cursor-agent) - most complete\nimplementation that uses the reverse-engineered API.\n\n# License\n\n```\nMIT License\n\nCopyright (c) 2026 Andrey\nCopyright (c) 2026 Adrian Kepka\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n","readmeFilename":"README.md"}