[
  {
    "path": ".devcontainer/Dockerfile",
    "content": "FROM mcr.microsoft.com/devcontainers/base:jammy\n\nARG PIXI_VERSION=v0.42.1\n\nRUN curl -L -o /usr/local/bin/pixi -fsSL --compressed \"https://github.com/prefix-dev/pixi/releases/download/${PIXI_VERSION}/pixi-$(uname -m)-unknown-linux-musl\" \\\n    && chmod +x /usr/local/bin/pixi \\\n    && pixi info\n\n# set some user and workdir settings to work nicely with vscode\nUSER vscode\nWORKDIR /home/vscode\n\nRUN echo 'eval \"$(pixi completion -s bash)\"' >> /home/vscode/.bashrc\n"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "{\n  \"name\": \"Jupyter Notebook\",\n  \"build\": {\n    \"dockerfile\": \"Dockerfile\",\n    \"context\": \"..\"\n  },\n  \"forwardPorts\": [8888],\n  \"customizations\": {\n    \"vscode\": {\n      \"settings\": {},\n      \"extensions\": [\"ms-python.python\", \"charliermarsh.ruff\", \"GitHub.copilot\"]\n    }\n  },\n  \"features\": {\n    \"ghcr.io/devcontainers/features/docker-in-docker:2\": {}\n  },\n  \"mounts\": [\n    \"source=${localWorkspaceFolderBasename}-pixi,target=${containerWorkspaceFolder}/.pixi,type=volume\"\n  ],\n  \"postCreateCommand\": \"sudo chown vscode .pixi && pixi install && pixi run develop && pixi run pre-commit install -f\"\n}\n"
  },
  {
    "path": ".git-blame-ignore-revs",
    "content": "# Run auto-formatters: https://github.com/jupyter/notebook/pull/6335\na7717d90f128368296fe3434deba5acd6031edab\n"
  },
  {
    "path": ".gitattributes",
    "content": "# SCM syntax highlighting & preventing 3-way merges\npixi.lock merge=binary linguist-language=YAML linguist-generated=true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: \"\\U0001F41B Bug report\"\nabout: Create a report to help us repair something that is currently broken\nlabels: bug, status:Needs Triage\n---\n\n<!-- Welcome! Thank you for contributing. These HTML comments will not render in the issue, but you can delete them once you've read them if you prefer! -->\n\n<!--\nRight now, you're opening an issue to report a bug in Jupyter Notebook.\n\nPlease answer the following questions for yourself before submitting an issue\n- [ ] I checked the documentation and found no answer\n- [ ] I checked to make sure that this issue has not already been filed\n- [ ] I'm reporting the issue to the correct repository\n\nIf you have further questions after reading below, please visit the Jupyter Notebook discourse channel (https://discourse.jupyter.org/) and submit your questions there. There are many more people in the Jupyter community that engage on that channel.\n\nNOTE:\nJupyter Notebook 6.x development is in maintenance-only mode. Bugs found in Notebook 6.x and that don't reproduce in Notebook 7.x may not get fixed.\n\nWork in this repository is focused on Jupyter Notebook 7.x, the former RetroLab project. The code base for Notebook 7.x is very different than Notebook 6.x. If you can, please try reproducing Notebook 6.x bugs with Notebook 7.x using the main branch of this repository.\n\nWe recommend that you check out JupyterLab (https://github.com/jupyterlab/jupyterlab), Jupyter's next generation Notebook interface.\n\nHere, we're looking for specific bugs in the Jupyter Notebook codebase. If you think you've identified such a bug, you can continue opening your issue here. We'd appreciate if you include as much detail as possible, such as links to the offending code, snapshots of the UI issue, code blocks with your console logs, etc.\n-->\n\n## Description\n\n<!--Describe the bug clearly and concisely. Include screenshots if possible-->\n\n## Reproduce\n\n<!--Describe step-by-step instructions to reproduce the behavior-->\n\n1. Go to '...'\n2. Click on '...'\n3. Scroll down to '...'\n4. See error '...'\n\n<!--Describe how you diagnosed the issue. See the guidelines at\nhttps://jupyter-notebook.readthedocs.io/en/latest/troubleshooting.html -->\n\n## Expected behavior\n\n<!--Describe what you expected to happen-->\n\n## Context\n\n<!--Complete the following for context, and add any other relevant context-->\n\n- Operating System and version: <!-- e.g. Linux Ubuntu 21.04 -->\n- Browser and version: <!-- e.g. Chrome 92 -->\n<!-- Please note the Notebook version you are working with. You can find this in the Help -> About Jupyter Notebook menu option or by running `jupyter --version` from your terminal -->\n- Jupyter Notebook version: <!-- e.g. 3.1.7 -->\n\n<!--The more content you provide, the more we can help!-->\n\n<details><summary>Troubleshoot Output</summary>\n<pre>\nPaste the output from running `jupyter troubleshoot` from the command line here.\nYou may want to sanitize the paths in the output.\n</pre>\n</details>\n\n<details><summary>Command Line Output</summary>\n<pre>\nPaste the output from your command line running `jupyter notebook` here, use `--debug` if possible.\n</pre>\n</details>\n\n<details><summary>Browser Output</summary>\n<!--See https://webmasters.stackexchange.com/a/77337 for how to access the JavaScript console-->\n<pre>\nPaste the output from your browser Javascript console here, if applicable.\n\n</pre>\n</details>\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Is this a common issue? See our Docs.\n    url: https://jupyter-notebook.readthedocs.io/en/latest/troubleshooting.html#what-to-do-when-things-go-wrong\n    about: Before opening an issue, make sure your issue hasn't already been addressed in the documentation.\n  - name: 🤔 Support and all other questions, including if you're not sure what to do.\n    url: https://discourse.jupyter.org/c/notebook/31\n    about: If you have a question or you're having issues installing Jupyter Notebook, try posting on Discourse.\n  - name: 💬 Chat with the devs\n    url: https://jupyter.zulipchat.com/\n    about: Ask short questions about using Jupyter Notebook\n  - name: 📝 Do you have a feature request that may be applied upstream? See JupyterLab.\n    url: https://github.com/jupyterlab/jupyterlab\n    about: We recommend that you cross-reference JupyterLab for information when requesting new features and support for Notebook 7. We won't likely accept new features for Jupyter Notebook 6.x.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: \"\\U0001F680 Feature Request\"\nabout: Suggest a new feature or a change\nlabels: enhancement, status:Needs Triage\n---\n\n<!-- Welcome! These HTML comments will not render in the issue, but you can delete them once you've read them if you prefer! -->\n\n<!--\nThanks for thinking of a way to improve Jupyter Notebook. If this solves a problem for you, then it probably solves that problem for lots of people! So the whole community will benefit from this request.\n\nNOTE: Please note that Jupyter Notebook 6.x development is in maintenance-only mode.\n\nFinally, please answer the following questions for yourself before submitting an issue.\n\n- [ ] I checked to make sure that this issue has not already been filed\n- [ ] I'm reporting the issue to the correct repository\n\n-->\n\n### Problem\n\n<!-- Provide a clear and concise description of what problem this feature will solve. For example:\n\n* I'm always frustrated when [...] because [...]\n* I would like it if [...] happened when I [...] because [...]\n-->\n\n### Proposed Solution\n\n<!-- Provide a clear and concise description of a way to accomplish what you want. For example:\n\n* Add an option so that when [...]  [...] will happen\n -->\n\n### Additional context\n\n<!-- Add any other context or screenshots about the feature request here. You can also include links to examples of other programs that have something similar to your request. For example:\n\n* Another project [...] solved this by [...]\n-->\n"
  },
  {
    "path": ".github/actions/build-dist/action.yml",
    "content": "name: 'Build Jupyter Notebook'\ndescription: 'Build Jupyter Notebook from source'\nruns:\n  using: 'composite'\n  steps:\n    - name: Base Setup\n      uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n    - name: Install dependencies\n      shell: bash\n      run: |\n        python -m pip install hatch\n\n    - name: Build pypi distributions\n      shell: bash\n      run: |\n        hatch build\n\n    - name: Build npm distributions\n      shell: bash\n      run: |\n        mkdir pkgs\n        hatch run npm_pack\n        cp packages/*/*.tgz pkgs\n\n    - name: Build checksum file\n      shell: bash\n      run: |\n        cd dist\n        sha256sum * | tee SHA256SUMS\n        cd ../pkgs\n        sha256sum * | tee SHA256SUMS\n\n    - name: Upload distributions\n      uses: actions/upload-artifact@v4\n      with:\n        name: notebook-dist-${{ github.run_number }}\n        path: ./dist\n\n    - name: Upload distributions\n      uses: actions/upload-artifact@v4\n      with:\n        name: notebook-pkgs-${{ github.run_number }}\n        path: ./pkgs\n"
  },
  {
    "path": ".github/answered.yml",
    "content": "# This action automatically schedules issues to be closed that have been\n# labeled as answered if there is no activity on them for 30 days. This takes\n# care of the common usecase of an issue being answered to the best of our\n# ability and no other follow-up from the submitter.\nname: 'Close answered issues'\non:\n  schedule:\n    - cron: '30 1 * * *'\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/stale@v3\n        with:\n          skip-stale-issue-message: true\n          days-before-stale: 30\n          days-before-close: 7\n          stale-issue-label: 'status:Closing as Answered'\n          only-issue-labels: 'status:Answered'\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: 'github-actions'\n    directory: '/'\n    schedule:\n      interval: 'weekly'\n    groups:\n      actions:\n        patterns:\n          - \"*\"\n  - package-ecosystem: 'pip'\n    directory: '/'\n    schedule:\n      interval: 'weekly'\n"
  },
  {
    "path": ".github/jupyterlab-probot.yml",
    "content": "addBinderLink: false\ntriageLabel: 'status:Needs Triage'\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "<!--\nThanks for contributing to Jupyter Notebook!\nPlease fill out the following items to submit a pull request.\nSee the contributing guidelines for more information:\nhttps://github.com/jupyter/notebook/blob/main/CONTRIBUTING.md\n-->\n\n## References\n\n<!-- Note issue numbers this pull request addresses (should be at least one, see contributing guidelines above). -->\n\n<!-- Note any other pull requests that address this issue and how this pull request is different. -->\n\n## Code changes\n\n<!-- Describe the code changes and how they address the issue. -->\n\n## User-facing changes\n\n<!-- Describe any visual or user interaction changes and how they address the issue. -->\n\n<!-- For visual changes, include before and after screenshots or GIF/mp4/other video demo here. -->\n\n## Backwards-incompatible changes\n\n<!-- Describe any backwards-incompatible changes to JupyterLab public APIs. -->\n"
  },
  {
    "path": ".github/workflows/auto_author_assign.yml",
    "content": "# https://github.com/marketplace/actions/auto-author-assign\nname: 'Auto Author Assign'\n\non:\n  pull_request_target:\n    types: [opened, reopened]\n\npermissions:\n  contents: read\n\njobs:\n  assign-author:\n    runs-on: ubuntu-latest\n    permissions:\n      pull-requests: write\n    steps:\n      - uses: toshimaru/auto-author-assign@v3.0.1\n"
  },
  {
    "path": ".github/workflows/binder.yml",
    "content": "name: Binder Badge\non:\n  pull_request_target:\n    types: [opened]\n\npermissions:\n  contents: read\n\njobs:\n  binder:\n    runs-on: ubuntu-latest\n    permissions:\n      pull-requests: write\n    steps:\n      - uses: jupyterlab/maintainer-tools/.github/actions/binder-link@v1\n        with:\n          github_token: ${{ secrets.github_token }}\n          url_path: tree\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build\n\non:\n  push:\n    branches: ['main']\n  pull_request:\n  schedule:\n    - cron: '0 0 * * *'\n\npermissions:\n  contents: read\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}\n  cancel-in-progress: true\n\nenv:\n  PIP_DISABLE_PIP_VERSION_CHECK: 1\n\ndefaults:\n  run:\n    shell: bash -eux {0}\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Build\n        uses: ./.github/actions/build-dist\n\n  test:\n    runs-on: ubuntu-latest\n    timeout-minutes: 20\n    strategy:\n      fail-fast: false\n      matrix:\n        # used by the jupyterlab/maintainer-tools base-setup action\n        python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Base Setup\n        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - name: Test the package\n        run: hatch run cov:test\n\n      - name: JavaScript tests\n        run: |\n          hatch run js_test\n\n      - name: Integration Tests\n        run: |\n          pip install .\n          cd\n          jupyter labextension list 2>&1 | grep -ie \"@jupyter-notebook/lab-extension.*enabled.*ok\" -\n          jupyter server extension list 2>&1 | grep -ie \"notebook.*enabled\" -\n          python -m jupyterlab.browser_check\n\n      - uses: jupyterlab/maintainer-tools/.github/actions/upload-coverage@v1\n\n  coverage:\n    runs-on: ubuntu-latest\n    needs:\n      - test\n    steps:\n      - uses: actions/checkout@v6\n      - uses: jupyterlab/maintainer-tools/.github/actions/report-coverage@v1\n        with:\n          fail_under: 78\n\n  test_docs:\n    name: Test Docs\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n      - run: |\n          sudo apt-get update\n          sudo apt install enchant-2  # for spelling\n\n          # pandoc is not up to date in the ubuntu repos, so we install directly\n          wget https://github.com/jgm/pandoc/releases/download/2.14.2/pandoc-2.14.2-1-amd64.deb && sudo dpkg -i pandoc-2.14.2-1-amd64.deb\n      - run: hatch run docs:build\n\n  test_minimum_versions:\n    name: Test Minimum Versions\n    timeout-minutes: 20\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n        with:\n          dependency_type: minimum\n          python_version: '3.10'\n      - name: Run the unit tests\n        run: |\n          hatch run test:nowarn || hatch run test:nowarn --lf\n\n  test_prereleases:\n    name: Test Prereleases\n    runs-on: ubuntu-latest\n    timeout-minutes: 20\n    steps:\n      - uses: actions/checkout@v6\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n        with:\n          dependency_type: pre\n          # TODO: Remove this pin once rpds-py supports Python 3.15.\n          # Upstream: https://github.com/crate-py/rpds/issues/210\n          python_version: '3.14'\n      - name: Run the tests\n        run: |\n          hatch run test:nowarn || hatch run test:nowarn --lf\n\n  install:\n    needs: [build]\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 15\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest, macos-latest, windows-latest]\n        python: ['3.10', '3.12', '3.14']\n        include:\n          - python: '3.10'\n            dist: 'notebook*.tar.gz'\n          - python: '3.12'\n            dist: 'notebook*.whl'\n          - python: '3.14'\n            dist: 'notebook*.whl'\n          - os: windows-latest\n            py_cmd: python\n          - os: macos-latest\n            py_cmd: python3\n          - os: ubuntu-latest\n            py_cmd: python\n    steps:\n      - name: Install Python\n        uses: actions/setup-python@v6\n        with:\n          python-version: ${{ matrix.python }}\n          allow-prereleases: true\n      - uses: actions/download-artifact@v8\n        with:\n          name: notebook-dist-${{ github.run_number }}\n          path: ./dist\n      - name: Install the prerequisites\n        run: |\n          ${{ matrix.py_cmd }} -m pip install -U pip wheel\n      - name: Install the package\n        run: |\n          cd dist\n          ${{ matrix.py_cmd }} -m pip install -vv ${{ matrix.dist }}\n      - name: Validate environment\n        run: |\n          ${{ matrix.py_cmd }} -m pip freeze\n          ${{ matrix.py_cmd }} -m pip check\n      - name: Validate the install\n        run: |\n          jupyter labextension list\n          jupyter labextension list 2>&1 | grep -ie \"@jupyter-notebook/lab-extension.*enabled.*ok\" -\n          jupyter server extension list\n          jupyter server extension list 2>&1 | grep -ie \"notebook.*enabled\" -\n          jupyter notebook --version\n          jupyter notebook --help\n\n  check_links:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v6\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n      - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1\n        with:\n          ignore_links: 'https://playwright.dev/docs/test-cli/ https://blog.jupyter.org/.* https://mybinder.org/v2/gh/jupyter/notebook/main https://nbviewer.jupyter.org https://stackoverflow.com https://github.com/[^/]+/?$'\n          ignore_glob: 'ui-tests/test/notebooks/*'\n\n  test_lint:\n    name: Test Lint\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n      - name: Run Linters\n        run: |\n          hatch run typing:test\n          hatch run lint:build\n          pipx run interrogate -v .\n          pipx run doc8 --max-line-length=200 docs/source *.md\n          npm install -g yarn\n          yarn\n          yarn eslint:check\n          yarn prettier:check\n          yarn build:utils\n          yarn integrity\n\n  tests_check: # This job does nothing and is only used for the branch protection\n    if: always()\n    needs:\n      - coverage\n      - install\n      - test_lint\n      - test_docs\n      - test_minimum_versions\n      - test_prereleases\n      - check_links\n    runs-on: ubuntu-latest\n    steps:\n      - name: Decide whether the needed jobs succeeded or failed\n        uses: re-actors/alls-green@release/v1\n        with:\n          jobs: ${{ toJSON(needs) }}\n"
  },
  {
    "path": ".github/workflows/buildutils.yml",
    "content": "name: Build Utilities\n\non:\n  push:\n    branches: ['main']\n  pull_request:\n\ndefaults:\n  run:\n    shell: bash -l {0}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}\n  cancel-in-progress: true\n\npermissions:\n  contents: read\n\njobs:\n  versioning:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Base Setup\n        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - name: Install dependencies\n        run: |\n          python -m pip install -U \"jupyterlab>=4.6.0a0,<4.7\" hatch\n          jlpm\n          jlpm run build\n\n      - name: Configure git identity to commit\n        run: |\n          git config --global user.email \"you@example.com\"\n          git config --global user.name \"Your Name\"\n\n      - name: Reset version\n        run: |\n          hatch version 9.8.7\n          jlpm run lerna version 9.8.7 --no-push --force-publish --no-git-tag-version --yes\n          git commit -am \"Release 9.8.7\"\n\n      - name: Patch Release\n        run: |\n          jlpm release:patch --force\n\n      - name: Minor Release\n        run: |\n          jlpm release:bump minor --force\n\n      - name: Release Cycle\n        run: |\n          # beta\n          jlpm release:bump release --force\n          # rc\n          jlpm release:bump release --force\n          # final\n          jlpm release:bump release --force\n\n      - name: Major Release\n        run: |\n          jlpm release:bump major --force\n\n  npm:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Install Python\n        uses: actions/setup-python@v6\n        with:\n          python-version: '3.10'\n          architecture: 'x64'\n\n      - name: Install dependencies\n        run: |\n          python -m pip install -U \"jupyterlab>=4.6.0a0,<4.7\" pip\n          jlpm\n          jlpm run build\n"
  },
  {
    "path": ".github/workflows/check-release.yml",
    "content": "name: Check Release\non:\n  push:\n    branches: ['main']\n  pull_request:\n\npermissions:\n  contents: read\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}\n  cancel-in-progress: true\n\njobs:\n  check_release:\n    runs-on: ubuntu-latest\n    timeout-minutes: 30\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Base Setup\n        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n      - name: Check Release\n        uses: jupyter-server/jupyter_releaser/.github/actions/check-release@v2\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          version_spec: next\n\n      - name: Upload Distributions\n        uses: actions/upload-artifact@v7\n        with:\n          name: notebook-jupyter-releaser-dist-${{ github.run_number }}\n          path: .jupyter_releaser_checkout/dist\n"
  },
  {
    "path": ".github/workflows/enforce-label.yml",
    "content": "name: Enforce PR label\n\npermissions:\n  contents: read\n\non:\n  pull_request:\n    types: [labeled, unlabeled, opened, edited, synchronize]\njobs:\n  enforce-label:\n    runs-on: ubuntu-latest\n    permissions:\n      pull-requests: write\n    steps:\n      - name: enforce-triage-label\n        uses: jupyterlab/maintainer-tools/.github/actions/enforce-label@v1\n"
  },
  {
    "path": ".github/workflows/lock.yml",
    "content": "name: 'Lock Closed Threads'\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n\npermissions:\n  contents: read\n\njobs:\n  lock:\n    runs-on: ubuntu-latest\n    permissions:\n      issues: write\n      pull-requests: write\n    steps:\n      - uses: dessant/lock-threads@v6\n        with:\n          github-token: ${{ github.token }}\n          issue-lock-inactive-days: '180'\n          issue-lock-labels: 'status:resolved-locked'\n          pr-lock-inactive-days: '180'\n          pr-lock-labels: 'status:resolved-locked'\n"
  },
  {
    "path": ".github/workflows/playwright-update.yml",
    "content": "name: Update Playwright Snapshots\n\non:\n  issue_comment:\n    types: [created, edited]\n\npermissions:\n  contents: read\n\njobs:\n  update-snapshots:\n    runs-on: ubuntu-latest\n\n    permissions:\n      # Required by actions/update-snapshots\n      contents: write\n      pull-requests: write\n    strategy:\n      fail-fast: false\n      matrix:\n        browser: [firefox, chromium]\n\n    # Only run on issue comments\n    if: github.event.issue.pull_request && contains(github.event.comment.body, 'please update snapshots')\n\n    steps:\n      - uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots-checkout@main\n        with:\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Base Setup\n        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - name: Build\n        uses: ./.github/actions/build-dist\n\n      - uses: actions/download-artifact@v8\n        with:\n          name: notebook-dist-${{ github.run_number }}\n          path: ./dist\n\n      - name: Install the package\n        run: |\n          cd dist\n          python -m pip install -vv notebook*.whl\n\n          # disable git hooks\n          git config core.hooksPath no-hooks\n\n      - name: Install the test dependencies\n        run: |\n          cd ui-tests\n          jlpm\n          jlpm playwright install\n\n      - name: Update snapshots\n        uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots@v1\n        with:\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          npm_client: jlpm\n          test_folder: ui-tests\n          start_server_script: 'null'\n          update_script: test:update --browser ${{ matrix.browser }}\n        env:\n          DEBUG: pw:webserver\n"
  },
  {
    "path": ".github/workflows/prep-release.yml",
    "content": "name: \"Step 1: Prep Release\"\non:\n  workflow_dispatch:\n    inputs:\n      version_spec:\n        description: \"New Version Specifier\"\n        default: \"next\"\n        required: false\n      branch:\n        description: \"The branch to target\"\n        required: false\n      post_version_spec:\n        description: \"Post Version Specifier\"\n        required: false\n      silent:\n        description: \"Set a placeholder in the changelog and don't publish the release.\"\n        required: false\n        type: boolean\n      since:\n        description: \"Use PRs with activity since this date or git reference\"\n        required: false\n      since_last_stable:\n        description: \"Use PRs with activity since the last stable git tag\"\n        required: false\n        type: boolean\njobs:\n  prep_release:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n    steps:\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - name: Prep Release\n        id: prep-release\n        uses: jupyter-server/jupyter_releaser/.github/actions/prep-release@v2\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          version_spec: ${{ github.event.inputs.version_spec }}\n          silent: ${{ github.event.inputs.silent }}\n          post_version_spec: ${{ github.event.inputs.post_version_spec }}\n          target: ${{ github.event.inputs.target }}\n          branch: ${{ github.event.inputs.branch }}\n          since: ${{ github.event.inputs.since }}\n          since_last_stable: ${{ github.event.inputs.since_last_stable }}\n\n      - name: \"** Next Step **\"\n        run: |\n          echo \"Optional): Review Draft Release: ${{ steps.prep-release.outputs.release_url }}\"\n"
  },
  {
    "path": ".github/workflows/publish-changelog.yml",
    "content": "name: \"Publish Changelog\"\non:\n  release:\n    types: [published]\n\n  workflow_dispatch:\n    inputs:\n      branch:\n        description: \"The branch to target\"\n        required: false\n\njobs:\n  publish_changelog:\n    runs-on: ubuntu-latest\n    environment: release\n    steps:\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - uses: actions/create-github-app-token@v2\n        id: app-token\n        with:\n          app-id: ${{ vars.APP_ID }}\n          private-key: ${{ secrets.APP_PRIVATE_KEY }}\n\n      - name: Publish changelog\n        id: publish-changelog\n        uses: jupyter-server/jupyter_releaser/.github/actions/publish-changelog@v2\n        with:\n          token: ${{ steps.app-token.outputs.token }}\n          branch: ${{ github.event.inputs.branch }}\n\n      - name: \"** Next Step **\"\n        run: |\n          echo \"Merge the changelog update PR: ${{ steps.publish-changelog.outputs.pr_url }}\"\n"
  },
  {
    "path": ".github/workflows/publish-release.yml",
    "content": "name: \"Step 2: Publish Release\"\non:\n  workflow_dispatch:\n    inputs:\n      branch:\n        description: \"The target branch\"\n        required: false\n      release_url:\n        description: \"The URL of the draft GitHub release\"\n        required: false\n      steps_to_skip:\n        description: \"Comma separated list of steps to skip\"\n        required: false\n\njobs:\n  publish_release:\n    runs-on: ubuntu-latest\n    environment: release\n    permissions:\n      id-token: write\n    steps:\n      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - uses: actions/create-github-app-token@v2\n        id: app-token\n        with:\n          app-id: ${{ vars.APP_ID }}\n          private-key: ${{ secrets.APP_PRIVATE_KEY }}\n\n      - name: Populate Release\n        id: populate-release\n        uses: jupyter-server/jupyter_releaser/.github/actions/populate-release@v2\n        with:\n          token: ${{ steps.app-token.outputs.token }}\n          branch: ${{ github.event.inputs.branch }}\n          release_url: ${{ github.event.inputs.release_url }}\n          steps_to_skip: ${{ github.event.inputs.steps_to_skip }}\n\n      - name: Finalize Release\n        id: finalize-release\n        env:\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n        uses: jupyter-server/jupyter_releaser/.github/actions/finalize-release@v2\n        with:\n          token: ${{ steps.app-token.outputs.token }}\n          release_url: ${{ steps.populate-release.outputs.release_url }}\n\n      - name: \"** Next Step **\"\n        if: ${{ success() }}\n        run: |\n          echo \"Verify the final release\"\n          echo ${{ steps.finalize-release.outputs.release_url }}\n\n      - name: \"** Failure Message **\"\n        if: ${{ failure() }}\n        run: |\n          echo \"Failed to Publish the Draft Release Url:\"\n          echo ${{ steps.populate-release.outputs.release_url }}\n"
  },
  {
    "path": ".github/workflows/ui-tests.yml",
    "content": "name: UI Tests\n\non:\n  push:\n    branches: ['main']\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}\n  cancel-in-progress: true\n\npermissions:\n  contents: read\n\njobs:\n  build:\n    name: Build\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Build\n        uses: ./.github/actions/build-dist\n\n  ui-tests:\n    needs: [build]\n    runs-on: ubuntu-latest\n    timeout-minutes: 20\n    strategy:\n      fail-fast: false\n      matrix:\n        browser: [firefox, chromium]\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Base Setup\n        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1\n\n      - uses: actions/download-artifact@v8\n        with:\n          name: notebook-dist-${{ github.run_number }}\n          path: ./dist\n\n      - name: Install the package\n        run: |\n          cd dist\n          python -m pip install -vv notebook*.whl\n\n      - name: Install the test dependencies\n        run: |\n          cd ui-tests\n          jlpm\n          jlpm playwright install\n\n      - name: Test\n        run: |\n          cd ui-tests\n          jlpm test --browser ${{ matrix.browser }}\n\n      - name: Upload Playwright Test assets\n        if: always()\n        uses: actions/upload-artifact@v7\n        with:\n          name: notebook-${{ matrix.browser }}-test-assets\n          path: |\n            ui-tests/test-results\n\n      - name: Upload Playwright Test report\n        if: always()\n        uses: actions/upload-artifact@v7\n        with:\n          name: notebook-${{ matrix.browser }}-test-report\n          path: |\n            ui-tests/playwright-report\n\n      - name: Update snapshots\n        if: failure()\n        run: |\n          cd ui-tests\n          # remove previous snapshots from other browser\n          jlpm rimraf \"test/**/*-snapshots/*.png\"\n          # generate new snapshots\n          jlpm run test:update --browser ${{ matrix.browser }}\n\n      - name: Upload updated snapshots\n        if: failure()\n        uses: actions/upload-artifact@v7\n        with:\n          name: notebook-${{ matrix.browser }}-updated-snapshots\n          path: ui-tests/test\n"
  },
  {
    "path": ".github/workflows/upgrade-jupyterlab-dependencies.yml",
    "content": "name: Check for latest JupyterLab releases\n\non:\n  # schedule:\n  #   - cron: 30 17 * * *\n  workflow_dispatch:\n    inputs:\n      version:\n        description: 'JupyterLab version'\n        default: latest\n        required: true\n        type: string\n      branch:\n        description: 'The branch to target'\n        default: main\n        required: false\n        type: string\n      target_repo:\n        description: 'Target repository'\n        required: false\n        default: jupyter/notebook\n        type: string\n\nenv:\n  version_tag: 'latest'\n\npermissions:\n  actions: write\n  contents: write\n  pull-requests: write\n\njobs:\n  check_for_lab_updates:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v6\n        with:\n          ref: ${{ inputs.branch || 'main' }}\n\n      - name: Set up Python\n        uses: actions/setup-python@v6\n        with:\n          python-version: '3.11'\n\n      - name: Install Node\n        uses: actions/setup-node@v6\n        with:\n          node-version: '20.x'\n\n      - name: Install npm dependencies and build buildutils\n        run: |\n          python -m pip install -e \".[dev]\"\n\n          jlpm\n          jlpm run build:utils\n\n      - name: Check for new releases and update\n        shell: bash\n        run: |\n          set -eux\n          for version in ${{ inputs.version || env.version_tag }}\n          do\n            if [[ \"${version}\" == \"latest\" ]]; then\n              export LATEST=$(jlpm run get:lab:version --set-version ${version})\n            else\n              export LATEST=${version}\n            fi\n          done\n\n          echo \"latest=${LATEST}\" >> $GITHUB_ENV\n          jlpm upgrade:lab:dependencies --set-version ${LATEST}\n          if [[ ! -z \"$(git status --porcelain package.json)\" ]]; then\n            jlpm\n            jlpm deduplicate\n\n            cd ui-tests\n            jlpm\n            jlpm deduplicate\n          fi\n      - uses: prefix-dev/setup-pixi@v0.9.4\n        with:\n          pixi-version: v0.41.4\n          manifest-path: pyproject.toml\n          locked: false\n\n      - name: Update pixi.lock\n        run: pixi install\n\n      - name: Create a PR\n        env:\n          GH_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n        run: |\n          set -eux\n\n          export LATEST=${{ env.latest }}\n          export BRANCH_NAME=update-to-v${LATEST}\n\n          # if resulted in any change:\n          if [[ ! -z \"$(git status --porcelain package.json)\" ]]; then\n            # if branch already exists.\n            if git ls-remote --heads origin | grep \"refs/heads/${BRANCH_NAME}$\" > /dev/null; then\n              echo \"Branch '${BRANCH_NAME}' exists.\"\n            else\n              # new branch is created\n              git checkout -b \"${BRANCH_NAME}\"\n              git config user.name \"github-actions[bot]\"\n              git config user.email 'github-actions[bot]@users.noreply.github.com'\n\n              git commit . -m \"Update to JupyterLab v${LATEST}\"\n\n              git push --set-upstream origin \"${BRANCH_NAME}\"\n\n              PR_ARGS=(\n                --base \"${{ inputs.branch || 'main' }}\"\n                --title \"Update to JupyterLab v${LATEST}\"\n                --body \"New JupyterLab release [v${LATEST}](https://github.com/jupyterlab/jupyterlab/releases/tag/v${LATEST}) is available. Please review the lock file carefully.\"\n              )\n\n              # Add --repo flag only if target_repo is specified\n              if [[ -n \"${{ inputs.target_repo }}\" ]]; then\n                PR_ARGS+=(--repo \"${{ inputs.target_repo }}\")\n              fi\n\n              gh pr create \"${PR_ARGS[@]}\"\n            fi\n          fi\n"
  },
  {
    "path": ".gitignore",
    "content": "*.bundle.*\nlib/\nnode_modules/\n*.egg-info/\n.ipynb_checkpoints\n*.tsbuildinfo\n\n# Created by https://www.gitignore.io/api/python\n# Edit at https://www.gitignore.io/?templates=python\n\n### Python ###\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# Mr Developer\n.mr.developer.cfg\n.project\n.pydevproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# OS X stuff\n*.DS_Store\n\n# End of https://www.gitignore.io/api/python\n\n_temp_extension\njunit.xml\n[uU]ntitled*\nnotebook/static/*\n!notebook/static/favicons\nnotebook/labextension\nnotebook/schemas\ndocs/source/changelog.md\ndocs/source/contributing.md\n\n# playwright\nui-tests/test-results\nui-tests/playwright-report\n\n# VSCode\n.vscode\n\n# RTC\n.jupyter_ystore.db\n\n# yarn >=2.x local files\n.yarn/*\n.pnp.*\nui-tests/.yarn/*\nui-tests/.pnp.*\n\n# keep potential upstream patches\n!.yarn/patches\n\n# generated html\nnotebook/templates/*.html\n\n# pixi environments\n.pixi\n*.egg-info\n\n# Temporary files used for testing\ntmp/\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "ci:\n  autoupdate_schedule: monthly\n  autoupdate_commit_msg: 'chore: update pre-commit hooks'\n\nrepos:\n  - repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v5.0.0\n    hooks:\n      - id: check-case-conflict\n      - id: check-ast\n      - id: check-docstring-first\n      - id: check-executables-have-shebangs\n      - id: check-added-large-files\n      - id: check-case-conflict\n      - id: check-merge-conflict\n      - id: check-json\n      - id: check-toml\n      - id: check-yaml\n      - id: debug-statements\n      - id: end-of-file-fixer\n      - id: trailing-whitespace\n\n  - repo: https://github.com/python-jsonschema/check-jsonschema\n    rev: 0.30.0\n    hooks:\n      - id: check-github-workflows\n\n  - repo: https://github.com/codespell-project/codespell\n    rev: 'v2.3.0'\n    hooks:\n      - id: codespell\n        args: ['-L', 'hart,noteable', '--skip', \"*.spec.ts\"]\n        exclude: |\n          (?x)^(\n              yarn.lock|\n              pixi.lock|\n              binder/example.ipynb|\n              docs/source/examples/images/FrontendKernel.graffle/data.plist|\n          )$\n\n  - repo: https://github.com/pre-commit/mirrors-mypy\n    rev: \"v1.14.1\"\n    hooks:\n      - id: mypy\n        files: \"^notebook\"\n        stages: [manual]\n        args: [\"--install-types\", \"--non-interactive\"]\n        additional_dependencies: [\"traitlets>=5.13\", \"tornado\", \"jupyter_server>=2.10\", \"jupyterlab_server>=2.25\", \"jupyterlab>=4.6.0a4,<4.7\"]\n\n  - repo: https://github.com/pre-commit/pygrep-hooks\n    rev: 'v1.10.0'\n    hooks:\n      - id: rst-backticks\n      - id: rst-directive-colons\n      - id: rst-inline-touching-normal\n\n  - repo: https://github.com/astral-sh/ruff-pre-commit\n    rev: v0.8.6\n    hooks:\n      - id: ruff\n        types_or: [ python, jupyter ]\n        exclude: '^docs/source/examples/Notebook/Importing Notebooks.ipynb'\n        args: ['--fix', '--show-fixes']\n      - id: ruff-format\n        types_or: [ python, jupyter ]\n        exclude: '^docs/source/examples/Notebook/Importing Notebooks.ipynb'\n\n  - repo: https://github.com/scientific-python/cookie\n    rev: '2024.08.19'\n    hooks:\n      - id: sp-repo-review\n        additional_dependencies: ['repo-review[cli]']\n\n  - repo: local\n    hooks:\n      - id: prettier\n        name: prettier\n        entry: 'npm run prettier:files'\n        language: node\n        types_or: [json, ts, tsx, javascript, jsx, css, markdown]\n        stages: [manual]\n      - id: integrity\n        name: integrity\n        entry: 'npm run integrity --force'\n        language: node\n        stages: [pre-push]\n"
  },
  {
    "path": ".prettierignore",
    "content": "node_modules\n.mypy_cache\n.ruff_cache\n**/node_modules\n**/lib\n**/package.json\n**/static\n**/labextension\nbuild\nCHANGELOG.md\napp/index.template.js\n.pixi\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"singleQuote\": true\n}\n"
  },
  {
    "path": ".readthedocs.yaml",
    "content": "version: 2\nsphinx:\n  configuration: docs/source/conf.py\nbuild:\n  os: ubuntu-22.04\n  tools:\n    python: '3.10'\n    nodejs: '16'\npython:\n  install:\n    # install notebook itself\n    - method: pip\n      path: '.[docs]'\n"
  },
  {
    "path": ".yarnrc.yml",
    "content": "enableImmutableInstalls: false\nenableInlineBuilds: false\nenableTelemetry: false\nhttpTimeout: 60000\nnodeLinker: node-modules\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nA summary of changes in the Jupyter notebook. For more detailed\ninformation, see [GitHub](https://github.com/jupyter/notebook).\n\nUse `pip install notebook --upgrade` or `conda upgrade notebook` to\nupgrade to the latest release.\n\nWe strongly recommend that you upgrade pip to version 9+ of pip before\nupgrading `notebook`.\n\nUse `pip install pip --upgrade` to upgrade pip. Check pip version with\n`pip --version`.\n\n## 7.5\n\nJupyter Notebook 7.5 is based on JupyterLab 4.5, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-4-to-4-5) which lists deprecations and changes to the public API.\n\nBelow are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.5, although they may not all be supported in Notebook 7.5.\n\nFor reference you may have a look at the [JupyterLab 4.5 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-5) to learn more.\n\n### Notebook improvements\n\nThe default windowing mode is now `contentVisibility` which improves cell rendering and alleviates previously reported issues. The minimap can be enabled for all windowing modes and all notebooks via the `Settings` menu, or by toggling the minimap per notebook with the `View` -> `Show Minimap` option.\n\nAdditional fixes improve layout containment and scrollbar behavior when working with long cells.\n\n### Debugger and console enhancements\n\nThe debugger's evaluate dialog has been replaced with an interactive console featuring syntax highlighting and code completion. The variables panel now preserves state when switching editors. Visual improvements include highlighted selected breakpoints, improved empty line handling, and a paused indicator. Debugger panels now reference cell execution counts.\n\n<img alt=\"Debugger panels with reference to execution counts and paused indicator as well as console evaluation\"\nsrc=\"https://raw.githubusercontent.com/jupyter/notebook/main/docs/source/_static/changelog_assets/7.5-debugger.webp\"\nclass=\"jp-screenshot\">\n\nLog Console users can configure default log levels and customize toolbars.\n\n### Terminal enhancements\n\nThe terminal now includes search functionality, with search highlights that adapt to theme changes.\n\n### Media and content support\n\nBuilt-in audio and video viewers allow direct file playback within Jupyter Notebook.\n\n<img alt=\"Video file opened in a Jupyter Notebook tab\"\nsrc=\"https://raw.githubusercontent.com/jupyter/notebook/main/docs/source/_static/changelog_assets/7.5-media-player.webp\"\nclass=\"jp-screenshot\">\n\n### File browser enhancements\n\n- There is a new `allowFileUploads` setting to control upload permissions.\n- Menu options for creating Python, R, or Julia files are now available from the New menu.\n- The \"Select All\" command is now available with the Ctrl + A (or Cmd + A on macOS) keyboard shortcut in the file browser.\n- Breadcrumbs are now configurable through `breadcrumbsLeftItems` and `breadcrumbsRightItems` settings.\n\n### Settings editor improvements\n\nThe `addExtraLineOnCellMerge` setting removes extra lines when merging cells, matching classic notebook behavior.\n\n### Cell toolbar settings\n\nThe cell toolbar settings are now exposed in the Settings Editor, making it easier to customize the cell toolbar appearance and behavior.\n\n### Keyboard shortcuts\n\nThe `O` key has been defined as the keyboard shortcut to toggle cell outputs, restoring this familiar functionality from the classic notebook.\n\n### User interface and accessibility\n\nAutomatic theme switching between light and dark modes is now available when system synchronization is enabled. Dialog components display buttons and checkboxes on separate lines for improved readability. Terminal selections show better visibility under high-contrast themes. Keyboard navigation and status bar tab ordering have been improved.\n\n### Breaking changes\n\nPython 3.8 support has been dropped in this release.\n\n<!-- <START NEW CHANGELOG ENTRY> -->\n\n## 7.6.0a4\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.6.0-alpha.3...fc791fcb0af893e3ffe7563a4140ec6af8c9dbe2))\n\n### Bugs fixed\n\n- Prevent scratchpad console title to update [#7843](https://github.com/jupyter/notebook/pull/7843) ([@brichet](https://github.com/brichet), [@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.6.0a4 [#7859](https://github.com/jupyter/notebook/pull/7859) ([@jtpio](https://github.com/jtpio))\n- Fix check links [#7857](https://github.com/jupyter/notebook/pull/7857) ([@jtpio](https://github.com/jtpio))\n- TypeScript 5.9 [#7855](https://github.com/jupyter/notebook/pull/7855) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group with 2 updates [#7846](https://github.com/jupyter/notebook/pull/7846) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\nThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2026-02-24&to=2026-03-12&type=c))\n\n@brichet ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2026-02-24..2026-03-12&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2026-02-24..2026-03-12&type=Issues))\n\n<!-- <END NEW CHANGELOG ENTRY> -->\n\n## 7.6.0a3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.6.0-alpha.2...767a30d1ec90e9baf4975023c7019c95d9fe8614))\n\n### Enhancements made\n\n- Update to JupyterLab v4.6.0a3 [#7839](https://github.com/jupyter/notebook/pull/7839) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Fix PyO3 CI failure with Python 3.15 [#7836](https://github.com/jupyter/notebook/pull/7836) ([@jtpio](https://github.com/jtpio))\n- Update to ESLint 9, update other dependencies [#7821](https://github.com/jupyter/notebook/pull/7821) ([@jtpio](https://github.com/jtpio))\n- Bump prefix-dev/setup-pixi from 0.9.3 to 0.9.4 in the actions group [#7819](https://github.com/jupyter/notebook/pull/7819) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- docs: Fix broken links in troubleshooting and migration docs [#7824](https://github.com/jupyter/notebook/pull/7824) ([@RamiNoodle733](https://github.com/RamiNoodle733), [@jtpio](https://github.com/jtpio))\n- Fix grammar: join sentences in CONTRIBUTING.md [#7813](https://github.com/jupyter/notebook/pull/7813) ([@bodhisilberling](https://github.com/bodhisilberling), [@krassowski](https://github.com/krassowski))\n\n### Contributors to this release\n\nThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2026-01-23&to=2026-02-24&type=c))\n\n@bodhisilberling ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abodhisilberling+updated%3A2026-01-23..2026-02-24&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2026-01-23..2026-02-24&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2026-01-23..2026-02-24&type=Issues)) | @RamiNoodle733 ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARamiNoodle733+updated%3A2026-01-23..2026-02-24&type=Issues))\n\n## 7.6.0a2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.6.0-alpha.1...209c7da02e8245ec96bf121a641802096ff8cbb3))\n\n### Enhancements made\n\n- Add a scratch-pad console to the notebook [#7790](https://github.com/jupyter/notebook/pull/7790) ([@brichet](https://github.com/brichet), [@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.6.0a2 [#7814](https://github.com/jupyter/notebook/pull/7814) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group with 4 updates [#7811](https://github.com/jupyter/notebook/pull/7811) ([@jtpio](https://github.com/jtpio))\n- Bump tar from 6.1.13 to 6.2.1 in /ui-tests [#7810](https://github.com/jupyter/notebook/pull/7810) ([@jtpio](https://github.com/jtpio))\n- Update snapshots bot checkout and permission check [#7806](https://github.com/jupyter/notebook/pull/7806) ([@martinRenou](https://github.com/martinRenou), [@krassowski](https://github.com/krassowski))\n- Rename the token env variable [#7802](https://github.com/jupyter/notebook/pull/7802) ([@brichet](https://github.com/brichet), [@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\nThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2026-01-12&to=2026-01-23&type=c))\n\n@brichet ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2026-01-12..2026-01-23&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2026-01-12..2026-01-23&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2026-01-12..2026-01-23&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2026-01-12..2026-01-23&type=Issues))\n\n## 7.6.0a1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.6.0-alpha.0...aa605fa66c6885d85a37c7ab3ba6e7f7a837a810))\n\n### Enhancements made\n\n- Add PR template [#7792](https://github.com/jupyter/notebook/pull/7792) ([@KH-Coder865](https://github.com/KH-Coder865), [@andrii-i](https://github.com/andrii-i))\n\n### Bugs fixed\n\n- Fix toggling the side panels from menu [#7799](https://github.com/jupyter/notebook/pull/7799) ([@brichet](https://github.com/brichet), [@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Clean up node 24 install [#7803](https://github.com/jupyter/notebook/pull/7803) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.6.0a1 [#7801](https://github.com/jupyter/notebook/pull/7801) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Fix grammar in notebook documentation [#7794](https://github.com/jupyter/notebook/pull/7794) ([@xlumzee](https://github.com/xlumzee), [@krassowski](https://github.com/krassowski))\n\n### Contributors to this release\n\nThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-12-17&to=2026-01-12&type=c))\n\n@andrii-i ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2025-12-17..2026-01-12&type=Issues)) | @brichet ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2025-12-17..2026-01-12&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-12-17..2026-01-12&type=Issues)) | @KH-Coder865 ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AKH-Coder865+updated%3A2025-12-17..2026-01-12&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-12-17..2026-01-12&type=Issues)) | @xlumzee ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Axlumzee+updated%3A2025-12-17..2026-01-12&type=Issues))\n\n## 7.6.0a0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.1...e7f5e5d50ea18b0b17fe8a9df674025fcc6ab5d1))\n\n### Maintenance and upkeep improvements\n\n- Bump systeminformation from 5.23.14 to 5.27.14 in /ui-tests [#7788](https://github.com/jupyter/notebook/pull/7788) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `4.6.0a0` [#7787](https://github.com/jupyter/notebook/pull/7787) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\nThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-12-16&to=2025-12-17&type=c))\n\n@jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-12-16..2025-12-17&type=Issues))\n\n## 7.5.1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0...fccf56801be0a27a3de76c00d2710a941f255b10))\n\n### Bugs fixed\n\n- Fix selector for the `O` keyboard shortcut [#7782](https://github.com/jupyter/notebook/pull/7782) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))\n- Fix missing debugger display provider in Notebook [#7774](https://github.com/jupyter/notebook/pull/7774) ([@arjxn-py](https://github.com/arjxn-py), [@jtpio](https://github.com/jtpio), [@martinRenou](https://github.com/martinRenou))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.5.1 [#7785](https://github.com/jupyter/notebook/pull/7785) ([@jtpio](https://github.com/jtpio))\n- Fix link to the IPython install page [#7783](https://github.com/jupyter/notebook/pull/7783) ([@jtpio](https://github.com/jtpio))\n- Fix `hatch build`, ignore links to `blog.jupyter.org` [#7780](https://github.com/jupyter/notebook/pull/7780) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group with 4 updates [#7773](https://github.com/jupyter/notebook/pull/7773) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\nThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-11-19&to=2025-12-16&type=c))\n\n@arjxn-py ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aarjxn-py+updated%3A2025-11-19..2025-12-16&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-11-19..2025-12-16&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-11-19..2025-12-16&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2025-11-19..2025-12-16&type=Issues))\n\n## 7.5.0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...be53ec8bc96cdbcb64b6f1c5ec39c123c087a348))\n\n### Enhancements made\n\n- Update to JupyterLab v4.5.0b1 [#7746](https://github.com/jupyter/notebook/pull/7746) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.5.0b0 [#7739](https://github.com/jupyter/notebook/pull/7739) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.5.0a4 [#7728](https://github.com/jupyter/notebook/pull/7728) ([@jtpio](https://github.com/jtpio))\n- Increase the checkpoint polling interval to 30s [#7711](https://github.com/jupyter/notebook/pull/7711) ([@jtpio](https://github.com/jtpio))\n- Define `O` as the keyboard shortcut to toggle cell outputs [#7709](https://github.com/jupyter/notebook/pull/7709) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.5.0a3 [#7703](https://github.com/jupyter/notebook/pull/7703) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Expose the cell toolbar settings [#7766](https://github.com/jupyter/notebook/pull/7766) ([@jtpio](https://github.com/jtpio))\n- Handle file rename errors [#7710](https://github.com/jupyter/notebook/pull/7710) ([@jtpio](https://github.com/jtpio))\n- Fix open file with “#” in the filename [#7698](https://github.com/jupyter/notebook/pull/7698) ([@itsmevichu](https://github.com/itsmevichu))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.5.0 [#7768](https://github.com/jupyter/notebook/pull/7768) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.5.0rc1 [#7764](https://github.com/jupyter/notebook/pull/7764) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.5.0rc0 [#7755](https://github.com/jupyter/notebook/pull/7755) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group across 1 directory with 3 updates [#7751](https://github.com/jupyter/notebook/pull/7751) ([@dependabot](https://github.com/dependabot))\n- Use Node.js 24 / npm 11 to publish releases [#7749](https://github.com/jupyter/notebook/pull/7749) ([@jtpio](https://github.com/jtpio))\n- Revert \"Pin `click<8.3`\" [#7733](https://github.com/jupyter/notebook/pull/7733) ([@jtpio](https://github.com/jtpio))\n- Remove link to `npmjs.com` [#7730](https://github.com/jupyter/notebook/pull/7730) ([@jtpio](https://github.com/jtpio))\n- Pin `click<8.3` [#7729](https://github.com/jupyter/notebook/pull/7729) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group across 1 directory with 3 updates [#7704](https://github.com/jupyter/notebook/pull/7704) ([@dependabot](https://github.com/dependabot))\n- Update to JupyterLab v4.5.0a2 [#7694](https://github.com/jupyter/notebook/pull/7694) ([@jtpio](https://github.com/jtpio))\n- Pin `httpx` [#7691](https://github.com/jupyter/notebook/pull/7691) ([@jtpio](https://github.com/jtpio))\n- Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group [#7675](https://github.com/jupyter/notebook/pull/7675) ([@dependabot](https://github.com/dependabot))\n- Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group [#7665](https://github.com/jupyter/notebook/pull/7665) ([@dependabot](https://github.com/dependabot))\n- Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests [#7664](https://github.com/jupyter/notebook/pull/7664) ([@dependabot](https://github.com/dependabot))\n- Revert \"CI: pin to `jupyter-core<5.8.0` on Windows\" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk))\n- Update to JupyterLab v4.5.0a1 [#7656](https://github.com/jupyter/notebook/pull/7656) ([@jtpio](https://github.com/jtpio))\n- CI: pin to `jupyter-core<5.8.0` on Windows [#7655](https://github.com/jupyter/notebook/pull/7655) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.5.0a0 [#7650](https://github.com/jupyter/notebook/pull/7650) ([@jtpio](https://github.com/jtpio))\n- Run UI tests on `ubuntu-latest` [#7639](https://github.com/jupyter/notebook/pull/7639) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio))\n- Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group [#7637](https://github.com/jupyter/notebook/pull/7637) ([@dependabot](https://github.com/dependabot))\n- chore: Fix UP006 [#7633](https://github.com/jupyter/notebook/pull/7633) ([@honnix](https://github.com/honnix))\n- Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group [#7632](https://github.com/jupyter/notebook/pull/7632) ([@dependabot](https://github.com/dependabot))\n- Drop support for Python 3.8 [#7628](https://github.com/jupyter/notebook/pull/7628) ([@honnix](https://github.com/honnix))\n\n### Documentation improvements\n\n- User facing changelog for 7.5 [#7770](https://github.com/jupyter/notebook/pull/7770) ([@jtpio](https://github.com/jtpio))\n- Clean up references to Gitpod [#7767](https://github.com/jupyter/notebook/pull/7767) ([@jtpio](https://github.com/jtpio))\n- Fix link to Code of Conduct in CONTRIBUTING.md [#7758](https://github.com/jupyter/notebook/pull/7758) ([@jtpio](https://github.com/jtpio))\n- Remove JupyterCon 2025 announcement banner [#7757](https://github.com/jupyter/notebook/pull/7757) ([@jasongrout](https://github.com/jasongrout))\n- Update JupyterCon 2025 announcement links [#7744](https://github.com/jupyter/notebook/pull/7744) ([@krassowski](https://github.com/krassowski))\n- Add JupyterCon banner and add Jupyter colors [#7727](https://github.com/jupyter/notebook/pull/7727) ([@choldgraf](https://github.com/choldgraf))\n- Fix grammatical issues in Contributing.md [#7669](https://github.com/jupyter/notebook/pull/7669) ([@sangampaudel530](https://github.com/sangampaudel530))\n- Fixed grammar and typos in CONTRIBUTING.md [#7645](https://github.com/jupyter/notebook/pull/7645) ([@jchen1223](https://github.com/jchen1223))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-11-19&type=c))\n\n[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2025-04-09..2025-11-19&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acholdgraf+updated%3A2025-04-09..2025-11-19&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-04-09..2025-11-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-11-19&type=Issues) | [@honnix](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahonnix+updated%3A2025-04-09..2025-11-19&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jchen1223](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajchen1223+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-11-19&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-04-09..2025-11-19&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Alumberbot-app+updated%3A2025-04-09..2025-11-19&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2025-04-09..2025-11-19&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-04-09..2025-11-19&type=Issues) | [@sangampaudel530](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asangampaudel530+updated%3A2025-04-09..2025-11-19&type=Issues)\n\n## 7.5.0rc1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-rc.0...7533ccab5e4adc765e57a35b1791850daf952044))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.5.0rc1 [#7764](https://github.com/jupyter/notebook/pull/7764) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group across 1 directory with 3 updates [#7751](https://github.com/jupyter/notebook/pull/7751) ([@dependabot](https://github.com/dependabot))\n\n### Documentation improvements\n\n- Fix link to Code of Conduct in CONTRIBUTING.md [#7758](https://github.com/jupyter/notebook/pull/7758) ([@jtpio](https://github.com/jtpio))\n- Remove JupyterCon 2025 announcement banner [#7757](https://github.com/jupyter/notebook/pull/7757) ([@jasongrout](https://github.com/jasongrout))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-11-03&to=2025-11-14&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-11-03..2025-11-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-11-03..2025-11-14&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2025-11-03..2025-11-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-11-03..2025-11-14&type=Issues)\n\n## 7.5.0rc0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-beta.1...18ba796a58402999044b7e8c4401319b76fed0ce))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.5.0rc0 [#7755](https://github.com/jupyter/notebook/pull/7755) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-10-20&to=2025-11-03&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-10-20..2025-11-03&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-10-20..2025-11-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-10-20..2025-11-03&type=Issues)\n\n## 7.5.0b1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-beta.0...7f84b95ed6550508f9de03d27cd8c2cb84777648))\n\n### Enhancements made\n\n- Update to JupyterLab v4.5.0b1 [#7746](https://github.com/jupyter/notebook/pull/7746) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Use Node.js 24 / npm 11 to publish releases [#7749](https://github.com/jupyter/notebook/pull/7749) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Update JupyterCon 2025 announcement links [#7744](https://github.com/jupyter/notebook/pull/7744) ([@krassowski](https://github.com/krassowski))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-29&to=2025-10-20&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-09-29..2025-10-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-29..2025-10-20&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-09-29..2025-10-20&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-09-29..2025-10-20&type=Issues)\n\n## 7.5.0b0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.3...828708ec26cc4d2ff9f8b725b00024481ae42d2d))\n\n### Enhancements made\n\n- Update to JupyterLab v4.5.0b0 [#7739](https://github.com/jupyter/notebook/pull/7739) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Add JupyterCon banner and add Jupyter colors [#7727](https://github.com/jupyter/notebook/pull/7727) ([@choldgraf](https://github.com/choldgraf))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-24&to=2025-09-29&type=c))\n\n[@choldgraf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acholdgraf+updated%3A2025-09-24..2025-09-29&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-09-24..2025-09-29&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-24..2025-09-29&type=Issues)\n\n## 7.5.0a3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.2...254b06ca4b232a0a96ad2dddde560e41df371e57))\n\n### Enhancements made\n\n- Update to JupyterLab v4.5.0a4 [#7728](https://github.com/jupyter/notebook/pull/7728) ([@jtpio](https://github.com/jtpio))\n- Increase the checkpoint polling interval to 30s [#7711](https://github.com/jupyter/notebook/pull/7711) ([@jtpio](https://github.com/jtpio))\n- Define `O` as the keyboard shortcut to toggle cell outputs [#7709](https://github.com/jupyter/notebook/pull/7709) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Handle file rename errors [#7710](https://github.com/jupyter/notebook/pull/7710) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Revert \"Pin `click<8.3`\" [#7733](https://github.com/jupyter/notebook/pull/7733) ([@jtpio](https://github.com/jtpio))\n- Remove link to `npmjs.com` [#7730](https://github.com/jupyter/notebook/pull/7730) ([@jtpio](https://github.com/jtpio))\n- Pin `click<8.3` [#7729](https://github.com/jupyter/notebook/pull/7729) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group across 1 directory with 3 updates [#7704](https://github.com/jupyter/notebook/pull/7704) ([@dependabot](https://github.com/dependabot))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-18&to=2025-09-24&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-08-18..2025-09-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-18..2025-09-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-18..2025-09-24&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-08-18..2025-09-24&type=Issues)\n\n## 7.5.0a2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.1...3100d879bfe09c629b4add998bd2ac408ffa2af8))\n\n### Enhancements made\n\n- Update to JupyterLab v4.5.0a3 [#7703](https://github.com/jupyter/notebook/pull/7703) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix open file with “#” in the filename [#7698](https://github.com/jupyter/notebook/pull/7698) ([@itsmevichu](https://github.com/itsmevichu))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-11&to=2025-08-18&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-11..2025-08-18&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2025-08-11..2025-08-18&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-11..2025-08-18&type=Issues)\n\n## 7.5.0a1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.0...f56a27c17bfd85f37a27dea9512c675120571e63))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.5.0a2 [#7694](https://github.com/jupyter/notebook/pull/7694) ([@jtpio](https://github.com/jtpio))\n- Pin `httpx` [#7691](https://github.com/jupyter/notebook/pull/7691) ([@jtpio](https://github.com/jtpio))\n- Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group [#7675](https://github.com/jupyter/notebook/pull/7675) ([@dependabot](https://github.com/dependabot))\n- Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group [#7665](https://github.com/jupyter/notebook/pull/7665) ([@dependabot](https://github.com/dependabot))\n- Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests [#7664](https://github.com/jupyter/notebook/pull/7664) ([@dependabot](https://github.com/dependabot))\n- Revert \"CI: pin to `jupyter-core<5.8.0` on Windows\" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk))\n- Update to JupyterLab v4.5.0a1 [#7656](https://github.com/jupyter/notebook/pull/7656) ([@jtpio](https://github.com/jtpio))\n- CI: pin to `jupyter-core<5.8.0` on Windows [#7655](https://github.com/jupyter/notebook/pull/7655) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Fix grammatical issues in Contributing.md [#7669](https://github.com/jupyter/notebook/pull/7669) ([@sangampaudel530](https://github.com/sangampaudel530))\n- Fixed grammar and typos in CONTRIBUTING.md [#7645](https://github.com/jupyter/notebook/pull/7645) ([@jchen1223](https://github.com/jchen1223))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-05-07&to=2025-08-11&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-05-07..2025-08-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-05-07..2025-08-11&type=Issues) | [@jchen1223](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajchen1223+updated%3A2025-05-07..2025-08-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-05-07..2025-08-11&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-05-07..2025-08-11&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2025-05-07..2025-08-11&type=Issues) | [@sangampaudel530](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asangampaudel530+updated%3A2025-05-07..2025-08-11&type=Issues)\n\n## 7.5.0a0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...22e29fc41901ef8116670bc8a04eeb833858ff51))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.5.0a0 [#7650](https://github.com/jupyter/notebook/pull/7650) ([@jtpio](https://github.com/jtpio))\n- Run UI tests on `ubuntu-latest` [#7639](https://github.com/jupyter/notebook/pull/7639) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio))\n- Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group [#7637](https://github.com/jupyter/notebook/pull/7637) ([@dependabot](https://github.com/dependabot))\n- chore: Fix UP006 [#7633](https://github.com/jupyter/notebook/pull/7633) ([@honnix](https://github.com/honnix))\n- Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group [#7632](https://github.com/jupyter/notebook/pull/7632) ([@dependabot](https://github.com/dependabot))\n- Drop support for Python 3.8 [#7628](https://github.com/jupyter/notebook/pull/7628) ([@honnix](https://github.com/honnix))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-05-07&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-04-09..2025-05-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-05-07&type=Issues) | [@honnix](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahonnix+updated%3A2025-04-09..2025-05-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-05-07&type=Issues)\n\n## 7.4\n\nJupyter Notebook 7.4 is based on JupyterLab 4.4, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-3-to-4-4) which lists deprecations and changes to the public API.\n\nBelow are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.4, although they may not all be supported in Notebook 7.4.\n\nFor reference you may have a look at the [JupyterLab 4.4 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-4) to learn more.\n\n### Code console improvements\n\nThe code console prompt can now be positioned on the top, left, or right side of the console,\nin addition to the default bottom placement. The placement is persisted in the Prompt Cell\nPosition setting.\n\nThe console toolbar now includes buttons to:\n- Execute code\n- Restart the kernel\n- Clear the cells\n- Switch the kernel\n\n<img alt=\"The option to change console prompt position is available under the three dots button in the console toolbar, which is the last toolbar button\" src=\"https://github.com/user-attachments/assets/11f5a82a-0dd2-439b-a520-d04c73363bfe\" class=\"jp-screenshot\">\n\nAdditional settings for console behavior have been added:\n- Clear Code Content on Execute (enabled by default) – When disabled, the code submitted for execution remains in the code editor, allowing for further edits.\n- Hide Code Input – When enabled, only the execution output is shown in the console.\n- Clear Cells on Execute – When enabled, only the last cell is displayed.\n\nToggling all the three new settings transforms the console into an interactive editor\nresembling an ephemeral notebook with a single cell.\n\n<img alt=\"Toggling all the three new settings transforms the console into a single cell\" src=\"https://github.com/user-attachments/assets/86eb1114-0d60-4379-a370-b538717fc74f\" class=\"jp-screenshot\">\n\n### Settings import and export\n\nSettings can now be exported to `overrides.json` from the Settings Editor,\nwhich can be used to pre-configure defaults in deployments or to restore settings.\n\n<img alt=\"The Import and Export buttons in the Settings Editor are the first two items in the toolbar panel\" src=\"https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.4-settings-import-export.png\" class=\"jp-screenshot\">\n\n### Support for collaboration without `RTC:` drive\n\nReal time collaboration in previous versions of JupyterLab and Jupyter Notebook\n(which can be enabled by installing jupyter-collaboration package)\nwas implemented by swapping the default JupyterLab file system\ndrive to a collaborative drive with the `RTC:` prefix.\nThis approach was incompatible with multiple extensions.\nJupyterLab 4.4 introduces the Content Providers API, which allows the next version of `jupyter-collaboration` to work without changing the drive prefix.\nThis improves compatibility with extensions that do not support arbitrary drives.\n\n### Context menu opt-out\n\nThe context menu, available under right mouse click in browsers, can now be disabled globally\nby toggling the `Enable Context Menu` option available in the Command Palette,\nor via the JSON Settings Editor in the Application Context Menu.\n\n## 7.4.0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.2...fbfe36574e04b16ed7ba9303c5e819330f402f87))\n\n### Highlights ✨\n\nTo learn more about the highlights of the 7.4.0 release: https://jupyter-notebook.readthedocs.io/en/latest/changelog.html\n\n### Enhancements made\n\n- Update to JupyterLab v4.4.0rc1 [#7622](https://github.com/jupyter/notebook/pull/7622) ([@jtpio](https://github.com/jtpio))\n- Add support for a `down` area [#7619](https://github.com/jupyter/notebook/pull/7619) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0rc0 [#7618](https://github.com/jupyter/notebook/pull/7618) ([@jtpio](https://github.com/jtpio))\n- Support `ServiceManagerPlugin` [#7616](https://github.com/jupyter/notebook/pull/7616) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `v4.4.0b1` [#7607](https://github.com/jupyter/notebook/pull/7607) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0b0 [#7591](https://github.com/jupyter/notebook/pull/7591) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0a3 [#7577](https://github.com/jupyter/notebook/pull/7577) ([@jtpio](https://github.com/jtpio))\n- Add active cell border padding, remove double cell padding [#7570](https://github.com/jupyter/notebook/pull/7570) ([@andrii-i](https://github.com/andrii-i))\n\n### Bugs fixed\n\n- Fix undefined error when checkpoints is empty [#7567](https://github.com/jupyter/notebook/pull/7567) ([@jdavid](https://github.com/jdavid))\n\n### Maintenance and upkeep improvements\n\n- Bump the actions group with 2 updates [#7626](https://github.com/jupyter/notebook/pull/7626) ([@dependabot](https://github.com/dependabot))\n- Update to JupyterLab v4.4.0b2 [#7614](https://github.com/jupyter/notebook/pull/7614) ([@jtpio](https://github.com/jtpio))\n- Add pixi step to the update workflow [#7608](https://github.com/jupyter/notebook/pull/7608) ([@jtpio](https://github.com/jtpio))\n- Update `@babel` dependencies [#7605](https://github.com/jupyter/notebook/pull/7605) ([@jtpio](https://github.com/jtpio))\n- Add devcontainer support, backed by pixi [#7602](https://github.com/jupyter/notebook/pull/7602) ([@jtpio](https://github.com/jtpio))\n- Manual dependabot bumps [#7599](https://github.com/jupyter/notebook/pull/7599) ([@jtpio](https://github.com/jtpio))\n- Bump vega-selections from 5.4.1 to 5.5.0 in /ui-tests [#7592](https://github.com/jupyter/notebook/pull/7592) ([@dependabot](https://github.com/dependabot))\n- Improve handling of optional notebook tracker [#7581](https://github.com/jupyter/notebook/pull/7581) ([@jtpio](https://github.com/jtpio))\n- Fix upgrade script [#7579](https://github.com/jupyter/notebook/pull/7579) ([@jtpio](https://github.com/jtpio))\n- Allow owners/members/collab to trigger galata update on other's PR [#7572](https://github.com/jupyter/notebook/pull/7572) ([@krassowski](https://github.com/krassowski))\n- Update `typescript` and `lerna` [#7562](https://github.com/jupyter/notebook/pull/7562) ([@jtpio](https://github.com/jtpio))\n- Update pre-commit hooks [#7561](https://github.com/jupyter/notebook/pull/7561) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0a2 [#7559](https://github.com/jupyter/notebook/pull/7559) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group across 1 directory with 2 updates [#7558](https://github.com/jupyter/notebook/pull/7558) ([@dependabot](https://github.com/dependabot))\n- Improve update script [#7556](https://github.com/jupyter/notebook/pull/7556) ([@jtpio](https://github.com/jtpio))\n- Disable cron scheduling for now [#7555](https://github.com/jupyter/notebook/pull/7555) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0a1 [#7554](https://github.com/jupyter/notebook/pull/7554) ([@jtpio](https://github.com/jtpio))\n- Update workflow improvements [#7552](https://github.com/jupyter/notebook/pull/7552) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- User facing changelog for 7.4 [#7612](https://github.com/jupyter/notebook/pull/7612) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-21&to=2025-04-09&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2024-12-21..2025-04-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-12-21..2025-04-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-21..2025-04-09&type=Issues) | [@jdavid](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajdavid+updated%3A2024-12-21..2025-04-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-21..2025-04-09&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-12-21..2025-04-09&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-12-21..2025-04-09&type=Issues)\n\n## 7.4.0rc0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.3...7fa19999c9e01d713a684e0f25d8017dbc999528))\n\n### Enhancements made\n\n- Update to JupyterLab v4.4.0rc1 [#7622](https://github.com/jupyter/notebook/pull/7622) ([@jtpio](https://github.com/jtpio))\n- Add support for a `down` area [#7619](https://github.com/jupyter/notebook/pull/7619) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-03-26&to=2025-04-03&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-03-26..2025-04-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-03-26..2025-04-03&type=Issues)\n\n## 7.4.0b3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.2...434221c0fe3de3df3b4b54ed1005712e07957352))\n\n### Enhancements made\n\n- Update to JupyterLab v4.4.0rc0 [#7618](https://github.com/jupyter/notebook/pull/7618) ([@jtpio](https://github.com/jtpio))\n- Support `ServiceManagerPlugin` [#7616](https://github.com/jupyter/notebook/pull/7616) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-03-20&to=2025-03-26&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-03-20..2025-03-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-03-20..2025-03-26&type=Issues)\n\n## 7.4.0b2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.1...be2fd12f91a64796d9919ee8b8242f3093aac8a5))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab v4.4.0b2 [#7614](https://github.com/jupyter/notebook/pull/7614) ([@jtpio](https://github.com/jtpio))\n- Add pixi step to the update workflow [#7608](https://github.com/jupyter/notebook/pull/7608) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- User facing changelog for 7.4 [#7612](https://github.com/jupyter/notebook/pull/7612) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-03-14&to=2025-03-20&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-03-14..2025-03-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-03-14..2025-03-20&type=Issues)\n\n## 7.4.0b1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-beta.0...6d06d97302bd1bb77e25864214ade2277f2e50d4))\n\n### Enhancements made\n\n- Update to JupyterLab `v4.4.0b1` [#7607](https://github.com/jupyter/notebook/pull/7607) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update `@babel` dependencies [#7605](https://github.com/jupyter/notebook/pull/7605) ([@jtpio](https://github.com/jtpio))\n- Add devcontainer support, backed by pixi [#7602](https://github.com/jupyter/notebook/pull/7602) ([@jtpio](https://github.com/jtpio))\n- Manual dependabot bumps [#7599](https://github.com/jupyter/notebook/pull/7599) ([@jtpio](https://github.com/jtpio))\n- Bump vega-selections from 5.4.1 to 5.5.0 in /ui-tests [#7592](https://github.com/jupyter/notebook/pull/7592) ([@dependabot](https://github.com/dependabot))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-02-20&to=2025-03-14&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-02-20..2025-03-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-02-20..2025-03-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-02-20..2025-03-14&type=Issues)\n\n## 7.4.0b0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.3...48243197bbd004555008cd7cfa14c907147aceca))\n\n### Enhancements made\n\n- Update to JupyterLab v4.4.0b0 [#7591](https://github.com/jupyter/notebook/pull/7591) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-02-05&to=2025-02-20&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-02-05..2025-02-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-02-05..2025-02-20&type=Issues)\n\n## 7.4.0a3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.2...48e52c759ffec0cea47dfef59f48d8e9fa6112d3))\n\n### Enhancements made\n\n- Add active cell border padding, remove double cell padding [#7570](https://github.com/jupyter/notebook/pull/7570) ([@andrii-i](https://github.com/andrii-i))\n\n### Maintenance and upkeep improvements\n\n- Improve handling of optional notebook tracker [#7581](https://github.com/jupyter/notebook/pull/7581) ([@jtpio](https://github.com/jtpio))\n- Fix upgrade script [#7579](https://github.com/jupyter/notebook/pull/7579) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-02-03&to=2025-02-05&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2025-02-03..2025-02-05&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-02-03..2025-02-05&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-02-03..2025-02-05&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-02-03..2025-02-05&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2025-02-03..2025-02-05&type=Issues)\n\n## 7.4.0a2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.1...ef4f6346cd6b377ade271fcd61810b5d2a7d0f41))\n\n### Enhancements made\n\n- Update to JupyterLab v4.4.0a3 [#7577](https://github.com/jupyter/notebook/pull/7577) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix undefined error when checkpoints is empty [#7567](https://github.com/jupyter/notebook/pull/7567) ([@jdavid](https://github.com/jdavid))\n\n### Maintenance and upkeep improvements\n\n- Allow owners/members/collab to trigger galata update on other's PR [#7572](https://github.com/jupyter/notebook/pull/7572) ([@krassowski](https://github.com/krassowski))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-01-07&to=2025-02-03&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-01-07..2025-02-03&type=Issues) | [@jdavid](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajdavid+updated%3A2025-01-07..2025-02-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-01-07..2025-02-03&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-01-07..2025-02-03&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2025-01-07..2025-02-03&type=Issues)\n\n## 7.4.0a1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0-alpha.0...18672b7e85ec5181e4c5c18d2e32c3e9eab7260c))\n\n### Maintenance and upkeep improvements\n\n- Update `typescript` and `lerna` [#7562](https://github.com/jupyter/notebook/pull/7562) ([@jtpio](https://github.com/jtpio))\n- Update pre-commit hooks [#7561](https://github.com/jupyter/notebook/pull/7561) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0a2 [#7559](https://github.com/jupyter/notebook/pull/7559) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group across 1 directory with 2 updates [#7558](https://github.com/jupyter/notebook/pull/7558) ([@dependabot](https://github.com/dependabot))\n- Improve update script [#7556](https://github.com/jupyter/notebook/pull/7556) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-21&to=2025-01-07&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-12-21..2025-01-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-21..2025-01-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-21..2025-01-07&type=Issues)\n\n## 7.4.0a0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.2...12efbe601858c317bf677dc835d314489357e20d))\n\n### Maintenance and upkeep improvements\n\n- Disable cron scheduling for now [#7555](https://github.com/jupyter/notebook/pull/7555) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab v4.4.0a1 [#7554](https://github.com/jupyter/notebook/pull/7554) ([@jtpio](https://github.com/jtpio))\n- Update workflow improvements [#7552](https://github.com/jupyter/notebook/pull/7552) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-21&to=2024-12-21&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-21..2024-12-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-21..2024-12-21&type=Issues)\n\n## 7.3\n\nJupyter Notebook 7.3 is based on JupyterLab 4.3, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-2-to-4-3) which lists deprecations and changes to the public API.\n\nBelow are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.3, although they may not all be supported in Notebook 7.3.\n\nFor reference you may have a look at the [JupyterLab 4.3 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-3) to learn more.\n\n### Minimap\n\nThe virtual scrollbar now acts as a minimap and exposes information on whether a cell:\n\n- is running/scheduled (`[*]`), idle (`[ ]`) or was already run (e.g. `[1]`)\n- was modified since it was last executed (“dirty”) - orange background\n- has an output that contains an error - red background\n- is markdown/code (`[ ]`/`[*]`/`[1]` for code, nothing for markdown)\n- how much text/code it contains\n\n![a screenshot showing the notebook minimap](https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.3-minimap.png)\n\nTo enable the minimap, click on the hamburger icon (≡) which appears in the notebook’s toolbar. If you do not see the hamburger icon, go to `Settings → Notebook → Windowing mode` and choose “full”.\n\n### File browser enhancements\n\nThe file browser now:\n\n- supports resizing the columns and remembers the column sizes after reloading JupyterLab\n- supports uploading folders by drag-and-drop\n- supports navigation with a single click\n- adds a file filter collapsed by default (funnel icon)\n\n![a screenshot showing that it's now possible to resize the file browser columns](https://github.com/user-attachments/assets/b0d9cd0a-2828-43f7-a922-e8b271e5f7fc)\n\nIn Jupyter Notebook, the single click navigation is enabled by default. If you would like to disable it to get the same experience as in JupyterLab, go to `Settings → File Browser` and make sure \"Navigate files and directories with single click\" is unchecked.\n\n### Improved kernel and server interactions\n\nThe previous release enabled connecting to external kernels, such as those spawned by a third-party application like Blender. In this release the kernel selector dialog was improved to also show the external kernels.\n\nThe previous release improved the awareness of the kernel/kernel specification distinction by providing both tree and list view in the kernels sidebar panel, but only the tree view featured the kernel identifiers. In this release both the list and tree view show the kernel identifier stub.\n\nA new toolbar button was added in the kernel allowing to shut down unused kernels (kernels with no widget attached).\n\n![a screenshot showing the list view of the kernels in the sidebar](https://github.com/user-attachments/assets/c7f958c5-4054-4b09-8fad-4df6db8c9b58)\n\n### Full Width Notebook\n\nIt is now possible to configure the notebook to take up the full width of the page via:\n\n- a setting that can be defined by a user via the Settings Editor\n- the `View > Enable Full Width Notebook` menu entry\n- the command palette, searching for `Enable Full Width Notebook`\n\n![a screenshot showing how to enable full width notebook via the menu](https://github.com/user-attachments/assets/148b227a-874a-4bb3-a4c6-c7350525ccc4)\n\nThis is particularly useful on large displays, or for those who prefer working with a wider notebook.\n\nIt is also possible to use the JupyterLab interface for a more fully-featured experience, which allows for full-width notebooks too, and offers a \"Simple Interface\" mode for only showing a single notebook at a time.\n\nYou can open JupyterLab by clicking on `View > Open JupyterLab`.\n\n## 7.3.2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.1...7959ba0de553e9c541d2716d76108a8bc0bc2d6c))\n\n### Maintenance and upkeep improvements\n\n- Fix update script [#7550](https://github.com/jupyter/notebook/pull/7550) ([@jtpio](https://github.com/jtpio))\n- Fix workflow to update the JupyterLab version [#7548](https://github.com/jupyter/notebook/pull/7548) ([@jtpio](https://github.com/jtpio))\n- Bump nanoid from 3.3.7 to 3.3.8 in /ui-tests [#7547](https://github.com/jupyter/notebook/pull/7547) ([@dependabot](https://github.com/dependabot))\n- Bump systeminformation from 5.21.8 to 5.23.14 in /ui-tests [#7546](https://github.com/jupyter/notebook/pull/7546) ([@dependabot](https://github.com/dependabot))\n- Workflow to update JupyterLab dependencies automatically [#7281](https://github.com/jupyter/notebook/pull/7281) ([@itsmevichu](https://github.com/itsmevichu))\n- Update to JupyterLab v4.3.4 [#7551](https://github.com/jupyter/notebook/pull/7551) ([@github-actions](https://github.com/apps/github-actions))\n\n### Documentation improvements\n\n- Update chat links to Zulip. [#7539](https://github.com/jupyter/notebook/pull/7539) ([@ericsnekbytes](https://github.com/ericsnekbytes))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-04&to=2024-12-21&type=c))\n\n[@Carreau](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACarreau+updated%3A2024-12-04..2024-12-21&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-12-04..2024-12-21&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2024-12-04..2024-12-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-12-04..2024-12-21&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2024-12-04..2024-12-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-04..2024-12-21&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-12-04..2024-12-21&type=Issues)\n\n## 7.3.1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0...21d0306ecef93ea23bf063bc1d8a0580450cd4df))\n\n### Maintenance and upkeep improvements\n\n- Adds jupyter-ui-toolkit packages in shared scope [#7530](https://github.com/jupyter/notebook/pull/7530) ([@brichet](https://github.com/brichet))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-12-04&to=2024-12-04&type=c))\n\n[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2024-12-04..2024-12-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-12-04..2024-12-04&type=Issues)\n\n## 7.3.0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0...b16eed26eff8e357eeccbef3f3434df77fb8ab48))\n\n### Enhancements made\n\n- Fix for auto scroll output option [#7511](https://github.com/jupyter/notebook/pull/7511) ([@gjmooney](https://github.com/gjmooney))\n- Add a setting to enable the notebook to take up the full width [#7487](https://github.com/jupyter/notebook/pull/7487) ([@jtpio](https://github.com/jtpio))\n- Add the file filter button to the file browser toolbar [#7479](https://github.com/jupyter/notebook/pull/7479) ([@jtpio](https://github.com/jtpio))\n- Redirect paths from the notebooks route to the tree route if they are directories [#7446](https://github.com/jupyter/notebook/pull/7446) ([@andyscho](https://github.com/andyscho))\n- Update to JupyterLab `4.3.0a1` [#7416](https://github.com/jupyter/notebook/pull/7416) ([@jtpio](https://github.com/jtpio))\n- Support custom page_data_hook function [#7387](https://github.com/jupyter/notebook/pull/7387) ([@bluestealth](https://github.com/bluestealth))\n- Add missing \"Open...\" file menu [#7385](https://github.com/jupyter/notebook/pull/7385) ([@martinRenou](https://github.com/martinRenou))\n- Duplicate notebook menu option [#7374](https://github.com/jupyter/notebook/pull/7374) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Bugs fixed\n\n- Move handling of the file browser settings to a separate plugin, enable file browser single click navigation [#7481](https://github.com/jupyter/notebook/pull/7481) ([@jtpio](https://github.com/jtpio))\n- Remove pseudoelement obstructing the cell collapser [#7392](https://github.com/jupyter/notebook/pull/7392) ([@krassowski](https://github.com/krassowski))\n- \"Close and Shut Down Notebook\" shuts down without the confirmation dialog [#7384](https://github.com/jupyter/notebook/pull/7384) ([@JasonWeill](https://github.com/JasonWeill))\n- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Maintenance and upkeep improvements\n\n- Bump Python version used on CI [#7528](https://github.com/jupyter/notebook/pull/7528) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.3.2 [#7527](https://github.com/jupyter/notebook/pull/7527) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.3.1 [#7521](https://github.com/jupyter/notebook/pull/7521) ([@jtpio](https://github.com/jtpio))\n- Add webpack prod config [#7513](https://github.com/jupyter/notebook/pull/7513) ([@gjmooney](https://github.com/gjmooney))\n- Update to JupyterLab 4.3 final [#7507](https://github.com/jupyter/notebook/pull/7507) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `4.3.0rc1` [#7497](https://github.com/jupyter/notebook/pull/7497) ([@jtpio](https://github.com/jtpio))\n- Remove the `StateDB` file browser trick [#7477](https://github.com/jupyter/notebook/pull/7477) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `4.3.0rc0` [#7423](https://github.com/jupyter/notebook/pull/7423) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.3.0a0 [#7378](https://github.com/jupyter/notebook/pull/7378) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Fix link to the JupyterLab 4.3 changelog [#7529](https://github.com/jupyter/notebook/pull/7529) ([@jtpio](https://github.com/jtpio))\n- Rename some header links to fit better [#7508](https://github.com/jupyter/notebook/pull/7508) ([@gjmooney](https://github.com/gjmooney))\n- Add user facing changelog for `7.3.0` [#7494](https://github.com/jupyter/notebook/pull/7494) ([@jtpio](https://github.com/jtpio))\n- Fix typos [#7472](https://github.com/jupyter/notebook/pull/7472) ([@algonell](https://github.com/algonell))\n- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-16&to=2024-12-04&type=c))\n\n[@algonell](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aalgonell+updated%3A2024-05-16..2024-12-04&type=Issues) | [@andyscho](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandyscho+updated%3A2024-05-16..2024-12-04&type=Issues) | [@bluestealth](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abluestealth+updated%3A2024-05-16..2024-12-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-16..2024-12-04&type=Issues) | [@gjmooney](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agjmooney+updated%3A2024-05-16..2024-12-04&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2024-05-16..2024-12-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-16..2024-12-04&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-05-16..2024-12-04&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2024-05-16..2024-12-04&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-05-16..2024-12-04&type=Issues)\n\n## 7.3.0rc0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-beta.2...b34449747a84fe0ba7951ae0fa8f2bb011444a60))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.3.1 [#7521](https://github.com/jupyter/notebook/pull/7521) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-11-06&to=2024-11-18&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-11-06..2024-11-18&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-11-06..2024-11-18&type=Issues)\n\n## 7.3.0b2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-beta.1...110e728e4a239ffc7217bd07b9a50cf4eff0dff5))\n\n### Enhancements made\n\n- Fix for auto scroll output option [#7511](https://github.com/jupyter/notebook/pull/7511) ([@gjmooney](https://github.com/gjmooney))\n\n### Maintenance and upkeep improvements\n\n- Add webpack prod config [#7513](https://github.com/jupyter/notebook/pull/7513) ([@gjmooney](https://github.com/gjmooney))\n- Update to JupyterLab 4.3 final [#7507](https://github.com/jupyter/notebook/pull/7507) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Rename some header links to fit better [#7508](https://github.com/jupyter/notebook/pull/7508) ([@gjmooney](https://github.com/gjmooney))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-10-24&to=2024-11-06&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-10-24..2024-11-06&type=Issues) | [@gjmooney](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agjmooney+updated%3A2024-10-24..2024-11-06&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-10-24..2024-11-06&type=Issues)\n\n## 7.3.0b1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-beta.0...f614f7c6387cc7da82e0307b70e10593b2cd6bff))\n\n### Enhancements made\n\n- Add a setting to enable the notebook to take up the full width [#7487](https://github.com/jupyter/notebook/pull/7487) ([@jtpio](https://github.com/jtpio))\n- Add the file filter button to the file browser toolbar [#7479](https://github.com/jupyter/notebook/pull/7479) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Move handling of the file browser settings to a separate plugin, enable file browser single click navigation [#7481](https://github.com/jupyter/notebook/pull/7481) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab `4.3.0rc1` [#7497](https://github.com/jupyter/notebook/pull/7497) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Add user facing changelog for `7.3.0` [#7494](https://github.com/jupyter/notebook/pull/7494) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-10-15&to=2024-10-24&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-10-15..2024-10-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-10-15..2024-10-24&type=Issues)\n\n## 7.3.0b0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-alpha.1...fec4431305b2fd857ff81b7b60c2894dd125bec2))\n\n### Enhancements made\n\n- Redirect paths from the notebooks route to the tree route if they are directories [#7446](https://github.com/jupyter/notebook/pull/7446) ([@andyscho](https://github.com/andyscho))\n\n### Maintenance and upkeep improvements\n\n- Remove the `StateDB` file browser trick [#7477](https://github.com/jupyter/notebook/pull/7477) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `4.3.0rc0` [#7423](https://github.com/jupyter/notebook/pull/7423) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Fix typos [#7472](https://github.com/jupyter/notebook/pull/7472) ([@algonell](https://github.com/algonell))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-07-01&to=2024-10-15&type=c))\n\n[@algonell](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aalgonell+updated%3A2024-07-01..2024-10-15&type=Issues) | [@andyscho](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandyscho+updated%3A2024-07-01..2024-10-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-07-01..2024-10-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-07-01..2024-10-15&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-07-01..2024-10-15&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-07-01..2024-10-15&type=Issues)\n\n## 7.3.0a1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.3.0-alpha.0...ff2b822d066dc8d733a259f955177da4bd4d668c))\n\n### Enhancements made\n\n- Update to JupyterLab `4.3.0a1` [#7416](https://github.com/jupyter/notebook/pull/7416) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Remove pseudoelement obstructing the cell collapser [#7392](https://github.com/jupyter/notebook/pull/7392) ([@krassowski](https://github.com/krassowski))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-31&to=2024-07-01&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-31..2024-07-01&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-31..2024-07-01&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-05-31..2024-07-01&type=Issues)\n\n## 7.3.0a0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0...1a03b9d8e502f8177684e39d7b627bed1c772bb2))\n\n### Enhancements made\n\n- Support custom page_data_hook function [#7387](https://github.com/jupyter/notebook/pull/7387) ([@bluestealth](https://github.com/bluestealth))\n- Add missing \"Open...\" file menu [#7385](https://github.com/jupyter/notebook/pull/7385) ([@martinRenou](https://github.com/martinRenou))\n- Duplicate notebook menu option [#7374](https://github.com/jupyter/notebook/pull/7374) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Bugs fixed\n\n- \"Close and Shut Down Notebook\" shuts down without the confirmation dialog [#7384](https://github.com/jupyter/notebook/pull/7384) ([@JasonWeill](https://github.com/JasonWeill))\n- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.3.0a0 [#7378](https://github.com/jupyter/notebook/pull/7378) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Adds message about building code before running 'develop' [#7382](https://github.com/jupyter/notebook/pull/7382) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-16&to=2024-05-31&type=c))\n\n[@bluestealth](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abluestealth+updated%3A2024-05-16..2024-05-31&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-16..2024-05-31&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2024-05-16..2024-05-31&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-16..2024-05-31&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2024-05-16..2024-05-31&type=Issues)\n\n## 7.2\n\nJupyter Notebook 7.2 is based on JupyterLab 4.2, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-0-to-4-1) which lists deprecations and changes to the public API.\n\nBelow are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.2, although they are not all supported in Notebook 7.2.\n\nFor reference you may have a look at the JupyterLab 4.2 changelog to learn more: https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-2\n\n### Full notebook windowing mode by default\n\nNotebooks in the `full` windowing mode only render the visible cells, significantly improving the performance of the application. One limitation of `full` mode is that the search function in your browser may produce false negatives; using the search function is recommended. To revert to the behaviour from Notebook 7.2, go to Settings → Settings Editor → Notebook, scroll to “Windowing mode”, and choose `defer`.\n\n### Improved Shortcuts Editor\n\nAmong the numerous improvements and bug fixes for the keyboard shortcuts editor:\n\n- it is now possible to remove the default shortcuts,\n- shortcuts are correctly sorted when using a language pack,\n- shortcuts with different arguments are now correctly displayed as individual entries.\n\n<img alt=\"A context menu opened over a keybinding in the Keyboard Shortcuts setting panel within the Settings widget\" class=\"jp-screenshot\" src=\"https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.2-delete-shortcut.png\">\n\n### Dark high contrast theme\n\nA new theme, JupyterLab Dark High Contrast, which is intended to benefit users with the need for higher contrast, following the WCAG AAA accessibility standard for color contrast. To select this theme, from the menu bar, choose Settings → Theme → JupyterLab Dark High Contrast. Please provide feedback and suggestions on further improvements to this theme.\n\n<img alt=\"A dark high contrast theme\" class=\"jp-screenshot\" src=\"https://github.com/jupyter/notebook/assets/591645/9a1678fe-9b4d-41ad-8764-75fdc7c84071\">\n\n## 7.2.0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.2...31bf294e85175bbf39816a90dc8858dedaf73bde))\n\n### Enhancements made\n\n- Update to JupyterLab 4.2.0 [#7357](https://github.com/jupyter/notebook/pull/7357) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.2.0rc0 [#7333](https://github.com/jupyter/notebook/pull/7333) ([@jtpio](https://github.com/jtpio))\n- Add `@jupyterlab/theme-dark-high-contrast-extension` [#7331](https://github.com/jupyter/notebook/pull/7331) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.2.0a2 [#7307](https://github.com/jupyter/notebook/pull/7307) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Add the `@jupyterlab/notebook-extension:copy-output` plugin [#7353](https://github.com/jupyter/notebook/pull/7353) ([@jtpio](https://github.com/jtpio))\n- Fix CSS for `full` windowing mode [#7337](https://github.com/jupyter/notebook/pull/7337) ([@jtpio](https://github.com/jtpio))\n- Force notebook windowing mode to `defer` [#7335](https://github.com/jupyter/notebook/pull/7335) ([@jtpio](https://github.com/jtpio))\n- Fix scrollbar always showing up by default [#7327](https://github.com/jupyter/notebook/pull/7327) ([@jtpio](https://github.com/jtpio))\n- Default to the `full` windowing mode [#7321](https://github.com/jupyter/notebook/pull/7321) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Fix emoji in create issue screen [#7363](https://github.com/jupyter/notebook/pull/7363) ([@JasonWeill](https://github.com/JasonWeill))\n- Update `@jupyterlab/galata` [#7361](https://github.com/jupyter/notebook/pull/7361) ([@jtpio](https://github.com/jtpio))\n- Pin on `macos-12` on CI for now [#7346](https://github.com/jupyter/notebook/pull/7346) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `4.2.0b1` [#7319](https://github.com/jupyter/notebook/pull/7319) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.2.0b0 [#7312](https://github.com/jupyter/notebook/pull/7312) ([@jtpio](https://github.com/jtpio))\n- Ignore links to GitHub user and organisation profiles [#7308](https://github.com/jupyter/notebook/pull/7308) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Add user facing changelog for 7.2 [#7372](https://github.com/jupyter/notebook/pull/7372) ([@jtpio](https://github.com/jtpio))\n- Fix emoji in create issue screen [#7363](https://github.com/jupyter/notebook/pull/7363) ([@JasonWeill](https://github.com/JasonWeill))\n- update RISE extension installation instructions [#7299](https://github.com/jupyter/notebook/pull/7299) ([@afeld](https://github.com/afeld))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-03-14&to=2024-05-16&type=c))\n\n[@afeld](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafeld+updated%3A2024-03-14..2024-05-16&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-03-14..2024-05-16&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2024-03-14..2024-05-16&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-03-14..2024-05-16&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-03-14..2024-05-16&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-03-14..2024-05-16&type=Issues) | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2024-03-14..2024-05-16&type=Issues)\n\n## 7.2.0rc1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.2.0rc0...f5d8aea3bdc3eea25213792f9d101738f2a1f627))\n\n### Enhancements made\n\n- Update to JupyterLab 4.2.0 [#7357](https://github.com/jupyter/notebook/pull/7357) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Add the `@jupyterlab/notebook-extension:copy-output` plugin [#7353](https://github.com/jupyter/notebook/pull/7353) ([@jtpio](https://github.com/jtpio))\n- Default to the `full` windowing mode [#7321](https://github.com/jupyter/notebook/pull/7321) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- update RISE extension installation instructions [#7299](https://github.com/jupyter/notebook/pull/7299) ([@afeld](https://github.com/afeld))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-05-01&to=2024-05-13&type=c))\n\n[@afeld](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafeld+updated%3A2024-05-01..2024-05-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-05-01..2024-05-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-05-01..2024-05-13&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-05-01..2024-05-13&type=Issues) | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2024-05-01..2024-05-13&type=Issues)\n\n## 7.2.0rc0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.2.0b1...49ddd0fe1e4d4bfa24f74042f2232c5b91d1c36e))\n\n### Enhancements made\n\n- Update to JupyterLab 4.2.0rc0 [#7333](https://github.com/jupyter/notebook/pull/7333) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix CSS for `full` windowing mode [#7337](https://github.com/jupyter/notebook/pull/7337) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Pin on `macos-12` on CI for now [#7346](https://github.com/jupyter/notebook/pull/7346) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-04-19&to=2024-05-01&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-04-19..2024-05-01&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-04-19..2024-05-01&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-04-19..2024-05-01&type=Issues)\n\n## 7.2.0b1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0-beta.0...b45d666d5ee1ee053b55ac9cb6e9aecde5d53945))\n\n### Enhancements made\n\n- Add `@jupyterlab/theme-dark-high-contrast-extension` [#7331](https://github.com/jupyter/notebook/pull/7331) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Force notebook windowing mode to `defer` [#7335](https://github.com/jupyter/notebook/pull/7335) ([@jtpio](https://github.com/jtpio))\n- Fix scrollbar always showing up by default [#7327](https://github.com/jupyter/notebook/pull/7327) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-04-12&to=2024-04-19&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-04-12..2024-04-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-04-12..2024-04-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2024-04-12..2024-04-19&type=Issues)\n\n## 7.2.0b0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.2.0-alpha.0...09bcd99e6dfffce92acc9a7f9d11a2a2122131c0))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab `4.2.0b1` [#7319](https://github.com/jupyter/notebook/pull/7319) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.2.0b0 [#7312](https://github.com/jupyter/notebook/pull/7312) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-03-29&to=2024-04-12&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-03-29..2024-04-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-03-29..2024-04-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2024-03-29..2024-04-12&type=Issues)\n\n## 7.2.0a0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.2...80b582bce69e33e36e936af2ea981bcb22a4d285))\n\n### Enhancements made\n\n- Update to JupyterLab 4.2.0a2 [#7307](https://github.com/jupyter/notebook/pull/7307) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Ignore links to GitHub user and organisation profiles [#7308](https://github.com/jupyter/notebook/pull/7308) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-03-14&to=2024-03-29&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-03-14..2024-03-29&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-03-14..2024-03-29&type=Issues)\n\n## v7.1\n\nJupyter Notebook 7.1 is based on JupyterLab 4.1, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-0-to-4-1) which lists deprecations and changes to the public API.\n\nBelow are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.1, although they are not all supported in Notebook 7.1.\n\nFor reference you may have a look at the JupyterLab 4.1 changelog to learn more: https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-1\n\n### Diagrams in Markdown\n\nMatching GitHub-Flavoured Markdown, JupyterLab 4.1 now supports [Mermaid](https://github.com/mermaid-js/mermaid) diagrams.\nTo create a mermaid diagram use the `mermaid` language specifier for a code block in a markdown cell or document, for example:\n\n~~~\n```mermaid\nflowchart LR\n\nA[Hard] -->|Text| B(Round)\nB --> C{Decision}\nC -->|One| D[Result 1]\nC -->|Two| E[Result 2]\n```\n~~~\n\nwhich renders as:\n\n<img alt=\"Rendered Mermaid diagram going from left to right with modern look; the diagram contains blueish square node with text Hard pointing to round square node with text Round; over the arrow connecting the two nodes there is a word Text; the second node further connects to a rhombus-shaped node with text Decision which then connects to two further nodes, Result 1 and Result 2.\" src=\"https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.1-merimad-diagram.png\" class=\"jp-screenshot\">\n\n### Inline completer\n\nJupyterLab now supports completion presented as ghost text in the cell and file editors,\nallowing generative AI models to provide multi-line completions. This can now also be leveraged in Jupyter Notebook.\n\nThe suggestions are provided by plugins implementing the ``IInlineCompletionProvider`` API;\nby default a single provider which uses kernel history is available.\n\n<img alt=\"In a code cell with `def fac` content a ghost text containing a suggestion representing further code of factorial function is shown; over the code cell there is a floating widget allowing to accept the suggestion and iterate between alternative suggestions\" src=\"https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.1-inline-completer.png\" class=\"jp-screenshot\">\n\nThe suggestions can be invoked as-you-type or manually using a configurable shortcut (by default <kbd>Alt</kbd> + <kbd>\\\\</kbd>).\nThe default keyboard shortcuts are displayed in the small widget shown when hovering over the ghost suggestion:\n- <kbd>Alt</kbd> + <kbd>End</kbd> - accept suggestion\n- <kbd>Alt</kbd> + <kbd>[</kbd> - previous suggestion\n- <kbd>Alt</kbd> + <kbd>]</kbd> - next suggestion\n\nTo enable the inline suggestions based on the kernel history, go to Settings → Inline Completer → History provider → check the \"enabled\" checkbox.\n\nIn addition to the built-in history suggestions,\nthe [`jupyter-ai`](https://github.com/jupyterlab/jupyter-ai) extension will provide\nsuggestions from supported models.\n\nNote that the Jupyter AI extension is not yet compatible with Jupyter Notebook 7.\n\n### Keyboard navigation improvements\n\nNumerous improvements to keyboard navigation with focus on accessibility and usability are included in this release:\n- the notebook cells now retain focus\n- the focus can now be moved beyond the active notebook\n- the toolbars can now be navigated using arrow keys\n\nFor more details, see [this post on Jupyter Blog](https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d).\n\n### Execution history in notebook\n\nThe code from previously executed cells can be used to populate empty cells,\nallowing to iterate on code from previous cells or even sessions\n(depending on how a specific kernel stores history).\n\nTo cycle between history items press <kbd>Alt</kbd> + <kbd>Arrow Up</kbd> and  <kbd>Alt</kbd> + <kbd>Arrow Down</kbd>.\n\nTo enable execution history, go to Settings → Notebook → check the \"Kernel history access\" checkbox.\n\nThis feature was already available in the console in previous releases; it only works with kernels supporting execution history requests.\nTo clear the execution history consult the documentation of the kernel you are using (e.g., IPython/ipykernel).\n\n### Error indicator in the table of contents\n\nWhen a cell fails during execution, an error indicator will be displayed by the corresponding heading,\nincreasing awareness of the notebook state and enabling users to quickly navigate to the cell which requires attention.\n\n<img alt=\"Error indicator in the shape of a triangle with exclamation sign (using ⚠ UTF character) shown next to one of the headings in the table of contents panel\" src=\"https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.1-toc-error-indicator.png\" class=\"jp-screenshot\">\n\n### Search improvements\n\n- The search box will now grow automatically to accommodate longer text\n- Search in selection can now be toggled using <kbd>Alt</kbd> + <kbd>L</kbd> and automatic search in selection can be configured in settings\n- Tooltips with shortcuts were added to the buttons in the search box to improve discoverability of the shortcuts\n\n### Miscellaneous\n\n- The current theme (dark/light) can now be synced with the browser/system preference (Settings menu → Theme → Synchronise with System Settings)\n- A blue \"read-only\" status indicator is now  displayed in the toolbar of documents which cannot be saved because their model is read-only.\n- Native support for viewing jsonl/ndjson files was added\n- Collapsing of breadcrumbs in the File Browser can be disabled in File Browser settings\n\n## 7.1.2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.1...ca41222a9c8d75356c6d67d3bd36e34d71cce2d8))\n\n### Maintenance and upkeep improvements\n\n- Update Release Scripts [#7295](https://github.com/jupyter/notebook/pull/7295) ([@blink1073](https://github.com/blink1073))\n- Fix jupyterlab install command in the releaser hook [#7294](https://github.com/jupyter/notebook/pull/7294) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.5 packages [#7291](https://github.com/jupyter/notebook/pull/7291) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Add a section to use local dependencies [#7292](https://github.com/jupyter/notebook/pull/7292) ([@brichet](https://github.com/brichet))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-02-26&to=2024-03-14&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2024-02-26..2024-03-14&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2024-02-26..2024-03-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-02-26..2024-03-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-02-26..2024-03-14&type=Issues)\n\n## 7.1.1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.0...da7b8d400e96ceff0eec834badd891bc5d5f154d))\n\n### Bugs fixed\n\n- Grayout \"Edit Notebook Metadata\" for other file formats.  [#7265](https://github.com/jupyter/notebook/pull/7265) ([@itsmevichu](https://github.com/itsmevichu))\n\n### Maintenance and upkeep improvements\n\n- Fix flaky mobile UI tests [#7278](https://github.com/jupyter/notebook/pull/7278) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.2 packages [#7277](https://github.com/jupyter/notebook/pull/7277) ([@jtpio](https://github.com/jtpio))\n- Ignore stackoverflow link [#7274](https://github.com/jupyter/notebook/pull/7274) ([@jtpio](https://github.com/jtpio))\n- Expose `version_info` [#7273](https://github.com/jupyter/notebook/pull/7273) ([@jtpio](https://github.com/jtpio))\n- Bump ip from 2.0.0 to 2.0.1 in /ui-tests [#7268](https://github.com/jupyter/notebook/pull/7268) ([@dependabot](https://github.com/dependabot))\n- Bump ip from 2.0.0 to 2.0.1 [#7267](https://github.com/jupyter/notebook/pull/7267) ([@dependabot](https://github.com/dependabot))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-02-13&to=2024-02-26&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2024-02-13..2024-02-26&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-02-13..2024-02-26&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2024-02-13..2024-02-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-02-13..2024-02-26&type=Issues)\n\n## 7.1.0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.0.6...b8ec7e4a8eda70a8d7dca19799acd3e96e019160))\n\n### Enhancements made\n\n- Create a new notebook with a specific kernel from the new dropdown [#7255](https://github.com/jupyter/notebook/pull/7255) ([@jtpio](https://github.com/jtpio))\n- Add the plugin manager [#7198](https://github.com/jupyter/notebook/pull/7198) ([@jtpio](https://github.com/jtpio))\n- Fix toggle functionality for widgets. [#7178](https://github.com/jupyter/notebook/pull/7178) ([@haok1402](https://github.com/haok1402))\n- Bump to JupyterLab 4.1.0a4 bis [#7172](https://github.com/jupyter/notebook/pull/7172) ([@brichet](https://github.com/brichet))\n- Update to JupyterLab `4.1.0a3` [#7161](https://github.com/jupyter/notebook/pull/7161) ([@jtpio](https://github.com/jtpio))\n- Added Lumino Plugin Description (#7008) [#7127](https://github.com/jupyter/notebook/pull/7127) ([@Dilip-Jain](https://github.com/Dilip-Jain))\n- Added Edit Notebook Metadata Option (#6402) [#7099](https://github.com/jupyter/notebook/pull/7099) ([@Dilip-Jain](https://github.com/Dilip-Jain))\n- Update to JupyterLab 4.1 [#7096](https://github.com/jupyter/notebook/pull/7096) ([@jtpio](https://github.com/jtpio))\n- Add the JupyterLab resources plugin [#6968](https://github.com/jupyter/notebook/pull/6968) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix spurious kernel selection dialog on notebook creation [#7258](https://github.com/jupyter/notebook/pull/7258) ([@jtpio](https://github.com/jtpio))\n- Workaround for the file browser tracker focus issue [#7224](https://github.com/jupyter/notebook/pull/7224) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.1.1 [#7256](https://github.com/jupyter/notebook/pull/7256) ([@jtpio](https://github.com/jtpio))\n- Follow JupyterLab minor versions [#7250](https://github.com/jupyter/notebook/pull/7250) ([@jtpio](https://github.com/jtpio))\n- chore: update pre-commit hooks [#7237](https://github.com/jupyter/notebook/pull/7237) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Update to JupyterLab 4.1.0 final [#7234](https://github.com/jupyter/notebook/pull/7234) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0rc1 [#7230](https://github.com/jupyter/notebook/pull/7230) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0rc0 [#7227](https://github.com/jupyter/notebook/pull/7227) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0b2 [#7222](https://github.com/jupyter/notebook/pull/7222) ([@jtpio](https://github.com/jtpio))\n- Fix `check_links` on CI [#7219](https://github.com/jupyter/notebook/pull/7219) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group with 1 update [#7218](https://github.com/jupyter/notebook/pull/7218) ([@dependabot](https://github.com/dependabot))\n- Bump the actions group with 2 updates [#7207](https://github.com/jupyter/notebook/pull/7207) ([@dependabot](https://github.com/dependabot))\n- chore: update pre-commit hooks [#7206](https://github.com/jupyter/notebook/pull/7206) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Add nbviewer.jupyter.org to the ignore list [#7197](https://github.com/jupyter/notebook/pull/7197) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0b0 [#7196](https://github.com/jupyter/notebook/pull/7196) ([@jtpio](https://github.com/jtpio))\n- Update ruff config [#7190](https://github.com/jupyter/notebook/pull/7190) ([@blink1073](https://github.com/blink1073))\n- Bump @babel/traverse from 7.23.0 to 7.23.6 [#7187](https://github.com/jupyter/notebook/pull/7187) ([@dependabot](https://github.com/dependabot))\n- Bump actions/setup-python from 4 to 5 [#7180](https://github.com/jupyter/notebook/pull/7180) ([@dependabot](https://github.com/dependabot))\n- Update publish-release workflow for PyPI trusted publisher [#7176](https://github.com/jupyter/notebook/pull/7176) ([@jtpio](https://github.com/jtpio))\n- chore: update pre-commit hooks [#7174](https://github.com/jupyter/notebook/pull/7174) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Update `yarn.lock` [#7170](https://github.com/jupyter/notebook/pull/7170) ([@jtpio](https://github.com/jtpio))\n- Bump axios from 1.5.1 to 1.6.2 [#7165](https://github.com/jupyter/notebook/pull/7165) ([@dependabot](https://github.com/dependabot))\n- Bump dessant/lock-threads from 4 to 5 [#7159](https://github.com/jupyter/notebook/pull/7159) ([@dependabot](https://github.com/dependabot))\n- Update ruff config and typing [#7145](https://github.com/jupyter/notebook/pull/7145) ([@blink1073](https://github.com/blink1073))\n- chore: update pre-commit hooks [#7143](https://github.com/jupyter/notebook/pull/7143) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Clean up lint handling [#7142](https://github.com/jupyter/notebook/pull/7142) ([@blink1073](https://github.com/blink1073))\n- Adopt ruff format [#7132](https://github.com/jupyter/notebook/pull/7132) ([@blink1073](https://github.com/blink1073))\n- Fix python bumping to `minor` [#7131](https://github.com/jupyter/notebook/pull/7131) ([@jtpio](https://github.com/jtpio))\n- Add Python 3.12 classifier [#7111](https://github.com/jupyter/notebook/pull/7111) ([@jtpio](https://github.com/jtpio))\n- Remove viewport workaround in the UI tests [#6887](https://github.com/jupyter/notebook/pull/6887) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Add documentation for updating `notebook` imports [#7244](https://github.com/jupyter/notebook/pull/7244) ([@jtpio](https://github.com/jtpio))\n- Fix link in `CONTRIBUTING.md` [#7235](https://github.com/jupyter/notebook/pull/7235) ([@jtpio](https://github.com/jtpio))\n- Add user facing changelog for 7.1 [#7232](https://github.com/jupyter/notebook/pull/7232) ([@jtpio](https://github.com/jtpio))\n- Clarify README about supported versions (post v7 release) [#7193](https://github.com/jupyter/notebook/pull/7193) ([@akx](https://github.com/akx))\n- Set `navigation_with_keys` to `False` [#7129](https://github.com/jupyter/notebook/pull/7129) ([@jtpio](https://github.com/jtpio))\n- Updated ui-tests Configuration in Contributing.md [#7124](https://github.com/jupyter/notebook/pull/7124) ([@jayeshsingh9767](https://github.com/jayeshsingh9767))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-17&to=2024-02-13&type=c))\n\n[@akx](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aakx+updated%3A2023-10-17..2024-02-13&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-10-17..2024-02-13&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-10-17..2024-02-13&type=Issues) | [@d5423197](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ad5423197+updated%3A2023-10-17..2024-02-13&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-10-17..2024-02-13&type=Issues) | [@Dilip-Jain](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ADilip-Jain+updated%3A2023-10-17..2024-02-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-17..2024-02-13&type=Issues) | [@haok1402](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahaok1402+updated%3A2023-10-17..2024-02-13&type=Issues) | [@jayeshsingh9767](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajayeshsingh9767+updated%3A2023-10-17..2024-02-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-17..2024-02-13&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-10-17..2024-02-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-10-17..2024-02-13&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2023-10-17..2024-02-13&type=Issues)\n\n## 7.1.0rc1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0rc0...376a2f97c883e6e91f321d0a676e1ee9ff3b8d87))\n\n### Maintenance and upkeep improvements\n\n- Follow JupyterLab minor versions [#7250](https://github.com/jupyter/notebook/pull/7250) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Add documentation for updating `notebook` imports [#7244](https://github.com/jupyter/notebook/pull/7244) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-02-07&to=2024-02-09&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-02-07..2024-02-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-02-07..2024-02-09&type=Issues)\n\n## 7.1.0rc0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0b0...2d717f5896a1d4310baa2499c7e6197d1914201d))\n\n### Enhancements made\n\n- Added Edit Notebook Metadata Option (#6402) [#7099](https://github.com/jupyter/notebook/pull/7099) ([@Dilip-Jain](https://github.com/Dilip-Jain))\n\n### Maintenance and upkeep improvements\n\n- chore: update pre-commit hooks [#7237](https://github.com/jupyter/notebook/pull/7237) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Update to JupyterLab 4.1.0 final [#7234](https://github.com/jupyter/notebook/pull/7234) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0rc1 [#7230](https://github.com/jupyter/notebook/pull/7230) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0rc0 [#7227](https://github.com/jupyter/notebook/pull/7227) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Fix link in `CONTRIBUTING.md` [#7235](https://github.com/jupyter/notebook/pull/7235) ([@jtpio](https://github.com/jtpio))\n- Add user facing changelog for 7.1 [#7232](https://github.com/jupyter/notebook/pull/7232) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2024-01-26&to=2024-02-07&type=c))\n\n[@Dilip-Jain](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ADilip-Jain+updated%3A2024-01-26..2024-02-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2024-01-26..2024-02-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2024-01-26..2024-02-07&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2024-01-26..2024-02-07&type=Issues)\n\n## 7.1.0b0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0a2...5d265b90ed5f097af4ca22d283ecdc705229ff92))\n\n### Bugs fixed\n\n- Workaround for the file browser tracker focus issue [#7224](https://github.com/jupyter/notebook/pull/7224) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.1.0b2 [#7222](https://github.com/jupyter/notebook/pull/7222) ([@jtpio](https://github.com/jtpio))\n- Fix `check_links` on CI [#7219](https://github.com/jupyter/notebook/pull/7219) ([@jtpio](https://github.com/jtpio))\n- Bump the actions group with 1 update [#7218](https://github.com/jupyter/notebook/pull/7218) ([@dependabot](https://github.com/dependabot))\n- Bump the actions group with 2 updates [#7207](https://github.com/jupyter/notebook/pull/7207) ([@dependabot](https://github.com/dependabot))\n- chore: update pre-commit hooks [#7206](https://github.com/jupyter/notebook/pull/7206) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-12-27&to=2024-01-26&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-12-27..2024-01-26&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-12-27..2024-01-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-12-27..2024-01-26&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-12-27..2024-01-26&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2023-12-27..2024-01-26&type=Issues)\n\n## 7.1.0a2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.1.0a1...251e0e360603b6e63b280b3bd04a5406f7da28da))\n\n### Enhancements made\n\n- Add the plugin manager [#7198](https://github.com/jupyter/notebook/pull/7198) ([@jtpio](https://github.com/jtpio))\n- Fix toggle functionality for widgets. [#7178](https://github.com/jupyter/notebook/pull/7178) ([@haok1402](https://github.com/haok1402))\n\n### Maintenance and upkeep improvements\n\n- Add nbviewer.jupyter.org to the ignore list [#7197](https://github.com/jupyter/notebook/pull/7197) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.1.0b0 [#7196](https://github.com/jupyter/notebook/pull/7196) ([@jtpio](https://github.com/jtpio))\n- Update ruff config [#7190](https://github.com/jupyter/notebook/pull/7190) ([@blink1073](https://github.com/blink1073))\n- Bump @babel/traverse from 7.23.0 to 7.23.6 [#7187](https://github.com/jupyter/notebook/pull/7187) ([@dependabot](https://github.com/dependabot))\n- Bump actions/setup-python from 4 to 5 [#7180](https://github.com/jupyter/notebook/pull/7180) ([@dependabot](https://github.com/dependabot))\n- Update publish-release workflow for PyPI trusted publisher [#7176](https://github.com/jupyter/notebook/pull/7176) ([@jtpio](https://github.com/jtpio))\n- chore: update pre-commit hooks [#7174](https://github.com/jupyter/notebook/pull/7174) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Remove viewport workaround in the UI tests [#6887](https://github.com/jupyter/notebook/pull/6887) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Clarify README about supported versions (post v7 release) [#7193](https://github.com/jupyter/notebook/pull/7193) ([@akx](https://github.com/akx))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-12-04&to=2023-12-27&type=c))\n\n[@akx](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aakx+updated%3A2023-12-04..2023-12-27&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-12-04..2023-12-27&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-12-04..2023-12-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-12-04..2023-12-27&type=Issues) | [@haok1402](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahaok1402+updated%3A2023-12-04..2023-12-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-12-04..2023-12-27&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-12-04..2023-12-27&type=Issues)\n\n## 7.1.0a1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.1.0-alpha.0...a74cd91871fcc6037d384fe59af8986557e783e5))\n\n### Enhancements made\n\n- Bump to JupyterLab 4.1.0a4 bis [#7172](https://github.com/jupyter/notebook/pull/7172) ([@brichet](https://github.com/brichet))\n- Update to JupyterLab `4.1.0a3` [#7161](https://github.com/jupyter/notebook/pull/7161) ([@jtpio](https://github.com/jtpio))\n- Add the JupyterLab resources plugin [#6968](https://github.com/jupyter/notebook/pull/6968) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update `yarn.lock` [#7170](https://github.com/jupyter/notebook/pull/7170) ([@jtpio](https://github.com/jtpio))\n- Bump axios from 1.5.1 to 1.6.2 [#7165](https://github.com/jupyter/notebook/pull/7165) ([@dependabot](https://github.com/dependabot))\n- Bump dessant/lock-threads from 4 to 5 [#7159](https://github.com/jupyter/notebook/pull/7159) ([@dependabot](https://github.com/dependabot))\n- Update ruff config and typing [#7145](https://github.com/jupyter/notebook/pull/7145) ([@blink1073](https://github.com/blink1073))\n- chore: update pre-commit hooks [#7143](https://github.com/jupyter/notebook/pull/7143) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Clean up lint handling [#7142](https://github.com/jupyter/notebook/pull/7142) ([@blink1073](https://github.com/blink1073))\n- Adopt ruff format [#7132](https://github.com/jupyter/notebook/pull/7132) ([@blink1073](https://github.com/blink1073))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-27&to=2023-12-04&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-10-27..2023-12-04&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-10-27..2023-12-04&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-10-27..2023-12-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-27..2023-12-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-27..2023-12-04&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-10-27..2023-12-04&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-10-27..2023-12-04&type=Issues)\n\n## 7.1.0a0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.0.6...0cd6104b926a398b419f2433538cef437592796f))\n\n### Enhancements made\n\n- Added Lumino Plugin Description (#7008) [#7127](https://github.com/jupyter/notebook/pull/7127) ([@Dilip-Jain](https://github.com/Dilip-Jain))\n- Update to JupyterLab 4.1 [#7096](https://github.com/jupyter/notebook/pull/7096) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Fix python bumping to `minor` [#7131](https://github.com/jupyter/notebook/pull/7131) ([@jtpio](https://github.com/jtpio))\n- Add Python 3.12 classifier [#7111](https://github.com/jupyter/notebook/pull/7111) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Set `navigation_with_keys` to `False` [#7129](https://github.com/jupyter/notebook/pull/7129) ([@jtpio](https://github.com/jtpio))\n- Updated ui-tests Configuration in Contributing.md [#7124](https://github.com/jupyter/notebook/pull/7124) ([@jayeshsingh9767](https://github.com/jayeshsingh9767))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-17&to=2023-10-27&type=c))\n\n[@Dilip-Jain](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ADilip-Jain+updated%3A2023-10-17..2023-10-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-17..2023-10-27&type=Issues) | [@jayeshsingh9767](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajayeshsingh9767+updated%3A2023-10-17..2023-10-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-17..2023-10-27&type=Issues)\n\n## v7.0\n\n## 7.0.6\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.5...c62caffb02856737870cbc79a2cdb43b3e89c363))\n\n### Bugs fixed\n\n- Updated fav-icon Base URL from JupyterLab PageConfig. [#7109](https://github.com/jupyter/notebook/pull/7109) ([@jayeshsingh9767](https://github.com/jayeshsingh9767))\n\n### Maintenance and upkeep improvements\n\n- Fix typings [#7110](https://github.com/jupyter/notebook/pull/7110) ([@jtpio](https://github.com/jtpio))\n- Bump postcss from 8.4.27 to 8.4.31 [#7089](https://github.com/jupyter/notebook/pull/7089) ([@dependabot](https://github.com/dependabot))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-10-12&to=2023-10-17&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-10-12..2023-10-17&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-10-12..2023-10-17&type=Issues) | [@jayeshsingh9767](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajayeshsingh9767+updated%3A2023-10-12..2023-10-17&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-10-12..2023-10-17&type=Issues)\n\n## 7.0.5\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.4...839193d07f0780ded6f559892517f061f3776b02))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.7 [#7103](https://github.com/jupyter/notebook/pull/7103) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update `permissions` in the galata snapshot workflow [#7105](https://github.com/jupyter/notebook/pull/7105) ([@jtpio](https://github.com/jtpio))\n- Fix typings check on CI [#7104](https://github.com/jupyter/notebook/pull/7104) ([@jtpio](https://github.com/jtpio))\n- Ignore yarn.lock for codespell [#7098](https://github.com/jupyter/notebook/pull/7098) ([@jtpio](https://github.com/jtpio))\n- Remove link to the PDF documentation [#7094](https://github.com/jupyter/notebook/pull/7094) ([@jtpio](https://github.com/jtpio))\n- Bump postcss from 8.4.23 to 8.4.31 in /ui-tests [#7088](https://github.com/jupyter/notebook/pull/7088) ([@dependabot](https://github.com/dependabot))\n- React to the galata update comment [#7086](https://github.com/jupyter/notebook/pull/7086) ([@jtpio](https://github.com/jtpio))\n- Switch from `hub` to `gh` in the Playwright snapshots update workflow [#7085](https://github.com/jupyter/notebook/pull/7085) ([@jtpio](https://github.com/jtpio))\n- chore: update pre-commit hooks [#7084](https://github.com/jupyter/notebook/pull/7084) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Fix traitlets typing [#7082](https://github.com/jupyter/notebook/pull/7082) ([@jtpio](https://github.com/jtpio))\n- Bump toshimaru/auto-author-assign from 2.0.0 to 2.0.1 [#7080](https://github.com/jupyter/notebook/pull/7080) ([@dependabot](https://github.com/dependabot))\n- Bump toshimaru/auto-author-assign from 1.6.2 to 2.0.0 [#7072](https://github.com/jupyter/notebook/pull/7072) ([@dependabot](https://github.com/dependabot))\n- ci: set minimal permissions to workflows [#7070](https://github.com/jupyter/notebook/pull/7070) ([@diogoteles08](https://github.com/diogoteles08))\n- Bump systeminformation from 5.17.12 to 5.21.8 in /ui-tests [#7064](https://github.com/jupyter/notebook/pull/7064) ([@dependabot](https://github.com/dependabot))\n\n### Documentation improvements\n\n- Improve docs setup (SVG logos, repo links) [#7074](https://github.com/jupyter/notebook/pull/7074) ([@krassowski](https://github.com/krassowski))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-09-20&to=2023-10-12&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-09-20..2023-10-12&type=Issues) | [@diogoteles08](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adiogoteles08+updated%3A2023-09-20..2023-10-12&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-09-20..2023-10-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-09-20..2023-10-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-09-20..2023-10-12&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-09-20..2023-10-12&type=Issues)\n\n## 7.0.4\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.3...0e62386fc71ed4bd424c989f9d5493ca346f1d9a))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.6 [#7049](https://github.com/jupyter/notebook/pull/7049) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix `app_version` [#7061](https://github.com/jupyter/notebook/pull/7061) ([@jtpio](https://github.com/jtpio))\n- fix trusted status indication [#7036](https://github.com/jupyter/notebook/pull/7036) ([@adigaboy](https://github.com/adigaboy))\n\n### Maintenance and upkeep improvements\n\n- Update Binder environment [#7059](https://github.com/jupyter/notebook/pull/7059) ([@jtpio](https://github.com/jtpio))\n- Add `deduplicate` top-level script [#7058](https://github.com/jupyter/notebook/pull/7058) ([@jtpio](https://github.com/jtpio))\n- Move opening path in new browser tabs to a separate plugin [#7056](https://github.com/jupyter/notebook/pull/7056) ([@jtpio](https://github.com/jtpio))\n- Enable the Playwright trace [#7050](https://github.com/jupyter/notebook/pull/7050) ([@jtpio](https://github.com/jtpio))\n- Bump actions/checkout from 3 to 4 [#7040](https://github.com/jupyter/notebook/pull/7040) ([@dependabot](https://github.com/dependabot))\n- Adopt sp-repo-review [#7039](https://github.com/jupyter/notebook/pull/7039) ([@blink1073](https://github.com/blink1073))\n- Add `datetime.datetime.utc()` to the filter list [#7037](https://github.com/jupyter/notebook/pull/7037) ([@jtpio](https://github.com/jtpio))\n- Fix docs build on Gitpod [#7026](https://github.com/jupyter/notebook/pull/7026) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-08-30&to=2023-09-20&type=c))\n\n[@adigaboy](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aadigaboy+updated%3A2023-08-30..2023-09-20&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-08-30..2023-09-20&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-08-30..2023-09-20&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-08-30..2023-09-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-08-30..2023-09-20&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-08-30..2023-09-20&type=Issues)\n\n## 7.0.3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.2...e2eb8f2a166ba7b339309b8bfbff40e6c9e0a9b9))\n\n### Bugs fixed\n\n- Require importlib_resources for testing on Python \\< 3.10 [#7016](https://github.com/jupyter/notebook/pull/7016) ([@bnavigator](https://github.com/bnavigator))\n- Fix Python 3.12 compatibility [#6965](https://github.com/jupyter/notebook/pull/6965) ([@frenzymadness](https://github.com/frenzymadness))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.0.5 [#7013](https://github.com/jupyter/notebook/pull/7013) ([@jtpio](https://github.com/jtpio))\n- Test against Python 3.12 [#6999](https://github.com/jupyter/notebook/pull/6999) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Mention the nx graph in the contributing guide [#7001](https://github.com/jupyter/notebook/pull/7001) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-08-04&to=2023-08-30&type=c))\n\n[@bnavigator](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abnavigator+updated%3A2023-08-04..2023-08-30&type=Issues) | [@defjaf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adefjaf+updated%3A2023-08-04..2023-08-30&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-08-04..2023-08-30&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-08-04..2023-08-30&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-08-04..2023-08-30&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2023-08-04..2023-08-30&type=Issues)\n\n## 7.0.2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.1...af5edd42374cadba65feed2e6828b1ef96295daf))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.4 packages [#6998](https://github.com/jupyter/notebook/pull/6998) ([@jtpio](https://github.com/jtpio))\n- Improve about dialog [#6996](https://github.com/jupyter/notebook/pull/6996) ([@yjrab](https://github.com/yjrab))\n- Added documentation link in Help menu [#6993](https://github.com/jupyter/notebook/pull/6993) ([@Mikil03](https://github.com/Mikil03))\n\n### Bugs fixed\n\n- Remove `RedirectHandler` [#6997](https://github.com/jupyter/notebook/pull/6997) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-07-31&to=2023-08-04&type=c))\n\n[@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-07-31..2023-08-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-07-31..2023-08-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-07-31..2023-08-04&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2023-07-31..2023-08-04&type=Issues) | [@Mikil03](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AMikil03+updated%3A2023-07-31..2023-08-04&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-07-31..2023-08-04&type=Issues) | [@shaneknapp](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ashaneknapp+updated%3A2023-07-31..2023-08-04&type=Issues) | [@yjrab](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayjrab+updated%3A2023-07-31..2023-08-04&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2023-07-31..2023-08-04&type=Issues)\n\n## 7.0.1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/app@7.0.0...ac3c882a246b46c15c1963ef4b65427a4257b132))\n\n### Enhancements made\n\n- Update accessibly compliance section in the docs [#6982](https://github.com/jupyter/notebook/pull/6982) ([@andrii-i](https://github.com/andrii-i))\n- Update the browser tab favicon on kernel busy [#6980](https://github.com/jupyter/notebook/pull/6980) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Bump `word-wrap` and `semver` [#6979](https://github.com/jupyter/notebook/pull/6979) ([@jtpio](https://github.com/jtpio))\n- Enable lerna caching for build scripts [#6767](https://github.com/jupyter/notebook/pull/6767) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Update accessibly compliance section in the docs [#6982](https://github.com/jupyter/notebook/pull/6982) ([@andrii-i](https://github.com/andrii-i))\n- Fix link in `README.md` [#6973](https://github.com/jupyter/notebook/pull/6973) ([@jtpio](https://github.com/jtpio))\n- The future is now [#6972](https://github.com/jupyter/notebook/pull/6972) ([@frenzymadness](https://github.com/frenzymadness))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-07-19&to=2023-07-31&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-07-19..2023-07-31&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-07-19..2023-07-31&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-07-19..2023-07-31&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-07-19..2023-07-31&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-07-19..2023-07-31&type=Issues) | [@prof-lupin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aprof-lupin+updated%3A2023-07-19..2023-07-31&type=Issues)\n\n## 7.0.0\n\nJupyter Notebook 7 is released :tada:\n\nCheck the changelog: https://jupyter-notebook.readthedocs.io/en/latest/changelog.html\n\nAnd the new features in Notebook 7: https://jupyter-notebook.readthedocs.io/en/latest/notebook_7_features.html\n\nMigration Guide: https://jupyter-notebook.readthedocs.io/en/latest/migrate_to_notebook7.html\n\n______________________________________________________________________\n\nFor reference here is the changelog since the last `7.0.0rc2` release.\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0rc2...2be98e8f39af7f3ec2729006018f6baf0998f94b))\n\n### Bugs fixed\n\n- Update Jupytext Notebook url path [#6961](https://github.com/jupyter/notebook/pull/6961) ([@RRosio](https://github.com/RRosio))\n\n### Maintenance and upkeep improvements\n\n- Fix hatch version when going from rc [#6971](https://github.com/jupyter/notebook/pull/6971) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.0.3 [#6967](https://github.com/jupyter/notebook/pull/6967) ([@jtpio](https://github.com/jtpio))\n- Bump semver from 7.5.0 to 7.5.3 in /ui-tests [#6950](https://github.com/jupyter/notebook/pull/6950) ([@dependabot](https://github.com/dependabot))\n\n### Documentation improvements\n\n- fix: update link to troubleshooting guidelines [#6964](https://github.com/jupyter/notebook/pull/6964) ([@emmanuel-ferdman](https://github.com/emmanuel-ferdman))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-26&to=2023-07-19&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-06-26..2023-07-19&type=Issues) | [@emmanuel-ferdman](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aemmanuel-ferdman+updated%3A2023-06-26..2023-07-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-26..2023-07-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-26..2023-07-19&type=Issues) | [@parmentelat](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aparmentelat+updated%3A2023-06-26..2023-07-19&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-06-26..2023-07-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-06-26..2023-07-19&type=Issues)\n\n## 7.0.0rc2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0rc1...27c00bc56afaa5b89713f760b0cc6eb88079224e))\n\n### Bugs fixed\n\n- Fix opening files from the CLI [#6946](https://github.com/jupyter/notebook/pull/6946) ([@jtpio](https://github.com/jtpio))\n- Fix handling of the base url [#6943](https://github.com/jupyter/notebook/pull/6943) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-22&to=2023-06-26&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-22..2023-06-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-22..2023-06-26&type=Issues) | [@parmentelat](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aparmentelat+updated%3A2023-06-22..2023-06-26&type=Issues)\n\n## 7.0.0rc1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0rc0...8493e1ba21ebaca5c192d68bdc829ccc5b29a799))\n\n### Enhancements made\n\n- Close the browser tab when clicking on \"Close and Shut Down Notebook\" [#6937](https://github.com/jupyter/notebook/pull/6937) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix the redirect handler [#6941](https://github.com/jupyter/notebook/pull/6941) ([@jtpio](https://github.com/jtpio))\n- Make jupyter logo select properly (#6927) [#6938](https://github.com/jupyter/notebook/pull/6938) ([@Cheukting](https://github.com/Cheukting))\n\n### Documentation improvements\n\n- Update issue templates [#6939](https://github.com/jupyter/notebook/pull/6939) ([@RRosio](https://github.com/RRosio))\n- Docs parity for find with JupyterLab. [#6917](https://github.com/jupyter/notebook/pull/6917) ([@ericsnekbytes](https://github.com/ericsnekbytes))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-19&to=2023-06-22&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-06-19..2023-06-22&type=Issues) | [@Cheukting](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACheukting+updated%3A2023-06-19..2023-06-22&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2023-06-19..2023-06-22&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-19..2023-06-22&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-19..2023-06-22&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-06-19..2023-06-22&type=Issues)\n\n## 7.0.0rc0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b4...d0692112a4b2db20c2178205d4b5630184acbf7b))\n\n### Enhancements made\n\n- Update JupyterLab, audit document viewers [#6922](https://github.com/jupyter/notebook/pull/6922) ([@jtpio](https://github.com/jtpio))\n- Customize the shell layout with the settings [#6921](https://github.com/jupyter/notebook/pull/6921) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix default viewers override [#6923](https://github.com/jupyter/notebook/pull/6923) ([@jtpio](https://github.com/jtpio))\n- Align JupyterHub config with JupyterLab [#6918](https://github.com/jupyter/notebook/pull/6918) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Added example of custom css files [#6919](https://github.com/jupyter/notebook/pull/6919) ([@RRosio](https://github.com/RRosio))\n\n### API and Breaking Changes\n\n- Customize the shell layout with the settings [#6921](https://github.com/jupyter/notebook/pull/6921) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-06-12&to=2023-06-19&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-06-12..2023-06-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-06-12..2023-06-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-06-12..2023-06-19&type=Issues)\n\n## 7.0.0b4\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b3...ee3e1c221226d482ca1c9bec6362c8af36f1da56))\n\n### Enhancements made\n\n- Rename browser tab title to Home [#6913](https://github.com/jupyter/notebook/pull/6913) ([@Cheukting](https://github.com/Cheukting))\n- Add the notification plugin [#6900](https://github.com/jupyter/notebook/pull/6900) ([@jtpio](https://github.com/jtpio))\n- Configurable `default_url` for JupyterNotebookApp [#6899](https://github.com/jupyter/notebook/pull/6899) ([@paulgb](https://github.com/paulgb))\n- Enhancement: Added drop shadows to markdown, text, and tree views [#6893](https://github.com/jupyter/notebook/pull/6893) ([@rielAsh24](https://github.com/rielAsh24))\n- Update to JupyterLab 4.0.1 [#6892](https://github.com/jupyter/notebook/pull/6892) ([@jtpio](https://github.com/jtpio))\n- Add file browser actions to the file browser toolbar [#6888](https://github.com/jupyter/notebook/pull/6888) ([@jtpio](https://github.com/jtpio))\n- Add option to open a notebook in NbClassic if it is installed; show \"Open in...\" dropdown menu if there are multiple options, show single button otherwise [#6866](https://github.com/jupyter/notebook/pull/6866) ([@andrii-i](https://github.com/andrii-i))\n- Load custom CSS [#6841](https://github.com/jupyter/notebook/pull/6841) ([@RRosio](https://github.com/RRosio))\n\n### Bugs fixed\n\n- Add an empty splash screen on notebook launch to avoid a flash of unstyled content  [#6911](https://github.com/jupyter/notebook/pull/6911) ([@andrii-i](https://github.com/andrii-i))\n- Fix for \"find searches only part of the file\" bug [#6905](https://github.com/jupyter/notebook/pull/6905) ([@ericsnekbytes](https://github.com/ericsnekbytes))\n- Provide a custom rendermime plugin to handle local links [#6885](https://github.com/jupyter/notebook/pull/6885) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Fix check links on CI [#6910](https://github.com/jupyter/notebook/pull/6910) ([@jtpio](https://github.com/jtpio))\n- Add `JSONLicenseWebpackPlugin` [#6896](https://github.com/jupyter/notebook/pull/6896) ([@jtpio](https://github.com/jtpio))\n- Simplify Gitpod setup [#6894](https://github.com/jupyter/notebook/pull/6894) ([@jtpio](https://github.com/jtpio))\n- Fix action name in update workflow [#6884](https://github.com/jupyter/notebook/pull/6884) ([@jtpio](https://github.com/jtpio))\n- Fix playwright bot [#6880](https://github.com/jupyter/notebook/pull/6880) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Document how to manage plugins and extensions [#6909](https://github.com/jupyter/notebook/pull/6909) ([@jtpio](https://github.com/jtpio))\n- Jupyter Notebook ecosystem docs improvements [#6877](https://github.com/jupyter/notebook/pull/6877) ([@ericsnekbytes](https://github.com/ericsnekbytes))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-05-25&to=2023-06-12&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-05-25..2023-06-12&type=Issues) | [@Cheukting](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACheukting+updated%3A2023-05-25..2023-06-12&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-05-25..2023-06-12&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2023-05-25..2023-06-12&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-05-25..2023-06-12&type=Issues) | [@henryiii](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahenryiii+updated%3A2023-05-25..2023-06-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-05-25..2023-06-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2023-05-25..2023-06-12&type=Issues) | [@paulgb](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apaulgb+updated%3A2023-05-25..2023-06-12&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-05-25..2023-06-12&type=Issues) | [@rielAsh24](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ArielAsh24+updated%3A2023-05-25..2023-06-12&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-05-25..2023-06-12&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayuvipanda+updated%3A2023-05-25..2023-06-12&type=Issues)\n\n## 7.0.0b3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b2...93e4d5e1c6ed7a3a4875eed284255587ac293819))\n\n### Enhancements made\n\n- Copy edits for `migrate_to_notebook7` [#6879](https://github.com/jupyter/notebook/pull/6879) ([@JasonWeill](https://github.com/JasonWeill))\n- Enable add a cell button [#6872](https://github.com/jupyter/notebook/pull/6872) ([@tuncbkose](https://github.com/tuncbkose))\n- Update to JupyterLab 4 final [#6871](https://github.com/jupyter/notebook/pull/6871) ([@jtpio](https://github.com/jtpio))\n- Remove \"Close Tab\" menu entry [#6843](https://github.com/jupyter/notebook/pull/6843) ([@timmerk3](https://github.com/timmerk3))\n\n### Bugs fixed\n\n- Fix handling of the default factory in the URL [#6873](https://github.com/jupyter/notebook/pull/6873) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to Playwright 1.33 [#6874](https://github.com/jupyter/notebook/pull/6874) ([@jtpio](https://github.com/jtpio))\n- Fix check links on CI [#6870](https://github.com/jupyter/notebook/pull/6870) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Copy edits for `migrate_to_notebook7` [#6879](https://github.com/jupyter/notebook/pull/6879) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-05-09&to=2023-05-25&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-05-09..2023-05-25&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-05-09..2023-05-25&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2023-05-09..2023-05-25&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-05-09..2023-05-25&type=Issues) | [@timmerk3](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atimmerk3+updated%3A2023-05-09..2023-05-25&type=Issues) | [@tuncbkose](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atuncbkose+updated%3A2023-05-09..2023-05-25&type=Issues)\n\n## 7.0.0b2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b1...c0071d796019c0221df4900313b51c0529438bcf))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0rc1 [#6864](https://github.com/jupyter/notebook/pull/6864) ([@jtpio](https://github.com/jtpio))\n- Change \"Interface\" menu to \"Open in...\", shorten names of menu items inside [#6847](https://github.com/jupyter/notebook/pull/6847) ([@andrii-i](https://github.com/andrii-i))\n- Add Skip Link to Notebook [#6844](https://github.com/jupyter/notebook/pull/6844) ([@seirani](https://github.com/seirani))\n\n### Bugs fixed\n\n- Fix top bar visibility not picking up settings overrides (#6833) [#6836](https://github.com/jupyter/notebook/pull/6836) ([@yumyumqing](https://github.com/yumyumqing))\n\n### Maintenance and upkeep improvements\n\n- Update RTD image [#6861](https://github.com/jupyter/notebook/pull/6861) ([@blink1073](https://github.com/blink1073))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-04-28&to=2023-05-09&type=c))\n\n[@andrii-i](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aandrii-i+updated%3A2023-04-28..2023-05-09&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-04-28..2023-05-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-04-28..2023-05-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-04-28..2023-05-09&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-04-28..2023-05-09&type=Issues) | [@seirani](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aseirani+updated%3A2023-04-28..2023-05-09&type=Issues) | [@yumyumqing](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayumyumqing+updated%3A2023-04-28..2023-05-09&type=Issues)\n\n## 7.0.0b1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0b0...4b6af274b24bcc20e43ad2330c9243c8d2c7d552))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0rc0 [#6853](https://github.com/jupyter/notebook/pull/6853) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab `4.0.0b1` and `4.0.0b2` [#6838](https://github.com/jupyter/notebook/pull/6838) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fixes the notebooktools [#6834](https://github.com/jupyter/notebook/pull/6834) ([@brichet](https://github.com/brichet))\n\n### Maintenance and upkeep improvements\n\n- Use local coverage [#6839](https://github.com/jupyter/notebook/pull/6839) ([@blink1073](https://github.com/blink1073))\n\n### Documentation improvements\n\n- Added extra information and user-action summaries to 7 migration docs. [#6850](https://github.com/jupyter/notebook/pull/6850) ([@ericsnekbytes](https://github.com/ericsnekbytes))\n- Rename migration file to `migrate_to_notebook7` [#6831](https://github.com/jupyter/notebook/pull/6831) ([@jtpio](https://github.com/jtpio))\n- Use correct canonical URL while building docs [#6829](https://github.com/jupyter/notebook/pull/6829) ([@ashwinvis](https://github.com/ashwinvis))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-04-04&to=2023-04-28&type=c))\n\n[@ashwinvis](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aashwinvis+updated%3A2023-04-04..2023-04-28&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-04-04..2023-04-28&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-04-04..2023-04-28&type=Issues) | [@ericsnekbytes](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aericsnekbytes+updated%3A2023-04-04..2023-04-28&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-04-04..2023-04-28&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-04-04..2023-04-28&type=Issues)\n\n## 7.0.0b0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a18...b99718f57a8beac7b4019901a57c94984781dd49))\n\n### Enhancements made\n\n- Update to JupyterLab `4.0.0b0` [#6803](https://github.com/jupyter/notebook/pull/6803) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- added white space to bottom of edit files [#6804](https://github.com/jupyter/notebook/pull/6804) ([@jesuscastillx](https://github.com/jesuscastillx))\n- Hides 'micro' toolbars in notebook [#6791](https://github.com/jupyter/notebook/pull/6791) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Maintenance and upkeep improvements\n\n- Add missing singleton packages for RTC [#6816](https://github.com/jupyter/notebook/pull/6816) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Improve the documentation for Notebook 7 [#6813](https://github.com/jupyter/notebook/pull/6813) ([@jtpio](https://github.com/jtpio))\n- fix typo in the migration guide [#6812](https://github.com/jupyter/notebook/pull/6812) ([@Tiksagol](https://github.com/Tiksagol))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-24&to=2023-04-04&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-24..2023-04-04&type=Issues) | [@j-publius](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aj-publius+updated%3A2023-03-24..2023-04-04&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2023-03-24..2023-04-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-24..2023-04-04&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-03-24..2023-04-04&type=Issues) | [@Tiksagol](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ATiksagol+updated%3A2023-03-24..2023-04-04&type=Issues)\n\n## 7.0.0a18\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a17...253efe279f8c8005f016f3dfe28c22233ee1d2dd))\n\n### Enhancements made\n\n- Add back the `csvviewer-extension` [#6799](https://github.com/jupyter/notebook/pull/6799) ([@jtpio](https://github.com/jtpio))\n- Fix JSON setting editor not opening issue [#6795](https://github.com/jupyter/notebook/pull/6795) ([@yumyumqing](https://github.com/yumyumqing))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-20&to=2023-03-24&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-20..2023-03-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-20..2023-03-24&type=Issues) | [@yumyumqing](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayumyumqing+updated%3A2023-03-20..2023-03-24&type=Issues)\n\n## 7.0.0a17\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a16...7903de83e83a6ce342d71895dc1e8c2ec8128174))\n\n### Highlights\n\nThis major change in this release is the update to the latest JupyterLab `4.0.0a37`.\n\nCheck out the [JupyterLab `4.0.0a37` release notes](https://github.com/jupyterlab/jupyterlab/releases/tag/v4.0.0a37) for more details.\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a37 [#6777](https://github.com/jupyter/notebook/pull/6777) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Replace the use of `toArray` by `Array.from` [#6775](https://github.com/jupyter/notebook/pull/6775) (`@tarunsamanta2k20`)\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-15&to=2023-03-20&type=c))\n\n[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-15..2023-03-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-15..2023-03-20&type=Issues) | [@tarunsamanta2k20](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atarunsamanta2k20+updated%3A2023-03-15..2023-03-20&type=Issues)\n\n## 7.0.0a16\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a15...0faa88c8b65e0302f1904e4ca9cd2e551525f352))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a36 [#6773](https://github.com/jupyter/notebook/pull/6773) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Clean up interface switcher plugin in preparation for release [#6766](https://github.com/jupyter/notebook/pull/6766) ([@afshin](https://github.com/afshin))\n- Remove empty `py.test` file [#6764](https://github.com/jupyter/notebook/pull/6764) ([@frenzymadness](https://github.com/frenzymadness))\n\n### Documentation improvements\n\n- Add documentation for contributing to the docs [#6771](https://github.com/jupyter/notebook/pull/6771) ([@jtpio](https://github.com/jtpio))\n- Convert docs to Markdown [#6770](https://github.com/jupyter/notebook/pull/6770) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-08&to=2023-03-15&type=c))\n\n[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2023-03-08..2023-03-15&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-03-08..2023-03-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-08..2023-03-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-08..2023-03-15&type=Issues)\n\n## 7.0.0a15\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a14...1ccb8f15d6bf3557eed2405438a9df3c1d6cd040))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a35 [#6757](https://github.com/jupyter/notebook/pull/6757) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Bump vega from 5.22.1 to 5.23.0 in /ui-tests [#6756](https://github.com/jupyter/notebook/pull/6756) ([@dependabot](https://github.com/dependabot))\n- Bump vega-functions from 5.13.0 to 5.13.1 in /ui-tests [#6754](https://github.com/jupyter/notebook/pull/6754) ([@dependabot](https://github.com/dependabot))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-03-01&to=2023-03-08&type=c))\n\n[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2023-03-01..2023-03-08&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-03-01..2023-03-08&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-03-01..2023-03-08&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-03-01..2023-03-08&type=Issues)\n\n## 7.0.0a14\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a13...f9e427cf4e92dbaa5794fe0331ca92b41d45d52c))\n\n### Enhancements made\n\n- Fix loading of plugins [#6750](https://github.com/jupyter/notebook/pull/6750) ([@jtpio](https://github.com/jtpio))\n- Add the extension manager [#6747](https://github.com/jupyter/notebook/pull/6747) ([@jtpio](https://github.com/jtpio))\n- File browser CSS tweaks [#6738](https://github.com/jupyter/notebook/pull/6738) ([@jtpio](https://github.com/jtpio))\n- Add trusted indicator [#6736](https://github.com/jupyter/notebook/pull/6736) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Clean up license [#6743](https://github.com/jupyter/notebook/pull/6743) ([@dcsaba89](https://github.com/dcsaba89))\n- Update to TypeScript 5 [#6735](https://github.com/jupyter/notebook/pull/6735) ([@jtpio](https://github.com/jtpio))\n- Enable `nx` [#6718](https://github.com/jupyter/notebook/pull/6718) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Corrected \"Recomment\" to \"Recommend\" [#6741](https://github.com/jupyter/notebook/pull/6741) ([@Tony-j77](https://github.com/Tony-j77))\n- Docs: add migrate to notebook7 page [#6737](https://github.com/jupyter/notebook/pull/6737) ([@echarles](https://github.com/echarles))\n- Add section about updating reference snapshots [#6733](https://github.com/jupyter/notebook/pull/6733) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-02-15&to=2023-03-01&type=c))\n\n[@dcsaba89](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adcsaba89+updated%3A2023-02-15..2023-03-01&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2023-02-15..2023-03-01&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-02-15..2023-03-01&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-02-15..2023-03-01&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-02-15..2023-03-01&type=Issues) | [@Tony-j77](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ATony-j77+updated%3A2023-02-15..2023-03-01&type=Issues)\n\n## 7.0.0a13\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a12...ef67879306b27dfa78b8d639d9cc142b50f8c7ba))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a34 [#6732](https://github.com/jupyter/notebook/pull/6732) ([@jtpio](https://github.com/jtpio))\n- Hide the debugger button on mobile [#6731](https://github.com/jupyter/notebook/pull/6731) ([@jtpio](https://github.com/jtpio))\n- Adds translator to the NotebookShell [#6725](https://github.com/jupyter/notebook/pull/6725) ([@brichet](https://github.com/brichet))\n- Resolving some accessibility issues [#6719](https://github.com/jupyter/notebook/pull/6719) ([@brichet](https://github.com/brichet))\n\n### Maintenance and upkeep improvements\n\n- Fix Playwright snapshot update workflow [#6724](https://github.com/jupyter/notebook/pull/6724) ([@jtpio](https://github.com/jtpio))\n- Add workflow to update snapshots [#6723](https://github.com/jupyter/notebook/pull/6723) ([@jtpio](https://github.com/jtpio))\n- Use Playwright `webServer` [#6720](https://github.com/jupyter/notebook/pull/6720) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-02-08&to=2023-02-15&type=c))\n\n[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-02-08..2023-02-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-02-08..2023-02-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-02-08..2023-02-15&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2023-02-08..2023-02-15&type=Issues)\n\n## 7.0.0a12\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a11...27c2bfbb80d42a3fd2541b13fae6143e2e91e4dd))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a33 [#6713](https://github.com/jupyter/notebook/pull/6713) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Add more lint checks [#6706](https://github.com/jupyter/notebook/pull/6706) ([@blink1073](https://github.com/blink1073))\n- Reintroduce desktop file [#6705](https://github.com/jupyter/notebook/pull/6705) ([@frenzymadness](https://github.com/frenzymadness))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-01-19&to=2023-02-08&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-01-19..2023-02-08&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2023-01-19..2023-02-08&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-01-19..2023-02-08&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-01-19..2023-02-08&type=Issues)\n\n## 7.0.0a11\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a10...6d4eeed9d176e2523be7874ae4d9f46a99422d72))\n\n### Enhancements made\n\n- Tree view enhancement [#6588](https://github.com/jupyter/notebook/pull/6588) ([@brichet](https://github.com/brichet))\n- Add the Settings Editor to the landing page [#6316](https://github.com/jupyter/notebook/pull/6316) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix console error when adding a widget to a side panel [#6694](https://github.com/jupyter/notebook/pull/6694) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Help-extension split into multiple plugins [#6700](https://github.com/jupyter/notebook/pull/6700) ([@RRosio](https://github.com/RRosio))\n- Add releaser workflows [#6698](https://github.com/jupyter/notebook/pull/6698) ([@blink1073](https://github.com/blink1073))\n- Create `auto_author_assign.yml` workflow [#6696](https://github.com/jupyter/notebook/pull/6696) ([@jtpio](https://github.com/jtpio))\n- Add back `# type:ignore` [#6695](https://github.com/jupyter/notebook/pull/6695) ([@jtpio](https://github.com/jtpio))\n- Fix environment activation on Gitpod [#6693](https://github.com/jupyter/notebook/pull/6693) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2023-01-09&to=2023-01-19&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2023-01-09..2023-01-19&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2023-01-09..2023-01-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2023-01-09..2023-01-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2023-01-09..2023-01-19&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2023-01-09..2023-01-19&type=Issues)\n\n## 7.0.0a10\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a9...6205bf376f783b7202af71e1074f44086ee7056c))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a32 [#6678](https://github.com/jupyter/notebook/pull/6678) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Bump json5 from 2.2.1 to 2.2.3 in /ui-tests [#6684](https://github.com/jupyter/notebook/pull/6684) ([@dependabot](https://github.com/dependabot))\n- Bump json5 from 1.0.1 to 1.0.2 [#6681](https://github.com/jupyter/notebook/pull/6681) ([@dependabot](https://github.com/dependabot))\n- Update the copyright date to 2023 in the about dialog [#6679](https://github.com/jupyter/notebook/pull/6679) ([@jtpio](https://github.com/jtpio))\n- Fix `check_links` and  `Test Lint` CI failures [#6675](https://github.com/jupyter/notebook/pull/6675) ([@jtpio](https://github.com/jtpio))\n- Add spelling and docstring enforcement [#6669](https://github.com/jupyter/notebook/pull/6669) ([@blink1073](https://github.com/blink1073))\n- CI Cleanup [#6667](https://github.com/jupyter/notebook/pull/6667) ([@blink1073](https://github.com/blink1073))\n- Adopt ruff and typing [#6658](https://github.com/jupyter/notebook/pull/6658) ([@blink1073](https://github.com/blink1073))\n- Bump decode-uri-component from 0.2.0 to 0.2.2 [#6651](https://github.com/jupyter/notebook/pull/6651) ([@dependabot](https://github.com/dependabot))\n- Bump dessant/lock-threads from 3 to 4 [#6650](https://github.com/jupyter/notebook/pull/6650) ([@dependabot](https://github.com/dependabot))\n- Update to TypeScript 4.9 [#6640](https://github.com/jupyter/notebook/pull/6640) ([@jtpio](https://github.com/jtpio))\n- Add more Python tests [#6639](https://github.com/jupyter/notebook/pull/6639) ([@blink1073](https://github.com/blink1073))\n- use main branch for config [#6638](https://github.com/jupyter/notebook/pull/6638) ([@blink1073](https://github.com/blink1073))\n- Clean up workflows [#6635](https://github.com/jupyter/notebook/pull/6635) ([@blink1073](https://github.com/blink1073))\n- CI Cleanup [#6631](https://github.com/jupyter/notebook/pull/6631) ([@blink1073](https://github.com/blink1073))\n- Fix issue template formatting [#6626](https://github.com/jupyter/notebook/pull/6626) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Remove PDF link to Jupyter Notebook docs [#6648](https://github.com/jupyter/notebook/pull/6648) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-11-21&to=2023-01-09&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-11-21..2023-01-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-11-21..2023-01-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-11-21..2023-01-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-11-21..2023-01-09&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-11-21..2023-01-09&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-11-21..2023-01-09&type=Issues) | [@yacchin1205](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayacchin1205+updated%3A2022-11-21..2023-01-09&type=Issues)\n\n## 7.0.0a9\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a8...b4006ce47bf37b31a7049a77971d7e5db1070660))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a31 [#6627](https://github.com/jupyter/notebook/pull/6627) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Explicitly specify favicon for /tree view in Notebook [#6608](https://github.com/jupyter/notebook/pull/6608) ([@mcrutch](https://github.com/mcrutch))\n\n### Maintenance and upkeep improvements\n\n- Add run-p (npm-run-all) to dev dependencies [#6629](https://github.com/jupyter/notebook/pull/6629) ([@gabalafou](https://github.com/gabalafou))\n- Moves panel related objects to a dedicated module file [#6625](https://github.com/jupyter/notebook/pull/6625) ([@brichet](https://github.com/brichet))\n- Use pathlib instead of os.path.join in `tests/conftest.py` [#6624](https://github.com/jupyter/notebook/pull/6624) ([@kianelbo](https://github.com/kianelbo))\n- Bump loader-utils from 1.4.1 to 1.4.2 [#6623](https://github.com/jupyter/notebook/pull/6623) ([@dependabot](https://github.com/dependabot))\n- Bump to Python 3.11 on CI [#6600](https://github.com/jupyter/notebook/pull/6600) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-11-11&to=2022-11-21&type=c))\n\n[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-11-11..2022-11-21&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-11-11..2022-11-21&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afcollonval+updated%3A2022-11-11..2022-11-21&type=Issues) | [@gabalafou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agabalafou+updated%3A2022-11-11..2022-11-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-11-11..2022-11-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-11-11..2022-11-21&type=Issues) | [@kianelbo](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akianelbo+updated%3A2022-11-11..2022-11-21&type=Issues) | [@mcrutch](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amcrutch+updated%3A2022-11-11..2022-11-21&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-11-11..2022-11-21&type=Issues)\n\n## 7.0.0a8\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a7...9141f3eabb6a10a5bf742b26713405f9768cb6d2))\n\n### Enhancements made\n\n- Restyle about dialog [#6592](https://github.com/jupyter/notebook/pull/6592) ([@kostyafarber](https://github.com/kostyafarber))\n\n### Bugs fixed\n\n- Fix async contents handling and add test [#6616](https://github.com/jupyter/notebook/pull/6616) ([@blink1073](https://github.com/blink1073))\n- Fix PDF renderer [#6584](https://github.com/jupyter/notebook/pull/6584) ([@brichet](https://github.com/brichet))\n- Fix HTML viewer [#6583](https://github.com/jupyter/notebook/pull/6583) ([@brichet](https://github.com/brichet))\n\n### Maintenance and upkeep improvements\n\n- Bump loader-utils from 1.4.0 to 1.4.1 [#6615](https://github.com/jupyter/notebook/pull/6615) ([@dependabot](https://github.com/dependabot))\n- Bump dessant/lock-threads from 2 to 3 [#6587](https://github.com/jupyter/notebook/pull/6587) ([@dependabot](https://github.com/dependabot))\n- Add dependabot config to update GitHub Actions [#6586](https://github.com/jupyter/notebook/pull/6586) ([@jtpio](https://github.com/jtpio))\n- Update `actions/checkout` and `actions/download-artifact` [#6585](https://github.com/jupyter/notebook/pull/6585) ([@jtpio](https://github.com/jtpio))\n- Maintenance cleanup [#6581](https://github.com/jupyter/notebook/pull/6581) ([@blink1073](https://github.com/blink1073))\n- Update to lerna 6 [#6579](https://github.com/jupyter/notebook/pull/6579) ([@jtpio](https://github.com/jtpio))\n- Remove the `nbclassic` explicit uninstall on Binder [#6548](https://github.com/jupyter/notebook/pull/6548) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-10-13&to=2022-11-11&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-10-13..2022-11-11&type=Issues) | [@bnavigator](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abnavigator+updated%3A2022-10-13..2022-11-11&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-10-13..2022-11-11&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-10-13..2022-11-11&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2022-10-13..2022-11-11&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afcollonval+updated%3A2022-10-13..2022-11-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-10-13..2022-11-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-10-13..2022-11-11&type=Issues) | [@kostyafarber](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akostyafarber+updated%3A2022-10-13..2022-11-11&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-10-13..2022-11-11&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-10-13..2022-11-11&type=Issues) | [@venkatasg](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Avenkatasg+updated%3A2022-10-13..2022-11-11&type=Issues)\n\n## 7.0.0a7\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a6...caa0a11e36901c08ae80100fe2bbc5161c47dfee))\n\n### Enhancements made\n\n- Fixed user menu alignment [#6565](https://github.com/jupyter/notebook/pull/6565) ([@Mieju](https://github.com/Mieju))\n- Support for Left and Right panels [#6487](https://github.com/jupyter/notebook/pull/6487) ([@brichet](https://github.com/brichet))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.0.0a30 [#6566](https://github.com/jupyter/notebook/pull/6566) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- Fix typo in CHANGELOG.md [#6561](https://github.com/jupyter/notebook/pull/6561) ([@eltociear](https://github.com/eltociear))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-10-03&to=2022-10-13&type=c))\n\n[@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-10-03..2022-10-13&type=Issues) | [@eltociear](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aeltociear+updated%3A2022-10-03..2022-10-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-10-03..2022-10-13&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-10-03..2022-10-13&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2022-10-03..2022-10-13&type=Issues) | [@Mieju](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AMieju+updated%3A2022-10-03..2022-10-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-10-03..2022-10-13&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-10-03..2022-10-13&type=Issues)\n\n## 7.0.0a6\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a5...acbec17feca2ae8a0f56c5ec04ba2475a42619ee))\n\n### Enhancements made\n\n- Add token on tree widget [#6496](https://github.com/jupyter/notebook/pull/6496) ([@brichet](https://github.com/brichet))\n- Updates README to document maintained versions [#6480](https://github.com/jupyter/notebook/pull/6480) ([@JasonWeill](https://github.com/JasonWeill))\n- Change the tab renderer to allow adding closable tab [#6477](https://github.com/jupyter/notebook/pull/6477) ([@brichet](https://github.com/brichet))\n\n### Bugs fixed\n\n- Fix: No mouse pointer when hovering on the Jupyter icon [#6550](https://github.com/jupyter/notebook/pull/6550) ([@hawkeyes21](https://github.com/hawkeyes21))\n\n### Maintenance and upkeep improvements\n\n- Switch to hatch for python version [#6544](https://github.com/jupyter/notebook/pull/6544) ([@blink1073](https://github.com/blink1073))\n- Update to Lumino 2 and JupyterLab 4.0.0a29 [#6539](https://github.com/jupyter/notebook/pull/6539) ([@afshin](https://github.com/afshin))\n- Update lerna version [#6535](https://github.com/jupyter/notebook/pull/6535) ([@blink1073](https://github.com/blink1073))\n- Add task to auto activate the dev environment on Gitpod [#6527](https://github.com/jupyter/notebook/pull/6527) ([@jtpio](https://github.com/jtpio))\n- Troubleshoot failing `macos` check on CI [#6523](https://github.com/jupyter/notebook/pull/6523) ([@jtpio](https://github.com/jtpio))\n- Update reference snapshots [#6520](https://github.com/jupyter/notebook/pull/6520) ([@jtpio](https://github.com/jtpio))\n- Add Gitpod files [#6518](https://github.com/jupyter/notebook/pull/6518) ([@jtpio](https://github.com/jtpio))\n- Adding jupyterlab-probot yml file for labeling new issues [#6506](https://github.com/jupyter/notebook/pull/6506) ([@RRosio](https://github.com/RRosio))\n- Uninstall `nbclassic` on Binder so Notebook v7 can load [#6505](https://github.com/jupyter/notebook/pull/6505) ([@jtpio](https://github.com/jtpio))\n- Pin `ypy-websocket` to `0.2` [#6499](https://github.com/jupyter/notebook/pull/6499) ([@jtpio](https://github.com/jtpio))\n- Bump moment from 2.29.3 to 2.29.4 [#6483](https://github.com/jupyter/notebook/pull/6483) ([@dependabot](https://github.com/dependabot))\n- Bump moment from 2.29.2 to 2.29.4 in /ui-tests [#6482](https://github.com/jupyter/notebook/pull/6482) ([@dependabot](https://github.com/dependabot))\n- Bump terser from 5.13.1 to 5.14.2 [#6481](https://github.com/jupyter/notebook/pull/6481) ([@dependabot](https://github.com/dependabot))\n- Bump parse-url from 6.0.0 to 6.0.2 [#6465](https://github.com/jupyter/notebook/pull/6465) ([@dependabot](https://github.com/dependabot))\n- Fix tests [#6464](https://github.com/jupyter/notebook/pull/6464) ([@jtpio](https://github.com/jtpio))\n- Bump jpeg-js from 0.4.3 to 0.4.4 in /ui-tests [#6455](https://github.com/jupyter/notebook/pull/6455) ([@dependabot](https://github.com/dependabot))\n\n### Documentation improvements\n\n- Updates README to document maintained versions [#6480](https://github.com/jupyter/notebook/pull/6480) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-06-14&to=2022-10-03&type=c))\n\n[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2022-06-14..2022-10-03&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-06-14..2022-10-03&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abrichet+updated%3A2022-06-14..2022-10-03&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-06-14..2022-10-03&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2022-06-14..2022-10-03&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-06-14..2022-10-03&type=Issues) | [@hawkeyes21](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahawkeyes21+updated%3A2022-06-14..2022-10-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-06-14..2022-10-03&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2022-06-14..2022-10-03&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-06-14..2022-10-03&type=Issues) | [@RRosio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ARRosio+updated%3A2022-06-14..2022-10-03&type=Issues)\n\n## 7.0.0a5\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a4...614e4780b88f5cf5e2bfda39a55357a0be5ef161))\n\n### Enhancements made\n\n- Add shadow to cells [#6433](https://github.com/jupyter/notebook/pull/6433) ([@trungleduc](https://github.com/trungleduc))\n\n### Maintenance and upkeep improvements\n\n- Fix docs build [#6447](https://github.com/jupyter/notebook/pull/6447) ([@jtpio](https://github.com/jtpio))\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6444](https://github.com/jupyter/notebook/pull/6444) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6439](https://github.com/jupyter/notebook/pull/6439) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6434](https://github.com/jupyter/notebook/pull/6434) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Use hatch backend [#6425](https://github.com/jupyter/notebook/pull/6425) ([@blink1073](https://github.com/blink1073))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-05-20&to=2022-06-14&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-05-20..2022-06-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-05-20..2022-06-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-05-20..2022-06-14&type=Issues) | [@ofek](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aofek+updated%3A2022-05-20..2022-06-14&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-05-20..2022-06-14&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atrungleduc+updated%3A2022-05-20..2022-06-14&type=Issues)\n\n## 7.0.0a4\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a3...4bfaaac148a25ba76fcc7416e3a7b2c714b36fcd))\n\n### Enhancements made\n\n- Update to JupyterLab 4.0.0a25 [#6429](https://github.com/jupyter/notebook/pull/6429) ([@jtpio](https://github.com/jtpio))\n- Add cell toolbar extension [#6418](https://github.com/jupyter/notebook/pull/6418) ([@jtpio](https://github.com/jtpio))\n- add the show header command to the command palette [#6415](https://github.com/jupyter/notebook/pull/6415) ([@jeewonkoo](https://github.com/jeewonkoo))\n- Remove the \"Appearance\" menu entry [#6412](https://github.com/jupyter/notebook/pull/6412) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6426](https://github.com/jupyter/notebook/pull/6426) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Allow bot PRs to be automatically labeled [#6414](https://github.com/jupyter/notebook/pull/6414) ([@blink1073](https://github.com/blink1073))\n- Add Visual Regression Test for the export submenu [#6383](https://github.com/jupyter/notebook/pull/6383) ([@jtpio](https://github.com/jtpio))\n- Fix ESLint config for tests [#6382](https://github.com/jupyter/notebook/pull/6382) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-04-27&to=2022-05-20&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-04-27..2022-05-20&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-04-27..2022-05-20&type=Issues) | [@jeewonkoo](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajeewonkoo+updated%3A2022-04-27..2022-05-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-04-27..2022-05-20&type=Issues) | [@ofek](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aofek+updated%3A2022-04-27..2022-05-20&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-04-27..2022-05-20&type=Issues)\n\n## 7.0.0a3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a2...4076882c0e08875dd719945835f8cbe5b10eac9e))\n\n### Enhancements made\n\n- Show file checkboxes by default in the file browser [#6377](https://github.com/jupyter/notebook/pull/6377) ([@jtpio](https://github.com/jtpio))\n- Remove blank space at the bottom of the notebook [#6376](https://github.com/jupyter/notebook/pull/6376) ([@jtpio](https://github.com/jtpio))\n- Add a label to the upload button [#6374](https://github.com/jupyter/notebook/pull/6374) ([@jtpio](https://github.com/jtpio))\n- Update to JupyterLab 4.0.0a24 [#6371](https://github.com/jupyter/notebook/pull/6371) ([@jtpio](https://github.com/jtpio))\n- Initialize handler page_config from Server traitlets [#6366](https://github.com/jupyter/notebook/pull/6366) ([@bollwyvl](https://github.com/bollwyvl))\n- Add project URLs to setup.cfg [#6346](https://github.com/jupyter/notebook/pull/6346) ([@tlinhart](https://github.com/tlinhart))\n- Update to JupyterLab 4.0.0a23 [#6336](https://github.com/jupyter/notebook/pull/6336) ([@jtpio](https://github.com/jtpio))\n\n### Bugs fixed\n\n- Fix opening JupyterLab from Notebook [#6379](https://github.com/jupyter/notebook/pull/6379) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Add UI tests for a simple notebook [#6380](https://github.com/jupyter/notebook/pull/6380) ([@jtpio](https://github.com/jtpio))\n- Bump async from 2.6.3 to 2.6.4 in /ui-tests [#6370](https://github.com/jupyter/notebook/pull/6370) ([@dependabot](https://github.com/dependabot))\n- Fix build workflow on CI [#6369](https://github.com/jupyter/notebook/pull/6369) ([@jtpio](https://github.com/jtpio))\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6365](https://github.com/jupyter/notebook/pull/6365) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6355](https://github.com/jupyter/notebook/pull/6355) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Bump moment from 2.29.1 to 2.29.2 [#6352](https://github.com/jupyter/notebook/pull/6352) ([@dependabot](https://github.com/dependabot))\n- Bump moment from 2.29.1 to 2.29.2 in /ui-tests [#6351](https://github.com/jupyter/notebook/pull/6351) ([@dependabot](https://github.com/dependabot))\n- Clean up pre-commit [#6349](https://github.com/jupyter/notebook/pull/6349) ([@blink1073](https://github.com/blink1073))\n- Update to TypeScript 4.6 [#6345](https://github.com/jupyter/notebook/pull/6345) ([@jtpio](https://github.com/jtpio))\n- \\[pre-commit.ci\\] pre-commit autoupdate [#6343](https://github.com/jupyter/notebook/pull/6343) ([@pre-commit-ci](https://github.com/pre-commit-ci))\n- Add pytest and handle warnings [#6338](https://github.com/jupyter/notebook/pull/6338) ([@blink1073](https://github.com/blink1073))\n- Add flake8 and git-blame-ignore-revs [#6337](https://github.com/jupyter/notebook/pull/6337) ([@blink1073](https://github.com/blink1073))\n- Run Autoformatters [#6335](https://github.com/jupyter/notebook/pull/6335) ([@blink1073](https://github.com/blink1073))\n- Bump minimist from 1.2.5 to 1.2.6 [#6334](https://github.com/jupyter/notebook/pull/6334) ([@dependabot](https://github.com/dependabot))\n- Bump minimist from 1.2.5 to 1.2.6 in /ui-tests [#6333](https://github.com/jupyter/notebook/pull/6333) ([@dependabot](https://github.com/dependabot))\n- Bump ansi-regex from 3.0.0 to 3.0.1 in /ui-tests [#6332](https://github.com/jupyter/notebook/pull/6332) ([@dependabot](https://github.com/dependabot))\n- Adopt pre-commit [#6331](https://github.com/jupyter/notebook/pull/6331) ([@blink1073](https://github.com/blink1073))\n\n### Documentation improvements\n\n- Link to v6 plan in the README [#6375](https://github.com/jupyter/notebook/pull/6375) ([@echarles](https://github.com/echarles))\n- Copy edits in config, edits bug report template [#6364](https://github.com/jupyter/notebook/pull/6364) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-03-21&to=2022-04-27&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-03-21..2022-04-27&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abollwyvl+updated%3A2022-03-21..2022-04-27&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-03-21..2022-04-27&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aecharles+updated%3A2022-03-21..2022-04-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-03-21..2022-04-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-03-21..2022-04-27&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2022-03-21..2022-04-27&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apre-commit-ci+updated%3A2022-03-21..2022-04-27&type=Issues) | [@tlinhart](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atlinhart+updated%3A2022-03-21..2022-04-27&type=Issues)\n\n## 7.0.0a2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v7.0.0a1...9be03f5f27232d50b16dbbaa50a222260166694c))\n\n### Enhancements made\n\n- Add support for opening a document with a different factory [#6315](https://github.com/jupyter/notebook/pull/6315) ([@jtpio](https://github.com/jtpio))\n- Minor copy edit in README [#6313](https://github.com/jupyter/notebook/pull/6313) ([@JasonWeill](https://github.com/JasonWeill))\n\n### Bugs fixed\n\n- Fix rendering of markdown [#6318](https://github.com/jupyter/notebook/pull/6318) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Update to JupyterLab 4.0.0a22 [#6314](https://github.com/jupyter/notebook/pull/6314) ([@jtpio](https://github.com/jtpio))\n\n### Documentation improvements\n\n- docs: fix spelling [#6317](https://github.com/jupyter/notebook/pull/6317) ([@dijonkitchen](https://github.com/dijonkitchen))\n- Minor copy edit in README [#6313](https://github.com/jupyter/notebook/pull/6313) ([@JasonWeill](https://github.com/JasonWeill))\n- Update example notebook on Binder [#6306](https://github.com/jupyter/notebook/pull/6306) ([@jtpio](https://github.com/jtpio))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-03-09&to=2022-03-21&type=c))\n\n[@dijonkitchen](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adijonkitchen+updated%3A2022-03-09..2022-03-21&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afcollonval+updated%3A2022-03-09..2022-03-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-03-09..2022-03-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-03-09..2022-03-21&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJasonWeill+updated%3A2022-03-09..2022-03-21&type=Issues)\n\n## 7.0.0a1\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.8...22fe46f3e806aa346625f6ef2f2a024d030a068d))\n\n### Enhancements made\n\n- Notebook v7 scaffolding [#6294](https://github.com/jupyter/notebook/pull/6294) ([@jtpio](https://github.com/jtpio))\n\n### Maintenance and upkeep improvements\n\n- Clean up CI [#6304](https://github.com/jupyter/notebook/pull/6304) ([@blink1073](https://github.com/blink1073))\n- Remove the custom run keyboard shortcut [#6303](https://github.com/jupyter/notebook/pull/6303) ([@jtpio](https://github.com/jtpio))\n- Bump nanoid from 3.1.30 to 3.3.1 in /ui-tests [#6302](https://github.com/jupyter/notebook/pull/6302) ([@dependabot](https://github.com/dependabot))\n- Bump simple-get from 3.1.0 to 3.1.1 in /ui-tests [#6301](https://github.com/jupyter/notebook/pull/6301) ([@dependabot](https://github.com/dependabot))\n- Bump url-parse from 1.5.4 to 1.5.10 in /ui-tests [#6300](https://github.com/jupyter/notebook/pull/6300) ([@dependabot](https://github.com/dependabot))\n- Bump node-fetch from 2.6.6 to 2.6.7 in /ui-tests [#6299](https://github.com/jupyter/notebook/pull/6299) ([@dependabot](https://github.com/dependabot))\n- Bump follow-redirects from 1.14.5 to 1.14.9 in /ui-tests [#6298](https://github.com/jupyter/notebook/pull/6298) ([@dependabot](https://github.com/dependabot))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-01-25&to=2022-03-09&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2022-01-25..2022-03-09&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2022-01-25..2022-03-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2022-01-25..2022-03-09&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2022-01-25..2022-03-09&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2022-01-25..2022-03-09&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2022-01-25..2022-03-09&type=Issues)\n\n## 6.4.8\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.7...479902d83a691253e0cff8439a33577e82408317))\n\n### Bugs fixed\n\n- Fix to remove potential memory leak on Jupyter Notebooks ZMQChannelHandler code [#6251](https://github.com/jupyter/notebook/pull/6251) ([@Vishwajeet0510](https://github.com/Vishwajeet0510))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-01-12&to=2022-01-25&type=c))\n\n[@Vishwajeet0510](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AVishwajeet0510+updated%3A2022-01-12..2022-01-25&type=Issues)\n\n## 6.4.7\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.6...b77b5e38b8fa1a20150d7fa4d735dbf1c4f00418))\n\n### Bugs fixed\n\n- Fix Chinese punctuation [#6268](https://github.com/jupyter/notebook/pull/6268) ([@LiHua-Official](https://github.com/LiHua-Official))\n- Add date field to kernel message header [#6265](https://github.com/jupyter/notebook/pull/6265) ([@kevin-bates](https://github.com/kevin-bates))\n- Fix deprecation warning [#6253](https://github.com/jupyter/notebook/pull/6253) ([@tornaria](https://github.com/tornaria))\n\n### Maintenance and upkeep improvements\n\n- Enforce labels on PRs [#6235](https://github.com/jupyter/notebook/pull/6235) ([@blink1073](https://github.com/blink1073))\n- Fix: CI error for python 3.6 & macOS [#6215](https://github.com/jupyter/notebook/pull/6215) ([@penguinolog](https://github.com/penguinolog))\n\n### Other merged PRs\n\n- handle KeyError when get session [#6245](https://github.com/jupyter/notebook/pull/6245) ([@ccw630](https://github.com/ccw630))\n- Updated doc for passwd [#6209](https://github.com/jupyter/notebook/pull/6209) ([@antoinecarme](https://github.com/antoinecarme))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-11-16&to=2022-01-12&type=c))\n\n[@antoinecarme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aantoinecarme+updated%3A2021-11-16..2022-01-12&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-11-16..2022-01-12&type=Issues) | [@ccw630](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Accw630+updated%3A2021-11-16..2022-01-12&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-11-16..2022-01-12&type=Issues) | [@LiHua-Official](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ALiHua-Official+updated%3A2021-11-16..2022-01-12&type=Issues) | [@penguinolog](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apenguinolog+updated%3A2021-11-16..2022-01-12&type=Issues) | [@tornaria](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atornaria+updated%3A2021-11-16..2022-01-12&type=Issues)\n\n## 6.4.6\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.5...160c27d3c23dafe8b42240571db21b0d5cbae2fe))\n\n### Bugs fixed\n\n- Fix `asyncio` error when opening notebooks [#6221](https://github.com/jupyter/notebook/pull/6221) ([@dleen](https://github.com/dleen))\n- Change to use a universal Chinese translation on certain words [#6218](https://github.com/jupyter/notebook/pull/6218) ([@jackexu](https://github.com/jackexu))\n- Fix Chinese translation typo [#6211](https://github.com/jupyter/notebook/pull/6211) ([@maliubiao](https://github.com/maliubiao)\n- Fix `send2trash` tests failing on Windows [#6127](https://github.com/jupyter/notebook/pull/6127) ([@dolfinus](https://github.com/dolfinus))\n\n### Maintenance and upkeep improvements\n\n- TST: don't look in user site for serverextensions [#6233](https://github.com/jupyter/notebook/pull/6233) ([@bnavigator](https://github.com/bnavigator))\n- Enable terminal tests as `pywinpty` is ported for python 3.9 [#6228](https://github.com/jupyter/notebook/pull/6228) (`@nsait-linaro`)\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-10-19&to=2021-11-16&type=c))\n\n[@bnavigator](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abnavigator+updated%3A2021-10-19..2021-11-16&type=Issues) | [@dleen](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adleen+updated%3A2021-10-19..2021-11-16&type=Issues) | [@dolfinus](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adolfinus+updated%3A2021-10-19..2021-11-16&type=Issues) | [@jackexu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajackexu+updated%3A2021-10-19..2021-11-16&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-10-19..2021-11-16&type=Issues) | [@maliubiao](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amaliubiao+updated%3A2021-10-19..2021-11-16&type=Issues) | `@nsait-linaro` | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2021-10-19..2021-11-16&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-10-19..2021-11-16&type=Issues)\n\n## 6.4.5\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.4...ccd9665571107e02a325a738b8baebd6532b2d3d))\n\n### Bug fixes\n\n- Recover from failure to render mimetype [#6181](https://github.com/jupyter/notebook/pull/6181) ([@martinRenou](https://github.com/martinRenou))\n\n### Maintenance and upkeep improvements\n\n- Fix crypto handling [#6197](https://github.com/jupyter/notebook/pull/6197) ([@blink1073](https://github.com/blink1073))\n- Fix `jupyter_client` warning [#6178](https://github.com/jupyter/notebook/pull/6178) ([@martinRenou](https://github.com/martinRenou))\n\n### Documentation improvements\n\n- Fix nbsphinx settings [#6200](https://github.com/jupyter/notebook/pull/6200) ([@mgeier](https://github.com/mgeier))\n- Fully revert the pinning of `nbsphinx` to 0.8.6 [#6201](https://github.com/jupyter/notebook/pull/6201) ([@kevin-bates](https://github.com/kevin-bates))\n- Pin `nbsphinx` to 0.8.6, clean up orphaned resources [#6194](https://github.com/jupyter/notebook/pull/6194) ([@kevin-bates](https://github.com/kevin-bates))\n- Fix typo in docstring [#6188](https://github.com/jupyter/notebook/pull/6188) ([@jgarte](https://github.com/jgarte))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-09-03&to=2021-10-19&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-09-03..2021-10-19&type=Issues) | [@jgarte](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajgarte+updated%3A2021-09-03..2021-10-19&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-09-03..2021-10-19&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2021-09-03..2021-10-19&type=Issues) | [@mgeier](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amgeier+updated%3A2021-09-03..2021-10-19&type=Issues)\n\n## 6.4.4\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.3...c06c340574e1d2207940c5bd1190eb73d82ab945))\n\n### Documentation improvements\n\n- Update Manual Release Instructions [#6152](https://github.com/jupyter/notebook/pull/6152) ([@blink1073](https://github.com/blink1073))\n\n### Other merged PRs\n\n- Use default JupyterLab CSS sanitizer options for Markdown [#6160](https://github.com/jupyter/notebook/pull/6160) ([@krassowski](https://github.com/krassowski))\n- Fix syntax highlight [#6128](https://github.com/jupyter/notebook/pull/6128) ([@massongit](https://github.com/massongit))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-08-11&to=2021-09-03&type=c))\n\n[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-08-11..2021-09-03&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-08-11..2021-09-03&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2021-08-11..2021-09-03&type=Issues) | [@massongit](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amassongit+updated%3A2021-08-11..2021-09-03&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2021-08-11..2021-09-03&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-08-11..2021-09-03&type=Issues)\n\n## 6.4.3\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.2...c373bd89adaaddffbb71747ebbcfe8a749cae0a8))\n\n### Bugs fixed\n\n- Add @babel/core dependency [#6133](https://github.com/jupyter/notebook/pull/6133) ([@afshin](https://github.com/afshin))\n- Switch webpack to production mode [#6131](https://github.com/jupyter/notebook/pull/6131) ([@afshin](https://github.com/afshin))\n\n### Maintenance and upkeep improvements\n\n- Clean up link checking [#6130](https://github.com/jupyter/notebook/pull/6130) ([@blink1073](https://github.com/blink1073))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-08-06&to=2021-08-10&type=c))\n\n[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-08-06..2021-08-10&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-08-06..2021-08-10&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-08-06..2021-08-10&type=Issues)\n\n## 6.4.2\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.0...999e8322bcd24e0ed62b180c19ec13db3f48165b))\n\n### Bugs fixed\n\n- Add missing file to manifest [#6122](https://github.com/jupyter/notebook/pull/6122) ([@afshin](https://github.com/afshin))\n- Fix issue #3218 [#6108](https://github.com/jupyter/notebook/pull/6108) ([@Nazeeh21](https://github.com/Nazeeh21))\n- Fix version of jupyter-packaging in pyproject.toml [#6101](https://github.com/jupyter/notebook/pull/6101) ([@frenzymadness](https://github.com/frenzymadness))\n- \"#element\".tooltip is not a function on home page fixed. [#6070](https://github.com/jupyter/notebook/pull/6070) @ilayh123\n\n### Maintenance and upkeep improvements\n\n- Enhancements to the desktop entry [#6099](https://github.com/jupyter/notebook/pull/6099) ([@Amr-Ibra](https://github.com/Amr-Ibra))\n- Add missing spaces to help messages in config file [#6085](https://github.com/jupyter/notebook/pull/6085) ([@saiwing-yeung](https://github.com/saiwing-yeung))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-05-17&to=2021-08-06&type=c))\n\n[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-05-17..2021-08-06&type=Issues) | [@Amr-Ibra](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AAmr-Ibra+updated%3A2021-05-17..2021-08-06&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2021-05-17..2021-08-06&type=Issues) | [@ilayh123](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ailayh123+updated%3A2021-05-17..2021-08-06&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-05-17..2021-08-06&type=Issues) | [@Nazeeh21](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ANazeeh21+updated%3A2021-05-17..2021-08-06&type=Issues) | [@saiwing-yeung](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asaiwing-yeung+updated%3A2021-05-17..2021-08-06&type=Issues)\n\n## 6.4.0\n\n([Full Changelog](https://github.com/jupyter/notebook/compare/6.3.0...80eb286f316838afc76a9a84b06f54e7dccb6c86))\n\n### Bugs fixed\n\n- Fix Handling of Encoded Paths in Save As Dialog [#6030](https://github.com/jupyter/notebook/pull/6030) ([@afshin](https://github.com/afshin))\n- Fix: split_cell doesn't always split cell [#6017](https://github.com/jupyter/notebook/pull/6017) ([@gamestrRUS](https://github.com/gamestrRUS))\n- Correct 'Content-Type' headers [#6026](https://github.com/jupyter/notebook/pull/6026) ([@faucct](https://github.com/faucct))\n- Fix skipped tests & remove deprecation warnings [#6018](https://github.com/jupyter/notebook/pull/6018) ([@befeleme](https://github.com/befeleme))\n- \\[Gateway\\] Track only this server's kernels [#5980](https://github.com/jupyter/notebook/pull/5980) ([@kevin-bates](https://github.com/kevin-bates))\n- Bind the HTTPServer in start [#6061](https://github.com/jupyter/notebook/pull/6061)\n\n### Maintenance and upkeep improvements\n\n- Revert \"do not apply asyncio patch for tornado >=6.1\" [#6052](https://github.com/jupyter/notebook/pull/6052) ([@minrk](https://github.com/minrk))\n- Use Jupyter Releaser [#6048](https://github.com/jupyter/notebook/pull/6048) ([@afshin](https://github.com/afshin))\n- Add Workflow Permissions for Lock Bot [#6042](https://github.com/jupyter/notebook/pull/6042) ([@jtpio](https://github.com/jtpio))\n- Fixes related to the recent changes in the documentation [#6021](https://github.com/jupyter/notebook/pull/6021) ([@frenzymadness](https://github.com/frenzymadness))\n- Add maths checks in CSS reference test [#6035](https://github.com/jupyter/notebook/pull/6035) ([@stef4k](https://github.com/stef4k))\n- Add Issue Lock and Answered Bots [#6019](https://github.com/jupyter/notebook/pull/6019) ([@afshin](https://github.com/afshin))\n\n### Documentation improvements\n\n- Spelling correction [#6045](https://github.com/jupyter/notebook/pull/6045) ([@wggillen](https://github.com/wggillen))\n- Minor typographical and comment changes [#6025](https://github.com/jupyter/notebook/pull/6025) ([@misterhay](https://github.com/misterhay))\n- Fixes related to the recent changes in the documentation [#6021](https://github.com/jupyter/notebook/pull/6021) ([@frenzymadness](https://github.com/frenzymadness))\n- Fix readthedocs environment [#6020](https://github.com/jupyter/notebook/pull/6020) ([@blink1073](https://github.com/blink1073))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-03-22&to=2021-05-12&type=c))\n\n[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-03-22..2021-05-12&type=Issues) | [@befeleme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abefeleme+updated%3A2021-03-22..2021-05-12&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-03-22..2021-05-12&type=Issues) | [@faucct](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afaucct+updated%3A2021-03-22..2021-05-12&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2021-03-22..2021-05-12&type=Issues) | [@gamestrRUS](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AgamestrRUS+updated%3A2021-03-22..2021-05-12&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2021-03-22..2021-05-12&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-03-22..2021-05-12&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2021-03-22..2021-05-12&type=Issues) | [@misterhay](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amisterhay+updated%3A2021-03-22..2021-05-12&type=Issues) | [@stef4k](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Astef4k+updated%3A2021-03-22..2021-05-12&type=Issues) | [@wggillen](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Awggillen+updated%3A2021-03-22..2021-05-12&type=Issues)\n\n## 6.3.0\n\n### Merged PRs\n\n- Add square logo and desktop entry files [#6010](https://github.com/jupyter/notebook/pull/6010) ([@befeleme](https://github.com/befeleme))\n- Modernize Changelog [#6008](https://github.com/jupyter/notebook/pull/6008) ([@afshin](https://github.com/afshin))\n- Add missing \"import inspect\" [#5999](https://github.com/jupyter/notebook/pull/5999) ([@mgeier](https://github.com/mgeier))\n- Add Codecov badge to README [#5989](https://github.com/jupyter/notebook/pull/5989) ([@thomasrockhu](https://github.com/thomasrockhu))\n- Remove configuration for nosetests from setup.cfg [#5986](https://github.com/jupyter/notebook/pull/5986) ([@frenzymadness](https://github.com/frenzymadness))\n- Update security.rst [#5978](https://github.com/jupyter/notebook/pull/5978) ([@dlrice](https://github.com/dlrice))\n- Docs-Translations: Updated Hindi and Chinese Readme.md [#5976](https://github.com/jupyter/notebook/pull/5976) ([@rjn01](https://github.com/rjn01))\n- Allow /metrics by default if auth is off [#5974](https://github.com/jupyter/notebook/pull/5974) ([@blairdrummond](https://github.com/blairdrummond))\n- Skip terminal tests on Windows 3.9+ (temporary) [#5968](https://github.com/jupyter/notebook/pull/5968) ([@kevin-bates](https://github.com/kevin-bates))\n- Update GatewayKernelManager to derive from AsyncMappingKernelManager [#5966](https://github.com/jupyter/notebook/pull/5966) ([@kevin-bates](https://github.com/kevin-bates))\n- Drop use of deprecated pyzmq.ioloop [#5965](https://github.com/jupyter/notebook/pull/5965) ([@kevin-bates](https://github.com/kevin-bates))\n- Drop support for Python 3.5 [#5962](https://github.com/jupyter/notebook/pull/5962) ([@kevin-bates](https://github.com/kevin-bates))\n- Allow jupyter_server-based contents managers in notebook [#5957](https://github.com/jupyter/notebook/pull/5957) ([@afshin](https://github.com/afshin))\n- Russian translation fixes [#5954](https://github.com/jupyter/notebook/pull/5954) ([@insolor](https://github.com/insolor))\n- Increase culling test idle timeout [#5952](https://github.com/jupyter/notebook/pull/5952) ([@kevin-bates](https://github.com/kevin-bates))\n- Re-enable support for answer_yes flag [#5941](https://github.com/jupyter/notebook/pull/5941) ([@afshin](https://github.com/afshin))\n- Replace Travis and Appveyor with Github Actions [#5938](https://github.com/jupyter/notebook/pull/5938) ([@kevin-bates](https://github.com/kevin-bates))\n- DOC: Server extension, extra docs on configuration/authentication. [#5937](https://github.com/jupyter/notebook/pull/5937) ([@Carreau](https://github.com/Carreau))\n\n### Contributors to this release\n\n([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2021-01-13&to=2021-03-18&type=c))\n\n[@abielhammonds](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aabielhammonds+updated%3A2021-01-13..2021-03-18&type=Issues) | [@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ajharry](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aajharry+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Alokrar](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AAlokrar+updated%3A2021-01-13..2021-03-18&type=Issues) | [@befeleme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abefeleme+updated%3A2021-01-13..2021-03-18&type=Issues) | [@blairdrummond](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablairdrummond+updated%3A2021-01-13..2021-03-18&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-01-13..2021-03-18&type=Issues) | [@bollwyvl](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Abollwyvl+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Carreau](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ACarreau+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ChenChenDS](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AChenChenDS+updated%3A2021-01-13..2021-03-18&type=Issues) | [@cosmoscalibur](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acosmoscalibur+updated%3A2021-01-13..2021-03-18&type=Issues) | [@dlrice](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adlrice+updated%3A2021-01-13..2021-03-18&type=Issues) | [@dwanneruchi](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adwanneruchi+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ElisonSherton](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AElisonSherton+updated%3A2021-01-13..2021-03-18&type=Issues) | [@FazeelUsmani](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AFazeelUsmani+updated%3A2021-01-13..2021-03-18&type=Issues) | [@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Afrenzymadness+updated%3A2021-01-13..2021-03-18&type=Issues) | [@goerz](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agoerz+updated%3A2021-01-13..2021-03-18&type=Issues) | [@insolor](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ainsolor+updated%3A2021-01-13..2021-03-18&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2021-01-13..2021-03-18&type=Issues) | [@JianghuiDu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJianghuiDu+updated%3A2021-01-13..2021-03-18&type=Issues) | [@JuzerShakir](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AJuzerShakir+updated%3A2021-01-13..2021-03-18&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Khalilsqu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AKhalilsqu+updated%3A2021-01-13..2021-03-18&type=Issues) | [@meeseeksdev](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ameeseeksdev+updated%3A2021-01-13..2021-03-18&type=Issues) | [@mgeier](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amgeier+updated%3A2021-01-13..2021-03-18&type=Issues) | [@michaelpedota](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amichaelpedota+updated%3A2021-01-13..2021-03-18&type=Issues) | [@mjbright](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Amjbright+updated%3A2021-01-13..2021-03-18&type=Issues) | [@MSeal](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AMSeal+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ncoughlin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ancoughlin+updated%3A2021-01-13..2021-03-18&type=Issues) | [@NTimmons](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ANTimmons+updated%3A2021-01-13..2021-03-18&type=Issues) | [@ProsperousHeart](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AProsperousHeart+updated%3A2021-01-13..2021-03-18&type=Issues) | [@rjn01](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Arjn01+updated%3A2021-01-13..2021-03-18&type=Issues) | [@slw07g](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aslw07g+updated%3A2021-01-13..2021-03-18&type=Issues) | [@stenivan](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Astenivan+updated%3A2021-01-13..2021-03-18&type=Issues) | [@takluyver](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atakluyver+updated%3A2021-01-13..2021-03-18&type=Issues) | [@thomasrockhu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Athomasrockhu+updated%3A2021-01-13..2021-03-18&type=Issues) | [@wgilpin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Awgilpin+updated%3A2021-01-13..2021-03-18&type=Issues) | [@wxtt522](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Awxtt522+updated%3A2021-01-13..2021-03-18&type=Issues) | [@yuvipanda](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ayuvipanda+updated%3A2021-01-13..2021-03-18&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AZsailer+updated%3A2021-01-13..2021-03-18&type=Issues)\n\n## 6.2.0\n\n## Merged PRs\n\n- Increase minimum tornado version ([5933](https://github.com/jupyter/notebook/pull/5933))\n- Adjust skip decorators to avoid remaining dependency on nose ([5932](https://github.com/jupyter/notebook/pull/5932))\n- Ensure that cell ids persist after save ([5928](https://github.com/jupyter/notebook/pull/5928))\n- Add reconnection to Gateway (form nb2kg) ([5924](https://github.com/jupyter/notebook/pull/5924))\n- Fix some typos ([5917](https://github.com/jupyter/notebook/pull/5917))\n- Handle TrashPermissionError, now that it exist ([5894](https://github.com/jupyter/notebook/pull/5894))\n\nThank you to all the contributors:\n\n- @kevin-bates\n- @mishaschwartz\n- @oyvsyo\n- @user202729\n- @stefanor\n\n## 6.1.6\n\n## Merged PRs\n\n- do not require nose for testing ([5826](https://github.com/jupyter/notebook/pull/5826))\n- \\[docs\\] Update Chinese and Hindi readme.md ([5823](https://github.com/jupyter/notebook/pull/5823))\n- Add support for creating terminals via GET ([5813](https://github.com/jupyter/notebook/pull/5813))\n- Made doc translations in Hindi and Chinese ([5787](https://github.com/jupyter/notebook/pull/5787))\n\nThank you to all the contributors:\n\n- @pgajdos\n- @rjn01\n- @kevin-bates\n- @virejdasani\n\n## 6.1.5\n\n6.1.5 is a security release, fixing one vulnerability:\n\n- Fix open redirect vulnerability GHSA-c7vm-f5p4-8fqh (CVE to be assigned)\n\n## 6.1.4\n\n- Fix broken links to jupyter documentation ([5686](https://github.com/jupyter/notebook/pull/5686))\n- Add additional entries to troubleshooting section ([5695](https://github.com/jupyter/notebook/pull/5695))\n- Revert change in page alignment ([5703](https://github.com/jupyter/notebook/pull/5703))\n- Bug fix: remove double encoding in download files ([5720](https://github.com/jupyter/notebook/pull/5720))\n- Fix typo for Check in zh_CN ([5730](https://github.com/jupyter/notebook/pull/5730))\n- Require a file name in the \"Save As\" dialog ([5733](https://github.com/jupyter/notebook/pull/5733))\n\nThank you to all the contributors:\n\n- bdbai\n- Jaipreet Singh\n- Kevin Bates\n- Pavel Panchekha\n- Zach Sailer\n\n## 6.1.3\n\n- Title new buttons with label if action undefined ([5676](https://github.com/jupyter/notebook/pull/5676))\n\nThank you to all the contributors:\n\n- Kyle Kelley\n\n## 6.1.2\n\n- Fix russian message format for delete/duplicate actions ([5662](https://github.com/jupyter/notebook/pull/5662))\n- Remove unnecessary import of bind_unix_socket ([5666](https://github.com/jupyter/notebook/pull/5666))\n- Tooltip style scope fix ([5672](https://github.com/jupyter/notebook/pull/5672))\n\nThank you to all the contributors:\n\n- Dmitry Akatov\n- Kevin Bates\n- Magda Stenius\n\n## 6.1.1\n\n- Prevent inclusion of requests_unixsocket on Windows ([5650](https://github.com/jupyter/notebook/pull/5650))\n\nThank you to all the contributors:\n\n- Kevin Bates\n\n## 6.1.0\n\nPlease note that this repository is currently maintained by a skeleton\ncrew of maintainers from the Jupyter community. For our approach moving\nforward, please see this\n[notice](https://github.com/jupyter/notebook#notice) from the README.\nThank you.\n\nHere is an enumeration of changes made since the last release and\nincluded in 6.1.0.\n\n- Remove deprecated encoding parameter for Python 3.9 compatibility. ([5174](https://github.com/jupyter/notebook/pull/5174))\n- Add support for async kernel management ([4479](https://github.com/jupyter/notebook/pull/4479))\n- Fix typo in password_required help message ([5320](https://github.com/jupyter/notebook/pull/5320))\n- Gateway only: Ensure launch and request timeouts are in sync ([5317](https://github.com/jupyter/notebook/pull/5317))\n- Update Markdown Cells example to HTML5 video tag ([5411](https://github.com/jupyter/notebook/pull/5411))\n- Integrated LoginWidget into edit to enable users to logout from the t... ([5406](https://github.com/jupyter/notebook/pull/5406))\n- Update message about minimum Tornado version ([5222](https://github.com/jupyter/notebook/pull/5222))\n- Logged notebook type ([5425](https://github.com/jupyter/notebook/pull/5425))\n- Added nl language ([5354](https://github.com/jupyter/notebook/pull/5354))\n- Add UNIX socket support to notebook server. ([4835](https://github.com/jupyter/notebook/pull/4835))\n- Update CodeMirror dependency ([5198](https://github.com/jupyter/notebook/pull/5198))\n- Tree added download multiple files ([5351](https://github.com/jupyter/notebook/pull/5351))\n- Toolbar buttons tooltip: show help instead of label ([5107](https://github.com/jupyter/notebook/pull/5107))\n- Remove unnecessary import of requests_unixsocket ([5451](https://github.com/jupyter/notebook/pull/5451))\n- Add ability to cull terminals and track last activity ([5372](https://github.com/jupyter/notebook/pull/5372))\n- Code refactoring notebook.js ([5352](https://github.com/jupyter/notebook/pull/5352))\n- Install terminado for docs build ([5462](https://github.com/jupyter/notebook/pull/5462))\n- Convert notifications JS test to selenium ([5455](https://github.com/jupyter/notebook/pull/5455))\n- Add cell attachments to markdown example ([5412](https://github.com/jupyter/notebook/pull/5412))\n- Add Japanese document ([5231](https://github.com/jupyter/notebook/pull/5231))\n- Migrate Move multiselection test to selenium ([5158](https://github.com/jupyter/notebook/pull/5158))\n- Use `cmdtrl-enter` to run a cell ([5120](https://github.com/jupyter/notebook/pull/5120))\n- Fix broken \"Raw cell MIME type\" dialog ([5385](https://github.com/jupyter/notebook/pull/5385))\n- Make a notebook writable after successful save-as ([5296](https://github.com/jupyter/notebook/pull/5296))\n- Add actual watch script ([4738](https://github.com/jupyter/notebook/pull/4738))\n- Added `--autoreload` flag to `NotebookApp` ([4795](https://github.com/jupyter/notebook/pull/4795))\n- Enable check_origin on gateway websocket communication ([5471](https://github.com/jupyter/notebook/pull/5471))\n- Restore detection of missing terminado package ([5465](https://github.com/jupyter/notebook/pull/5465))\n- Culling: ensure `last_activity` attr exists before use ([5355](https://github.com/jupyter/notebook/pull/5355))\n- Added functionality to allow filter kernels by Jupyter Enterprise Gat... ([5484](https://github.com/jupyter/notebook/pull/5484))\n- 'Play' icon for run-cell toolbar button ([2922](https://github.com/jupyter/notebook/pull/2922))\n- Bump minimum version of jQuery to 3.5.0 ([5491](https://github.com/jupyter/notebook/pull/5491))\n- Remove old JS markdown tests, add a new one in selenium ([5497](https://github.com/jupyter/notebook/pull/5497))\n- Add support for more RTL languages ([5036](https://github.com/jupyter/notebook/pull/5036))\n- Make markdown cells stay RTL in edit mode ([5037](https://github.com/jupyter/notebook/pull/5037))\n- Unforce RTL output display ([5039](https://github.com/jupyter/notebook/pull/5039))\n- Fixed multicursor backspacing ([4880](https://github.com/jupyter/notebook/pull/4880))\n- Implemented Split Cell for multicursor ([4824](https://github.com/jupyter/notebook/pull/4824))\n- Alignment issue \\[FIXED\\] ([3173](https://github.com/jupyter/notebook/pull/3173))\n- MathJax: Support for `\\gdef` ([4407](https://github.com/jupyter/notebook/pull/4407))\n- Another (Minor) Duplicate Code Reduction ([5316](https://github.com/jupyter/notebook/pull/5316))\n- Update readme regarding maintenance ([5500](https://github.com/jupyter/notebook/pull/5500))\n- Document contents chunks ([5508](https://github.com/jupyter/notebook/pull/5508))\n- Backspace deletes empty line ([5516](https://github.com/jupyter/notebook/pull/5516))\n- The dropdown submenu at notebook page is not keyboard accessible ([4732](https://github.com/jupyter/notebook/pull/4732))\n- Tooltips visible through keyboard navigation for specified buttons ([4729](https://github.com/jupyter/notebook/pull/4729))\n- Fix for recursive symlink ([4670](https://github.com/jupyter/notebook/pull/4670))\n- Fix for the terminal shutdown issue ([4180](https://github.com/jupyter/notebook/pull/4180))\n- Add japanese translation files ([4490](https://github.com/jupyter/notebook/pull/4490))\n- Workaround for socket permission errors on Cygwin ([4584](https://github.com/jupyter/notebook/pull/4584))\n- Implement optional markdown header and footer files ([4043](https://github.com/jupyter/notebook/pull/4043))\n- Remove double link when using `custom_display_url` ([5544](https://github.com/jupyter/notebook/pull/5544))\n- Respect `cell.is_editable` during find-and-replace ([5545](https://github.com/jupyter/notebook/pull/5545))\n- Fix exception causes all over the codebase ([5556](https://github.com/jupyter/notebook/pull/5556)\n- Improve login shell heuristics ([5588](https://github.com/jupyter/notebook/pull/5588))\n- Added support for `JUPYTER_TOKEN_FILE` ([5587](https://github.com/jupyter/notebook/pull/5587))\n- Kill notebook itself when server cull idle kernel ([5593](https://github.com/jupyter/notebook/pull/5593))\n- Implement password hashing with bcrypt ([3793](https://github.com/jupyter/notebook/pull/3793))\n- Fix broken links ([5600](https://github.com/jupyter/notebook/pull/5600))\n- Russian internationalization support ([5571](https://github.com/jupyter/notebook/pull/5571))\n- Add a metadata tag to override notebook direction (ltr/rtl) ([5052](https://github.com/jupyter/notebook/pull/5052))\n- Paste two images from clipboard in markdown cell ([5598](https://github.com/jupyter/notebook/pull/5598))\n- Add keyboard shortcuts to menu dropdowns ([5525](https://github.com/jupyter/notebook/pull/5525))\n- Update codemirror to `5.56.0+components1` ([5637](https://github.com/jupyter/notebook/pull/5637))\n\nThank you to all the contributors:\n\n- Aaron Myatt\n- Adam Blake\n- Afshin Taylor Darian\n- Aman Bansal\n- Ben Thayer\n- berendjan\n- Bruno P. Kinoshita\n- bzinberg\n- Christophe Cadilhac\n- Daiki Katsuragawa\n- David Lukes\n- Dmitriy Q\n- dmpe\n- dylanzjy\n- dSchurch\n- E. M. Bray\n- ErwinRussel\n- Felix Mönckemeyer\n- Grant Nestor\n- Jarrad Whitaker\n- Jesus Panales Castillo\n- Joshua Zeltser\n- Karthikeyan Singaravelan\n- Kenichi Ito\n- Kevin Bates\n- Koki Nishihara\n- Kris Wilson\n- Kyle Kelley\n- Laura Merlo\n- levinxo\n- Luciano Resende\n- Luis Cabezon Manchado\n- Madhusudhan Srinivasa\n- Matthias Geier\n- mattn\n- Max Klein\n- Min RK\n- Mingxuan Lin\n- Mohammad Mostafa Farzan\n- Niko Felger\n- Norah Abanumay\n- Onno Broekmans\n- PierreMB\n- pinarkavak\n- Ram Rachum\n- Reece Hart\n- Remi Rampin\n- Rohit Sanjay\n- Shane Canon\n- Simon Li\n- Steinar Sturlaugsson\n- Steven Silvester\n- taohan16\n- Thew Dhanat\n- Thomas Kluyver\n- Toon Baeyens\n- Vidar Tonaas Fauske\n- Zachary Sailer\n\n## 6.0.3\n\n- Dependency updates to fix startup issues on Windows platform\n- Add support for nbconvert 6.x\n- Creation of recent tab\n\nThanks for all the contributors:\n\n- Luciano Resende\n- Kevin Bates\n- ahangsleben\n- Zachary Sailer\n- Pallavi Bharadwaj\n- Thomas Kluyver\n- Min RK\n- forest0\n- Bibo Hao\n- Michal Charemza\n- Sergey Shevelev\n- Shuichiro MAKIGAKI\n- krinsman\n- TPartida\n- Landen McDonald\n- Tres DuBiel\n\n## 6.0.2\n\n- Update JQuery dependency to version 3.4.1 to fix security vulnerability (CVE-2019-11358)\n- Update CodeMirror to version 5.48.4 to fix Python formatting issues\n- Continue removing obsolete Python 2.x code/dependencies\n- Multiple documentation updates\n\nThanks for all the contributors:\n\n- David Robles\n- Jason Grout\n- Kerwin Sun\n- Kevin Bates\n- Kyle Kelley\n- Luciano Resende\n- Marcus D Sherman\n- Sasaki Takeru\n- Tom Jarosz\n- Vidar Tonaas Fauske\n- Wes Turner\n- Zachary Sailer\n\n## 6.0.1\n\n- Attempt to re-establish websocket connection to Gateway ([4777](https://github.com/jupyter/notebook/pull/4777))\n- Add missing react-dom js to package data ([4772](https://github.com/jupyter/notebook/pull/4772))\n\nThanks for all the contributors:\n\n- Eunsoo Park\n- Min RK\n\n## 6.0\n\nThis is the first major release of the Jupyter Notebook since version\n5.0 (March 2017).\n\nWe encourage users to start trying JupyterLab, which has just announced\nit's 1.0 release in preparation for a future transition.\n\n- Remove Python 2.x support in favor of Python 3.5 and higher.\n- Multiple accessibility enhancements and bug-fixes.\n- Multiple translation enhancements and bug-fixes.\n- Remove deprecated ANSI CSS styles.\n- Native support to forward requests to Jupyter Gateway(s) (Embedded\n  NB2KG).\n- Use JavaScript to redirect users to notebook homepage.\n- Enhanced SSL/TLS security by using PROTOCOL_TLS which selects the\n  highest ssl/tls protocol version available that both the client and\n  server support. When PROTOCOL_TLS is not available use\n  PROTOCOL_SSLv23.\n- Add `?no_track_activity=1` argument to allow API requests. to not be\n  registered as activity (e.g. API calls by external activity\n  monitors).\n- Kernels shutting down due to an idle timeout is no longer considered\n  an activity-updating event.\n- Further improve compatibility with tornado 6 with improved checks\n  for when websockets are closed.\n- Launch the browser with a local file which redirects to the server\n  address including the authentication token. This prevents another\n  logged-in user from stealing the token from command line arguments\n  and authenticating to the server. The single-use token previously\n  used to mitigate this has been removed. Thanks to Dr. Owain Kenway\n  for suggesting the local file approach.\n- Respect nbconvert entrypoints as sources for exporters\n- Update to CodeMirror to 5.37, which includes f-string syntax for\n  Python 3.6.\n- Update jquery-ui to 1.12\n- Execute cells by clicking icon in input prompt.\n- New \"Save as\" menu option.\n- When serving on a loopback interface, protect against DNS rebinding\n  by checking the `Host` header from the browser. This check can be\n  disabled if necessary by setting `NotebookApp.allow_remote_access`. (Disabled by default while we work out some Mac issues in\n  [3754](https://github.com/jupyter/notebook/issues/3754)).\n- Add kernel_info_timeout traitlet to enable restarting slow kernels.\n- Add `custom_display_host` config option to override displayed URL.\n- Add /metrics endpoint for Prometheus Metrics.\n- Optimize large file uploads.\n- Allow access control headers to be overridden in\n  jupyter_notebook_config.py to support greater CORS and proxy\n  configuration flexibility.\n- Add support for terminals on windows.\n- Add a \"restart and run all\" button to the toolbar.\n- Frontend/extension-config: allow default json files in a .d\n  directory.\n- Allow setting token via jupyter_token env.\n- Cull idle kernels using `--MappingKernelManager.cull_idle_timeout`.\n- Allow read-only notebooks to be trusted.\n- Convert JS tests to Selenium.\n\nSecurity Fixes included in previous minor releases of Jupyter Notebook\nand also included in version 6.0.\n\n- Fix Open Redirect vulnerability (CVE-2019-10255) where certain\n  malicious URLs could redirect from the Jupyter login page to a\n  malicious site after a successful login.\n- Contains a security fix for a cross-site inclusion (XSSI)\n  vulnerability (CVE-2019--9644), where files at a known URL could be\n  included in a page from an unauthorized website if the user is\n  logged into a Jupyter server. The fix involves setting the\n  `X-Content-Type-Options: nosniff` header, and applying CSRF checks\n  previously on all non-GET API requests to GET requests to API\n  endpoints and the /files/ endpoint.\n- Check Host header to more securely protect localhost deployments\n  from DNS rebinding. This is a pre-emptive measure, not fixing a\n  known vulnerability. Use `.NotebookApp.allow_remote_access` and\n  `.NotebookApp.local_hostnames` to configure access.\n- Upgrade bootstrap to 3.4, fixing an XSS vulnerability, which has\n  been assigned\n  [CVE-2018-14041](https://nvd.nist.gov/vuln/detail/CVE-2018-14041).\n- Contains a security fix preventing malicious directory names from\n  being able to execute javascript.\n- Contains a security fix preventing nbconvert endpoints from\n  executing javascript with access to the server API. CVE request\n  pending.\n\nThanks for all the contributors:\n\n- AAYUSH SINHA\n- Aaron Hall, MBA\n- Abhinav Sagar\n- Adam Rule\n- Adeel Ahmad\n- Alex Rothberg\n- Amy Skerry-Ryan\n- Anastasis Germanidis\n- Andrés Sánchez\n- Arjun Radhakrishna\n- Arovit Narula\n- Benda Xu\n- Björn Grüning\n- Brian E. Granger\n- Carol Willing\n- Celina Kilcrease\n- Chris Holdgraf\n- Chris Miller\n- Ciaran Langton\n- Damian Avila\n- Dana Lee\n- Daniel Farrell\n- Daniel Nicolai\n- Darío Hereñú\n- Dave Aitken\n- Dave Foster\n- Dave Hirschfeld\n- Denis Ledoux\n- Dmitry Mikushin\n- Dominic Kuang\n- Douglas Hanley\n- Elliott Sales de Andrade\n- Emilio Talamante Lugo\n- Eric Perry\n- Ethan T. Hendrix\n- Evan Van Dam\n- Francesco Franchina\n- Frédéric Chapoton\n- Félix-Antoine Fortin\n- Gabriel\n- Gabriel Nützi\n- Gabriel Ruiz\n- Gestalt LUR\n- Grant Nestor\n- Gustavo Efeiche\n- Harsh Vardhan\n- Heng GAO\n- Hisham Elsheshtawy\n- Hong Xu\n- Ian Rose\n- Ivan Ogasawara\n- J Forde\n- Jason Grout\n- Jessica B. Hamrick\n- Jiaqi Liu\n- John Emmons\n- Josh Barnes\n- Karthik Balakrishnan\n- Kevin Bates\n- Kirit Thadaka\n- Kristian Gregorius Hustad\n- Kyle Kelley\n- Leo Gallucci\n- Lilian Besson\n- Lucas Seiki Oshiro\n- Luciano Resende\n- Luis Angel Rodriguez Guerrero\n- M Pacer\n- Maarten Breddels\n- Mac Knight\n- Madicken Munk\n- Maitiú Ó Ciaráin\n- Marc Udoff\n- Mathis HAMMEL\n- Mathis Rosenhauer\n- Matthias Bussonnier\n- Matthias Geier\n- Max Vovshin\n- Maxime Mouchet\n- Michael Chirico\n- Michael Droettboom\n- Michael Heilman\n- Michael Scott Cuthbert\n- Michal Charemza\n- Mike Boyle\n- Milos Miljkovic\n- Min RK\n- Miro Hrončok\n- Nicholas Bollweg\n- Nitesh Sawant\n- Ondrej Jariabka\n- Park Hae Jin\n- Paul Ivanov\n- Paul Masson\n- Peter Parente\n- Pierre Tholoniat\n- Remco Verhoef\n- Roland Weber\n- Roman Kornev\n- Rosa Swaby\n- Roy Hyunjin Han\n- Sally\n- Sam Lau\n- Samar Sultan\n- Shiti Saxena\n- Simon Biggs\n- Spencer Park\n- Stephen Ward\n- Steve (Gadget) Barnes\n- Steven Silvester\n- Surya Prakash Susarla\n- Syed Shah\n- Sylvain Corlay\n- Thomas Aarholt\n- Thomas Kluyver\n- Tim\n- Tim Head\n- Tim Klever\n- Tim Metzler\n- Todd\n- Tom Jorquera\n- Tyler Makaro\n- Vaibhav Sagar\n- Victor\n- Vidar Tonaas Fauske\n- Vu Minh Tam\n- Vít Tuček\n- Will Costello\n- Will Starms\n- William Hosford\n- Xiaohan Li\n- Yuvi Panda\n- ashley teoh\n- nullptr\n\n## 5.7.8\n\n- Fix regression in restarting kernels in 5.7.5. The restart handler\n  would return before restart was completed.\n- Further improve compatibility with tornado 6 with improved checks\n  for when websockets are closed.\n- Fix regression in 5.7.6 on Windows where .js files could have the\n  wrong mime-type.\n- Fix Open Redirect vulnerability (CVE-2019-10255) where certain\n  malicious URLs could redirect from the Jupyter login page to a\n  malicious site after a successful login. 5.7.7 contained only a\n  partial fix for this issue.\n\n## 5.7.6\n\n5.7.6 contains a security fix for a cross-site inclusion (XSSI)\nvulnerability (CVE-2019--9644), where files at a known URL could be\nincluded in a page from an unauthorized website if the user is logged\ninto a Jupyter server. The fix involves setting the\n`X-Content-Type-Options: nosniff` header, and applying CSRF checks\npreviously on all non-GET API requests to GET requests to API endpoints\nand the /files/ endpoint.\n\nThe attacking page is able to access some contents of files when using\nInternet Explorer through script errors, but this has not been\ndemonstrated with other browsers.\n\n## 5.7.5\n\n- Fix compatibility with tornado 6 ([4392](https://github.com/jupyter/notebook/pull/4392), [4449](https://github.com/jupyter/notebook/pull/4449)).\n- Fix opening integer filedescriptor during startup on Python 2 ([4349](https://github.com/jupyter/notebook/pull/4349))\n- Fix compatibility with asynchronous\n  \\[KernelManager.restart_kernel\\]{.title-ref} methods ([4412](https://github.com/jupyter/notebook/pull/4412))\n\n## 5.7.4\n\n5.7.4 fixes a bug introduced in 5.7.3, in which the\n`list_running_servers()` function attempts to parse HTML files as JSON,\nand consequently crashes ([4284](https://github.com/jupyter/notebook/pull/4284)).\n\n## 5.7.3\n\n5.7.3 contains one security improvement and one security fix:\n\n- Launch the browser with a local file which redirects to the server\n  address including the authentication token ([4260](https://github.com/jupyter/notebook/pull/4260)). This prevents another logged-in user from stealing\n  the token from command line arguments and authenticating to the\n  server. The single-use token previously used to mitigate this has\n  been removed. Thanks to Dr. Owain Kenway for suggesting the local\n  file approach.\n- Upgrade bootstrap to 3.4, fixing an XSS vulnerability, which has\n  been assigned\n  [CVE-2018-14041](https://nvd.nist.gov/vuln/detail/CVE-2018-14041) ([4271](https://github.com/jupyter/notebook/pull/4271)).\n\n## 5.7.2\n\n5.7.2 contains a security fix preventing malicious directory names from\nbeing able to execute javascript. CVE request pending.\n\n## 5.7.1\n\n5.7.1 contains a security fix preventing nbconvert endpoints from\nexecuting javascript with access to the server API. CVE request pending.\n\n## 5.7.0\n\nNew features:\n\n- Update to CodeMirror to 5.37, which includes f-string syntax for\n  Python 3.6 ([3816](https://github.com/jupyter/notebook/pull/3816))\n- Update jquery-ui to 1.12 ([3836](https://github.com/jupyter/notebook/pull/3836))\n- Check Host header to more securely protect localhost deployments\n  from DNS rebinding. This is a pre-emptive measure, not fixing a\n  known vulnerability ([3766](https://github.com/jupyter/notebook/pull/3766)). Use\n  `.NotebookApp.allow_remote_access` and\n  `.NotebookApp.local_hostnames` to configure access.\n- Allow access-control-allow-headers to be overridden ([3886](https://github.com/jupyter/notebook/pull/3886))\n- Allow configuring max_body_size and max_buffer_size ([3829](https://github.com/jupyter/notebook/pull/3829))\n- Allow configuring get_secure_cookie keyword-args ([3778](https://github.com/jupyter/notebook/pull/3778))\n- Respect nbconvert entrypoints as sources for exporters ([3879](https://github.com/jupyter/notebook/pull/3879))\n- Include translation sources in source distributions ([3925](https://github.com/jupyter/notebook/pull/3925), [3931](https://github.com/jupyter/notebook/pull/3931))\n- Various improvements to documentation ([3799](https://github.com/jupyter/notebook/pull/3799), [3800](https://github.com/jupyter/notebook/pull/3800),\n  [3806](https://github.com/jupyter/notebook/pull/3806), [3883](https://github.com/jupyter/notebook/pull/3883), [3908](https://github.com/jupyter/notebook/pull/3908))\n\nFixing problems:\n\n- Fix breadcrumb link when running with a base url ([3905](https://github.com/jupyter/notebook/pull/3905))\n- Fix possible type error when closing activity stream ([3907](https://github.com/jupyter/notebook/pull/3907))\n- Disable metadata editing for non-editable cells ([3744](https://github.com/jupyter/notebook/pull/3744))\n- Fix some styling and alignment of prompts caused by regressions in\n  5.6.0.\n- Enter causing page reload in shortcuts editor ([3871](https://github.com/jupyter/notebook/pull/3871))\n- Fix uploading to the same file twice ([3712](https://github.com/jupyter/notebook/pull/3712))\n\nSee the 5.7 milestone on GitHub for a complete list of [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.7)\ninvolved in this release.\n\nThanks to the following contributors:\n\n- Aaron Hall\n- Benjamin Ragan-Kelley\n- Bill Major\n- bxy007\n- Dave Aitken\n- Denis Ledoux\n- Félix-Antoine Fortin\n- Gabriel\n- Grant Nestor\n- Kevin Bates\n- Kristian Gregorius Hustad\n- M Pacer\n- Madicken Munk\n- Maitiu O Ciarain\n- Matthias Bussonnier\n- Michael Boyle\n- Michael Chirico\n- Mokkapati, Praneet(ES)\n- Peter Parente\n- Sally Wilsak\n- Steven Silvester\n- Thomas Kluyver\n- Walter Martin\n\n## 5.6.0\n\nNew features:\n\n- Execute cells by clicking icon in input prompt ([3535](https://github.com/jupyter/notebook/pull/3535), [3687](https://github.com/jupyter/notebook/pull/3687))\n- New \"Save as\" menu option ([3289](https://github.com/jupyter/notebook/pull/3289))\n- When serving on a loopback interface, protect against DNS rebinding\n  by checking the `Host` header from the browser ([3714](https://github.com/jupyter/notebook/pull/3714)). This check can be\n  disabled if necessary by setting `NotebookApp.allow_remote_access`. (Disabled by default while we work out some Mac issues in\n  [3754](https://github.com/jupyter/notebook/issues/3754)).\n- Add kernel_info_timeout traitlet to enable restarting slow kernels ([3665](https://github.com/jupyter/notebook/pull/3665))\n- Add `custom_display_host` config option to override displayed URL ([3668](https://github.com/jupyter/notebook/pull/3668))\n- Add /metrics endpoint for Prometheus Metrics ([3490](https://github.com/jupyter/notebook/pull/3490))\n- Update to MathJax 2.7.4 ([3751](https://github.com/jupyter/notebook/pull/3751))\n- Update to jQuery 3.3 ([3655](https://github.com/jupyter/notebook/pull/3655))\n- Update marked to 0.4 ([3686](https://github.com/jupyter/notebook/pull/3686))\n\nFixing problems:\n\n- Don't duplicate token in displayed URL ([3656](https://github.com/jupyter/notebook/pull/3656))\n- Clarify displayed URL when listening on all interfaces ([3703](https://github.com/jupyter/notebook/pull/3703))\n- Don't trash non-empty directories on Windows ([3673](https://github.com/jupyter/notebook/pull/3673))\n- Include LICENSE file in wheels ([3671](https://github.com/jupyter/notebook/pull/3671))\n- Don't show \"0 active kernels\" when starting the notebook ([3696](https://github.com/jupyter/notebook/pull/3696))\n\nTesting:\n\n- Add find replace test ([3630](https://github.com/jupyter/notebook/pull/3630))\n- Selenium test for deleting all cells ([3601](https://github.com/jupyter/notebook/pull/3601))\n- Make creating a new notebook more robust ([3726](https://github.com/jupyter/notebook/pull/3726))\n\nThanks to the following contributors:\n\n- Arovit Narula ([arovit](https://github.com/arovit))\n- lucasoshiro ([lucasoshiro](https://github.com/lucasoshiro))\n- M Pacer ([mpacer](https://github.com/mpacer))\n- Thomas Kluyver ([takluyver](https://github.com/takluyver))\n- Todd ([toddrme2178](https://github.com/toddrme2178))\n- Yuvi Panda ([yuvipanda](https://github.com/yuvipanda))\n\nSee the 5.6 milestone on GitHub for a complete list of [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.6)\ninvolved in this release.\n\n## 5.5.0\n\nNew features:\n\n- The files list now shows file sizes ([3539](https://github.com/jupyter/notebook/pull/3539))\n- Add a quit button in the dashboard ([3004](https://github.com/jupyter/notebook/pull/3004))\n- Display hostname in the terminal when running remotely ([3356](https://github.com/jupyter/notebook/pull/3356), [3593](https://github.com/jupyter/notebook/pull/3593))\n- Add slides exportation/download to the menu ([3287](https://github.com/jupyter/notebook/pull/3287))\n- Add any extra installed nbconvert exporters to the \"Download as\"\n  menu ([3323](https://github.com/jupyter/notebook/pull/3323))\n- Editor: warning when overwriting a file that is modified on disk ([2783](https://github.com/jupyter/notebook/pull/2783))\n- Display a warning message if cookies are not enabled ([3511](https://github.com/jupyter/notebook/pull/3511))\n- Basic `__version__` reporting for extensions ([3541](https://github.com/jupyter/notebook/pull/3541))\n- Add `NotebookApp.terminals_enabled` config option ([3478](https://github.com/jupyter/notebook/pull/3478))\n- Make buffer time between last modified on disk and last modified on\n  last save configurable ([3273](https://github.com/jupyter/notebook/pull/3273))\n- Allow binding custom shortcuts for 'close and halt' ([3314](https://github.com/jupyter/notebook/pull/3314))\n- Add description for 'Trusted' notification ([3386](https://github.com/jupyter/notebook/pull/3386))\n- Add `settings['activity_sources']` ([3401](https://github.com/jupyter/notebook/pull/3401))\n- Add an `output_updated.OutputArea` event ([3560](https://github.com/jupyter/notebook/pull/3560))\n\nFixing problems:\n\n- Fixes to improve web accessibility ([3507](https://github.com/jupyter/notebook/pull/3507))\n- Fixed color contrast issue in tree.less ([3336](https://github.com/jupyter/notebook/pull/3336))\n- Allow cancelling upload of large files ([3373](https://github.com/jupyter/notebook/pull/3373))\n- Don't clear login cookie on requests without cookie ([3380](https://github.com/jupyter/notebook/pull/3380))\n- Don't trash files on different device to home dir on Linux ([3304](https://github.com/jupyter/notebook/pull/3304))\n- Clear waiting asterisks when restarting kernel ([3494](https://github.com/jupyter/notebook/pull/3494))\n- Fix output prompt when `execution_count` missing ([3236](https://github.com/jupyter/notebook/pull/3236))\n- Make the 'changed on disk' dialog work when displayed twice ([3589](https://github.com/jupyter/notebook/pull/3589))\n- Fix going back to root directory with history in notebook list ([3411](https://github.com/jupyter/notebook/pull/3411))\n- Allow defining keyboard shortcuts for missing actions ([3561](https://github.com/jupyter/notebook/pull/3561))\n- Prevent default on pageup/pagedown when completer is active ([3500](https://github.com/jupyter/notebook/pull/3500))\n- Prevent default event handling on new terminal ([3497](https://github.com/jupyter/notebook/pull/3497))\n- ConfigManager should not write out default values found in the .d\n  directory ([3485](https://github.com/jupyter/notebook/pull/3485))\n- Fix leak of iopub object in activity monitoring ([3424](https://github.com/jupyter/notebook/pull/3424))\n- Javascript lint in notebooklist.js ([3409](https://github.com/jupyter/notebook/pull/3409))\n- Some Javascript syntax fixes ([3294](https://github.com/jupyter/notebook/pull/3294))\n- Convert native for loop to `Array.forEach()` ([3477](https://github.com/jupyter/notebook/pull/3477))\n- Disable cache when downloading nbconvert output ([3484](https://github.com/jupyter/notebook/pull/3484))\n- Add missing digestmod arg to HMAC ([3399](https://github.com/jupyter/notebook/pull/3399))\n- Log OSErrors failing to create less-critical files during startup ([3384](https://github.com/jupyter/notebook/pull/3384))\n- Use powershell on Windows ([3379](https://github.com/jupyter/notebook/pull/3379))\n- API spec improvements, API handler improvements ([3368](https://github.com/jupyter/notebook/pull/3368))\n- Set notebook to dirty state after change to kernel metadata ([3350](https://github.com/jupyter/notebook/pull/3350))\n- Use CSP header to treat served files as belonging to a separate\n  origin ([3341](https://github.com/jupyter/notebook/pull/3341))\n- Don't install gettext into builtins ([3330](https://github.com/jupyter/notebook/pull/3330))\n- Add missing `import _` ([3316](https://github.com/jupyter/notebook/pull/3316),\n  [3326](https://github.com/jupyter/notebook/pull/3326))\n- Write `notebook.json` file atomically ([3305](https://github.com/jupyter/notebook/pull/3305))\n- Fix clicking with modifiers, page title updates ([3282](https://github.com/jupyter/notebook/pull/3282))\n- Upgrade jQuery to version 2.2 ([3428](https://github.com/jupyter/notebook/pull/3428))\n- Upgrade xterm.js to 3.1.0 ([3189](https://github.com/jupyter/notebook/pull/3189))\n- Upgrade moment.js to 2.19.3 ([3562](https://github.com/jupyter/notebook/pull/3562))\n- Upgrade CodeMirror to 5.35 ([3372](https://github.com/jupyter/notebook/pull/3372))\n- \"Require\" pyzmq>=17 ([3586](https://github.com/jupyter/notebook/pull/3586))\n\nDocumentation:\n\n- Documentation updates and organisation ([3584](https://github.com/jupyter/notebook/pull/3584))\n- Add section in docs about privacy ([3571](https://github.com/jupyter/notebook/pull/3571))\n- Add explanation on how to change the type of a cell to Markdown ([3377](https://github.com/jupyter/notebook/pull/3377))\n- Update docs with confd implementation details ([3520](https://github.com/jupyter/notebook/pull/3520))\n- Add more information for where `jupyter_notebook_config.py` is\n  located ([3346](https://github.com/jupyter/notebook/pull/3346))\n- Document options to enable nbextensions in specific sections ([3525](https://github.com/jupyter/notebook/pull/3525))\n- jQuery attribute selector value MUST be surrounded by quotes ([3527](https://github.com/jupyter/notebook/pull/3527))\n- Do not execute special notebooks with nbsphinx ([3360](https://github.com/jupyter/notebook/pull/3360))\n- Other minor fixes in [3288](https://github.com/jupyter/notebook/pull/3288),\n  [3528](https://github.com/jupyter/notebook/pull/3528), [3293](https://github.com/jupyter/notebook/pull/3293), [3367](https://github.com/jupyter/notebook/pull/3367)\n\nTesting:\n\n- Testing with Selenium & Sauce labs ([3321](https://github.com/jupyter/notebook/pull/3321))\n- Selenium utils + markdown rendering tests ([3458](https://github.com/jupyter/notebook/pull/3458))\n- Convert insert cell tests to Selenium ([3508](https://github.com/jupyter/notebook/pull/3508))\n- Convert prompt numbers tests to Selenium ([3554](https://github.com/jupyter/notebook/pull/3554))\n- Convert delete cells tests to Selenium ([3465](https://github.com/jupyter/notebook/pull/3465))\n- Convert undelete cell tests to Selenium ([3475](https://github.com/jupyter/notebook/pull/3475))\n- More selenium testing utilities ([3412](https://github.com/jupyter/notebook/pull/3412))\n- Only check links when build is trigger by Travis Cron job ([3493](https://github.com/jupyter/notebook/pull/3493))\n- Fix Appveyor build errors ([3430](https://github.com/jupyter/notebook/pull/3430))\n- Undo patches in teardown before attempting to delete files ([3459](https://github.com/jupyter/notebook/pull/3459))\n- Get tests running with tornado 5 ([3398](https://github.com/jupyter/notebook/pull/3398))\n- Unpin ipykernel version on Travis ([3223](https://github.com/jupyter/notebook/pull/3223))\n\nThanks to the following contributors:\n\n- Arovit Narula ([arovit](https://github.com/arovit))\n- Ashley Teoh ([ashleytqy](https://github.com/ashleytqy))\n- Nicholas Bollweg ([bollwyvl](https://github.com/bollwyvl))\n- Alex Rothberg ([cancan101](https://github.com/cancan101))\n- Celina Kilcrease ([ckilcrease](https://github.com/ckilcrease))\n- dabuside ([dabuside](https://github.com/dabuside))\n- Damian Avila ([damianavila](https://github.com/damianavila))\n- Dana Lee ([danagilliann](https://github.com/danagilliann))\n- Dave Hirschfeld ([dhirschfeld](https://github.com/dhirschfeld))\n- Heng GAO ([ehengao](https://github.com/ehengao))\n- Leo Gallucci ([elgalu](https://github.com/elgalu))\n- Evan Van Dam ([evandam](https://github.com/evandam))\n- forbxy ([forbxy](https://github.com/forbxy))\n- Grant Nestor ([gnestor](https://github.com/gnestor))\n- Ethan T. Hendrix ([hendrixet](https://github.com/hendrixet))\n- Miro Hrončok ([hroncok](https://github.com/hroncok))\n- Paul Ivanov ([ivanov](https://github.com/ivanov))\n- Darío Hereñú ([kant](https://github.com/kant))\n- Kevin Bates ([kevin-bates](https://github.com/kevin-bates))\n- Maarten Breddels ([maartenbreddels](https://github.com/maartenbreddels))\n- Michael Droettboom ([mdboom](https://github.com/mdboom))\n- Min RK ([minrk](https://github.com/minrk))\n- M Pacer ([mpacer](https://github.com/mpacer))\n- Peter Parente ([parente](https://github.com/parente))\n- Paul Masson ([paulmasson](https://github.com/paulmasson))\n- Philipp Rudiger ([philippjfr](https://github.com/philippjfr))\n- Mac Knight (Shels1909)\n- Hisham Elsheshtawy ([Sheshtawy](https://github.com/Sheshtawy))\n- Simon Biggs ([SimonBiggs](https://github.com/SimonBiggs))\n- Sunil Hari (`@sunilhari`)\n- Thomas Kluyver ([takluyver](https://github.com/takluyver))\n- Tim Klever ([tklever](https://github.com/tklever))\n- Gabriel Ruiz ([unnamedplay-r](https://github.com/unnamedplay-r))\n- Vaibhav Sagar ([vaibhavsagar](https://github.com/vaibhavsagar))\n- William Hosford ([whosford](https://github.com/whosford))\n- Hong ([xuhdev](https://github.com/xuhdev))\n\nSee the 5.5 milestone on GitHub for a complete list of [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.5)\ninvolved in this release.\n\n## 5.4.1\n\nA security release to fix [CVE-2018-8768](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8768).\n\nThanks to [Alex](https://hackerone.com/pisarenko) for identifying this\nbug, and Jonathan Kamens and Scott Sanderson at Quantopian for verifying\nit and bringing it to our attention.\n\n## 5.4.0\n\n- Fix creating files and folders after navigating directories in the\n  dashboard ([3264](https://github.com/jupyter/notebook/pull/3264)).\n- Enable printing notebooks in colour, removing the CSS that made\n  everything black and white ([3212](https://github.com/jupyter/notebook/pull/3212)).\n- Limit the completion options displayed in the notebook to 1000, to\n  avoid performance issues with very long lists ([3195](https://github.com/jupyter/notebook/pull/3195)).\n- Accessibility improvements in `tree.html` ([3271](https://github.com/jupyter/notebook/pull/3271)).\n- Added alt-text to the kernel logo image in the notebook UI ([3228](https://github.com/jupyter/notebook/pull/3228)).\n- Added a test on Travis CI to flag if symlinks are accidentally\n  introduced in the future. This should prevent the issue that\n  necessitated `release-5.3.1`{.interpreted-text role=\"ref\"} ([3227](https://github.com/jupyter/notebook/pull/3227)).\n- Use lowercase letters for random IDs generated in our Javascript ([3264](https://github.com/jupyter/notebook/pull/3264)).\n- Removed duplicate code setting `TextCell.notebook` ([3256](https://github.com/jupyter/notebook/pull/3256)).\n\nThanks to the following contributors:\n\n- Alex Soderman ([asoderman](https://github.com/asoderman))\n- Matthias Bussonnier ([Carreau](https://github.com/Carreau))\n- Min RK ([minrk](https://github.com/minrk))\n- Nitesh Sawant ([ns23](https://github.com/ns23))\n- Thomas Kluyver ([takluyver](https://github.com/takluyver))\n- Yuvi Panda ([yuvipanda](https://github.com/yuvipanda))\n\nSee the 5.4 milestone on GitHub for a complete list of [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.4)\ninvolved in this release.\n\n## 5.3.1\n\nReplaced a symlink in the repository with a copy, to fix issues\ninstalling on Windows ([3220](https://github.com/jupyter/notebook/pull/3220)).\n\n## 5.3.0\n\nThis release introduces a couple notable improvements, such as terminal\nsupport for Windows and support for OS trash (files deleted from the\nnotebook dashboard are moved to the OS trash vs. deleted permanently).\n\n- Add support for terminals on windows ([3087](https://github.com/jupyter/notebook/pull/3087)).\n- Add a \"restart and run all\" button to the toolbar ([2965](https://github.com/jupyter/notebook/pull/2965)).\n- Send files to os trash mechanism on delete ([1968](https://github.com/jupyter/notebook/pull/1968)).\n- Allow programmatic copy to clipboard ([3088](https://github.com/jupyter/notebook/pull/3088)).\n- Use DOM History API for navigating between directories in the file\n  browser ([3115](https://github.com/jupyter/notebook/pull/3115)).\n- Add translated files to folder(docs-translations) ([3065](https://github.com/jupyter/notebook/pull/3065)).\n- Allow non empty dirs to be deleted ([3108](https://github.com/jupyter/notebook/pull/3108)).\n- Set cookie on base_url ([2959](https://github.com/jupyter/notebook/pull/2959)).\n- Allow token-authenticated requests cross-origin by default ([2920](https://github.com/jupyter/notebook/pull/2920)).\n- Change cull_idle_timeout_minimum to 1 from 300 ([2910](https://github.com/jupyter/notebook/pull/2910)).\n- Config option to shut down server after n seconds with no kernels ([2963](https://github.com/jupyter/notebook/pull/2963)).\n- Display a \"close\" button on load notebook error ([3176](https://github.com/jupyter/notebook/pull/3176)).\n- Add action to command palette to run CodeMirror's \"indentAuto\"\n  on selection ([3175](https://github.com/jupyter/notebook/pull/3175)).\n- Add option to specify extra services ([3158](https://github.com/jupyter/notebook/pull/3158)).\n- Warn_bad_name should not use global name ([3160](https://github.com/jupyter/notebook/pull/3160)).\n- Avoid overflow of hidden form ([3148](https://github.com/jupyter/notebook/pull/3148)).\n- Fix shutdown trans loss ([3147](https://github.com/jupyter/notebook/pull/3147)).\n- Find available kernelspecs more efficiently ([3136](https://github.com/jupyter/notebook/pull/3136)).\n- Don't try to translate missing help strings ([3122](https://github.com/jupyter/notebook/pull/3122)).\n- Frontend/extension-config: allow default json files in a .d\n  directory ([3116](https://github.com/jupyter/notebook/pull/3116)).\n- Use \\[requirejs\\]{.title-ref} vs. \\[require\\]{.title-ref} ([3097](https://github.com/jupyter/notebook/pull/3097)).\n- Fixes some ui bugs in firefox #3044 ([3058](https://github.com/jupyter/notebook/pull/3058)).\n- Compare non-specific language code when choosing to use arabic\n  numerals ([3055](https://github.com/jupyter/notebook/pull/3055)).\n- Fix save-script deprecation ([3053](https://github.com/jupyter/notebook/pull/3053)).\n- Include moment locales in package_data ([3051](https://github.com/jupyter/notebook/pull/3051)).\n- Fix moment locale loading in bidi support ([3048](https://github.com/jupyter/notebook/pull/3048)).\n- Tornado 5: periodiccallback loop arg will be removed ([3034](https://github.com/jupyter/notebook/pull/3034)).\n- Use \\[/files\\]{.title-ref} prefix for pdf-like files ([3031](https://github.com/jupyter/notebook/pull/3031)).\n- Add folder for document translation ([3022](https://github.com/jupyter/notebook/pull/3022)).\n- When login-in via token, let a chance for user to set the password ([3008](https://github.com/jupyter/notebook/pull/3008)).\n- Switch to jupyter_core implementation of ensure_dir_exists ([3002](https://github.com/jupyter/notebook/pull/3002)).\n- Send http shutdown request on 'stop' subcommand ([3000](https://github.com/jupyter/notebook/pull/3000)).\n- Work on loading ui translations ([2969](https://github.com/jupyter/notebook/pull/2969)).\n- Fix ansi inverse ([2967](https://github.com/jupyter/notebook/pull/2967)).\n- Add send2trash to requirements for building docs ([2964](https://github.com/jupyter/notebook/pull/2964)).\n- I18n readme.md improvement ([2962](https://github.com/jupyter/notebook/pull/2962)).\n- Add 'reason' field to json error responses ([2958](https://github.com/jupyter/notebook/pull/2958)).\n- Add some padding for stream outputs ([3194](https://github.com/jupyter/notebook/pull/3194)).\n- Always use setuptools in `setup.py` ([3206](https://github.com/jupyter/notebook/pull/3206)).\n- Fix clearing cookies on logout when `base_url` is configured ([3207](https://github.com/jupyter/notebook/pull/3207)).\n\nThanks to the following contributors:\n\n- bacboc ([bacboc](https://github.com/bacboc))\n- Steven Silvester ([blink1073](https://github.com/blink1073))\n- Matthias Bussonnier ([Carreau](https://github.com/Carreau))\n- ChungJooHo ([ChungJooHo](https://github.com/ChungJooHo))\n- edida ([edida](https://github.com/edida))\n- Francesco Franchina (`ferdas`)\n- forbxy ([forbxy](https://github.com/forbxy))\n- Grant Nestor ([gnestor](https://github.com/gnestor))\n- Josh Barnes ([jcb91](https://github.com/jcb91))\n- JocelynDelalande ([JocelynDelalande](https://github.com/JocelynDelalande))\n- Karthik Balakrishnan ([karthikb351](https://github.com/karthikb351))\n- Kevin Bates ([kevin-bates](https://github.com/kevin-bates))\n- Kirit Thadaka ([kirit93](https://github.com/kirit93))\n- Lilian Besson ([Naereen](https://github.com/Naereen))\n- Maarten Breddels ([maartenbreddels](https://github.com/maartenbreddels))\n- Madhu94 ([Madhu94](https://github.com/Madhu94))\n- Matthias Geier ([mgeier](https://github.com/mgeier))\n- Michael Heilman ([mheilman](https://github.com/mheilman))\n- Min RK ([minrk](https://github.com/minrk))\n- PHaeJin ([PHaeJin](https://github.com/PHaeJin))\n- Sukneet ([Sukneet](https://github.com/Sukneet))\n- Thomas Kluyver ([takluyver](https://github.com/takluyver))\n\nSee the 5.3 milestone on GitHub for a complete list of [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.3)\ninvolved in this release.\n\n## 5.2.1\n\n- Fix invisible CodeMirror cursor at specific browser zoom levels ([2983](https://github.com/jupyter/notebook/pull/2983)).\n- Fix nbconvert handler causing broken export to PDF ([2981](https://github.com/jupyter/notebook/pull/2981)).\n- Fix the prompt_area argument of the output area constructor. ([2961](https://github.com/jupyter/notebook/pull/2961)).\n- Handle a compound extension in new_untitled ([2949](https://github.com/jupyter/notebook/pull/2949)).\n- Allow disabling offline message buffering ([2916](https://github.com/jupyter/notebook/pull/2916)).\n\nThanks to the following contributors:\n\n- Steven Silvester ([blink1073](https://github.com/blink1073))\n- Grant Nestor ([gnestor](https://github.com/gnestor))\n- Jason Grout ([jasongrout](https://github.com/jasongrout))\n- Min RK ([minrk](https://github.com/minrk))\n- M Pacer ([mpacer](https://github.com/mpacer))\n\nSee the 5.2.1 milestone on GitHub for a complete list of [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.2.1)\ninvolved in this release.\n\n## 5.2.0\n\n- Allow setting token via jupyter_token env ([2921](https://github.com/jupyter/notebook/pull/2921)).\n- Fix some errors caused by raising 403 in get_current_user ([2919](https://github.com/jupyter/notebook/pull/2919)).\n- Register contents_manager.files_handler_class directly ([2917](https://github.com/jupyter/notebook/pull/2917)).\n- Update viewable_extensions ([2913](https://github.com/jupyter/notebook/pull/2913)).\n- Show edit shortcuts modal after shortcuts modal is hidden ([2912](https://github.com/jupyter/notebook/pull/2912)).\n- Improve edit/view behavior ([2911](https://github.com/jupyter/notebook/pull/2911)).\n- The root directory of the notebook server should never be hidden ([2907](https://github.com/jupyter/notebook/pull/2907)).\n- Fix notebook require config to match tools/build-main ([2888](https://github.com/jupyter/notebook/pull/2888)).\n- Give page constructor default arguments ([2887](https://github.com/jupyter/notebook/pull/2887)).\n- Fix codemirror.less to match codemirror's expected padding layout ([2880](https://github.com/jupyter/notebook/pull/2880)).\n- Add x-xsrftoken to access-control-allow-headers ([2876](https://github.com/jupyter/notebook/pull/2876)).\n- Buffer messages when websocket connection is interrupted ([2871](https://github.com/jupyter/notebook/pull/2871)).\n- Load locale dynamically only when not en-us ([2866](https://github.com/jupyter/notebook/pull/2866)).\n- Changed key strength to 2048 bits ([2861](https://github.com/jupyter/notebook/pull/2861)).\n- Resync jsversion with python version ([2860](https://github.com/jupyter/notebook/pull/2860)).\n- Allow copy operation on modified, read-only notebook ([2854](https://github.com/jupyter/notebook/pull/2854)).\n- Update error handling on apihandlers ([2853](https://github.com/jupyter/notebook/pull/2853)).\n- Test python 3.6 on travis, drop 3.3 ([2852](https://github.com/jupyter/notebook/pull/2852)).\n- Avoid base64-literals in image tests ([2851](https://github.com/jupyter/notebook/pull/2851)).\n- Upgrade xterm.js to 2.9.2 ([2849](https://github.com/jupyter/notebook/pull/2849)).\n- Changed all python variables named file to file_name to not override\n  built_in file ([2830](https://github.com/jupyter/notebook/pull/2830)).\n- Add more doc tests ([2823](https://github.com/jupyter/notebook/pull/2823)).\n- Typos fix ([2815](https://github.com/jupyter/notebook/pull/2815)).\n- Rename and update license \\[ci skip\\] ([2810](https://github.com/jupyter/notebook/pull/2810)).\n- Travis builds doc ([2808](https://github.com/jupyter/notebook/pull/2808)).\n- Pull request i18n ([2804](https://github.com/jupyter/notebook/pull/2804)).\n- Factor out output_prompt_function, as is done with input prompt ([2774](https://github.com/jupyter/notebook/pull/2774)).\n- Use rfc5987 encoding for filenames ([2767](https://github.com/jupyter/notebook/pull/2767)).\n- Added path to the resources metadata, the same as in\n  from_filename(...) in nbconvert.exporters.py ([2753](https://github.com/jupyter/notebook/pull/2753)).\n- Make \"extrakeys\" consistent for notebook and editor ([2745](https://github.com/jupyter/notebook/pull/2745)).\n- Bidi support ([2357](https://github.com/jupyter/notebook/pull/2357)).\n\nSpecial thanks to [samarsultan](https://github.com/samarsultan) and the\nArabic Competence and Globalization Center Team at IBM Egypt for adding\nRTL (right-to-left) support to the notebook!\n\nSee the 5.2 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A5.2)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.2)\ninvolved in this release.\n\n## 5.1.0\n\n- Preliminary i18n implementation ([2140](https://github.com/jupyter/notebook/pull/2140)).\n- Expose URL with auth token in notebook UI ([2666](https://github.com/jupyter/notebook/pull/2666)).\n- Fix search background style ([2387](https://github.com/jupyter/notebook/pull/2387)).\n- List running notebooks without requiring `--allow-root` ([2421](https://github.com/jupyter/notebook/pull/2421)).\n- Allow session of type other than notebook ([2559](https://github.com/jupyter/notebook/pull/2559)).\n- Fix search background style ([2387](https://github.com/jupyter/notebook/pull/2387)).\n- Fix some Markdown styling issues ([2571](https://github.com/jupyter/notebook/pull/2571)), ([2691](https://github.com/jupyter/notebook/pull/2691)) and ([2534](https://github.com/jupyter/notebook/pull/2534)).\n- Remove keymaps that conflict with non-English keyboards ([2535](https://github.com/jupyter/notebook/pull/2535)).\n- Add session-specific favicons (notebook, terminal, file) ([2452](https://github.com/jupyter/notebook/pull/2452)).\n- Add /api/shutdown handler ([2507](https://github.com/jupyter/notebook/pull/2507)).\n- Include metadata when copying a cell ([2349](https://github.com/jupyter/notebook/pull/2349)).\n- Stop notebook server from command line ([2388](https://github.com/jupyter/notebook/pull/2388)).\n- Improve \"View\" and \"Edit\" file handling in dashboard ([2449](https://github.com/jupyter/notebook/pull/2449)) and ([2402](https://github.com/jupyter/notebook/pull/2402)).\n- Provide a promise to replace use of the\n  `app_initialized.NotebookApp` event ([2710](https://github.com/jupyter/notebook/pull/2710)).\n- Fix disabled collapse/expand output button ([2681](https://github.com/jupyter/notebook/pull/2681)).\n- Cull idle kernels using `--MappingKernelManager.cull_idle_timeout` ([2215](https://github.com/jupyter/notebook/pull/2215)).\n- Allow read-only notebooks to be trusted ([2718](https://github.com/jupyter/notebook/pull/2718)).\n\nSee the 5.1 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A5.1)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A5.1)\ninvolved in this release.\n\n## 5.0.0\n\nThis is the first major release of the Jupyter Notebook since version\n4.0 was created by the \"Big Split\" of IPython and Jupyter.\n\nWe encourage users to start trying JupyterLab in preparation for a\nfuture transition.\n\nWe have merged more than 300 pull requests since 4.0. Some of the major\nuser-facing changes are described here.\n\n### File sorting in the dashboard\n\nFiles in the dashboard may now be sorted by last modified date or name\n([943](https://github.com/jupyter/notebook/pull/943)):\n\n### Cell tags\n\nThere is a new cell toolbar for adding _cell tags_\n([2048](https://github.com/jupyter/notebook/pull/2048)):\n\nCell tags are a lightweight way to customise the behaviour of tools\nworking with notebooks; we're working on building support for them into\ntools like [nbconvert](https://nbconvert.readthedocs.io/en/latest/) and\n[nbval](https://github.com/computationalmodelling/nbval). To start using\ntags, select `Tags` in the `View > Cell Toolbar` menu in a notebook.\n\nThe UI for editing cell tags is basic for now; we hope to improve it in\nfuture releases.\n\n### Table style\n\nThe default styling for tables in the notebook has been updated\n([1776](https://github.com/jupyter/notebook/pull/1776)).\n\n### Customise keyboard shortcuts\n\nYou can now edit keyboard shortcuts for _Command Mode_ within the UI\n([1347](https://github.com/jupyter/notebook/pull/1347)):\n\nSee the `Help > Edit Keyboard Shortcuts` menu item and follow the\ninstructions.\n\n### Other additions\n\n- You can copy and paste cells between notebooks, using\n  `Ctrl-C`{.interpreted-text role=\"kbd\"} and\n  `Ctrl-V`{.interpreted-text role=\"kbd\"} (`Cmd-C`{.interpreted-text\n  role=\"kbd\"} and `Cmd-V`{.interpreted-text role=\"kbd\"} on Mac).\n- It's easier to configure a password for the notebook with the new\n  `jupyter notebook password` command ([2007](https://github.com/jupyter/notebook/pull/2007)).\n- The file list can now be ordered by _last modified_ or by _name_ ([943](https://github.com/jupyter/notebook/pull/943)).\n- Markdown cells now support attachments. Simply drag and drop an\n  image from your desktop to a markdown cell to add it. Unlike\n  relative links that you enter manually, attachments are embedded in\n  the notebook itself. An unreferenced attachment will be\n  automatically scrubbed from the notebook on save ([621](https://github.com/jupyter/notebook/pull/621)).\n- Undoing cell deletion now supports undeleting multiple cells. Cells\n  may not be in the same order as before their deletion, depending on\n  the actions you did on the meantime, but this should should help\n  reduce the impact of accidentally deleting code.\n- The file browser now has _Edit_ and _View_ buttons.\n- The file browser now supports moving multiple files at once ([1088](https://github.com/jupyter/notebook/pull/1088)).\n- The Notebook will refuse to run as root unless the `--allow-root`\n  flag is given ([1115](https://github.com/jupyter/notebook/pull/1115)).\n- Keyboard shortcuts are now declarative ([1234](https://github.com/jupyter/notebook/pull/1234)).\n- Toggling line numbers can now affect all cells ([1312](https://github.com/jupyter/notebook/pull/1312)).\n- Add more visible _Trusted_ and _Untrusted_ notifications ([1658](https://github.com/jupyter/notebook/pull/1658)).\n- The favicon (browser shortcut icon) now changes to indicate when the\n  kernel is busy ([1837](https://github.com/jupyter/notebook/pull/1837)).\n- Header and toolbar visibility is now persisted in nbconfig and\n  across sessions ([1769](https://github.com/jupyter/notebook/pull/1769)).\n- Load server extensions with ConfigManager so that merge happens\n  recursively, unlike normal config values, to make it load more\n  consistently with frontend extensions([2108](https://github.com/jupyter/notebook/pull/2108)).\n- The notebook server now supports the bundler API\n  from the [jupyter_cms incubator\n  project](https://github.com/jupyter-incubator/contentmanagement) ([1579](https://github.com/jupyter/notebook/pull/1579)).\n- The notebook server now provides information about kernel activity\n  in its kernel resource API ([1827](https://github.com/jupyter/notebook/pull/1827)).\n\nRemember that upgrading `notebook` only affects the user interface.\nUpgrading kernels and libraries may also provide new features, better\nstability and integration with the notebook interface.\n\n## 4.4.0\n\n- Allow override of output callbacks to redirect output messages. This\n  is used to implement the ipywidgets Output widget, for example.\n- Fix an async bug in message handling by allowing comm message\n  handlers to return a promise which halts message processing until\n  the promise resolves.\n\nSee the 4.4 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.4)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.4)\ninvolved in this release.\n\n## 4.3.2\n\n4.3.2 is a patch release with a bug fix for CodeMirror and improved\nhandling of the \"editable\" cell metadata field.\n\n- Monkey-patch for CodeMirror that resolves\n  [#2037](https://github.com/jupyter/notebook/issues/2037) without\n  breaking [#1967](https://github.com/jupyter/notebook/issues/1967)\n- Read-only (`\"editable\": false`) cells can be executed but cannot be\n  split, merged, or deleted\n\nSee the 4.3.2 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.3.2)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.3.2)\ninvolved in this release.\n\n## 4.3.1\n\n4.3.1 is a patch release with a security patch, a couple bug fixes, and\nimprovements to the newly-released token authentication.\n\n**Security fix**:\n\n- CVE-2016-9971. Fix CSRF vulnerability, where malicious forms could\n  create untitled files and start kernels (no remote execution or\n  modification of existing files) for users of certain browsers (Firefox, Internet Explorer / Edge). All previous notebook releases\n  are affected.\n\nBug fixes:\n\n- Fix carriage return handling\n- Make the font size more robust against fickle browsers\n- Ignore resize events that bubbled up and didn't come from window\n- Add Authorization to allowed CORS headers\n- Downgrade CodeMirror to 5.16 while we figure out issues in Safari\n\nOther improvements:\n\n- Better docs for token-based authentication\n- Further highlight token info in log output when autogenerated\n\nSee the 4.3.1 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.3.1)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.3.1)\ninvolved in this release.\n\n## 4.3.0\n\n4.3 is a minor release with many bug fixes and improvements. The biggest\nuser-facing change is the addition of token authentication, which is\nenabled by default. A token is generated and used when your browser is\nopened automatically, so you shouldn't have to enter anything in the\ndefault circumstances. If you see a login page (e.g. by switching\nbrowsers, or launching on a new port with `--no-browser`), you get a\nlogin URL with the token from the command `jupyter notebook list`, which\nyou can paste into your browser.\n\nHighlights:\n\n- API for creating mime-type based renderer extensions using\n  `OutputArea.register_mime_type` and `Notebook.render_cell_output`\n  methods. See\n  [mimerender-cookiecutter](https://github.com/jupyterlab/mimerender-cookiecutter)\n  for reference implementations and cookiecutter.\n- Enable token authentication by default. See\n  `server_security`{.interpreted-text role=\"ref\"} for more details.\n- Update security docs to reflect new signature system\n- Switched from term.js to xterm.js\n\nBug fixes:\n\n- Ensure variable is set if exc_info is falsey\n- Catch and log handler exceptions in `events.trigger`\n- Add debug log for static file paths\n- Don't check origin on token-authenticated requests\n- Remove leftover print statement\n- Fix highlighting of Python code blocks\n- `json_errors` should be outermost decorator on API handlers\n- Fix remove old nbserver info files\n- Fix notebook mime type on download links\n- Fix carriage symbol behavior\n- Fix terminal styles\n- Update dead links in docs\n- If kernel is broken, start a new session\n- Include cross-origin check when allowing login URL redirects\n\nOther improvements:\n\n- Allow JSON output data with mime type `application/*+json`\n- Allow kernelspecs to have spaces in them for backward compat\n- Allow websocket connections from scripts\n- Allow `None` for post_save_hook\n- Upgrade CodeMirror to 5.21\n- Upgrade xterm to 2.1.0\n- Docs for using comms\n- Set `dirty` flag when output arrives\n- Set `ws-url` data attribute when accessing a notebook terminal\n- Add base aliases for nbextensions\n- Include `@` operator in CodeMirror IPython mode\n- Extend mathjax_url docstring\n- Load nbextension in predictable order\n- Improve the error messages for nbextensions\n- Include cross-origin check when allowing login URL redirects\n\nSee the 4.3 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?utf8=%E2%9C%93&q=is%3Aissue%20milestone%3A4.3%20)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?utf8=%E2%9C%93&q=is%3Apr%20milestone%3A4.3%20)\ninvolved in this release.\n\n## 4.2.3\n\n4.2.3 is a small bugfix release on 4.2.\n\n> Highlights:\n\n- Fix regression in 4.2.2 that delayed loading custom.js until after\n  `notebook_loaded` and `app_initialized` events have fired.\n- Fix some outdated docs and links.\n\n## 4.2.2\n\n4.2.2 is a small bugfix release on 4.2, with an important security fix.\nAll users are strongly encouraged to upgrade to 4.2.2.\n\n> Highlights:\n\n- **Security fix**: CVE-2016-6524, where untrusted latex output could\n  be added to the page in a way that could execute javascript.\n- Fix missing POST in OPTIONS responses.\n- Fix for downloading non-ascii filenames.\n- Avoid clobbering ssl_options, so that users can specify more\n  detailed SSL configuration.\n- Fix inverted load order in nbconfig, so user config has highest\n  priority.\n- Improved error messages here and there.\n\n## 4.2.1\n\n4.2.1 is a small bugfix release on 4.2. Highlights:\n\n- Compatibility fixes for some versions of ipywidgets\n- Fix for ignored CSS on Windows\n- Fix specifying destination when installing nbextensions\n\n## 4.2.0\n\nRelease 4.2 adds a new API for enabling and installing extensions.\nExtensions can now be enabled at the system-level, rather than just\nper-user. An API is defined for installing directly from a Python\npackage, as well.\n\nHighlighted changes:\n\n- Upgrade MathJax to 2.6 to fix vertical-bar appearing on some\n  equations.\n- Restore ability for notebook directory to be root (4.1 regression)\n- Large outputs are now throttled, reducing the ability of output\n  floods to kill the browser.\n- Fix the notebook ignoring cell executions while a kernel is starting\n  by queueing the messages.\n- Fix handling of url prefixes (e.g. JupyterHub) in terminal and edit\n  pages.\n- Support nested SVGs in output.\n\nAnd various other fixes and improvements.\n\n## 4.1.0\n\nBug fixes:\n\n- Properly reap zombie subprocesses\n- Fix cross-origin problems\n- Fix double-escaping of the base URL prefix\n- Handle invalid unicode filenames more gracefully\n- Fix ANSI color-processing\n- Send keepalive messages for web terminals\n- Fix bugs in the notebook tour\n\nUI changes:\n\n- Moved the cell toolbar selector into the _View_ menu. Added a button\n  that triggers a \"hint\" animation to the main toolbar so users can\n  find the new location. (Click here to see a\n  [screencast](https://cloud.githubusercontent.com/assets/335567/10711889/59665a5a-7a3e-11e5-970f-86b89592880c.gif)\n  )\n\n- Added _Restart & Run All_ to the _Kernel_ menu. Users can also bind\n  it to a keyboard shortcut on action\n  `restart-kernel-and-run-all-cells`.\n\n- Added multiple-cell selection. Users press `Shift-Up/Down` or\n  `Shift-K/J` to extend selection in command mode. Various actions\n  such as cut/copy/paste, execute, and cell type conversions apply to\n  all selected cells.\n\n- Added a command palette for executing Jupyter actions by name. Users\n  press `Cmd/Ctrl-Shift-P` or click the new command palette icon on\n  the toolbar.\n\n- Added a _Find and Replace_ dialog to the _Edit_ menu. Users can also\n  press `F` in command mode to show the dialog.\n\nOther improvements:\n\n- Custom KernelManager methods can be Tornado coroutines, allowing\n  async operations.\n- Make clearing output optional when rewriting input with\n  `set_next_input(replace=True)`.\n- Added support for TLS client authentication via\n  `--NotebookApp.client-ca`.\n- Added tags to `jupyter/notebook` releases on DockerHub. `latest`\n  continues to track the master branch.\n\nSee the 4.1 milestone on GitHub for a complete list of\n[issues](https://github.com/jupyter/notebook/issues?page=3&q=milestone%3A4.1+is%3Aclosed+is%3Aissue&utf8=%E2%9C%93)\nand [pull\nrequests](https://github.com/jupyter/notebook/pulls?q=milestone%3A4.1+is%3Aclosed+is%3Apr)\nhandled.\n\n## 4.0.x\n\n### 4.0.6\n\n- fix installation of mathjax support files\n- fix some double-escape regressions in 4.0.5\n- fix a couple of cases where errors could prevent opening a notebook\n\n### 4.0.5\n\nSecurity fixes for maliciously crafted files.\n\n- [CVE-2015-6938](http://www.openwall.com/lists/oss-security/2015/09/02/3):\n  malicious filenames\n- [CVE-2015-7337](http://www.openwall.com/lists/oss-security/2015/09/16/3):\n  malicious binary files in text editor.\n\nThanks to Jonathan Kamens at Quantopian and Juan Broullón for the\nreports.\n\n### 4.0.4\n\n- Fix inclusion of mathjax-safe extension\n\n### 4.0.2\n\n- Fix launching the notebook on Windows\n- Fix the path searched for frontend config\n\n### 4.0.0\n\nFirst release of the notebook as a standalone package.\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to Jupyter Notebook\n\nThanks for contributing to Jupyter Notebook!\n\nMake sure to follow [Project Jupyter's Code of Conduct](https://jupyter.org/governance/conduct/code-of-conduct)\nfor a friendly and welcoming collaborative environment.\n\n## Setting up a development environment\n\nNote: You will need NodeJS to build the extension package.\n\nThe `jlpm` command is JupyterLab's pinned version of [yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use\n`yarn` or `npm` in lieu of `jlpm` below.\n\n**Note**: we recommend using `mamba` to speed up the creation of the environment.\n\n```bash\n# create a new environment\nmamba create -n notebook -c conda-forge python nodejs -y\n\n# activate the environment\nmamba activate notebook\n\n# Install package in development mode\npip install -e \".[dev,docs,test]\"\n\n# Install dependencies and build packages\njlpm\njlpm build\n\n# Link the notebook extension and @jupyter-notebook schemas\njlpm develop\n\n# Enable the server extension\njupyter server extension enable notebook\n```\n\n`notebook` follows a monorepo structure. To build all the packages at once:\n\n```bash\njlpm build\n```\n\nThere is also a `watch` script to watch for changes and rebuild the app automatically:\n\n```bash\njlpm watch\n```\n\nTo make sure the `notebook` server extension is installed:\n\n```bash\n$ jupyter server extension list\nConfig dir: /home/username/.jupyter\n\nConfig dir: /home/username/miniforge3/envs/notebook/etc/jupyter\n    jupyterlab enabled\n    - Validating jupyterlab...\n      jupyterlab 3.0.0 OK\n    notebook enabled\n    - Validating notebook...\n      notebook 7.0.0a0 OK\n\nConfig dir: /usr/local/etc/jupyter\n```\n\nThen start Jupyter Notebook with:\n\n```bash\njupyter notebook\n```\n\n### Local changes in Notebook dependencies\n\nThe development installation described above fetches JavaScript dependencies from `npm`,\naccording to the versions in the _package.json_ file.\nHowever, it is sometimes useful to be able to test changes in Notebook, with dependencies (e.g. `@jupyterlab` packages) that have not yet\nbeen published.\n\n[yalc](https://github.com/wclr/yalc) can help you use local JavaScript packages when building Notebook, acting as a local package repository.\n\n- Install yalc globally in your environment:\n  `npm install -g yalc`\n- Publish your dependency package:\\\n  `yalc publish`, from the package root directory.\\\n  For instance, if you are developing on _@jupyterlab/ui-components_, this command must be executed from\n  _path_to_jupyterlab/packages/ui-components_.\n- Depend on this local repository in Notebook:\n  - from the Notebook root directory:\\\n    `yalc add your_package` : this will create a _dependencies_ entry in the main _package.json_ file.\\\n    With the previous example, it would be `yalc add @jupyterlab/ui-components`.\n  - Notebook is a monorepo, so we want this dependency to be 'linked' as a resolution (for all sub-packages) instead\n    of a dependency.\\\n    The easiest way is to manually move the new entry in _package.json_ from _dependencies_ to _resolutions_.\n  - Build Notebook with the local dependency:\\\n    `jlpm install && jlpm build`\n\nChanges in the dependency must then be built and pushed using `jlpm build && yalc push` (from the package root directory),\nand fetched from Notebook using `yarn install`.\n\n**Warning**: you need to make sure that the dependencies of Notebook and the local package match correctly,\notherwise there will be errors with webpack during build.\\\nIn the previous example, both _@jupyterlab/ui-components_ and Notebook depend on _@jupyterlab/coreutils_. We\nstrongly advise you to depend on the same version.\n\n## Running Tests\n\nTo run the tests:\n\n```bash\njlpm run build:test\njlpm run test\n```\n\nThere are also end to end tests to cover higher level user interactions, located in the `ui-tests` folder. To run these tests:\n\n```bash\ncd ui-tests\n#install required packages for jlpm\njlpm\n\n#install playwright\njlpm playwright install\n\n# start a new Jupyter server in a terminal\njlpm start\n\n# in a new terminal, run the tests\njlpm test\n```\n\nThe `test` script calls the Playwright test runner. You can pass additional arguments to `playwright` by appending parameters to the command. For example to run the test in headed mode, `jlpm test --headed`.\n\nCheck out the [Playwright Command Line Reference](https://playwright.dev/docs/test-cli/) for more information about the available command line options.\n\nRunning the end to end tests in headful mode will trigger something like the following:\n\n![playwright-headed-demo](https://user-images.githubusercontent.com/591645/141274633-ca9f9c2f-eef6-430e-9228-a35827f8133d.gif)\n\n## Tasks caching\n\nThe repository is configured to use the Lerna caching system (via `nx`) for some of the development scripts.\n\nThis helps speed up rebuilds when running `jlpm run build` multiple times to avoid rebuilding packages that have not changed on disk.\n\nYou can generate a graph to have a better idea of the dependencies between all the packages using the following command:\n\n```\nnpx nx graph\n```\n\nRunning the command will open a browser tab by default with a graph that looks like the following:\n\n![a screenshot showing the nx task graph](https://github.com/jupyter/notebook/assets/591645/34eb46f0-b0e5-44b6-9430-ae5fbd673a4b)\n\nTo learn more about Lerna caching:\n\n- https://lerna.js.org/docs/features/cache-tasks\n- https://nx.dev/docs/features/cache-task-results\n\n### Updating reference snapshots\n\nOften a PR might make changes to the user interface, which can cause the visual regression tests to fail.\n\nIf you want to update the reference snapshots while working on a PR you can post the following sentence as a GitHub comment:\n\n```\nbot please update playwright snapshots\n```\n\nThis will trigger a GitHub Action that will run the UI tests automatically and push new commits to the branch if the reference snapshots have changed.\n\n## Code Styling\n\nAll non-python source code is formatted using [prettier](https://prettier.io) and python source code is formatted using [black](https://github.com/psf/black).\nWhen code is modified and committed, all staged files will be\nautomatically formatted using pre-commit git hooks (with help from\n[pre-commit](https://github.com/pre-commit/pre-commit). The benefit of\nusing code formatters like `prettier` and `black` is that it removes the topic of\ncode style from the conversation when reviewing pull requests, thereby\nspeeding up the review process.\n\nAs long as your code is valid,\nthe pre-commit hook should take care of how it should look.\n`pre-commit` and its associated hooks will automatically be installed when\nyou run `pip install -e \".[dev,test]\"`\n\nTo install `pre-commit` manually, run the following:\n\n```shell\npip install pre-commit\npre-commit install\n```\n\nYou can invoke the pre-commit hook by hand at any time with:\n\n```shell\npre-commit run\n```\n\nwhich should run any autoformatting on your code\nand tell you about any errors it couldn't fix automatically.\nYou may also install [black integration](https://github.com/psf/black#editor-integration)\ninto your text editor to format code automatically.\n\nIf you have already committed files before setting up the pre-commit\nhook with `pre-commit install`, you can fix everything up using\n`pre-commit run --all-files`. You need to make the fixing commit\nyourself after that.\n\nYou may also use the prettier npm script (e.g. `npm run prettier` or\n`yarn prettier` or `jlpm prettier`) to format the entire code base.\nWe recommend installing a prettier extension for your code editor and\nconfiguring it to format your code with a keyboard shortcut, or\nautomatically on save.\n\nSome of the hooks only run on CI by default, but you can invoke them by\nrunning with the `--hook-stage manual` argument.\n\n## Documentation\n\nFirst make sure you have set up a development environment as described above.\n\nThen run the following command to build the docs:\n\n```shell\nhatch run docs:build\n```\n\nIn a separate terminal window, run the following command to serve the documentation:\n\n```shell\nhatch run docs:serve\n```\n\nNow open a web browser and navigate to `http://localhost:8000` to access the documentation.\n\n## Contributing from the browser\n\nAlternatively you can also contribute to Jupyter Notebook without setting up a local environment, directly from a web browser:\n\n- [GitHub CodeSpaces](https://github.com/codespaces) is directly integrated into GitHub. This repository uses the [pixi](https://pixi.sh/) package manager to set up the development environment. To contribute after the Codespace is started:\n  - Run `pixi shell` in a terminal to activate the development environment\n  - Use the commands above for building the extension and running the tests, for example: `jlpm build`\n  - To start the application: `pixi run start`. A popup should appear with a button to open the Jupyter Notebook in a new browser tab. If the popup does not appear, you can navigate to the \"Forwarded ports\" panel to find the URL to the application.\n- GitHub's [built-in editor](https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files) is suitable for contributing small fixes.\n- A more advanced [github.dev](https://docs.github.com/en/codespaces/the-githubdev-web-based-editor) editor can be accessed by pressing the dot (.) key while in the Jupyter Notebook GitHub repository\n"
  },
  {
    "path": "LICENSE",
    "content": "BSD 3-Clause License\n\n- Copyright (c) 2001-2015, IPython Development Team\n- Copyright (c) 2015-, Jupyter Development Team\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n   contributors may be used to endorse or promote products derived from\n   this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
  },
  {
    "path": "README.md",
    "content": "# Jupyter Notebook\n\n![Github Actions Status](https://github.com/jupyter/notebook/workflows/Build/badge.svg)\n[![Documentation Status](https://readthedocs.org/projects/jupyter-notebook/badge/?version=latest)](https://jupyter-notebook.readthedocs.io/en/latest/?badge=latest)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter/notebook/main?urlpath=tree)\n\nThe Jupyter notebook is a web-based notebook environment for interactive\ncomputing.\n\n![Jupyter notebook example](docs/resources/running_code_med.png 'Jupyter notebook example')\n\n## Maintained versions\n\nWe maintain the **two most recently released major versions of Jupyter Notebook**,\nClassic Notebook v6 and Notebook v7. Notebook v5 is no longer maintained.\nAll Notebook v5 users are strongly advised to upgrade to Classic Notebook v6 as soon as possible.\n\nUpgrading to Notebook v7 may require more work, if you use custom extensions, as extensions written\nfor Notebook v5 or Classic Notebook v6 are not compatible with Notebook v7.\n\n### Notebook v7\n\nThe newest major version of Notebook is based on:\n\n- JupyterLab components for the frontend\n- Jupyter Server for the Python server\n\nThis represents a significant change to the `jupyter/notebook` code base.\n\nTo learn more about Notebook v7: https://jupyter.org/enhancement-proposals/79-notebook-v7/notebook-v7.html\n\n### Classic Notebook v6\n\nMaintenance and security-related issues [only](https://github.com/jupyter/notebook-team-compass/issues/5#issuecomment-1085254000) are now being addressed in the [`6.5.x`](https://github.com/jupyter/notebook/tree/6.5.x) branch.\nIt depends on [`nbclassic`](https://github.com/jupyter/nbclassic) for the HTML/JavaScript/CSS assets.\n\nNew features and continuous improvement is now focused on Notebook v7 (see section above).\n\nIf you have an open pull request with a new feature or if you were planning to open one, we encourage switching over to the Jupyter Server and JupyterLab architecture, and distribute it as a server extension and / or JupyterLab prebuilt extension. That way your new feature will also be compatible with the new Notebook v7.\n\n## Jupyter notebook, the language-agnostic evolution of IPython notebook\n\nJupyter notebook is a language-agnostic HTML notebook application for\nProject Jupyter. In 2015, Jupyter notebook was released as a part of\nThe Big Split™ of the IPython codebase. IPython 3 was the last major monolithic\nrelease containing both language-agnostic code, such as the _IPython notebook_,\nand language specific code, such as the _IPython kernel for Python_. As\ncomputing spans across many languages, Project Jupyter will continue to develop the\nlanguage-agnostic **Jupyter notebook** in this repo and with the help of the\ncommunity develop language specific kernels which are found in their own\ndiscrete repos.\n\n- [The Big Split™ announcement](https://blog.jupyter.org/the-big-split-9d7b88a031a7)\n- [Jupyter Ascending blog post](https://blog.jupyter.org/jupyter-ascending-1bf5b362d97e)\n\n## Installation\n\nYou can find the installation documentation for the\n[Jupyter platform, on ReadTheDocs](https://jupyter.readthedocs.io/en/latest/install.html).\nThe documentation for advanced usage of Jupyter notebook can be found\n[here](https://jupyter-notebook.readthedocs.io/en/latest/).\n\nFor a local installation, make sure you have\n[pip installed](https://pip.readthedocs.io/en/stable/installing/) and run:\n\n```bash\npip install notebook\n```\n\n## Usage - Running Jupyter notebook\n\n### Running in a local installation\n\nLaunch with:\n\n```bash\njupyter notebook\n```\n\n### Running in a remote installation\n\nYou need some configuration before starting Jupyter notebook remotely. See [Running a notebook server](https://jupyter-server.readthedocs.io/en/latest/operators/public-server.html).\n\n## Development Installation\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for how to set up a local development installation.\n\n## Contributing\n\nIf you are interested in contributing to the project, see [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n## Community Guidelines and Code of Conduct\n\nThis repository is a Jupyter project and follows the Jupyter\n[Community Guides and Code of Conduct](https://jupyter.readthedocs.io/en/latest/community/content-community.html).\n\n## Resources\n\n- [Project Jupyter website](https://jupyter.org)\n- [Online Demo at jupyter.org/try](https://jupyter.org/try)\n- [Documentation for Jupyter notebook](https://jupyter-notebook.readthedocs.io/en/latest/)\n- [Korean Version of Installation](https://github.com/ChungJooHo/Jupyter_Kor_doc/)\n- [Documentation for Project Jupyter](https://jupyter.readthedocs.io/en/latest/index.html)\n- [Issues](https://github.com/jupyter/notebook/issues)\n- [Technical support - Jupyter Google Group](https://discourse.jupyter.org/)\n\n## About the Jupyter Development Team\n\nThe Jupyter Development Team is the set of all contributors to the Jupyter project.\nThis includes all of the Jupyter subprojects.\n\nThe core team that coordinates development on GitHub can be found here:\nhttps://github.com/jupyter/.\n\n## Our Copyright Policy\n\nJupyter uses a shared copyright model. Each contributor maintains copyright\nover their contributions to Jupyter. But, it is important to note that these\ncontributions are typically only changes to the repositories. Thus, the Jupyter\nsource code, in its entirety is not the copyright of any single person or\ninstitution. Instead, it is the collective copyright of the entire Jupyter\nDevelopment Team. If individual contributors want to maintain a record of what\nchanges/contributions they have specific copyright on, they should indicate\ntheir copyright in the commit message of the change, when they commit the\nchange to one of the Jupyter repositories.\n\nWith this in mind, the following banner should be used in any source code file\nto indicate the copyright and license terms:\n\n```\n# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n```\n"
  },
  {
    "path": "RELEASE.md",
    "content": "# Releasing Jupyter Notebook\n\n## Using `jupyter_releaser`\n\nThe recommended way to make a release is to use [`jupyter_releaser`](https://jupyter-releaser.readthedocs.io/en/latest/get_started/making_release_from_repo.html).\n\n## Manual Release\n\nTo create a manual release, perform the following steps:\n\n### Set up\n\n```bash\npip install hatch twine\ngit pull origin $(git branch --show-current)\ngit clean -dffx\n```\n\n### Update the version and apply the tag\n\n```bash\necho \"Enter new version\"\nread new_version\nhatch version ${new_version}\ngit tag -a ${new_version} -m \"Release ${new_version}\"\n```\n\n### Build the artifacts\n\n```bash\nrm -rf dist\nhatch build\n```\n\n### Publish the artifacts to pypi\n\n```bash\ntwine check dist/*\ntwine upload dist/*\n```\n"
  },
  {
    "path": "app/index.template.js",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n// Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/dev_mode/index.js\n\nimport { PageConfig, URLExt } from '@jupyterlab/coreutils';\n\nimport { PluginRegistry } from '@lumino/coreutils';\n\nrequire('./style.js');\nrequire('./extraStyle.js');\n\nfunction loadScript(url) {\n  return new Promise((resolve, reject) => {\n    const newScript = document.createElement('script');\n    newScript.onerror = reject;\n    newScript.onload = resolve;\n    newScript.async = true;\n    document.head.appendChild(newScript);\n    newScript.src = url;\n  });\n}\nasync function loadComponent(url, scope) {\n  await loadScript(url);\n\n  // From MIT-licensed https://github.com/module-federation/module-federation-examples/blob/af043acd6be1718ee195b2511adf6011fba4233c/advanced-api/dynamic-remotes/app1/src/App.js#L6-L12\n  // eslint-disable-next-line no-undef\n  await __webpack_init_sharing__('default');\n  const container = window._JUPYTERLAB[scope];\n  // Initialize the container, it may provide shared modules and may need ours\n  // eslint-disable-next-line no-undef\n  await container.init(__webpack_share_scopes__.default);\n}\n\nasync function createModule(scope, module) {\n  try {\n    const factory = await window._JUPYTERLAB[scope].get(module);\n    const instance = factory();\n    instance.__scope__ = scope;\n    return instance;\n  } catch (e) {\n    console.warn(\n      `Failed to create module: package: ${scope}; module: ${module}`\n    );\n    throw e;\n  }\n}\n\n/**\n * The main function\n */\nasync function main() {\n  const mimeExtensionsMods = [\n  {{#each notebook_mime_extensions}}\n    require('{{ @key }}'),\n  {{/each}}\n  ];\n  const mimeExtensions = await Promise.all(mimeExtensionsMods);\n\n  // Load the base plugins available on all pages\n  let baseMods = [\n  {{#each notebook_plugins}}\n    {{#if (ispage @key '/')}}\n      {{{ list_plugins }}}\n    {{/if}}\n  {{/each}}\n  ];\n\n  const page = `/${PageConfig.getOption('notebookPage')}`;\n  switch (page) {\n  {{#each notebook_plugins}}\n    {{#unless (ispage @key '/')}}\n    // list all the other plugins grouped by page\n    case '{{ @key }}': {\n      baseMods = baseMods.concat([\n        {{{ list_plugins }}}\n      ]);\n      break;\n    }\n    {{/unless}}\n  {{/each}}\n  }\n\n  // populate the list of disabled extensions\n  const disabled = [];\n  const availablePlugins = [];\n\n  /**\n   * Iterate over active plugins in an extension.\n   *\n   * #### Notes\n   * This also populates the disabled\n   */\n  function* activePlugins(extension) {\n    // Handle commonjs or es2015 modules\n    let exports;\n    if (Object.prototype.hasOwnProperty.call(extension, '__esModule')) {\n      exports = extension.default;\n    } else {\n      // CommonJS exports.\n      exports = extension;\n    }\n\n    let plugins = Array.isArray(exports) ? exports : [exports];\n    for (let plugin of plugins) {\n      const isDisabled = PageConfig.Extension.isDisabled(plugin.id);\n      availablePlugins.push({\n        id: plugin.id,\n        description: plugin.description,\n        requires: plugin.requires ?? [],\n        optional: plugin.optional ?? [],\n        provides: plugin.provides ?? null,\n        autoStart: plugin.autoStart,\n        enabled: !isDisabled,\n        extension: extension.__scope__\n      });\n      if (isDisabled) {\n        disabled.push(plugin.id);\n        continue;\n      }\n      yield plugin;\n    }\n  }\n\n  const extension_data = JSON.parse(\n    PageConfig.getOption('federated_extensions')\n  );\n\n  const mods = [];\n  const federatedExtensionPromises = [];\n  const federatedMimeExtensionPromises = [];\n  const federatedStylePromises = [];\n\n  const extensions = await Promise.allSettled(\n    extension_data.map(async data => {\n      await loadComponent(\n        `${URLExt.join(\n          PageConfig.getOption('fullLabextensionsUrl'),\n          data.name,\n          data.load\n        )}`,\n        data.name\n      );\n      return data;\n    })\n  );\n\n  extensions.forEach(p => {\n    if (p.status === 'rejected') {\n      // There was an error loading the component\n      console.error(p.reason);\n      return;\n    }\n\n    const data = p.value;\n    if (data.extension) {\n      federatedExtensionPromises.push(createModule(data.name, data.extension));\n    }\n    if (data.mimeExtension) {\n      federatedMimeExtensionPromises.push(\n        createModule(data.name, data.mimeExtension)\n      );\n    }\n    if (data.style && !PageConfig.Extension.isDisabled(data.name)) {\n      federatedStylePromises.push(createModule(data.name, data.style));\n    }\n  });\n\n  // Add the base frontend extensions\n  const baseFrontendMods = await Promise.all(baseMods);\n  baseFrontendMods.forEach(p => {\n    for (let plugin of activePlugins(p)) {\n      mods.push(plugin);\n    }\n  });\n\n  // Add the federated extensions.\n  const federatedExtensions = await Promise.allSettled(\n    federatedExtensionPromises\n  );\n  federatedExtensions.forEach(p => {\n    if (p.status === 'fulfilled') {\n      for (let plugin of activePlugins(p.value)) {\n        mods.push(plugin);\n      }\n    } else {\n      console.error(p.reason);\n    }\n  });\n\n  // Add the federated mime extensions.\n  const federatedMimeExtensions = await Promise.allSettled(\n    federatedMimeExtensionPromises\n  );\n  federatedMimeExtensions.forEach(p => {\n    if (p.status === 'fulfilled') {\n      for (let plugin of activePlugins(p.value)) {\n        mimeExtensions.push(plugin);\n      }\n    } else {\n      console.error(p.reason);\n    }\n  });\n\n  // Load all federated component styles and log errors for any that do not\n  (await Promise.allSettled(federatedStylePromises))\n    .filter(({ status }) => status === 'rejected')\n    .forEach(({ reason }) => {\n      console.error(reason);\n    });\n\n  // Set the list of base notebook multi-page plugins so the app is aware of all\n  // its built-in plugins even if they are not loaded on the current page.\n  // For example this is useful so the Settings Editor can list the debugger\n  // plugin even if the debugger is only loaded on the notebook page.\n  PageConfig.setOption('allPlugins', '{{{ json notebook_plugins }}}');\n\n\n  const pluginRegistry = new PluginRegistry();\n  const NotebookApp = require('@jupyter-notebook/application').NotebookApp;\n\n  pluginRegistry.registerPlugins(mods);\n  const IServiceManager = require('@jupyterlab/services').IServiceManager;\n  const serviceManager = await pluginRegistry.resolveRequiredService(IServiceManager);\n\n  const app = new NotebookApp({\n    pluginRegistry,\n    serviceManager,\n    mimeExtensions,\n    availablePlugins\n  });\n\n  // Expose global app instance when in dev mode or when toggled explicitly.\n  const exposeAppInBrowser =\n    (PageConfig.getOption('exposeAppInBrowser') || '').toLowerCase() === 'true';\n\n  if (exposeAppInBrowser) {\n    window.jupyterapp = app;\n  }\n\n  await app.start();\n}\n\nwindow.addEventListener('load', main);\n"
  },
  {
    "path": "app/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/app\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"rspack\",\n    \"build:prod\": \"rspack --config ./rspack.prod.config.js\",\n    \"clean\": \"rimraf build && jlpm run clean:static\",\n    \"clean:static\": \"rimraf -g \\\"../notebook/static/!(favicons)\\\"\",\n    \"watch\": \"rspack --watch --config rspack.config.js\"\n  },\n  \"resolutions\": {\n    \"@codemirror/state\": \"~6.5.4\",\n    \"@codemirror/view\": \"~6.39.15\",\n    \"@jupyter-notebook/application\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/application-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/console-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/docmanager-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/documentsearch-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/help-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/notebook-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/terminal-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree-extension\": \"~7.6.0-alpha.4\",\n    \"@jupyter-notebook/ui-components\": \"~7.6.0-alpha.4\",\n    \"@jupyter/react-components\": \"~0.16.7\",\n    \"@jupyter/web-components\": \"~0.16.7\",\n    \"@jupyter/ydoc\": \"~3.1.0\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/application-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/apputils-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/attachments\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/audio-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/cell-toolbar\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/cell-toolbar-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/celltags-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/codeeditor\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/codemirror\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/codemirror-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/completer\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/completer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/console\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/console-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/csvviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/debugger\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/debugger-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/docmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/docmanager-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/documentsearch\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/documentsearch-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/extensionmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/extensionmanager-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/filebrowser\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/filebrowser-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/fileeditor\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/fileeditor-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/help-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/htmlviewer\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/htmlviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/hub-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/imageviewer\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/imageviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/javascript-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/json-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/logconsole-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/lsp\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/lsp-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mainmenu\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mainmenu-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/markdownviewer\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/markdownviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/markedparser-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mathjax-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mermaid\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mermaid-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/metadataform\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/metadataform-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/notebook\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/notebook-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/observables\": \"~5.6.0-alpha.4\",\n    \"@jupyterlab/outputarea\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/pdf-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/pluginmanager-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/rendermime\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/rendermime-interfaces\": \"~3.14.0-alpha.4\",\n    \"@jupyterlab/running-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/services\": \"~7.6.0-alpha.4\",\n    \"@jupyterlab/services-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingeditor\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingeditor-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/shortcuts-extension\": \"~5.4.0-alpha.4\",\n    \"@jupyterlab/statedb\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/statusbar\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/terminal\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/terminal-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/theme-dark-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/theme-dark-high-contrast-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/theme-light-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/toc-extension\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/tooltip\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/tooltip-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/vega5-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/video-extension\": \"~4.6.0-alpha.4\",\n    \"@lezer/common\": \"~1.5.0\",\n    \"@lezer/highlight\": \"~1.2.0\",\n    \"@lumino/algorithm\": \"~2.0.4\",\n    \"@lumino/application\": \"~2.4.8\",\n    \"@lumino/commands\": \"~2.3.3\",\n    \"@lumino/coreutils\": \"~2.2.2\",\n    \"@lumino/disposable\": \"~2.1.5\",\n    \"@lumino/domutils\": \"~2.0.4\",\n    \"@lumino/dragdrop\": \"~2.1.8\",\n    \"@lumino/messaging\": \"~2.0.4\",\n    \"@lumino/properties\": \"~2.0.4\",\n    \"@lumino/signaling\": \"~2.1.5\",\n    \"@lumino/virtualdom\": \"~2.0.4\",\n    \"@lumino/widgets\": \"~2.7.5\",\n    \"react\": \"~18.2.0\",\n    \"react-dom\": \"~18.2.0\",\n    \"yjs\": \"~13.6.8\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/application-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/console-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/docmanager-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/documentsearch-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/help-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/notebook-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/terminal-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/ui-components\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/attachments\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/audio-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/cell-toolbar-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/celltags-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/codemirror\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/codemirror-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/completer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/console-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/csvviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/debugger-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/docmanager-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/documentsearch-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/extensionmanager-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/filebrowser-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/fileeditor-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/help-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/htmlviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/hub-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/imageviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/javascript-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/json-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/logconsole-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/lsp\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/lsp-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mainmenu-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/markdownviewer-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/markedparser-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mathjax-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mermaid-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/metadataform-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/notebook-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/pdf-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/pluginmanager-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/running-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/services-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingeditor\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingeditor-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/shortcuts-extension\": \"~5.4.0-alpha.4\",\n    \"@jupyterlab/terminal-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/theme-dark-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/theme-dark-high-contrast-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/theme-light-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/toc-extension\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/tooltip-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/vega5-extension\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/video-extension\": \"~4.6.0-alpha.4\",\n    \"@lumino/coreutils\": \"~2.2.2\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"yjs\": \"^13.5.40\"\n  },\n  \"devDependencies\": {\n    \"@jupyterlab/builder\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/buildutils\": \"~4.6.0-alpha.4\",\n    \"@rspack/cli\": \"^1.7.1\",\n    \"@rspack/core\": \"^1.7.1\",\n    \"@types/rimraf\": \"^3.0.2\",\n    \"fs-extra\": \"^8.1.0\",\n    \"glob\": \"~7.1.6\",\n    \"handlebars\": \"^4.7.7\",\n    \"rimraf\": \"^3.0.2\",\n    \"webpack-bundle-analyzer\": \"^4.8.0\",\n    \"webpack-merge\": \"^5.8.0\",\n    \"whatwg-fetch\": \"^3.0.0\"\n  },\n  \"jupyterlab\": {\n    \"name\": \"Jupyter Notebook\",\n    \"mimeExtensions\": {\n      \"@jupyterlab/javascript-extension\": true,\n      \"@jupyterlab/json-extension\": true,\n      \"@jupyterlab/pdf-extension\": true,\n      \"@jupyterlab/vega5-extension\": true\n    },\n    \"plugins\": {\n      \"/\": {\n        \"@jupyter-notebook/application-extension\": true,\n        \"@jupyter-notebook/console-extension\": true,\n        \"@jupyter-notebook/docmanager-extension\": true,\n        \"@jupyter-notebook/documentsearch-extension\": true,\n        \"@jupyter-notebook/help-extension\": true,\n        \"@jupyter-notebook/notebook-extension\": true,\n        \"@jupyter-notebook/terminal-extension\": true,\n        \"@jupyterlab/application-extension\": [\n          \"@jupyterlab/application-extension:context-menu\",\n          \"@jupyterlab/application-extension:faviconbusy\",\n          \"@jupyterlab/application-extension:router\",\n          \"@jupyterlab/application-extension:top-bar\",\n          \"@jupyterlab/application-extension:top-spacer\"\n        ],\n        \"@jupyterlab/apputils-extension\": [\n          \"@jupyterlab/apputils-extension:kernels-settings\",\n          \"@jupyterlab/apputils-extension:palette\",\n          \"@jupyterlab/apputils-extension:notification\",\n          \"@jupyterlab/apputils-extension:sanitizer\",\n          \"@jupyterlab/apputils-extension:sessionDialogs\",\n          \"@jupyterlab/apputils-extension:settings\",\n          \"@jupyterlab/apputils-extension:state\",\n          \"@jupyterlab/apputils-extension:themes\",\n          \"@jupyterlab/apputils-extension:themes-palette-menu\",\n          \"@jupyterlab/apputils-extension:toolbar-registry\",\n          \"@jupyterlab/apputils-extension:utilityCommands\"\n        ],\n        \"@jupyterlab/audio-extension\": true,\n        \"@jupyterlab/codemirror-extension\": true,\n        \"@jupyterlab/completer-extension\": [\n          \"@jupyterlab/completer-extension:base-service\",\n          \"@jupyterlab/completer-extension:inline-completer\",\n          \"@jupyterlab/completer-extension:inline-completer-factory\",\n          \"@jupyterlab/completer-extension:inline-history\",\n          \"@jupyterlab/completer-extension:manager\"\n        ],\n        \"@jupyterlab/console-extension\": [\n          \"@jupyterlab/console-extension:cell-executor\",\n          \"@jupyterlab/console-extension:completer\",\n          \"@jupyterlab/console-extension:factory\",\n          \"@jupyterlab/console-extension:foreign\",\n          \"@jupyterlab/console-extension:tracker\"\n        ],\n        \"@jupyterlab/csvviewer-extension\": true,\n        \"@jupyterlab/docmanager-extension\": [\n          \"@jupyterlab/docmanager-extension:plugin\",\n          \"@jupyterlab/docmanager-extension:download\",\n          \"@jupyterlab/docmanager-extension:contexts\",\n          \"@jupyterlab/docmanager-extension:manager\"\n        ],\n        \"@jupyterlab/documentsearch-extension\": [\n          \"@jupyterlab/documentsearch-extension:plugin\"\n        ],\n        \"@jupyterlab/filebrowser-extension\": [\n          \"@jupyterlab/filebrowser-extension:factory\",\n          \"@jupyterlab/filebrowser-extension:default-file-browser\"\n        ],\n        \"@jupyterlab/fileeditor-extension\": [\n          \"@jupyterlab/fileeditor-extension:plugin\",\n          \"@jupyterlab/fileeditor-extension:widget-factory\"\n        ],\n        \"@jupyterlab/help-extension\": [\n          \"@jupyterlab/help-extension:resources\"\n        ],\n        \"@jupyterlab/htmlviewer-extension\": true,\n        \"@jupyterlab/hub-extension\": true,\n        \"@jupyterlab/imageviewer-extension\": true,\n        \"@jupyterlab/lsp-extension\": true,\n        \"@jupyterlab/mainmenu-extension\": [\n          \"@jupyterlab/mainmenu-extension:plugin\"\n        ],\n        \"@jupyterlab/markedparser-extension\": true,\n        \"@jupyterlab/mathjax-extension\": true,\n        \"@jupyterlab/mermaid-extension\": true,\n        \"@jupyterlab/notebook-extension\": [\n          \"@jupyterlab/notebook-extension:cell-executor\",\n          \"@jupyterlab/notebook-extension:code-console\",\n          \"@jupyterlab/notebook-extension:export\",\n          \"@jupyterlab/notebook-extension:factory\",\n          \"@jupyterlab/notebook-extension:tracker\",\n          \"@jupyterlab/notebook-extension:widget-factory\"\n        ],\n        \"@jupyterlab/pluginmanager-extension\": true,\n        \"@jupyterlab/services-extension\": true,\n        \"@jupyterlab/shortcuts-extension\": true,\n        \"@jupyterlab/terminal-extension\": true,\n        \"@jupyterlab/theme-light-extension\": true,\n        \"@jupyterlab/theme-dark-extension\": true,\n        \"@jupyterlab/theme-dark-high-contrast-extension\": true,\n        \"@jupyterlab/translation-extension\": true,\n        \"@jupyterlab/ui-components-extension\": true,\n        \"@jupyterlab/video-extension\": true\n      },\n      \"/tree\": {\n        \"@jupyterlab/application-extension\": [\n          \"@jupyterlab/application-extension:commands\"\n        ],\n        \"@jupyterlab/cell-toolbar-extension\": true,\n        \"@jupyterlab/extensionmanager-extension\": true,\n        \"@jupyterlab/filebrowser-extension\": [\n          \"@jupyterlab/filebrowser-extension:browser\",\n          \"@jupyterlab/filebrowser-extension:create-new-language-file\",\n          \"@jupyterlab/filebrowser-extension:download\",\n          \"@jupyterlab/filebrowser-extension:file-upload-status\",\n          \"@jupyterlab/filebrowser-extension:open-with\",\n          \"@jupyterlab/filebrowser-extension:search\",\n          \"@jupyterlab/filebrowser-extension:share-file\"\n        ],\n        \"@jupyter-notebook/tree-extension\": true,\n        \"@jupyterlab/running-extension\": [\n          \"@jupyterlab/running-extension:plugin\"\n        ],\n        \"@jupyterlab/settingeditor-extension\": true\n      },\n      \"/notebooks\": {\n        \"@jupyterlab/celltags-extension\": true,\n        \"@jupyterlab/cell-toolbar-extension\": true,\n        \"@jupyterlab/debugger-extension\": [\n          \"@jupyterlab/debugger-extension:completions\",\n          \"@jupyterlab/debugger-extension:config\",\n          \"@jupyterlab/debugger-extension:debug-console\",\n          \"@jupyterlab/debugger-extension:main\",\n          \"@jupyterlab/debugger-extension:notebooks\",\n          \"@jupyterlab/debugger-extension:service\",\n          \"@jupyterlab/debugger-extension:sidebar\",\n          \"@jupyterlab/debugger-extension:sources\",\n          \"@jupyterlab/debugger-extension:display-registry\"\n        ],\n        \"@jupyterlab/logconsole-extension\": true,\n        \"@jupyterlab/metadataform-extension\": true,\n        \"@jupyterlab/notebook-extension\": [\n          \"@jupyterlab/notebook-extension:active-cell-tool\",\n          \"@jupyterlab/notebook-extension:completer\",\n          \"@jupyterlab/notebook-extension:copy-output\",\n          \"@jupyterlab/notebook-extension:metadata-editor\",\n          \"@jupyterlab/notebook-extension:search\",\n          \"@jupyterlab/notebook-extension:toc\",\n          \"@jupyterlab/notebook-extension:tools\",\n          \"@jupyterlab/notebook-extension:update-raw-mimetype\"\n        ],\n        \"@jupyterlab/toc-extension\": [\n          \"@jupyterlab/toc-extension:registry\",\n          \"@jupyterlab/toc-extension:tracker\"\n        ],\n        \"@jupyterlab/tooltip-extension\": [\n          \"@jupyterlab/tooltip-extension:manager\",\n          \"@jupyterlab/tooltip-extension:notebooks\"\n        ]\n      },\n      \"/consoles\": {\n        \"@jupyterlab/tooltip-extension\": [\n          \"@jupyterlab/tooltip-extension:manager\",\n          \"@jupyterlab/tooltip-extension:consoles\"\n        ]\n      },\n      \"/edit\": {\n        \"@jupyterlab/fileeditor-extension\": [\n          \"@jupyterlab/fileeditor-extension:completer\",\n          \"@jupyterlab/fileeditor-extension:search\"\n        ],\n        \"@jupyterlab/markdownviewer-extension\": true\n      }\n    },\n    \"singletonPackages\": [\n      \"@codemirror/state\",\n      \"@codemirror/view\",\n      \"@jupyter-notebook/tree\",\n      \"@jupyter/react-components\",\n      \"@jupyter/web-components\",\n      \"@jupyter/ydoc\",\n      \"@jupyterlab/application\",\n      \"@jupyterlab/apputils\",\n      \"@jupyterlab/cell-toolbar\",\n      \"@jupyterlab/codeeditor\",\n      \"@jupyterlab/codemirror\",\n      \"@jupyterlab/completer\",\n      \"@jupyterlab/console\",\n      \"@jupyterlab/coreutils\",\n      \"@jupyterlab/debugger\",\n      \"@jupyterlab/docmanager\",\n      \"@jupyterlab/documentsearch\",\n      \"@jupyterlab/extensionmanager\",\n      \"@jupyterlab/filebrowser\",\n      \"@jupyterlab/fileeditor\",\n      \"@jupyterlab/htmlviewer\",\n      \"@jupyterlab/imageviewer\",\n      \"@jupyterlab/lsp\",\n      \"@jupyterlab/mainmenu\",\n      \"@jupyterlab/markdownviewer\",\n      \"@jupyterlab/mermaid\",\n      \"@jupyterlab/metadataform\",\n      \"@jupyterlab/notebook\",\n      \"@jupyterlab/observables\",\n      \"@jupyterlab/outputarea\",\n      \"@jupyterlab/rendermime\",\n      \"@jupyterlab/rendermime-interfaces\",\n      \"@jupyterlab/services\",\n      \"@jupyterlab/settingeditor\",\n      \"@jupyterlab/settingregistry\",\n      \"@jupyterlab/statedb\",\n      \"@jupyterlab/statusbar\",\n      \"@jupyterlab/terminal\",\n      \"@jupyterlab/tooltip\",\n      \"@jupyterlab/translation\",\n      \"@jupyterlab/ui-components\",\n      \"@lezer/common\",\n      \"@lezer/highlight\",\n      \"@lumino/algorithm\",\n      \"@lumino/application\",\n      \"@lumino/commands\",\n      \"@lumino/coreutils\",\n      \"@lumino/disposable\",\n      \"@lumino/domutils\",\n      \"@lumino/dragdrop\",\n      \"@lumino/messaging\",\n      \"@lumino/properties\",\n      \"@lumino/signaling\",\n      \"@lumino/virtualdom\",\n      \"@lumino/widgets\",\n      \"react\",\n      \"react-dom\",\n      \"yjs\"\n    ]\n  }\n}\n"
  },
  {
    "path": "app/publicpath.js",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n// We dynamically set the webpack public path based on the page config\n// settings from the JupyterLab app. We copy some of the pageconfig parsing\n// logic in @jupyterlab/coreutils below, since this must run before any other\n// files are loaded (including @jupyterlab/coreutils).\n\n/**\n * Get global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n *\n * @returns The config value or an empty string if not found.\n *\n * #### Notes\n * All values are treated as strings.\n * For browser based applications, it is assumed that the page HTML\n * includes a script tag with the id `jupyter-config-data` containing the\n * configuration as valid JSON.  In order to support the classic Notebook,\n * we fall back on checking for `body` data of the given `name`.\n */\nfunction getOption(name) {\n  let configData = Object.create(null);\n  // Use script tag if available.\n  if (typeof document !== 'undefined' && document) {\n    const el = document.getElementById('jupyter-config-data');\n\n    if (el) {\n      configData = JSON.parse(el.textContent || '{}');\n    }\n  }\n  return configData[name] || '';\n}\n\n// eslint-disable-next-line no-undef\n__webpack_public_path__ = getOption('fullStaticUrl') + '/';\n"
  },
  {
    "path": "app/rspack.config.js",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n// Heavily inspired (and slightly tweaked) from:\n// https://github.com/jupyterlab/jupyterlab/blob/master/examples/federated/core_package/rspack.config.js\n\nconst fs = require('fs-extra');\nconst path = require('path');\nconst rspack = require('@rspack/core');\nconst merge = require('webpack-merge').default;\nconst Handlebars = require('handlebars');\nconst { ModuleFederationPlugin } = rspack.container;\nconst BundleAnalyzerPlugin =\n  require('webpack-bundle-analyzer').BundleAnalyzerPlugin;\n\nconst Build = require('@jupyterlab/builder').Build;\nconst WPPlugin = require('@jupyterlab/builder').WPPlugin;\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst baseConfig = require('@jupyterlab/builder/lib/webpack.config.base');\n\nconst data = require('./package.json');\n\nconst names = Object.keys(data.dependencies).filter((name) => {\n  const packageData = require(path.join(name, 'package.json'));\n  return packageData.jupyterlab !== undefined;\n});\n\n// Ensure a clear build directory.\nconst buildDir = path.resolve(__dirname, 'build');\nif (fs.existsSync(buildDir)) {\n  fs.removeSync(buildDir);\n}\nfs.ensureDirSync(buildDir);\n\n// Handle the extensions.\nconst { mimeExtensions, plugins } = data.jupyterlab;\n\n// Create the list of extension packages from the package.json metadata\nconst extensionPackages = new Set();\nObject.keys(plugins).forEach((page) => {\n  const pagePlugins = plugins[page];\n  Object.keys(pagePlugins).forEach((name) => {\n    extensionPackages.add(name);\n  });\n});\n\nHandlebars.registerHelper('json', function (context) {\n  return JSON.stringify(context);\n});\n\n// custom help to check if a page corresponds to a value\nHandlebars.registerHelper('ispage', function (key, page) {\n  return key === page;\n});\n\n// custom helper to load the plugins on the index page\nHandlebars.registerHelper('list_plugins', function () {\n  let str = '';\n  const page = this;\n  Object.keys(this).forEach((extension) => {\n    const plugin = page[extension];\n    if (plugin === true) {\n      str += `require(\\'${extension}\\'),\\n  `;\n    } else if (Array.isArray(plugin)) {\n      const plugins = plugin.map((p) => `'${p}',`).join('\\n');\n      str += `\n      require(\\'${extension}\\').default.filter(({id}) => [\n       ${plugins}\n      ].includes(id)),\n      `;\n    }\n  });\n  return str;\n});\n\n// Create the entry point and other assets in build directory.\nconst source = fs.readFileSync('index.template.js').toString();\nconst template = Handlebars.compile(source);\nconst extData = {\n  notebook_plugins: plugins,\n  notebook_mime_extensions: mimeExtensions,\n};\nconst indexOut = template(extData);\nfs.writeFileSync(path.join(buildDir, 'index.js'), indexOut);\n\n// Copy extra files\nconst cssImports = path.resolve(__dirname, 'style.js');\nfs.copySync(cssImports, path.resolve(buildDir, 'extraStyle.js'));\n\nconst extras = Build.ensureAssets({\n  packageNames: names,\n  output: buildDir,\n  schemaOutput: path.resolve(__dirname, '..', 'notebook'),\n});\n\n/**\n * Create the rspack ``shared`` configuration\n */\nfunction createShared(packageData) {\n  // Set up module federation sharing config\n  const shared = {};\n\n  // Make sure any resolutions are shared\n  for (let [pkg, requiredVersion] of Object.entries(packageData.resolutions)) {\n    shared[pkg] = { requiredVersion };\n  }\n\n  // Add any extension packages that are not in resolutions (i.e., installed from npm)\n  for (let pkg of extensionPackages) {\n    if (!shared[pkg]) {\n      shared[pkg] = {\n        requiredVersion: require(`${pkg}/package.json`).version,\n      };\n    }\n  }\n\n  // Add dependencies and sharedPackage config from extension packages if they\n  // are not already in the shared config. This means that if there is a\n  // conflict, the resolutions package version is the one that is shared.\n  const extraShared = [];\n  for (let pkg of extensionPackages) {\n    let pkgShared = {};\n    let {\n      dependencies = {},\n      jupyterlab: { sharedPackages = {} } = {},\n    } = require(`${pkg}/package.json`);\n    for (let [dep, requiredVersion] of Object.entries(dependencies)) {\n      if (!shared[dep]) {\n        pkgShared[dep] = { requiredVersion };\n      }\n    }\n\n    // Overwrite automatic dependency sharing with custom sharing config\n    for (let [dep, config] of Object.entries(sharedPackages)) {\n      if (config === false) {\n        delete pkgShared[dep];\n      } else {\n        if ('bundled' in config) {\n          config.import = config.bundled;\n          delete config.bundled;\n        }\n        pkgShared[dep] = config;\n      }\n    }\n    extraShared.push(pkgShared);\n  }\n\n  // Now merge the extra shared config\n  const mergedShare = {};\n  for (let sharedConfig of extraShared) {\n    for (let [pkg, config] of Object.entries(sharedConfig)) {\n      // Do not override the basic share config from resolutions\n      if (shared[pkg]) {\n        continue;\n      }\n\n      // Add if we haven't seen the config before\n      if (!mergedShare[pkg]) {\n        mergedShare[pkg] = config;\n        continue;\n      }\n\n      // Choose between the existing config and this new config. We do not try\n      // to merge configs, which may yield a config no one wants\n      let oldConfig = mergedShare[pkg];\n\n      // if the old one has import: false, use the new one\n      if (oldConfig.import === false) {\n        mergedShare[pkg] = config;\n      }\n    }\n  }\n\n  Object.assign(shared, mergedShare);\n\n  // Transform any file:// requiredVersion to the version number from the\n  // imported package. This assumes (for simplicity) that the version we get\n  // importing was installed from the file.\n  for (let [pkg, { requiredVersion }] of Object.entries(shared)) {\n    if (requiredVersion && requiredVersion.startsWith('file:')) {\n      shared[pkg].requiredVersion = require(`${pkg}/package.json`).version;\n    }\n  }\n\n  // Add singleton package information\n  for (let pkg of packageData.jupyterlab.singletonPackages) {\n    if (shared[pkg]) {\n      shared[pkg].singleton = true;\n    }\n  }\n\n  return shared;\n}\n\n// Make a bootstrap entrypoint\nconst entryPoint = path.join(buildDir, 'bootstrap.js');\nconst bootstrap = 'import(\"./index.js\");';\nfs.writeFileSync(entryPoint, bootstrap);\n\nif (process.env.NODE_ENV === 'production') {\n  baseConfig.mode = 'production';\n}\n\nif (process.argv.includes('--analyze')) {\n  extras.push(new BundleAnalyzerPlugin());\n}\n\nconst htmlPlugins = [];\n['consoles', 'edit', 'error', 'notebooks', 'terminals', 'tree'].forEach(\n  (name) => {\n    htmlPlugins.push(\n      new HtmlWebpackPlugin({\n        chunksSortMode: 'none',\n        template: path.join(\n          path.resolve('./templates'),\n          `${name}_template.html`\n        ),\n        title: name,\n        filename: path.join(\n          path.resolve(__dirname, '..', 'notebook/templates'),\n          `${name}.html`\n        ),\n      })\n    );\n  }\n);\n\nmodule.exports = [\n  merge(baseConfig, {\n    mode: 'development',\n    entry: ['./publicpath.js', './' + path.relative(__dirname, entryPoint)],\n    output: {\n      path: path.resolve(__dirname, '..', 'notebook/static/'),\n      publicPath: '{{page_config.fullStaticUrl}}/',\n      library: {\n        type: 'var',\n        name: ['_JUPYTERLAB', 'CORE_OUTPUT'],\n      },\n      filename: '[name].[contenthash].js',\n    },\n    optimization: {\n      splitChunks: {\n        chunks: 'all',\n        cacheGroups: {\n          jlab_core: {\n            test: /[\\\\/]node_modules[\\\\/]@(jupyterlab|jupyter-notebook|lumino(?!\\/datagrid))[\\\\/]/,\n            name: 'notebook_core',\n          },\n        },\n      },\n    },\n    resolve: {\n      fallback: { util: false },\n    },\n    plugins: [\n      ...htmlPlugins,\n      new WPPlugin.JSONLicenseWebpackPlugin({\n        excludedPackageTest: (packageName) =>\n          packageName === '@jupyter-notebook/app',\n      }),\n      new ModuleFederationPlugin({\n        library: {\n          type: 'var',\n          name: ['_JUPYTERLAB', 'CORE_LIBRARY_FEDERATION'],\n        },\n        name: 'CORE_FEDERATION',\n        shared: createShared(data),\n      }),\n    ],\n  }),\n].concat(extras);\n\nconst logPath = path.join(buildDir, 'build_log.json');\nfs.writeFileSync(logPath, JSON.stringify(module.exports, null, '  '));\n"
  },
  {
    "path": "app/rspack.config.watch.js",
    "content": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nconst base = require('./rspack.config');\n\nmodule.exports = [\n  {\n    ...base[0],\n    bail: false,\n    watch: true,\n  },\n  ...base.slice(1),\n];\n"
  },
  {
    "path": "app/rspack.prod.config.js",
    "content": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nconst merge = require('webpack-merge').default;\nconst config = require('./rspack.config');\nconst WPPlugin = require('@jupyterlab/builder').WPPlugin;\n\nconfig[0] = merge(config[0], {\n  mode: 'production',\n  devtool: 'source-map',\n  output: {\n    // Add version argument when in production so the Jupyter server\n    // allows caching of files (i.e., does not set the CacheControl header to no-cache to prevent caching static files)\n    filename: '[name].[contenthash].js?v=[contenthash]',\n  },\n  optimization: {\n    minimize: false,\n  },\n  plugins: [\n    new WPPlugin.JSONLicenseWebpackPlugin({\n      excludedPackageTest: (packageName) =>\n        packageName === '@jupyter-notebook/app',\n    }),\n  ],\n});\n\nmodule.exports = config;\n"
  },
  {
    "path": "app/style.js",
    "content": ""
  },
  {
    "path": "app/templates/consoles_template.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>{{page_config['appName'] | e}} - Console</title>\n    {% block favicon %}\n    <link\n      rel=\"icon\"\n      type=\"image/x-icon\"\n      href=\"{{ page_config['fullStaticUrl'] | e }}/favicons/favicon-console.ico\"\n      class=\"favicon\"\n    />\n    {% endblock %} {% if custom_css %}\n    <link\n      rel=\"stylesheet\"\n      type=\"text/css\"\n      href=\"{{ base_url | escape }}custom/custom.css\"\n    />\n    {% endif %}\n  </head>\n  <body class=\"jp-ThemedContainer\">\n    {# Copy so we do not modify the page_config with updates. #} {% set\n    page_config_full = page_config.copy() %} {# Set a dummy variable - we just\n    want the side effect of the update. #} {% set _ =\n    page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value\n    to say that we are on the tree page #} {% set _ =\n    page_config_full.update(notebookPage='consoles') %}\n\n    <script id=\"jupyter-config-data\" type=\"application/json\">\n      {{ page_config_full | tojson }}\n    </script>\n\n    <script type=\"text/javascript\">\n      /* Remove token from URL. */\n      (function () {\n        var parsedUrl = new URL(window.location.href);\n        if (parsedUrl.searchParams.get('token')) {\n          parsedUrl.searchParams.delete('token');\n          window.history.replaceState({}, '', parsedUrl.href);\n        }\n      })();\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "app/templates/edit_template.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>{{page_config['appName'] | e}} - Edit</title>\n    {% block favicon %}\n    <link\n      rel=\"icon\"\n      type=\"image/x-icon\"\n      href=\"{{ base_url | escape }}static/favicons/favicon-file.ico\"\n      class=\"favicon\"\n    />\n    {% endblock %}\n  </head>\n  <body class=\"jp-ThemedContainer\" data-notebook=\"edit\">\n    {# Copy so we do not modify the page_config with updates. #} {% set\n    page_config_full = page_config.copy() %} {# Set a dummy variable - we just\n    want the side effect of the update. #} {% set _ =\n    page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value\n    to say that we are on the tree page #} {% set _ =\n    page_config_full.update(notebookPage='edit') %}\n\n    <script id=\"jupyter-config-data\" type=\"application/json\">\n      {{ page_config_full | tojson }}\n    </script>\n\n    <script type=\"text/javascript\">\n      /* Remove token from URL. */\n      (function () {\n        var parsedUrl = new URL(window.location.href);\n        if (parsedUrl.searchParams.get('token')) {\n          parsedUrl.searchParams.delete('token');\n          window.history.replaceState({}, '', parsedUrl.href);\n        }\n      })();\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "app/templates/error_template.html",
    "content": "<!DOCTYPE html>\n<!--\nCopyright (c) Jupyter Development Team.\nDistributed under the terms of the Modified BSD License.\n-->\n<html>\n\n<head>\n  <meta charset=\"utf-8\">\n\n  <title>{% block title %}{{page_title | e}}{% endblock %}</title>\n\n  {% block favicon %}<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/static/favicons/favicon.ico\">{% endblock %}\n\n</head>\n\n<body class=\"jp-ThemedContainer\">\n\n{% block stylesheet %}\n<style type=\"text/css\">\n/* disable initial hide */\ndiv#header, div#site {\n    display: block;\n}\n</style>\n{% endblock %}\n{% block site %}\n\n<div class=\"error\">\n    {% block h1_error %}\n    <h1>{{status_code | e}} : {{status_message | e}}</h1>\n    {% endblock h1_error %}\n    {% block error_detail %}\n    {% if message %}\n    <p>The error was:</p>\n    <div class=\"traceback-wrapper\">\n    <pre class=\"traceback\">{{message | e}}</pre>\n    </div>\n    {% endif %}\n    {% endblock %}\n</header>\n\n{% endblock %}\n\n{% block script %}\n<script type='text/javascript'>\nwindow.onload = function () {\n  var tb = document.getElementsByClassName('traceback')[0];\n  tb.scrollTop = tb.scrollHeight;\n  {% if message %}\n  console.error(\"{{message | e}}\")\n  {% endif %}\n};\n</script>\n{% endblock script %}\n\n</body>\n\n</html>\n"
  },
  {
    "path": "app/templates/notebooks_template.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>{{page_config['appName'] | e}} - Notebook</title>\n    {% block favicon %}\n    <link\n      rel=\"icon\"\n      type=\"image/x-icon\"\n      href=\"{{ base_url | escape }}static/favicons/favicon-notebook.ico\"\n      class=\"favicon\"\n    />\n    {% endblock %} {% if custom_css %}\n    <link\n      rel=\"stylesheet\"\n      type=\"text/css\"\n      href=\"{{ base_url | escape }}custom/custom.css\"\n    />\n    {% endif %}\n  </head>\n  <body class=\"jp-ThemedContainer\" data-notebook=\"notebooks\">\n    {# Copy so we do not modify the page_config with updates. #} {% set\n    page_config_full = page_config.copy() %} {# Set a dummy variable - we just\n    want the side effect of the update. #} {% set _ =\n    page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value\n    to say that we are on the tree page #} {% set _ =\n    page_config_full.update(notebookPage='notebooks') %}\n\n    <script id=\"jupyter-config-data\" type=\"application/json\">\n      {{ page_config_full | tojson }}\n    </script>\n\n    <script type=\"text/javascript\">\n      /* Remove token from URL. */\n      (function () {\n        var parsedUrl = new URL(window.location.href);\n        if (parsedUrl.searchParams.get('token')) {\n          parsedUrl.searchParams.delete('token');\n          window.history.replaceState({}, '', parsedUrl.href);\n        }\n      })();\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "app/templates/terminals_template.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>{{page_config['appName'] | e}} - Terminal</title>\n    {% block favicon %}\n    <link\n      rel=\"icon\"\n      type=\"image/x-icon\"\n      href=\"{{ base_url | escape }}static/favicons/favicon-terminal.ico\"\n      class=\"favicon\"\n    />\n    {% endblock %} {% if custom_css %}\n    <link\n      rel=\"stylesheet\"\n      type=\"text/css\"\n      href=\"{{ base_url | escape }}custom/custom.css\"\n    />\n    {% endif %}\n  </head>\n  <body class=\"jp-ThemedContainer\">\n    {# Copy so we do not modify the page_config with updates. #} {% set\n    page_config_full = page_config.copy() %} {# Set a dummy variable - we just\n    want the side effect of the update. #} {% set _ =\n    page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value\n    to say that we are on the tree page #} {% set _ =\n    page_config_full.update(notebookPage='terminals') %}\n\n    <script id=\"jupyter-config-data\" type=\"application/json\">\n      {{ page_config_full | tojson }}\n    </script>\n\n    <script type=\"text/javascript\">\n      /* Remove token from URL. */\n      (function () {\n        var parsedUrl = new URL(window.location.href);\n        if (parsedUrl.searchParams.get('token')) {\n          parsedUrl.searchParams.delete('token');\n          window.history.replaceState({}, '', parsedUrl.href);\n        }\n      })();\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "app/templates/tree_template.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>Home</title>\n    {% block favicon %}\n    <link\n      rel=\"icon\"\n      type=\"image/x-icon\"\n      href=\"{{ base_url | escape }}static/favicons/favicon.ico\"\n      class=\"favicon\"\n    />\n    {% endblock %} {% if custom_css %}\n    <link\n      rel=\"stylesheet\"\n      type=\"text/css\"\n      href=\"{{ base_url | escape }}custom/custom.css\"\n    />\n    {% endif %}\n  </head>\n  <body class=\"jp-ThemedContainer\">\n    {# Copy so we do not modify the page_config with updates. #} {% set\n    page_config_full = page_config.copy() %} {# Set a dummy variable - we just\n    want the side effect of the update. #} {% set _ =\n    page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %} {# Sentinel value\n    to say that we are on the tree page #} {% set _ =\n    page_config_full.update(notebookPage='tree') %}\n\n    <script id=\"jupyter-config-data\" type=\"application/json\">\n      {{ page_config_full | tojson }}\n    </script>\n\n    <script type=\"text/javascript\">\n      /* Remove token from URL. */\n      (function () {\n        var parsedUrl = new URL(window.location.href);\n        if (parsedUrl.searchParams.get('token')) {\n          parsedUrl.searchParams.delete('token');\n          window.history.replaceState({}, '', parsedUrl.href);\n        }\n      })();\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "binder/environment.yml",
    "content": "name: notebook\nchannels:\n  - conda-forge\ndependencies:\n  - ipywidgets=8\n  - jupyterlab=4\n  - jupyterlab-language-pack-fr-FR\n  - matplotlib\n  - numpy\n  - nodejs=20\n  - python >=3.10,<3.11\n  - xeus-python\n"
  },
  {
    "path": "binder/example.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Welcome to Jupyter Notebook v7! 👋\\n\",\n    \"\\n\",\n    \"Jupyter Notebook v7 is built using the same components as JupyterLab, and reuses a lot of the work from the JupyterLab community by leveraging the new prebuilt (federated) extension system.\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"212ecd19-156e-48dd-99c7-e2ee7457de6f.png\": {\n     \"image/png\": \"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\"\n    },\n    \"2d33971b-509e-433b-809e-2f0861a13105.png\": {\n     \"image/png\": \"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\"\n    },\n    \"5aa6b072-c4d7-47de-9e75-0a107a37e2f2.png\": {\n     \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABP8AAAFkCAIAAADQZQkrAAAgAElEQVR4Aezdb3ATZ4Lv+7zYF3lxqtiqPVWZqnNrsr612Wiq2OhusSN22UtXecuqpYImtUHDpC4q5pQ01JYGz5TOEDw6VDhKzhJPCPHN2fHVgSE2JHYAj53AyMMyhiQIEseQAGISYzBgD0Y2drD8DxkLGgunb3W31JZaki2EDfrz7XLh7lY/3U9/nqaKH8/Tj56QWBBAAAEEEEAAAQQQQAABBBAodoEniv0GuT8EEEAAAQQQQAABBBBAAAEEJNIvDwECCCCAAAIIIIAAAggggEDxC5B+i7+NuUMEEEAAAQQQQAABBBBAAAHSL88AAggggAACCCCAAAIIIIBA8QuUaPodHBz8zW92Nze33Llzp/gbmTtEAAEEEEAAAQQQQAABBEpeoETT73vvNfzyl+5f/tLd3t5e8s8AAAgggAACCCCAAAIIIIBA8QsUSfq9ceNGaltND12NnG6ZOrFn6sSeyOmW6aGr2jGtrb9X029v75+0nawggAACCCCAAAIIIIAAAggUq0AxpN9Dhw65/tt/O3nypNpIM3cmp07sGXn7h8Oef9T9jLz9w6kTe2buTEqSdPbsuUKMvpFIpFifRe4LAQQQQAABBBBAAAEEEFg8gWJIv/v379fS771r50O/WqULvbrN0K9WiZc+XTzTRTpzMBh89dVXt2/fvkjn57QIIIAAAggggAACCCCAQBELFEP6lSRJHfl85/wRXdAdeds6vvdn43t/NvK2VffRnfNHCqtdu7u77XY76bewWo3aIoAAAggggAACCCCAQJ4IFEn6lSRJvPSpmm8nDvz3O+eP3B8fSiW+Pz505/yRiQP/XT2ysHqASb+pDcoeBBBAAAEEEEAAAQQQQCBLgSJJvzN3JkO/WhU+9Hra0JtqcX98KHzo9dCv/ll9Bzj1AG3P9u3b33zzzWAwOMceSZKCweCbyqIdpu45cOCAJEnt7e1VVVV2ZamtrU08m8/ne/PNN30+n1ZQXUk8obr+6quv2u32yspK9ULqmbVSgUBAPcBut7/66quff/659pFWPbWIz+errKykDznRh3UEEEAAAQQQQAABBBAoeoEiSb9T/j05dOTeu3Z+yr9n7jZWI2t3d7d2WOoeSZLUjlm73a4dpnXV1tfX2+12j8ezfft2tazdbg8EAuqRgUBAzbRaQXXlwIEDdru9vr5eza7bt2/3eDx2u33jxo3blSUx/aqX2Lx5c319fW1t7caNG+12e+IBkUhEHTWtnpYR1DptNhFAAAEEEEAAAQQQQKDoBYok/WbZ5ZvanPMWTM26qXvmSL+VlZUbN27UwnMkEqmtrVXjrjZ78+bNm+12u+6bh9WdWkjWLpHaZ9ve3q6mWe2EIyMjavGRkRHtlu12u9r/7PP5tCO1T1lBAAEEEEAAAQQQQAABBIpboEjS7+I1UmrWTd2jRdPUvl+73X7s2LHE6kUiEbVvVou7Pp/PbrfX1tZqhwWDQbvdvnnzZm2PdonU9JsadCVJOnbsmK77V6222pmceFrWEUAAAQQQQAABBBBAAIFSECD9ztPKqVk3dY8WTdOm39SOVnX4sRZ3R0ZG1HNqR6oHJA5d1i6hS79qTtbtTHuweonEV47nuXM+RgABBBBAAAEEEEAAAQSKSID0O09jpmbd1D1a2kybflMvoI1V1j5Sh0NrvcRpu3O1F4m1UonXVWul+zMxFasfJZZlHQEEEEAAAQQQQAABBBAoHQHS7zxtnZp1U/ckplDtdKnzYGkfqTNdJUZTdc+rr76qznGlzpKlHa+uzJF+N2/e7Eu3aIOrJUki/eo82UQAAQQQQAABBBBAAIGSEiD9ztPcqVlX7ZjVJrJSy6dm3dQ92pVSX/SVJEnr71WHPScG18RLJGZmLXXrdmoXSlwh/SZqsI4AAggggAACCCCAAAKlJkD6nafFU9Ov+sVFunSqDmbeuHGjdjot/aa+aqt+d5E2zlktokbiY8eOqZ9q7wDrTqgLuupXGdnt9sTpnbUiiSuk30QN1hFAAAEEEEAAAQQQQKDUBEi/87R4avpV+2arqqq0gBoMBisrK3VfoqulX3U8s3YZLSdrxdWP1Lmv1C8lSjszs3rCqqoq7VTqivplv2+++abuhLrDSL86EDYRQAABBBBAAAEEEECgpASKJP3eOX8kt2abt2Bq+tWmaK6qqvL5fAcOHKisrFQjaGLQ1dLvxo0b1SN9Pt+bb76pnlDXdaxWXp37ym6364ZVq59q3bxvvvmmz+fTvgo4Eomo3cWVlZXay7/19fWJleG939weD0ohgAACCCCAAAIIIIBA0QgUT/oNH6qeuTOZfcPM3JkMH6rOIf1KktTe3q5+Z68aZdWvJtJ1rmrpNxgMqulUPWDz5s1acNXVVv2SXt3X/CYek3hdn8+nfRSJRNT4rV5C/bO2tjaxN1hXPa0sKwgggAACCCCAAAIIIIBAKQgUSfqVJGl8789Cv1o1dWLPvBl45s7k1Ik9oV+tGt/7s3nbWA2Nad+q7VaWxISZeDYt/ao7g8Fgd3d36jvAiUXSvlGceIAkSZFIRL2ubr+6qX6Utus47fHsRAABBBBAAAEEEEAAAQRKRKB40u/MncnQr/552POPw55/HN/7s8jplnt95+/1nZ+5MzlzZ1Jdj5xuGd/7M/WY0K/+ed6cHAwGc+4y1aXfeZ8n9X3gOTp+5z0DByCAAAIIIIAAAggggAACCGQSKJ70K0nS9NDVsZ3/VQ23c/85tvO/Tg9dzYSi7o9EIuqLuGnnoJq7rPZdRHa7fd4jJUlSv+830xu/2ZyBYxBAAAEEEEAAAQQQQAABBOYQKKr0K0mS8jbv63NH3/Ch1+ft9a2trVWncd64cWOmsc1zsD5Q+tVe2U07FdbcV+FTBBBAAAEEEEAAAQQQQACBbASKJP2Kotj5dWfn152iKEqSdH98KHzo9ZG3rYkxeORta/jQ6/fHh7Jx8Xg8GzdurK+vzy36SpIUDAa3K8u8l9u8efPGjRuJvvNCcQACCCCAAAIIIIAAAgggkLNAkaTfo21Hf7PrN7/Z9Zvft/5eZ3Hv2vl7187rdubVZjAYzDlj59WNUBkEEEAAAQQQQAABBBBAIG8FiiT9qtFX/TNvrakYAggggAACCCCAAAIIIIDA4xIokvTb2tqqRt8PWj54XJRcFwEEEEAAAQQQQAABBBBAIG8FiiT9iqJ4VlnU937zlpuKIYAAAggggAACCCCAAAIIPBaBIkm/j8WOiyKAAAIIIIAAAggggAACCBSKAOm3UFqKeiKAAAIIIIAAAggggAACCOQuQPrN3Y6SCCCAAAIIIIAAAggggAAChSJA+i2UlqKeCCCAAAIIIIAAAggggAACuQs88S0LAggggAACCCCAAAIIIIAAAsUu8MQMCwIIIIAAAggggAACCCCAAALFLvDEURYEEEAAAQQQQAABBBBAAAEEil2A935zHzVOSQQQQAABBBBAAAEEEEAAgUIRIP0WSktRTwQQQAABBBBAAAEEEEAAgdwFSL+521ESAQQQQAABBBBAAAEEEECgUARIv4XSUtQTAQQQQAABBBBAAAEEEEAgdwHSb+52lEQAAQQQQAABBBBAAAEEECgUAdJvobQU9UQAAQQQQAABBBBAAAEEEMhdgPSbux0lEUAAAQQQQAABBBBAAAEECkWA9FsoLUU9EUAAAQQQQAABBBBAAAEEchcg/eZuR0kEEEAAAQQQQAABBBBAAIFCESD9FkpLUU8EEEAAAQQQQAABBBBAAIHcBYol/UY7PCvKyp5J/DE4mkJSX53V6GwTpfAhp3F9Yyh3qHQl01y0zLC6piuafHC726TsTKhDv7+lI+fK9Oy0Gtc19iddROzYKpg2tQ0sxm0mXUi3IfoqDWXPGGLLUoNxpcX5Rlu/qDtskTblq5t3dMXPHmrbYhbsdV0LffWEhotf6gF/h07VudeZTSaTaZnRVGFz7Zy79WcfD/Frn++ifD8PX4cHrHLy4RdrLEudvqmEnb111qWO5kwPcTRQs0rwtCcczyoCCCCAAAIIIIAAAo9boJjSr8md5l/bYngsLC5SeJDTb9qLJrdqPP1KYjgs10WSBhptq6oDupCcXGiuraFGh9HivZxwSLjNZRI8p8TZSyR8uJiruvwphXvbPKsM1p09i3lR7dyJVw/7X7MI6+u6EhOaduDDrTxs8gw1O5eZ3Udi/ycQvtjsXGl0tGQKjkmPR8dWwdESlquvPTwPdy85lib95ghHMQQQQAABBBBAAIE8Eij29Jum7zfc9b7bWiEIFWbzGlfdeSVa5NYic6TfkL9mvVkot1jXuep2upL6fqfaPBVGg8EorHY29+V2YTnsmt8IaIVDLU6jvns55TajgepV5uozSqGwz7nUYHtPDWA93hcEd3tuHaaJ+TNWncA2wehqEyUp1OSY7W8fa3YYla7CgUabyVXX5HFusFkrBMum5p6c/xdA0q4e7thhFdZ5A7PRN+X2JUkeCGByeXc6zCscjUNSxxaT9Y1G7yaHY51FqLDVtKtPQpqCD5t+v64xL3O1zdZNEof6Q+qm2ON7zWYuF8wVZovTK/cIJzwe/++vbKalZcYVZssbHVodxFan0e5t3uFyrLeay82O3QGl5cSu912WlYJ5tdWxo9m73ug8FJYkUX3UzfLTbnU3PUSn+JzpN3zK61qj/IVaZfO09Mj10fp+o4HqCrN7p9dlt9leMJvXV/szp37teWYFAQQQQAABBBBAAIHFECi59Cue8Agrnc198j/Rw5+4zSvd/oRY8mDEGdOv6N8iCJva5H/niz2NG0yGVfJwaC3ASO0eoeIh+n4lSWz3CLM1729cb7S9Jw+F1i6R7jbl0dHW3XKvrHjCbVlrs7h8cuALNTtWJGWzB0HQ8mesULjX564w2t6XK5M+/Q412gxGx3tKRprq8JSb3Cce5IJJx6pX7wjU2oS1NYGE/8dId/uSNNRoW2qy7Ywd2LHVZKjw+MfkM/a/ZzOuq+uXZdI8Hppq0sWz3xADNS8YTes8dYc6uoaS/peha4fFFOuvDgd2WExOn/zMzD4eocb1RrXvV6uDeMRpWGqtOa+c52KNZZlTbkX5f3ms3q9FSRL7W1zCUoOzVZTGmh3LbHUDSkUHfNWV3o6cH/U50m/I5zSZ3UeVUDvQ7FxpqTmflH5rKgwmZ3NI/j+OsL9KELb4kwiyZ+RIBBBAAAEEEEAAAQQeTqCY0m9Z0vKMSX7tMKXvt2OrSXitI4YW7apZ9RDpS33vN/7Sq/LbaNvTr3R8GV1HY//Il3PLQqdfSam564gS+C575dikpDgtI6W9TfGoy+RsDktS4A2Lq8XnXu3piEriEZdpg7wzp0XOn2UGo3GZ8rO0zLDS6t4de6k1Y/o12hqH1Kv1N66Lpbucr24sN5vLBdMqd2KnYtrbV9KvtS7e397xmjD7JLR7TMr/R6QtqKnmVEml0FSP/71q13qLYDQYy22unX55GLTciEbXkXgYHKizqVF2nvTrMr7gjXWYT/mcRvmO5Bqu8caGm0c7qlcq6XfK714pON72BfpybV7thi/WWAwGo8lkWhH/MRkNBrkzP9zqNK6O10cS/VtM8pvYCX2/NRVGOYori3jUpf5d0E7MCgIIIIAAAggggAACj0ygmNJvuldw9elXTmuGZYJQHvsxmUyu1lyzQaa+X3m/4DkVb8QTKbNezcab+DEP/rt/t9Vol2cdCrxhFqpi/WnxnJbhNseaHeVu/1SPd62tcSDU7LTWXBQ7XhPUfuMHr4Lci5w471SoxWlaVa11MGZOvw6l01nuHtb6NnO+usnZ3C+G/VvNpnXafFcZbn+o0WZ0aEG/4zVhdvR4rEXSF4yr5lRHXaFouP9Us3u1UXitQ5SfE4NxReLTaGvsm7fv12VcK3dTy4vYJqffXqXvWnkYlL39dWtjgVPsbfNudVrLjcYKm6epK9cHXZLkvl9HY19odjkj72kOyZc2LDVpf6GEFSZhqz8p/a5K+IvZ7jGtlP/PhQUBBBBAAAEEEEAAgUcvUGrpV+rYmpB5HtI7Y/oNVFck9P22OBZ85LNc8ZAyrvVyh6c8/jZvwsjnDLfZX7feUvNJo2ONPBK7Z6fVtsdfs8bq7c0ZIin9StGeurVGS23s/dJw4nu/A0ryDCnDj40LmX5jcz6LPXXrTbHR5lKGVlbSbzx4S+nSb/qCD5l+w5f9bWeS3nYNNTkMa+v6o101q03uT+J9v1ojzP7nyOz/Dmh1EI+kSb/hFsdsJI4GqsuVvl/thJIUOuO1mSw1FxN2PdBq5pHP8nvIa+r0s5xl6vs94lJfUH+gi3MwAggggAACCCCAAAILIlBy6Vd+Y7bc1aaMvBUHfNWbvB0594hlSr+S6N8UT2JTXXXrjfr0e8ojrHA/9OuP4bZNgnWDQ9CGvCak30y32VNrta6zmbcqY7/PVJvX2aypX9H0AE9WcvqVJPFMtXmZrU6J0+InblNFdYcc7sSePTaj+gU5SRF0Nt09wDVnD02+esjvrjBaa+VZoNLfftKl06fftAW15Dl75QdZC7W6TCabtz0257M44K9ZazRvk+vZ9bbFtKFReQdaCp3wut9Q3hWffTxkH3ksfWLLpku/0mWvxWir65Wt+1tcZqOSfr/22uw1scd7rM210lLz9YPUO/HYzOlXCvmcKyzV6pxhUz3Nr7kbvxaT+n6V93775f7ekK/SJGxVnojEk7OOAAIIIIAAAggggMAjESi59CtJ8Ul9ywVBm6I2N2s5/SZ+w7CyvtTWOCBJA23V6wTTCrN5ratuj1vQvfcb9ntWG40rrd7zuV04Vko85RGeMdjen+1XTMhpGW7zTLXwjDH2wvBUm2tZ2ey7r7nUJTl/ymcIt1UJpg3KF8GKPY0ui3m1zeF0VTd5ncuU132TIuiCpl9JEi96bcsEV2t/+lZOunT69Ju2YIJqLkby3MuHqp1rBJNRfjvaVGF1vR3/SuT4nM9CuWBe62pUZyBPeDx63nOYjCbzJt+f4t/knLbvV5LCAXkua8H8gs21s7kmNvI55H/baVEH+VdYXbsT5wV7wBuZI/1KkjLns1kZ/GxxvNEmB93Evt9Vgmun17XOYi43me01ia9nP2AlOBwBBBBAAAEEEEAAgYcSKJb0+1AIFEagiASiPd4XZgfeP+Yb02LwY64Hl0cAAQQQQAABBBBAQCL98hAgUPgC4TbXCrPnhDyIP3ym2rLM0RybVftx3xrp93G3ANdHAAEEEEAAAQQQ0ARIvxoFKwgUsED/kWpbhcm0Uh7PX30kNif0478f0u/jbwNqgAACCCCAAAIIIBATIP3yKCCAAAIIIIAAAggggAACCBS/AOm3+NuYO0QAAQQQQAABBBBAAAEEECD98gwggAACCCCAAAIIIIAAAggUvwDpt/jbmDtEAAEEEEAAAQQQQAABBBAg/fIMIIAAAggggAACCCCAAAIIFL/AE8dZEEAAAQQQQAABBBBAAAEEECh2gSd2siCAAAIIIIAAAggggAACCCBQ7AJPXGBBAAEEEEAAAQQQQAABBBBAoNgFnriZx8s3LAgggAACCCCAAAIIIIAAAiUpsOBR9YnRPF5GWBBAAAEEEEAAAQQQQAABBEpSYMGj6hNjebws+N1yQgQQQAABBBBAAAEEEEAAgYIQWPCo+sR4ni0LfoecEAEEEEAAAQQQQAABBBBAoKAFFiS25lH6LejGoPIIIIAAAggggAACCCCAAAKLKvCQGTgv0u+iAnFyBBBAAAEEEEAAAQQQQACBohHIOQM//vSbTRsUxKh0KokAAggggAACCCCAAAIIIPCQAtkkxNwC8GNOv3PfWFq1kpztjJtGAAEEEEAAAQQQQAABBIpWIG30mzst5hCA8zH9Jt55avOGWBBAAAEEEEAAAQQQQAABBIpIIDX3JabCtDG4wNJv2nvQblK7f12bDrMggAACCCCAAAIIIIAAAggUkYAu9GlhUIuHacPjgwbgx9n3m3oD2r2pd6sSaG16M2X5hgUBBBBAAAEEEEAAAQQQQKAABVLi3U0t+qlJUE2FWkhMzY8Fk35Tq67eVWLuvXnz5jfffDOkLIPKcoMFAQQQQAABBBBAAAEEEECg6ATUxKemv2+++ebmzZupGTg1RT5QAH5sfb+6emuBfmRkRE38au5NDL0DytLPggACCCCAAAIIIIAAAgggUEQCatZTE70Wg7/55hs1G46MjGiBURckCzj9pkbfgYGBYDB4/fr1vr6+a8ryp4SllwUBBBBAAAEEEEAAAQQQQKAABRKC3Z/UrNfX13f9+vVgMDgwMDA4ODg0NJQagIsk/Y6MjIRCoeHhYbXXd2BgQCrk5YH+E4KDEUAAAQQQQAABBBBAAAEEEgUGBga0ABwKhdQe4EJKv7q6qptqL7Yu+l6/fr2Qw6+U2GysI4AAAggggAACCCCAAAIIPJDA9evXdQFYTY5pQ2U2Z37U7/2mrejo6Ghix++NGzeuX7/e09ND+s2mCTkGAQQQQAABBBBAAAEEECg+gZ6enuvXr9+4cUMd/5yp+1fNmNncfh6lX3XM8+DgYH9/f29v76VLl0i/2TQhxyCAAAIIIIAAAggggAACxSdw6dKl3t7e/v7+wcFBNQCnHfxcSOlXN+x5cHDw+vXrV65c6ezsJP0W3xPMHSGAAAIIIIAAAggggAAC2Qh0dnZeuXLl+vXrWvoNhUKZBj9nc8LH3/erS78DAwN9fX2XLl06f/58Eaffzz777N13331dWd59993PPvssm9biGAQQQAABBBBAAAEEEECgRATOnz9/6dKlvr6+gYEBbfBz8aTfwcHBgYEBddjz2bNnizL9fvbZZy+//LI9ZXn55ZfJwCXy15jbRAABBBBAAAEEEEAAgXkFzp49qw5+Vr8AaXh4uKj6frWXfi9evPjFF1+kTb/d3d2XE5a0x+TDzrRteezYsZTYm7Tj2LFjaQuyEwEEEEAAAQQQQAABBBAoKYEvvvji4sWL2qu/RZJ+R0ZGhoeHb968qabfnp6erq6utOnX5/MlhUW7vb6+PtusGz1e+X888cSfJf48+fw730g9Nf/w52sO3pUmGtf8udn7Tbanm+e41Ofys88+01U+7WamHuA/bhee/LMnZ5e/ePr71leau1Kvk8ue5h8/9VzVyVxKUgYBBBBAAAEEEEAAAQQQWASBL774oqurq6enR5346ubNm8PDw5kmvsrm+nnx3m9i+g0Gg1evXr1w4ULa9Lt9+/a0iVG3MxAIpMmmcvr9zk8+Sv3k7sTIxF1p0dPvpk2bdPVMu/nyyy+nbTk5/a7c9kfts56Ttdanl1TUdmt7Hmalv6+v/2HKUxYBBBBAAAEEEEAAAQQQWEiBL7744sKFC1evXg0Gg4ODg6TftPnRXltbm5pxpUzpN03f78T5nT/5B0NZmeF73/v7dTWnJ+SzRa/t//k/fe+vyuSfv19X067sTHOZ2C5ds+s6fgcHBxMPGBwcTLyTtN2/+vQ7Pj5+4IdLvrvBFxrv/nfzkvIdsRjcU2teYpYz8Vc7hKd+uO3fN/xglfD9v376uZdqT4fGx0MnX/6bZzds37beYhb+9tmn/35Dw1dyRbS+X9+Pn/r+z3e88pLZvPK5p/9aePlgn/xx6I/vOL7/9H95+tm/FTbs2vbDv/j+tnOJ1WcdAQQQQAABBBBAAAEEEFhggRJKv6dPn06Nlln2/W7fvj21bPbp9+4fKsv+ck19z11JkiZ+/5Pv/eVPjtyW7v7hJ9/5v145L++TJv7wyrpfHJx7jLSu5ffu3ZuYb3Wfjo+PJ366d+/e1AP06bfn5A7L009ZG/rGM6Tfrh3Ck0vM208PjY+P9/s2/J9PrW+R0+8rf/Pk09Z3ukPj4+N97/zLU8/+Qh7wPJt+HU89+dcbmnvk6/9xu7BE6W3u3vWDJd/b4OsbHw91NzieffJJYYeSmVMryR4EEEAAAQQQQAABBBBAYEEETp8+Xcx9vzdu3FBHPnd2di5O+n0iafmz71R+JKW+93v8p98p+/nxWH6Onn9l6Xd+8gdJOvvK977zD5V7j18aURJwmnidtEvX3q+//npivtV9qku/r7/+euoB6nu/S/5iifyz5Mknljxr/tcdJ5Wu2fR9v107hCXCjtiLwX/csXKJ+f/rU9Lvkh++Kyfi8fHxk1XPPWVrTkq///r00//qi1394Ian/rryWGi82fbU0xvj03F1vPLcfyL9xoT4hQACCCCAAAIIIIAAAoskcPr06c7OTnXk840bN4pt5PPip9907/3qRz7f3b/2ySf/c1nZX8V+vvOd76w7II9zvvZRTeXaf/jef/7zsv97XY3/wUY+L0z61d77/WLb9//i+690xB6zzOnX/I4Sj8fHu3eUa+lX6QRWip6sem5JSvp99ufxoHtww9Ny+h1651+WPPc/Tscu1ldrXkL6XaS/4JwWAQQQQAABBBBAAAEEYgKk36xmvXrIkc/Hf1r2vapTST25iRvRifM715T9ZeXxaOJe/brumV3okc9Dx37+7JLyHeokWH2J7/1+tUNQ3/uV+34XJP2ON9uWzEbiL175Pn2/utZlEwEEEEAAAQQQQAABBBZagPT7KNLv3Y8qy/5q3cEBOdDe7dv/8vrXj09I195Z808/P/iNknjv+l/+3gOm34Wf9aqnYf13n/rBLnmuq6ED65/660qfPJx56HS1sOQ/KbNeLVz67a4RlvxN5bF++b3f5o3PLeG934X+i835EEAAAQQQQAABBBBAQCdA+n0U6VeS4nM+/1VZ2dJ/qtx7SZn/6lTN//MP3/tLZTj036155Q9zT3ol6VpufHw8y2882rRpU2pZdQ6qpG88Uie7+u56eYaqodM7rM89+zeC2fLDyn9/5Qd/obzuu3Dpd3zo5A7rc0/9l2ef+/sfvFy37QeMfE7bQuxEAAEEEEAAAQQQQACBhRMo9fTr8/kS547KtO7z+fQDkR/5dmqj67p/MxMIK/sAACAASURBVFU+7dcdpZ7tse3pVkZWK5NCP7Y6cGEEEEAAAQQQQAABBBAodoFST7+SJHVnsTzyqJvmgmkfxWPHjmUKver+Y8fiM06lLf+Ydg61Vj773R++I08fPXT6fwpL/vYV+auDWRBAAAEEEEAAAQQQQACBRRMg/abJmfm5K9Mz8Nlnn6UdAr1p06Y87vXt9m35wXPfferp7z797Mr1tR2xL0zKdI/sRwABBBBAAAEEEEAAAQQeUoD0m59RN02t5m7pzz77bO/eva8ry969e/M49859H3yKAAIIIIAAAggggAACCCyKAOk3Tc7Mz12L0v6cFAEEEEAAAQQQQAABBBAoDQHSb35G3TS1Ko0HkrtEAAEEEEAAAQQQQAABBBZFgPSbJmfm565FaX9OigACCCCAAAIIIIAAAgiUhgDpNz+jbppalcYDyV0igAACCCCAAAIIIIAAAosiQPpNkzPzc9eitD8nRQABBBBAAAEEEEAAAQRKQ4D0m59RN02tSuOB5C4RQAABBBBAAAEEEEAAgUURIP2myZn5uWtR2p+TIoAAAggggAACCCCAAAKlIUD6zc+oS60QQAABBBBAAAEEEEAAAQQWUoD0u5CanAsBBBBAAAEEEEAAAQQQQCA/BUi/+dku1AoBBBBAAAEEEEAAAQQQQGAhBUi/C6nJuRBAAAEEEEAAAQQQQAABBPJTgPSbn+1CrRBAAAEEEEAAAQQQQAABBBZSgPS7kJqcCwEEEEAAAQQQQAABBBBAID8FSL/52S7UCgEEEEAAAQQQQAABBBBAYCEFSL8Lqcm5EEAAAQQQQAABBBBAAAEE8lOA9Ktvl497xR81jS/fNVo0Pz9qGv+4V9TfJ9sIIIAAAggggAACCCCAQCkJkH71rV1k0VfN8D9qGtffJ9sIIIAAAggggAACCCCAQCkJkH71rV00Xb66G9HfJ9sIIIAAAggggAACCCCAQCkJkH71ra0LjUWzqb9PthFAAAEEEEAAAQQQQACBUhIg/epbu2jiru5G9PfJNgIIIIAAAggggAACCCBQSgKkX31r60Jj0Wzq75NtBBBAAAEEEEAAAQQQQKCUBEi/+tYumriruxH9fbKNAAIIIIAAAggggAACCJSSAOlX39q60LiAmz9tvZX4s4BnzuZU+vt8wO16ZXnAQgtz+MjIyGVlGRkZ0c4YiUS0dVYQQAABBBBAAAEEEEAAgXkFSL96omySZA7H1J3Vp7X/uHw3h/PkXER/nw+yXV9fb1eW+vr6Byn3sMdGIpHa2lr10uqftbW1kUikvr6+u7v7Yc9OeQQQQAABBBBAAAEEECglAdKvvrVzjpdzFwwMTuuvlG77l22Tc58n50/TXS2rfVr0fcQBOBKJVFZWbt68ORAIqL2+gUBg8+bNajVIv1k1HgchgAACCCCAAAIIIIBAXID0G5eI/845Xs5dMMv0++m1e3OfJ+dP4/f3YL910fdRBuDa2trNmzfrRjhr9SH9PlhDcjQCCCCAAAIIIIAAAiUvQPrVPwI5x8u5C2ZKv+qbwFolAoPTc58n50+1S2S/0t7evl1Z1NCr/qnuaW9vz/48ORw5MjJit9sDgUBiWS362u120m+iDOsIIIAAAggggAACCCAwrwDpV0+Uc7ycu2Ahpl+NJjH9ajsXdaW7u9tut+s6fhf1ipwcAQQQQAABBBBAAAEEiluA9Ktv37lDbM6fpqbfn7beSjzbT1tvSZKUV32/Gg3pV6NgBQEEEEAAAQQQQAABBApUgPSrb7jERLqA66np98pINDA4vb5lYn3LRGBw+spIlPSrNUbakc/qp+3t7XQLa1CsIIAAAggggAACCCCAQJYCpF891AIm3sRTpaZf9cL5/N6vRqO+66v+qe1c7JXa2tqqqird4OdIJFJVVfWIv3hpse+U8yOAAAIIIIAAAggggMAjECD96pETI+sCrmdKv1dGomqvr1qP/Bz5rDd6JNuRSGTjxo1VVVXnz58fGRmJRCKff/55VVWVx+PRReJHUh0uggACCCCAAAIIIIAAAoUtQPrVt98CJt7EU9WdjeivlG677mwksdQCrqe72jz7tm/fnvjGb+L69u3b5ym8EB9HIpHa2trE69bX1xN9F4KWcyCAAAIIIIAAAgggUHICpF99ky9g4NSdSh3kPPefuiILuKm/zyy2g8Fgd4YlGAxmcYKFOWRkZEStBbl3YUA5CwIIIIAAAggggAACJSlA+tU3+wIGzrw6lf4+2UYAAQQQQAABBBBAAAEESkmA9Ktv7byKrAtYGf19so0AAggggAACCCCAAAIIlJIA6Vff2gsYOPPqVPr7ZBsBBBBAAAEEEEAAAQQQKCUB0q++tX/UNJ5XqXVBKvOjpnH9fbKNAAIIIIAAAggggAACCJSSAOlX39of94pFFoB/1DT+ca+ov0+2EUAAAQQQQAABBBBAAIFSEiD9llJrc68IIIAAAggggAACCCCAQKkKkH5LteW5bwQQQAABBBBAAAEEEECglARIv6XU2twrAggggAACCCCAAAIIIFCqAqTfUm157hsBBBBAAAEEEEAAAQQQKCUB0m8ptTb3igACCCCAAAIIIIAAAgiUqgDpt1RbnvtGAAEEEEAAAQQQQAABBEpJgPRbSq3NvSKAAAIIIIAAAggggAACpSpA+i3Vlue+EUAAAQQQQAABBBBAAIFSEiD9llJrc68IIIAAAggggAACCCCAQKkKkH5LteW5bwQQQAABBBBAAAEEEECglARIv6XU2twrAggggAACCCCAAAIIIFCqAqTfUm157hsBBBBAAAEEEEAAAQQQKCUB0m8ptTb3igACCCCAAAIIIIAAAgiUqgDpV9/yx1kQQAABBBBAAAEEEEAAAQQKSkCf69Jtk371KsePH9fvYhsBBBBAAAEEEEAAAQQQQCBfBbIMcaRffQNmCacvxjYCCCCAAAIIIIAAAggggMDjEMgyxJF+9Y2TJZy+GNsIIIAAAggggAACCCCAAAKPQyDLEEf61TdOlnD6YmwjgAACCCCAAAIIIIAAAgg8DoEsQxzpV984WcLpi7GNAAIIIIAAAggggAACCCDwOASyDHGkX33jZAmnL8Y2AggggAACCCCAAAIIIIDA4xDIMsSRfvWNkyWcvhjbCCCAAAIIIIAAAggggAACDy0QiUQuX778+eefX758OcuTZRniSL96zyzh9MXYRgABBBBAAAEEEEAAAQQQeDiBY8eOVVZW2uNLVVVVMBic95RZhjjSr14ySzh9MUka/rKl4WRfVJKk4Ml9LacGZ1IPebA94sCXh3/b0HDwy+HIlY8afV+NS9Ld+MqDnSnh6AWqW8IZWUUAAQQQQAABBBBAAAEEFkDg2LFjdrt9+/bt3d3dwWCwvb1948aNlZWV8wbgLEMc6VffSPPAzYx+5durX/ad7JuRouHR4QlRPt1swhSHr/aNyoE4h0XsPd7Q9GlfZDoqzUQmbo5ORkm/OTBSBAEEEEAAAQQQQAABBApAIBKJVFZWbt++PbGuIyMjGzdurK2tTdyZuj5PiIsXIP3GJeK/54GT02+D79zgZHhy9mdSTEq4WvoVe483He9VEnH89Nn/jlw62nC4czKpAH2/SRxsIIAAAggggAACCCCAQJEIdHd32+327u5u3f0cOHDAbrfrduo25wlx8aNJv3GJ+O954JT0e7grOZQqZfUjn8W+k/sb9u7d29C476PLEUmSxKGvTh5u2dfYsK/Fd/yP/RFlaPTwmYNN7ZcunTyYPFh68tLRfQ3v7t3b0LDvdxlGPk/2nzvua9rX0LC/5fCnF4bvqjcgDnfJF2loaNj34eGTXcP66C0n8/YrV0/JxzQ2+U5eGJ6WogPtLfuP98bOIEnTfSebmtoHkhL98LmDTe1X+s4dP+w72NTU0vZlv3xLkiRFBr/y++QLNjYdPPplX1jZKfYe33f4qz9dOHnE19LUdPD4heGJ/i+PH/Z92NT0+/Ze9ZgMIOpZ+RMBBBBAAAEEEEAAAQRKSqC9vT1tyvX5fGn3J+LME+Lih5J+4xLx3/PAZZ9+ZyRp9Jyv8aNY3+/kpY+afKeuyeOXo+G+9t/ta+uWI/TouYMNLYdPXR2N3E1Km5KU0PerdflqKzOjX/2+6fC5wUhUksTRK/6WppN9ctAdOXdwf9uFUXlVHLnwUYvv3Ej8xtTfwZP7Gpt8n/dOiEo1DjYcPDcqRYe//HDfR1djeTZ6/WRTy6nB5OrI9dzv+zKoHDNx4XDjwS+H5Yv0fdq076MLo3claXqy99OWfR9dkY+Y7j3euO/gp1cmZyTpbu/Jpoam359S4nLkykf7Wk4PynXJAJJcXbYQQAABBBBAAAEEEECgJASCwaDdbg8EArq7ra+v37hxo26nbnOeEBc/mvQbl4j/ngcu1/Q78fXhho+uaD2xk11tDW2XJtX06zs3mmaKrDnT780v5byrBdSRcwf3KUOsh0617D9+JU3PdPz2gif3qRdWdsi1+v1XE0o1YsFViva3N6nRNl5G/i2n38MXJtRdM8NfHmw4/ifl8tOiOB07MKoN+ZbTb9OpG+r+yQttDQfPyFlZPk/A1/Cx7JAJRD2MPxFAAAEEEEAAAQQQQKDUBDZv3vzqq69GIrFuOUmS1OHQ9fX1c1PME+LihUm/cYn473ng5PS7d++7ST8Nh+UAqR/5nNz329++Tz9X1odfDs8oqVJJg/Hra7/nSr9iz3F5UHXiolZiZvLKpwflIc0ftX95sU/uktUtwZP7mtr742E7+qfjDb9Vpqce/8q3T4nj0/3tvz2o7zFW06/2CvPM6LnfNRzvkbN8dPTKqY8PH2xpafmwpaVp3171bHL6lTuVlSXhRhJCbyYQXX3ZRAABBBBAAAEEEEAAgRIRCAaDGzdurKqq8vl8n3/+ufrGr91uP3/+/NwC84S4eGHSb1wi/nseOKXv13emf2J8YvZnUs6B86Tfz/fFvg8pfiH1t9ynqqXKpI8SQqM24Dm+IqffzF+qJE4M9nZ9efJIU8NvP7oSf8k2dm45/c5+G9Ns+pUmLxzZd7hrUn4HOF1fdFI9tfQbHTz1YYPvy355ALY82XX7vtn065sn/WYASTJgAwEEEEAAAQQQQAABBEpJYGRkpLa2Vv26340bN/p8vkAgYLfb5+7+nSfExQFJv3GJ+O954HIe+dx5uMH31ewI57sRNTEmpcp4HZTfc6Vf6eaXLY1tl6biBaKRiNrNOxMVtfmnZyYuHE6ZNVoe+ay+myuXlYcfKx3X8vRVlz/a1/bVpc9bDn8dG+AcP7v8O6meWvoNXzjcqI2Hlib+6Iv1JMt9v/Ok34kMIIkXZR0BBBBAAAEEEEAAAQQQqK+vnzsAzxPi4oKk37hE/Pc8cA+Ufse/8jX6zo2I0agkhS+17W/66OKoOCNFJ/u/PLzP90d5ZHBSqozXQfk9Z/qVZ71qOPhp78S0JE1P9H5+cN9R+S3iyYtt+3yn+sJyV2w03Nv+YdPJa9q7xspZ5Vmv9h3+sl+efWuq/9TvGtRqyJ/d7T2+f9++psMXdN3FSrmkemrpV57buen41UlJik4OnDt51Ne0T5k7Oov0mwlEuRp/IIAAAggggAACCCCAAAKzAnMH4HlCXPw0pN+4RPz3PHAPlH5nRi981NTQ2NTWKfemRuLfeNTQdPCjL/vk/Jlz+pXnTO6LfePRviaf/6t+tR94ZrLvzEe+3yrfeJTwvUrxm5Oi10/uO/jllcvtsW88+vTSaHzOKnkC55P7GpQUrR2vraRPv1J04vJJX5PyrUufXxmNDH7p27fvw1P9kfn7fjOBaFdkBQEEEEAAAQQQQAABBBDQBNTJn0dGdN9qI38+T4iLn4L0G5eI/84SLn54Mf2euHCk6Xj8e4+K6ca4FwQQQAABBBBAAAEEECgCgbTRl/Q7Mjw8fPPmzRs3bgSDwatXr3Z2dp4+fTqb9i7N9BsVI4NftzUd/FL3Nb/ZiHEMAggggAACCCCAAAIIIPAYBbIMcfT96tsoSzh9sYLell/fbdj3u+OXRtS5mwv6Zqg8AggggAACCCCAAAIIlJZAliGO9Kt/LLKE0xdjGwEEEEAAAQQQQAABBBBA4HEIZBniSL/6xskSTl+MbQQQQAABBBBAAAEEEEAAgcchkGWII/3qGydLOH0xthFAAAEEEEAAAQQQQAABBB6HQJYhjvSrb5ws4fTF2EYAAQQQQAABBBBAAAEEEHgcAlmGONKvvnGyhNMXYxsBBBBAAAEEEEAAAQQQQOBxCGQZ4ki/+sbJEk5fjG0EEEAAAQQQQAABBBBAAIHHIZBliCP96hvnOAsCCCCAAAIIIIAAAggggEBBCehzXbpt0m86FfYhgAACCCCAAAIIIIAAAggUlwDpt7jak7tBAAEEEEAAAQQQQAABBBBIJ0D6TafCPgQQQAABBBBAAAEEEEAAgeISIP0WV3tyNwgggAACCCCAAAIIIIAAAukESL/pVNiHAAIIIIAAAggggAACCCBQXAKk3+JqT+4GAQQQQAABBBBAAAEEEEAgnQDpN50K+xBAAAEEEEAAAQQQQAABBIpLgPRbXO3J3SCAAAIIIIAAAggggAACCKQTIP2mU2EfAggggAACCCCAAAIIIIBAcQmQfourPbkbBBBAAAEEEEAAAQQQQACBdAKk33Qq8X3d3d2XE5b4bn4jgAACCCCAAAIIIIAAAggUmADpN2OD+Xw+e/JSX1+f8eiUD7p2WGy7+1N2577Dv8Vkebtr7vILftG5L8enCCCAAAIIIIAAAggggEChCJB+M7bU9u3bk8Nv+q1AIJDuFD3eNRbvxXSf5Lovi/S78BfNtbKUQwABBBBAAAEEEEAAAQTyS4D0m7E9sky/tbW1aU4xUGdbVR2IJnzSV2c1ufyivEc84TYZLDVqNg41O0xOX1gKnahxvmAWKszmCqtrd0dYkqRooHqV2bO7xrZScB0RZ9PvWEf1asHxfo9ysoRLpF404UNWEUAAAQQQQAABBBBAAIFSFiD9Zmz9LNPv9u3bU08RanIIWzuS0mm0q2a1ufq8fGxgh8W6zmp7LyQn4SMuk70xNNTsMFmqT8mZVwq1uctN7qNhSS5iFJyNasyNpV+xq269YNsZSDq5UoM0F02tGXsQQAABBBBAAAEEEEAAgZIUIP1mbPaHSL9hX6XgOqrPpx3bzFb5TeD+unWOuiPVFpcvLEkdrwnW3f3hVqfxBW9PvK+4Y6tg2tohRbu8q43OQ0okliQ5/e5oa3aZLduUnmF9xdNfVH8U2wgggAACCCCAAAIIIIBASQqQfjM2e+7pd6rNtVIezKxbxE/cgtMXDjU71tR0Tfndqz0dYo/3BXkIdP97NuP6RrkvWFm63jYbXW2inH5N7hOxnf4tJuMyk3GpybanJ7Yr8VeGiyYewjoCCCCAAAIIIIAAAgggULICpN+MTZ9z+hXbPYK9WYuysxcI+5zl7rZWl3lrhySFmjdYaz5pdFTIrwfLfb+rvV2zfb8m4TW17zcp/Qqb2vov1tlWWGu+1ncsZ7zo7OVZQwABBBBAAAEEEEAAAQRKV4D0m7Htc06/gW1m256033UUarRbbOvMrla5X7hnp9W63mbeosyEFWp2au/9DrW5ygXPCVEZ+ZyUftVvPOpvcphWVetGP2e+aMYb5AMEEEAAAQQQQAABBBBAoHQESL8Z2zrH9CtPVWXxXk5/2p6dVoPB1jikfHqqWnjG6DoSGyEdOuF1vmA2rzKbV1nd7wXkvSkjn+Pf9xvyuQShqm22e3nOi6avCnsRQAABBBBAAAEEEEAAgVISIP1mbG2fz5f+G36T9/p8voyn4AMEEEAAAQQQQAABBBBAAIH8ECD9ztUO3Vksc5XnMwQQQAABBBBAAAEEEEAAgfwQIP3mRztQCwQQQAABBBBAAAEEEEAAgcUUIP0upi7nRgABBBBAAAEEEEAAAQQQyA8B0m9+tAO1QAABBBBAAAEEEEAAAQQQWEwB0u9i6nJuBBBAAAEEEEAAAQQQQACB/BAg/eZHO1ALBBBAAAEEEEAAAQQQQACBxRQg/S6mLudGAAEEEEAAAQQQQAABBBDIDwHSb360A7VAAAEEEEAAAQQQQAABBBBYTAHS72Lqcm4EEEAAAQQQQAABBBBAAIH8ECD95kc7UAsEEEAAAQQQQAABBBBAAIHFFCD9LqYu50YAAQQQQAABBBBAAAEEEMgPAdJvfrQDtUAAAQQQQAABBBBAAAEEEFhMgdJKv9dZEEAAAQQQQAABBBBAAAEESlKgtNLvYv4/AudGAAEEEEAAAQQQQAABBKTr16+jkJ8CpN/8bBdqhQACCCCAAAIIIIAAAgUpQPrN22Yj/eZt01AxBBBAAAEEEEAAAQQQKDwB0m/ethnpN2+bhoohgAACCCCAAAIIIIBA4QmQfvO2zUi/eds0VAwBBBBAAAEEEEAAAQQKT4D0m7dtRvrN26ahYggggAACCCCAAAIIIFB4AqTfvG0z0m/eNg0VQwABBBBAAAEEEEAAgcITIP3mbZuRflOapq/Oaigre0ZwfxKOfXbZazGUWd7uSjmUHQgggAACCCCAAAIIIIBAkkDepd+LNZalTt9UUiUfZKPf39IR0hW4WGN5pkzY2iEm7j9TbX4m+9zUX7fO6GwVpWigZpXgaZckSQzU2oRlJssbHeFDTuP6Rv1FE6+lrU/5nEZb44C2PdcK6TdFR02/ZWWG1TVdamOSflOQ2IEAAggggAACCCCAAAJpBYot/Q402lZVB6LJ93qxxrJCEFa622ZDtdix1SysNGXdaxhPv5IkjoXFqCRFe7wvGF1HlAwmhsPhpGSdfPmELdLvyMjI8PDwzZs3b9y4EQwGr1692tnZefr06QSkzKtK+hXWWE3PGG3v9cvHJabfcKBuk1VYZjAsNZnt1W3K/zH4t5jKDDZvq9dRYTQYBVttR097jbru2BmINdpQh7fSIhgNhmVm27a2ft3Tk7k6fIIAAggggAACCCCAAAKPRiCiLA95rUJJv6FPahyrBaFcEMqt7ia140/set9trRDMFYJQoeycavNUGA0Go7Da2dyXAHOxxlLh9mwQnIfiA2an2tzlDvcmczz9hgN7XPKpVpnNLzhqPlH7ccWu912WlYJ5tdWxra56bWLfb39zpdlkKDOuNFt3BGb7fsUe32s2c7lgrjBbnN5YH3S037fVKqw0W9Y4PO/VOOj7fcj0a9nhq1tvKFvhahtLTL+if4tQ9ozgagoEWt3mZ8qMlb6wJHVsNZU9YxQ21LR90uhcWVb2jMm8odr3SaOrvKxsqa1xSJKk/rp1hjKjteaTrq4jHovBYN3Zk/DssIoAAggggAACCCCAAAKPWSASibyqLJFI5GGqUhjpN9zmMgnuE3J2Fc9UW4xKbBlrdiyz1amjiAd81ZXejilJavcIFen6fiuq/a0uwd6s5tpwq1Nw+dpeE9T0G/7ELZS72uQoJIVPVVuWOZqHJKmvzrbM6r0o9w+G2z1mgyFp5HO0y7va5D6hFImPfO7aYTGtr+uSe5jDgR0Wk9MXkiQ5G6+q7lDq3lVrNRgY+fxwfb/mHV3i+Rqzocz8RkBM6PsVw+HQmNIHH+3wmMrKVtd0RaWO10xlz5g87XIrykm4zOg6Kq8HtslRufqM3MxWQ5lhgxyVJam/cZ1BLfgwf6koiwACCCCAAAIIIIAAAgslEAwGX331VbuyvPrqqw8TgAsj/UqSOCXGhqlG/W6Tufq8JE353SsFx9u+QF+8R1eaK/0Gwn53ubVO7hMONW+QJ07q2BZLvx1bTMJrHbHWiXbVrJa7eeXU+oI31g0Y7apZNV/6lY+Jj4WWJGmgzrbM6QtL/i0mYVsgdvKBOttS0u9Dp19JCrdtMpUttdYd9Vrjs171t1Y7VpmMSw0Gg6GsrKxslZZ+LTUXZf/AG+ayZ5RHR5K63raUPSN4TknSefn977JnDIalys8zZWVLXW2xZ22h/sJyHgQQQAABBBBAAAEEEMhFIBgMVlZWqtH34QNwgaTfUMdut2OtxbrWal1rNi2NRRixt8271WktNxorbJ6mLjkEZ+77DUTFwDazpbZLGmi0VXg6RCmefkVfpVHeH1v6G9cZbe+H+t+zJcxl1V+XNPJZklL7fqMdnhUG4wp1eLb8p8lka+xLPnmYWa8e+r1f8w6lqQYabcYy41prbO4yWbasTO1kF/1uU9bpN9b329jT19+v/gyECL/xvwz8RgABBBBAAAEEEEDgsQlEIpHa2trtKcuBAwdyq1NBpF/xqMtU7vIpI5MlOdrE0q92y6EzXptJ6eGbK/1K0sUay6pq306r+Q25MzaefuUhsbq+X9cRMdziSOj7DVRXZNH3u9rk/kSfnPxVxtm+3746K32/D/nebyz9SmLXDovSyavM3D3W7FhaVlbh9n0daNvhEJaVlZlczb1hZeTznH2/Uk/dWkPZMlv1kUCgvdG9zmLb5k8YTKA9Y6wggAACCCCAAAIIIIBAYQsURPoNNTkML3i75Ll4w117nGajMmT1a6/NXqO8TytJY22ulZaaryXplEdY4fbrEqg865X6MnBP3VpBWGnxKiNhtfQrqu/9Ku8Eh09Vm9UXdnu9VmPsvd/QUbd56XzpVxlOa9rQ2KNcPXTC636jLSRJoRaHcZVHqWe4Ywfv/S5U36/8MPjdK+Uxzsrb2+HATod5mcFgMjt3dnS1OIWlBuOGxt/J7/3OnX4lacBf47SYlhrKlposzhp/dl9IVdh/76k9AggggAACCCCAAAKlJ5CP6Vd+DVP7MZh3BKRwh3e92VRusa51VB/p8r9mNlU4G3tD/redFnkWaHnOZ9fugNxjF/Z7VhuNK63e8wltOZt+pdD7NuPaOuXLcmb7fuVJquQ5n83mCrN5jdN7Kjbnc2CP07LCJFRYHNsaa9Yb5Smjte/7TR35LE/JFZvzWSgXzGtdjeeVPkSxp7nKKpgE82qbu8nr1GbqSqhgApfpzQAAHHBJREFU2lW+7zctCzsRQAABBBBAAAEEEEAAgVwE8i795nITxVmG9Fuc7cpdIYAAAggggAACCCCAwGMRIP0+FvZsLkr6zUaJYxBAAAEEEEAAAQQQQACBrARIv1kxPY6DSL+PQ51rIoAAAggggAACCCCAQJEKkH7ztmFJv3nbNFQMAQQQQAABBBBAAAEECk+A9Ju3bUb6zdumoWIIIIAAAggggAACCCBQeAKk37xtM9Jv3jYNFUMAAQQQQAABBBBAAIHCEyD95m2bkX7ztmmoGAIIIIAAAggggAACCBSeAOk3b9ustNLvcRYEEEAAAQQQQAABBBBAAIGSFCit9Pt3/6tvWc3VZW9d4QcBBBBAAAEEEEAAAQQQQKBUBGqu/t3/6iut9Lv8fw+bvN/wgwACCCCAAAIIIIAAAgggUFICy//3cIml350jy/lBAAEEEEAAAQQQQAABBBAoPYESS7+7RpfzgwACCCCAAAIIIIAAAgggUHoCpF/yMAIIIIAAAggggAACCCCAQPELkH4ztvFvv74TGJye9+e3X9+hPxkBBBBAAAEEEEAAAQQQQCDPBUi/GdOvmnvrzkbm+FGPyfM2pnoIIIAAAggggAACCCCAAAKk37nSb93ZyNyPSN3ZSGBweu5jHumnLZHL0em39mS8Ka0yz7dPi8ORl3bPf6RWJO2Kp3dmsPOWUHrvDKTVYCcCCCCAAAIIIIAAAggkCeye2Dvy7dnPxpJ2Pqb4QPrNGP8Cg9Nq+pUyLMt3jRZu+l1eP/ZiwwI8gqTffPhrTB0QQAABBBBAAAEEEMhTAdLv+MItYynL6OjoyMjI8PDwzZs3b9y4EQwGr1692tnZefr06Qd6IB4+/b549E7H+Mzo7ZnRyaj/1K2KXaPC7+5cvjO9q0WO3MKhyOU70b2HRpfvGnP/cfpaZGY0MjN6a3r/H5RQ2hy5LN7bf0Y8ezM6GLl/9sykOyB2Kuv+9glh1+jzHdPizbt7r0x3DkcHb0c7vpDPvzyh7zf16om3r/X9pjlP49TZ6fsftMb/X+DQnWvT02/tv/XBrRn/uYj/xvTl8ZnRMbG6WT5ATr9XIx/ciI7emZmcnN5/dAESdWI9WUcAAQQQQAABBBBAAIEFEhir/EK8NqkklNtRv5ogdo1VnhEv35Z3Do7d23sk9u/5F4/dPXtrZlKcmRyP73z31q97o4O3Z+Sfm+JbH8pxoKJdTiW/vnhPjSpnA2E5lewa2/DFPTng3Ip2dkdax9S+37RXj4eOXaPCh1NHh++PRmYm78xcvjL143eUjw5Mtt6cmYzcHxwWd50RRyfvVsr7x34RuHft9szgpBygPjgu56NsiOj7zcj0sOn3wNRZccbvl1tCaJ46e+f+B4fla20IREdvTL30zsSumzOXzymfHhVHxem3mmKfirfubnhndHlT5PLMzNlT8gEVH4uT0ZmO9onlu0af99+bVJr8+fZpaeZ+qxKV5SA9Hd37YUL6zXB17ZmYTb9pzjNW3Tcz2h1Wn6ENX0cng7eff+fWB7e+nQxOvaQ8bW/1zwx2yQOePb3fSpF7v5bz/NiGQFSMPY4ZVbUKsIIAAggggAACCCCAAAKPVEDu5YruVbvimqda+++635WzxuidaeXf86MvHhdHI6Ln3dHlcpqItio9Wy+135uMiO49o7+4eH9yKPLjevlf/pVfR8WxOxt2j1acnBaj0Q+UzCy03h2cnn6rUUkl09H9rXKQfv5jcXBGkkc+p7v67O3vnth189vBLqVLr/G2P/JthzxYeszTOzMZnHpx9+jyxsnWsW8lNQodFycj96qVAPX8Ufmiv1bWZ8+WIQyTfjPmtIdMv89/Nh3LsQq93EeqxMXl70zsvTnT2R8dvRmJ/X/G7tGKd2P/xSIcvjsoip56Jf1Gp3+9T6neh5Fr0em3GuR14Xd3rikHyPFVi5q7b+0f//Zs+5jW95vx6vHnIDH9pp6n4pg4ekf07Bld/s6tD8Zn/MfH5JVb33acjNWzsvP+5LVJJf3OTPbKK/Kj1hS5HI3uVfqE533yOAABBBBAAAEEEEAAAQQeqcCeSX9kprNr6hctY1pnqbt3ZvRK/N/z79z6YHLG//GonCbG5XArV2/32PONY4L80WwcUP/lv6tptOLkPfHWHbn3btfo8nenzkbldC1nDa24UlBOv+munnj7wp6xCjlay+n6rRvfXgtMLH/nVuvktx1+defoi1/EEpBHV+db2b5XTPqNUSa6q+sPmX5fOhOVZpTBzOqQ5jszo1djT9XzJ++J0kyHP5Yklzfc2nV1+vJ49NpY9NqtGXF6Nv2+9a5SPXk8871q9VE4lJB+tWmrdk/sHf728pkJLf3OcXX17pLSb+p53gm33p7pODkm//9NRHTXKzH41oz/eIyrsvO+GE+/sVQfe9zvf/C7jKSpyOxBAAEEEEAAAQQQQACBRyZQcej2/t7pa5FvRWXk8/O7xt7ql6Tp2dgyKc50tI+9dCaqnyL3ncmjd2aOHov/U18OuvK//OX0Oxb5sZqT9yjp98PRl84lFE947zfl6vGzKX1pP/bf7RhWMtFYdHRaUtLvpP/OzNE/xA4TjovKMNixt/q/nZ15V4lCnV/I42Tn/SH9ZjTSpd/b4swv2ybXt0zcFmfUabDmnvWq4rNpcexO7DlIbIl3J1tv3fd33Ru8JY80WL5r1H1lRh5CoEzULBy5O5p9+r2ljnpXo6nyHx7x934zXj1ek6T0m3qeXaNyvu2f8nTdH1SHQMt9v+nT72Q81dP3O+/fNw5AAAEEEEAAAQQQQCAfBF78w53LojzXj/vq7DuPWsXksKBlhN1jL3048fye5L7fZnnUZ6zvNyX9ylMLzfb9hltv6/tmtatrV1zeFOmM3j96bFzplB779ZDa9yv3yWk9cC+eivX9untnZjNI8hjV2RPGg0/iHtJvVun36kj0X/aNq3AVe8aujkQlSZo7/S7fJ7/r23pMKfXurV1Xxb3ye79j7iv3B69MPr97zHNtRl7ZNVbd9+3o1Un57fA9t37de1+MTstdvvIoYmUlNpdVmr5f+b1fZSx+xeG716aju5oT3vtNf/XRFw/ffuuo8v5w/BuPYu8P686za3T5h5Fr8n8Cxae/yph+v5Vui9UHZMYfn0n4S5LuaUt88lhHAAEEEEAAAQQQQACBRykgtN7pvHnX3agkoH23O5R/6svv/UbuqZMQCS1TrX133A2jy5umzor3j34sZ9GXTiovRb6b/N5vZ3RyWO7yTdv3u/zQnWvR6AfKe78v+mPv/aa9+uztK0V2Ka/vvnj0TucdtXd3rDo4M9o7+fzu0eUN4Q9GYu/9VsjvJ99TM8jzx8RBcfot9Y3R+TII6Xf+9Psfl+9W7ImPUo6D/sflu/Ok312js7MuR+53Xrz943dG5ba5LXqUN3iXKw/c0WNjFa2Rs5PyvNDXboq/Pjz5wdjM6MidX6i9uHOPfB6R53y+dmtmMhLtUOaU1kY+L0939eW7Rn/RPSMGb8tTRiekXzH1PPL4fvm9c2n2/2wy9P1em7nWLc/5fG1SnvNZmyNu9jmOi7EHAQQQQAABBBBAAAEEHqfA7nFP5/Sg+mLm7WhHIPy8/G91Zc5ndSLoyejRDmXeqV2jL30cn/P51vT+o0qXntxXF5/zeeiu+hUw6dPvrrHKc9ODd+SM09kd+eCmMkVR+qvH49juieor8vfIDI5Fz3ZOVrbfGxXv+z+bEFqm/GPynM9yVjpzbzLWIz32i3P3rk0qcz6PT+9XexyzyB2k3zh3CpY28nmOB7TubESNwXMcs0gfafH1Ic+f+TzyzM+Xz2U1gP4h60BxBBBAAAEEEEAAAQQQQCC9gPpS8S61nzk+F1dKfEtfNvkw0u9c6VcNwHVnI5l+sknI2TRDDsdkTq0Z7yjtVTKd5/mjd69F7lWr4yKSH5q052EnAggggAACCCCAAAIIILCwAvLXr96MbJBn4Z34dX/C9NQ5JRTSb8as+G/+25lCb+L+n7beWtgGzvJsmVJrlsW1w9KcRx7zLI+m/uDj2KvO2sGsIIAAAggggAACCCCAAAKPTqAhvDcoj4gejcxcC0Z+ob5DmlP0Xb5rlPSbMf0+uhbNtfGoIQIIIIAAAggggAACCCCAQJYCpF/SLwIIIIAAAggggAACCCCAQPELkH6Lv42z/I8QDkMAAQQQQAABBBBAAAEEiliA9Ev6RQABBBBAAAEEEEAAAQQQKH4B0m/xt3ER/+cNt4YAAggggAACCCCAAAIIZClQWulXYkEAAQQQQAABBBBAAAEEEChJAdJvSTY7N40AAggggAACCCCAAAIIlJgA6bfEGpzbRQABBBBAAAEEEEAAAQRKUoD0W5LNzk0jgAACCCCAAAIIIIAAAiUmQPotsQbndhFAAAEEEEAAAQQQQACBkhQg/WZs9qmjb95q+Mm8P1NH38x4Cj5AAAEEEEAAAQQQQAABBBDIDwHSb8Z2uNXguNXgiJzcOcePekzGU/ABAggggAACCCCAAAIIIIBAfgiQfjO2gxp9M36sfBA5ufNWgyP9MdE211Jz9fnED3u8LxgcLeHEXUnroY7mT/rlPdFAzSrB0y6v9hxtDozJK+FDTuP6xlBSgQwbUz6n0dY4kPTpAxRPKqff8G8xWd7u0u9lGwEEEEAAAQQQQAABBBBII9Bft87obBXTfPLId5F+M5Jr6Xf0355L+yNJ0sKm33Cr01TlVyskjoXFqCRFu2pesNb1yvseIL6mS7+SGA6HF+CZI/1mfGL4AAEEEEAAAQQQQAABBPQCpN/xBVvGUpbR0dGRkZHh4eGbN2/euHEjGAxevXq1s7Pz9OnT+oaYc3tR02/HFpP1jUbvJodjnUWosNW0h6VTNRaTocwomNd7u+6qfb/9zS7B+IzBVG5xHwnPpl+xx/eazVwumCvMFqe3Q+0Ojvb7tlqFlWbLGofnvRpH5r5ff5XJ+lpddaXDttZiXu30nglLYz7nMkvNxTjHZa91mdM33FWz2ux5r87tdNheMAtrPW1KZ7KcfrfW1Tgt5pUm0yqH91Tmruz4+fiNAAIIIIAAAggggAACeSAgdr3vtlYI5gpBqLC6m7qUzrGwulOoMJvXuOrOx/55H2r3OlcLJpNJeMFVd0bZOdXVvMVmLjebK8zm9R5fr1xabHUa7d7mHS7Hequ53OzYHVDOKXa977KsFMyrrY5tddVr1b7ftFefVRF7fZ71ZmGlIKw0217z9UeVj0L+6vVmU7nZss7d+L5bWFXTJe8PB/a45BtZZTa/4Kj5JKsBspIk0fc7y61bW9z0u9VkqPD4lSHN/e/ZjOvq+iWp622LUe371UY+i21Oo77vt2uHxbS+rmtKafUdFpPTF1J7hldVd8iPpdhVazUYMo589m8xGsrd6qVDLQ7TqppAVGzbZDJvU59UqWenxeRqC0e7vKsNgssXUh4vX6XJvEMe8CwXX+lq7hMlSezZbTPGnj8dHpsIIIAAAggggAACCCCQZwJjzY5ltjr1BckBX3Wlt2NKEk94hJVO5Z/3UvgTt3ml2z8lSSGf02SpVjq6QodcwkpPhygG3jCbNjT2K5m3a6fVuMbbI0niEadhqbXmvJJ5L9ZYljl9YUnqq7Mts3ovyjvD7R6zwSCPfE539QSgULPdaNmhRJIxv7vc6DoSliTRv8UkRxL5RB01a4wGJX2EP3EL5a62Ibl0+FS1ZZmjWVlPOFv6VdJvehdJkhY3/b4mCK91xK7d7jFVVAei2aXfaFfNKqPriPJ4SZI0UGdTnjD5sdgWiJ1woM62dI70azJtjV861Owwyn8BxHaPoD7o0R7vC4L7E1GS0+/shbretqijsv1bTKYt/tjlhxptS+N/fzJC8gECCCCAAAIIIIAAAgjkgcCU371ScLztC/TNjt/s2GqaDSZy1jC5T0jhVqfxBTncKosYHpPTQVIMGWq0GW2NQ5J4xCUfqfbTyi9gWuv6lHc2teJyQSX9prt6EoqovPsp7wrLJ9rdL0+HVGF0fRILH6Emh5p+O7Yk13l1tu8Vk36TwBM3FiD9GoXqMwmnjPZ4V8dmvep4TTC/EQ+r7R7hAdJvh2eFwbhCEMpjPyaTrbFP9FUaLbXxyajkp2Wu9GvWpq2SH1CL96I8z1Z1hUn+/5WLNZZyT4cov3LsXS0/+uqi9UsnvferFU+4S1YRQAABBBBAAAEEEEAgPwXE3jbvVqe13GissHmausKS6Ks0GJYlhguTqzUsj07VTbgb7fCsEDyn4relBoHLSvpdK49jlZf4wNXk4v11sZHPUsrV42dTfvcfrXGtt1rWWK1rreZlBiX9yhedjVSfuE1y329y9pH6G9cZbe9nNfiZ9JsknrihS79jb/7jve7j0W+6x978R3USrPlmvQpUlxudrbP/rSKF21zLYjM5P0T67apZbZL7ZpMXf5Vxtu+3r86aZd+v+n82yuCHrlqLsdLXscNiVvuQM6ff2f8cSiieXB22EEAAAQQQQAABBBBAIH8FQme8NpM89U/H1oRuuXh95b7f1V7lDVs51IZ6+8N3k/t+BxL6flPSb7jFMdt1LHezKX2/8ZNLkqRdfXbfULPDaKluV9NTuHlDrO+3umI2+8z2/er6qxOGrM6eMN0a6TedirIvMf1O7F57f+KGeujM3fDE7rWj//bcPOlXkuTR8BWu5q9D8juyoUDzJrNxTewZSpt+e2otRmWc/Ow3HoltLqO55mv5ytqsV/Ig5A2NPUr+DZ3wut9oC0lSqMVhXOVR3vsNd+zQ3vsN93zi8yvvo2vF1fd+5TKSJP+vzGr1xXF5dL51mWBeaVEvl7nv12iocKcprurwJwIIIIAAAggggAACCOSnwNdem71GiQySNNbmUv7lL78CGX+HVhzwVW/yygcMNTtMZs8JOYuGjrjVdyRj7/3Kg5zlmYZMytRF8sjnlPQr9Xqtxth7v6GjbvNSJf2mu/qsU69X7sBTXt8NnfI6VhqUr1kNt7lMwha/XI9woGZd7L1fUX3vV0k04VPVZnUmpNlzZVwj/Wak0dLvbd/WmbsJXbhKidu+rfOmX0kKdexx21aZjAaDcYXZtqUuNj+zJKVNv+J5r9VkNK3y+Ke07/sN+TYJxmWC470eLb5K8TmfhXLBvNbVqE7LJvY0V1kFk2BebXM3eZ2x19l7vGsM6jAArXh80marZZUgrHJqs7pJUqhxvcGQMEA//cjnKpN1W2ONM7V4Rkk+QAABBBBAAAEEEEAAgTwQCPnfdlrUNygrrK7dASXkxOd8LheEVTZPi9rLJoVO1DiUOZ9Nq52x73lR53yukOd8tmyoVr8RJn36lcTAHqdlhUmosDi2NdasNzoPhSUp7dU1lVDba1ZhhWBZY3PW+rsOuQST2d0akvp87jWCqdxitXua33OZYl136pzPyuzTa5zeU1kNe2bOZ806zYqWftN8Ft8VOblTjcHxHQXwO+nF3aT6im2bBNt7sUH7SZ+wgQACCCCAAAIIIIAAAgg8VgE5aSsTTedcC/p+M9LdanDcavhJ5OSuOX6UA3ZmPEVefpAp/YZPVVvLXW3KlzDlZcWpFAIIIIAAAggggAACCJSWQM9Oq2l9ndwfHe1vrjQJ2+T5eXNeSL8Z6e5+5Yuc3Dnvz3Rf4rTOGc+WPx+kS7/9jXaTqdxW057tmIH8uR1qggACCCCAAAIIIIAAAkUrEA7UuSzCCkFYKVhddepY7ZxvlvSbMx0FEUAAAQQQQAABBBBAAAEECkaA9FswTUVFEUAAAQQQQAABBBBAAAEEchYg/eZMR0EEEEAAAQQQQAABBBBAAIGCESD9FkxTUVEEEEAAAQQQQAABBBBAAIGcBUi/OdNREAEEEEAAAQQQQAABBBBAoGAESL8F01RUFAEEEEAAAQQQQAABBBBAIGcB0m/OdBREAAEEEEAAAQQQQAABBBAoGAHSb8E0FRVFAAEEEEAAAQQQQAABBBDIWYD0mzMdBRFAAAEEEEAAAQQQQAABBApGgPRbME1FRRFAAAEEEEAAAQQQQAABBHIWIP3mTEdBBBBAAAEEEEAAAQQQQACBghEg/RZMU1FRBBBAAAEEEEAAAQQQQACBnAVIvznTURABBBBAAAEEEEAAAQQQQKBgBEi/BdNUVBQBBBBAAAEEEEAAAQQQQCBnAdJvznQURAABBBBAAAEEEEAAAQQQKBgB0m/BNBUVRQABBBBAAAEEEEAAAQQQyFmA9JszHQURQAABBBBAAAEEEEAAAQQKRoD0WzBNRUURQAABBBBAAAEEEEAAAQRyFiD95kxHQQQQQAABBBBAAAEEEEAAgYIRIP0WTFNRUQQQQAABBBBAAAEEEEAAgZwFSL8501EQAQQQQAABBBBAAAEEEECgYARIvwXTVFQUAQQQQAABBBBAAAEEEEAgZwHSb850FEQAAQQQQAABBBBAAAEEECgYAdJvwTQVFUUAAQQQQAABBBBAAAEEEMhZgPSbMx0FEUAAAQQQQAABBBBAAAEECkaA9FswTUVFEUAAAQQQQAABBBBAAAEEchYg/eZMR0EEEEAAAQQQQAABBBBAAIGCESD9FkxTUVEEEEAAAQQQQAABBBBAAIGcBUi/OdNREAEEEEAAAQQQQAABBBBAoGAESL8F01RUFAEEEEAAAQQQQAABBBBAIGcB0m/OdBREAAEEEEAAAQQQQAABBBAoGAHSb8E0FRVFAAEEEEAAAQQQQAABBBDIWYD0mzMdBRFAAAEEEEAAAQQQQAABBApGgPRbME1FRRFAAAEEEEAAAQQQQAABBHIWIP3mTEdBBBBAAAEEEEAAAQQQQACBghEg/RZMU1FRBBBAAAEEEEAAAQQQQACBnAVIvznTURABBBBAAAEEEEAAAQQQQKBgBEi/BdNUVBQBBBBAAAEEEEAAAQQQQCBnAdJvznQURAABBBBAAAEEEEAAAQQQKBgB0m/BNBUVRQABBBBAAAEEEEAAAQQQyFmA9JszHQURQAABBBBAAAEEEEAAAQQKRoD0WzBNRUURQAABBBBAAAEEEPj/269jEwAAGIZh/3/dH0yXgA4IFHUyAQIEsoD6zXSGBAgQIECAAAECBAgQIDAjoH5nXuVQAgQIECBAgAABAgQIEMgC6jfTGRIgQIAAAQIECBAgQIDAjID6nXmVQwkQIECAAAECBAgQIEAgC6jfTGdIgAABAgQIECBAgAABAjMC6nfmVQ4lQIAAAQIECBAgQIAAgSygfjOdIQECBAgQIECAAAECBAjMCKjfmVc5lAABAgQIECBAgAABAgSygPrNdIYECBAgQIAAAQIECBAgMCOgfmde5VACBAgQIECAAAECBAgQyALqN9MZEiBAgAABAgQIECBAgMCMgPqdeZVDCRAgQIAAAQIECBAgQCALqN9MZ0iAAAECBAgQIECAAAECMwLqd+ZVDiVAgAABAgQIECBAgACBLKB+M50hAQIECBAgQIAAAQIECMwIqN+ZVzmUAAECBAgQIECAAAECBLKA+s10hgQIECBAgAABAgQIECAwI6B+Z17lUAIECBAgQIAAAQIECBDIAuo30xkSIECAAAECBAgQIECAwIyA+p15lUMJECBAgAABAgQIECBAIAuo30xnSIAAAQIECBAgQIAAAQIzAup35lUOJUCAAAECBAgQIECAAIEsoH4znSEBAgQIECBAgAABAgQIzAio35lXOZQAAQIECBAgQIAAAQIEsoD6zXSGBAgQIECAAAECBAgQIDAj8F6/B1QLXwLxCP9dAAAAAElFTkSuQmCC\"\n    },\n    \"c448a783-da5a-499b-a52d-62be28a72438.png\": {\n     \"image/png\": \"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\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Files 📂 and Running Sessions 🏃‍♀️\\n\",\n    \"\\n\",\n    \"Jupyter Notebook lets you navigate the files in a separate browser tab. \\n\",\n    \"\\n\",\n    \"Go ahead and click on the Jupyter icon in the top left corner!\\n\",\n    \"\\n\",\n    \"![image.png](attachment:212ecd19-156e-48dd-99c7-e2ee7457de6f.png)\\n\",\n    \"\\n\",\n    \"It will open a new browser tab with the listing of the files on the server:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:5aa6b072-c4d7-47de-9e75-0a107a37e2f2.png)\\n\",\n    \"\\n\",\n    \"It also shows the list of running sessions and terminals in the `Running` tab:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:c448a783-da5a-499b-a52d-62be28a72438.png)\\n\",\n    \"\\n\",\n    \"Alternatively it is also possible to access this page using the command in the `View` menu:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:2d33971b-509e-433b-809e-2f0861a13105.png)\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"72f98bea-d61c-40cd-8f56-29df50ae5f8d.png\": {\n     \"image/png\": \"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\"\n    },\n    \"86ac8b15-8a6b-4d4d-b315-0c8a73870e3b.png\": {\n     \"image/png\": \"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\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Editing Files 🖊️\\n\",\n    \"\\n\",\n    \"Jupyter Notebook also has support for editing files. Double-click on a file (or `Right Click > Open`) to open the editor:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:72f98bea-d61c-40cd-8f56-29df50ae5f8d.png)\\n\",\n    \"\\n\",\n    \"![image.png](attachment:86ac8b15-8a6b-4d4d-b315-0c8a73870e3b.png)\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"88ef6621-8ef1-4174-939c-3dcd8d9166ef.png\": {\n     \"image/png\": \"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\"\n    },\n    \"9016e117-00db-490f-80c4-fa3ed6766d0f.png\": {\n     \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAdwAAACbCAIAAABH673CAAAgAElEQVR4Ae2di1dT177v+y+cv6DHcc/uzRmHYc4ox4xTjmSUK9lYRUcrevYW2r0Nu1ez1UpPr0JtkdZtbZWyrVLqWysU5KFghLKDSCASCO9nwiMPCEkgISEkJBBYEOi6Y66ZTBZ5Ed4P5xwZycxcc83Hd831yS+/Nddcb5A4YAWwAlgBrMCmUeCNTdMS3BCsAFYAK4AVIDGU8SDACmAFsAKbSAEM5U10MHBTsAJYAawAhjIeA1gBrABWYBMpsN5QHhoaun37Tn5+weTk5CaSATcFK4AVwApsDgXWG8qPHmUmJiYlJiaJxeLNoQBuBVYAK4AV2EQKrBTKg4OD3r2Z0SscdQUTVQ8mqh446gpm9AqU5/nzYghllaoPJeIIVgArgBXACkAFVgTloqKihE8/FYlEsKy5SftE1YORa4eNKf/l8Rq5dnii6sHcpJ0kyaam5q1IZIfDgQcNVgArgBVYawVWBOWcnBwE5en+VtO3ez1Y7PHV9O1eovvVWndp1cvXaDRfffXVlStXVr1kXCBWACuAFfBQYEVQJkkSui8mW0s9+DtyLcby8LTl4emRazEemyZbSz0ascm/9vT0cLlcDOVNfphw87AC20OBlUKZJEmi+xXErvXx55OtpbMWvbc0sxb9ZGup9fHnMOfWspcxlL0PKE7BCmAF1kiBlUJ5btJu+navregbnyz2bvSsRW8r+sb0bRT0L3tnQClXrly5evWqRqMJkEKSpEajuUoFlA2mPH78mCRJsVh87tw5LhXS09PppfH5/KtXr/L5fLQjjNALhPGvvvqKy+WeOnUKVgRLRnu1tLTADFwu96uvvqqpqUGbUPPgLnw+/9SpU9jipuuD41gBrICHAiuF8kTlg2WYvdP9rROVDzya4vEVkrSnpwele6eQJAnNWC6Xi7Ihw/b+/ftcLjclJeXKlStwXy6X29LSAnO2tLRA1KIdYeTx48dcLvf+/fsQqVeuXElJSeFyuSdPnrxCBTqUYRVnz569f/9+enr6yZMnuVwuPYPD4YCuD1gsdoN4qI2/YgWwAh4KrBTKQRrIHrWSJLnojt4I9k4JAOVTp06dPHkSMd3hcKSnp0MKo3kUZ8+e5XK5HjOmYSJiN6rC28IVi8UQsqhAjUYDdx8ZGUFd5nK50Frn8/koJ9qKI1gBrABWgK7ASqFML2t1494I9k5BxPS2lLlc7osXL+hNcjgc0JJFFObz+VwuNz09HWXTaDRcLvfs2bMoBVXhDWVv/pIk+eLFCw9jGTYbmt70YnEcK4AVwAp4K7CdoextlkIfAqLwyMgIJCbKCTPQ/Q/+oAzx7U1q5DxBWsMq6O5stAlHsAJYAayAhwLbGcoeXYXX/Ty8utCngWxqn8avN2cRqSFwvd/psIZbvRuDU7ACWAGsgLcCrxeU4cU9OjFhyldffQUv68ELgx4yBYDy2bNn+b4C8pCQJImh7KEn/ooVwAoEUGArQRmasejaHewVJKZPn7J3t72dyCRJIusY+i7oPKVXQUc5spQ9Er1rxFD2qQlOxApgBfwpsJWgDGe2eUATToE4efIk6iHCtLcbF05uQ84KuAsk9YsXL+BW5F/2KNCDv3CuG5fLpU+0QLvQI9hSpquB41gBrEBgBbYSlKEle+7cOcRNjUZz6tQpDzcxgjJ0SqD+I3yj3eEmeLkPzlrzOUcCFnju3DlUFIzAScpXr171KNAjG4ayhyD4K1YAKxBAgZVCedkLWSy6I2QZ3VmBJkucO3eOz+c/fvz41KlTkIx0/iIonzx5EuaEN+/BAj0MbSgNvNzH5XLp1SHVkFEM7wBEU5gdDgc0rk+dOoUcy/fv36c3BrsvkIw4ghXACgSjwCpA2VZ0edF7pulNmZu024ouLwPKcPoEnGsMCQvnrnmYogjKGo0GQhNmOHv2LOIpvT1ocrHH9GR6HrFYjOql35ntcDjgrwKsAr6np6fTbWeP5tGLxXGsAFYAK+ChwEqhTJKk5eFp07d70XLJHhXQv8IFl03f7rU8PE1P9xmHLPPpse2hAh189BIQlGGiRqPp6enx9i/Td/HpraZnIEnS4XDAej3S4Ve4yaeh7TM/TsQKYAWwAj4VWAUoU2sSRcHl3ywPTzvqCqbVrdPq1rlJ+9ykHcYddQWWh6dhnmBWI4K3ZtDnVPhsvc9EDyj7zENPhL7mAGYyPTOOYwWwAliBNVVgFaBMkuSMXjF688+QuYHfR2/+mf50KJ99Q+tU+Lzs5nMXeuKSoAznKfvzJtOLxXGsAFYAK7AOCqwOlEmSpDzF3wQmsq3om0W9z+np6XBCxcmTJ/05KALrEjyUkTvY59W/wLXgrVgBrABWYC0UWCmUCYLo7Ojs7OgkCAKu/WYr+sbjaSMj12KCX3A5JSXl5MmT9+/fXx6R0XqbHtOKfWp39uzZkydPYiL7FAcnYgWwAhuiwEqhXCYou33r9u1bt4ufF3t0YLq/dbq/1SNxU33VaDTLRv+m6ghuDFYAK7BtFFgplCGR4fu2EQV3BCuAFcAKbJQCK4Xy8+fPIZGfFDzZqD7gerECWAGswLZRYKVQJgiiiQrQp7xtdMEdwQpgBbACG6LASqG8IY3GlWIFsAJYge2qAIbydj2yuF9YAazAllQAQ3lLHjbcaKwAVmC7KoChvF2PLO4XVgArsCUVeOM3HLACWAGsAFZg0yjwxhwOWAGsAFYAK7BpFHijDAesAFYAK4AV2DQKBOVT7urqWmffjF6vt9vtExMTDodjcnKSIIhpKsxQwel0zrqDz5+3TfNHBDcEK7AcBeijejn74302gQLLZmZQUBYKhcuuYHk7CoXCsbExm80GuTw1NUXn8qJQhmN6ExwX3ASswHIUwFBejmqbbJ/loY8kyc0LZbPZbLVakb1Mh/LMzIzbUJ6lD1+P+CY7Rrg5WIFgFaCP5GD3wfk2mQLbEMpGo9FsNo+NjY2PjzscjmUYy5vsGOHmYAWCVQBDOVilNnG+bQjlwcFBk8lksVjoXEae5WA8GJv4eOGmYQUCKYChHEidLbJtNaHs3eUN8SkPDAzo9XqfxvLMzIyTCtCJQR/B9Lh3R3AKVmATKkAftMHEN2EXcJOCUSBITM/7lAMUuiFQ7u/vHxwcHBkZgZ7l8fFxj2kYyFj2N44D9AhvwgpsuAL+xm3w6RveBdyA5SkQmM4AyouWuyFQVigUWq3WaDSOjo7abDYM5UUPE86wVRQIHrvB5Nwqvcbt9FDAH5qDus16Q6Asl8sHBgYMBsPo6Ch0K09OTqLLfdCDEXgOhocE+CtWYDMoEAxnl5pnM/QLt2EZCvjk8uaFcnd3d39//9DQEHQr2+12+hwMDOVljAC8y4YrsFTaBp9/w7uGG7A8Bby5vGIoO2tTwnbs+B39xYjPNZHqezFMnoAgbUU85kdZJu+aA6YIhUKZTNbX1wfnYFitVvocDGKi6st36DWCOGN/ageBTGcQmXuVyNr/fef0nPXpCeaHmcNggA9U5IupSPCjfT6n/KcY5tHMgfmEubm5SfGXbNb/lGrmq1iwec2+TBadZOz4HcMVQhjM8OgT35YOTK5ZhQsKBrVzrna604ZLP+ewj93tXO3aaQfOXdUSP4dr7iYe5bBYLFYokxUZe+anwEd/fnhMthUVSUF/Vt4G2OQFQ3M20Pz6BV2UpkaH8IrstDTFnZiQ+Fz3IPYsdrrp+73sC69o+XF0VRVYHnkX3YuOw1WBMitJTC8TxgnbqI0glw9lqVTa19en0+mgW9kLyrvOVYJ7runTMDwHqBvKc5NWq5UChiYzdu83TdPLPUqDmVxm9I/dtN2tpWdY7As1k/NV0DauZdQDi3NWRemFvYyYn+RrWSkqm167teKraPaHdzvp4EAZVxZZKRCH806EchJLXD9VVmneiXAmN9/NM++20YaH+Es2N98KsqDB450/6BSPkRn464JSKSgX2mh7yO/EhHBzDbQUepRoxFBeIOA6flmUvIEzIIauGZR9WMo22S9JMZFsdiSHcyjhXqsNNcI7IhQKOzs7VSrVkqFseJn6IYcdER1z9Mzdn84ssJTtpRcimQwGk73/RF7f8o4VYDDn2ya083D+CaanMW7tzEp0d/PM3Wbr3HTTN3s539RTO1mLToQwYn+GXJD/eJCd+Gp55iUdi67mNP2NzTxTOjk3N/yY6/5nMDc3ksdlcvOG5+Y0mbGsM3cfXzjxl9iYSHb0/+TJl/3jNIdqt4qvxrCP/tg0T2Sv7s/NzfXdjWGd+fEnLieMmzk4J/6cFfNt5o//w+UejWZHxn7/imLfnI8dVwrltu85oWdK59s2Nzk4MAy/TsqLvorlRLA5kZzoEz8C+5k2PNIux7JCdjDDONHfilEbJp+dYB77Me/qGe6HMZwIDvd2E3XkJjuzzkSHszn7Y7hX8378kHniqXVubhKOAQ4Y7TGJOR0OOjeXFO9MjQ454Q/KFnH6mUPUCbU39kJeL6iFaEyFlvJ00zeRnMSffjxzLDb2IIfz4TcV/n+M0HjGkVVRIDB8A2yFJFwcynNzc4Eu9AH3hS9L2QvKRFUKO5yXryZIkrRVJHHCkyonvGnsSoFQViqVGo1meHiYfss1uNw3XvnlO7vOCcGtJGiJIspknnj5OZv9P7/qnU7nRM+jv7AYUcCnYQG+hUfAthBdYO+51LjQy7Gkc8QhusAOT6xwWS7qRx8yYx+qZ2fnq3AIL7DDT+SqwAliKU+MBJkd1V+yD93qnZ2ddQgT9x+O3X+myDI7O2vI5YadKaUbQUtoiqPoJCPySgfawyIvStzDjM0EjTHkcF39nZ2dNeVymZRhpXsUy2ByH1Knrq36wrusRCHae6kRWHt14/VY9uHURtAZV/DV/dlZ3aPYEFZshitj9Zcsxp4LFSawi/phLPPoHTVQxlu3eVXdxS/x09GYeoDJOnrhztPqDt0CMHZc2c/68E4HEN/SeGU/60TRwuFhePQhk5sHOoYGj6PkBCPkUGoTVU5n6v7QE+Aoqu4cYh5Kb3XMzjrUeWfYIYwTzxxA89DYOwNUaweK/nbyxqsx+I9uwbu/zizI1JEaHXLcN5QNhSdYkYmlYLA71Y9PhO+/2uh0TjVcjWJfEFF03sNgncg1gNFuqTjLZn9esUACf9Xj9MUUCB7cAfjrc9PiUEZ1LwblHQvC71gpYtLbp1ybzGJ/XeuCrlOWtpeVVBUIyh0dHXK53D+Ud+xwO1SpT2bs3X5qRDLPlE7AYQ1Op9WG8izRkRrFOlNCcagrHZzNFFzQqVv9JYudUu06rFTmROGs4x9nWCdyLbOzjZf3n8krStx3oZqYdZScYf0FJC4rACzuYDCZodQrZAcj/FDirWr4p9YvlJmxj3SwNvWjoy7oLLt25ruRke+yWVGJFbS/0j67T0H50B2Vq6rqFPa8RKILLOpn0ueOSNVlNZLaydZb8fDSmQ/3s5kM5ruxZzIq1I5Z6iAyz5S4GTVwJxYSdv432yeUzzAPpPfCX3Rb0Qkm6BFo4Qfp4PcWWKnVl8IpKNsqEsPZ3LSiRpVlAWEX+7LQwqByd6RGMxhMFosV5n6xmAwG97HeOVp0grnvRs8ULHTi5eesyO/aXVCucgKTeQ8T/EJQwfGPM/BcgF/x+1oogIDpEfHJX3+JYEEin9s8Cl0MysFYygT/FIMRymZHuF4sFivhuV8PhlAobG9vh7Pi9Hr9yMgImq0MFvO0V37xn/9xVkh4rFI0M/kq+Z3w5Go4tmecFed27Uttn3KOPjnO/PBnYFGIksP3XGpwjePFThE/2/tvHWIee6x3OhsuR4b/v5fwF8BdxUThXxmM0PDwd12vXbt2fVI06jQ+5r577uVYT/rh2J/V+sfHD6V2TFSnhMc+6PdTyaLJoKLIK+0wnz73+K6oS9Vuc0yfzXX11+kEVTPBOezU/hzL5BaOuvb4+UMmN9f1ZdHKvDKA2ncdf9w/Mfryi8hdR2+3u34H/XSfqvqxu7bqlPDIyw2uMl1HxPeOblW96l9GwtRov/jxuX3M8JTqianq5HcYzHfohyn2ZyV9eOiRPqgNE8WfMA/fdh2wiV+PMw/d7nX2P4iFg4FqUf/tw8zjRUCLid5f0784fuhdJnNPbPIvbWbXkPTxAbviYwNMar+6P+TYz4ohFPSSq/tDuDlDM333Yxkhu9BIC39nV/gX5TOTDVejwpOrZmYmG1Kjdp0TuZUSJe/anVy9spHvLgt/AgUCYN2Dn/CrT9L6TPQBZe8SVwPKZG0ym/Ndi1/beOGG5UK5/m97mJ/8Og7H82gulxG1+lB26h9zQ2Nvy6qT3428VOcaoOjUrf6CRpz50dt/+8P9qS9+5n4A2tOTcSj27svUDw6l987nWGJsAZSdUz23DzP3X3excZQOZTVg8VpA2fWTMNFz+8Nd4Z9SLiOn03f3F/weOH1B2feOSNUliuPKPip7+Wsd9e/evb8+m8s4fLt/qj11365zL1y/JO6Ny4HyaC53ntRTDZfeZUAoO51OOAiHJDdid+2/2u6XujMzM3BFF7Suy4KUtiv7Q44/tdLydN86REF5vPA484Nb3R4F06B8dY/rFwL8SBR/wqQMlPnO4tiqKuDNaG+Q+kSwd6InlD0KgjWtCpQJcQo7IkGgB/QldPzLn2XU+jWUSaFQ2Nra2tvbC2+2NhqN8H5reGvfxFgFsJQrJuHtJPCOEmA2E7ayT3eFf/pcRxDEaOutuJ2MqCttjumR/OM74x4OTk9Pv0oOf+fcCzv9LFhGfKT40/BD8cfCP7je5d4bVWGvTA5/95PiAbDB3vfk4qfXRSMg3nXt0KE/Ho38QgS+1F6M/OPRQ/tA25Yb7E/+yoj8tg3tbq+9GPn20VvdIMEuOLdrz0UR6Ka9687Rnf92LGdwenrg4dGdx55QjZmeHnwYt/PYY9cXVEjQkYW1D744t2fnoWv19ulp391fUPW06EJ45KV6V12VyeF7LtY7fO+IVA26YQsyDj79ZNeuo9crVfCA2/teXDm8M/Ir0M621P274h92URsGy6+fu1S8cHgAfY7eUU1Pzw8eO/+TnYdvgSSga/HxnYeA2p3X9+88eqsbFKR6/EnkTsbxp/bp5utH/3ylykQNSf3zT3bv/66Jivt6m6IC2gK/ooE92fztvpD/W2AG64nDMCW7eejf/pytIwhdwfF39n8tpKoZlWVfOPegyUZM1H0XFZ4sJEBkD2PX8RwVGGODT/66K/wLakQsUAh/WakCHr+JaD4YMqU9iOqNYO+UeSh77EwH/6pAmSTdsy8i2Oy9cSkFSnDJz0+AUO7p6YGz4oaHh9GKcXa7fdz68vx/7tjxLwtf/3b0vnJqSsn/+o/hu96JjIw5ffP22fCoK60ThAlA+QEgtansy/d27tz9wQ/17jG+rE+b6Mvwf/nfRx+CImGYr4IwtT48+8Ee6q9x1NEvc7psMEfNxfB/2XmaD0+h56ff3hF+ocq99zI+bU/++r8jv22l7Wl6/ln4rnhwthK2rgen90W+d/TY8dMXs344/vbRB2qCUD8AUIakIHQP4nYey3F9oRUSZNSzdlvbD0ffDj/9VEn47P6CqokqAOU6V03CL8P3XKybAMfGWzeaqkE2zCObrTX/4vH3w3ft3Lnz7Z279nxwOvW5Eh4PW9eTC0cjKS9TZMzpB/WUFLTh0XXv2K6duyITnnS7B4+Nf3pnzE0lrMH2/PjOD252gWbX3TgW+U54ZPTR0zeyr8TsPP7URhA6wdXj+6ALa88Hp3+UGCFrF74Dm4K6SRWBGKU4UGgCUM4fgVvAHa0Qyr9oQIqx6trp9yMpD8a+Y397rhifmhqXfBcV/mWFK3L6+rXTf9wX+e6uyD9fKZsfrR4q4a/LUcAb5x6ApiPUg67eIKan+IYyvTin0xkIyn6ousJkoVDY0tLS3d2tUqm0Wu3w8DCcrWy1Wm02m50K8KEkcPS6xuzCj4WnAP6GFVhjBcZlP0TvPF08NjU1tXAkLv6NPowdDgca2+iJaJOTk/Q8i5dor/329+FfvqQ4vsb9ft2K90Y4HdAIzchYhjilc5mOYO+4C8r0HWARyCk2MzOzIVBubm7u6upSKpVardZgMCAow8dEAXt5fHzCHZBhQY8sPnBxDqzAChUY5p/+zz1flA1PTk4OV3+97+0//9IHSqSPQ59xOHLhJhgfp4WJiQn4DUXQVzqvUdxHFbaab3+/+4uX4BGXOKy6Ah6/QwjTiM4IzfQFIeiY9WYxSgFQpmednZ2F7m9U6PT09MZCWaPR6PV6OFvZYrHAW66hvYyGsRvOCz59jFSchBVYbQXkhV/98f/8x3/81+7dv//jV4VyaOcuGIheX+iEHR8fh//8gn9H5gi9HM9Kxmou/373F+UgebV7/LqX54F4BOgAaIZQBWs/0AKisEfkDVqeOXQ1kk7kjYJyY2OjVCpVKBRqtXpwcFCv15tMJrPZbKECQjPyZniPaYRsHMEKrKcC3kORnmKjhTF3gH45m80G/wi6k8EnSrTZbHDYw620YlwOPXot9Ph69v01qYv+E4gY7UFnaDUjliK60pHrgWP4dR7KaB9UCiyUIIgNsZTr6+s7Ojp6e3v7+vq0Wq1Op4NOjBEqmM3m0dFRBGirr0Af2TiOFVg3BTwGo0e9aCsawKNUsFgsMAV+NVPB5yY47EdHR1FR/qqAGTy24q9BKkD/2fOIe//mIUyDGykmJ6HVvCiXA0HZp9dienoaXrLYECjX1dW1tbXBa30DAwNarVav10Mum6gwMjJCH7hw+NLf4djF71iBdVaAPgj9xc1mMzQvPN5NJpPRaITvKGIymTyywa/QNPFXBUpf5+5vy+rQ7x+KILJDXkNMe6B5amrKJ5fpfgxvLrssZQ8zGRYEzXKHw7EhUJZIJC0tLTKZTKFQ9PX1DQwM6HS6oaEhiGZIZyMVIKO9332OY5yIFVhrBbyHIkqBnDWZTMMLg8FgGB4ehsMb3rw3SAUY1+v1Q0NDw8PDMBt9V1gyKhZVRI+sdX9fk/KhCYjePX7zIKwRoMfHx6HJPDk5SecyIi1yYviGsoeZTCfyxMSE3W7fEChnZmbm5uY+ffqUz+cXFxeXlpYKBIKysrIXL16UU+GlO1T4CUIcsAIboYCf8VjhHrAv4QAuLy9/QYUyKpS6Q0lJyUa0Gte5ygrY7faJiQlo2npzOYCx/MbLl64hAsfHixcvysrK3MOjtKSkpLi4eP2hvMJpznh3rMB6KuBt7PhMQcYRNJfoF2/gqQttoLGxMXzGrefhW4u6hEJhcXFxSUkJYik0KCFmA5uVb2RkZPxIC+lUuH79+g8//HDt2rW///3v33//PR4ia3HYcJnbRgGfCPZOhFD2/mNKEMTk5CQistlsxmfcVh8bQqHw+++///vf/37t2rUffvjh+vXrEK001v6YkZHxk6/wRps7tFKhpaWlubm5gQp1dXU1NTUikQgPka0+RHD711QBb/56p3iYyejmLIIgpqam4AUim802OjpqNBrxGbemx2sdChcKhSKRqKampq6uDuK0ubm5paUFYtYN3bYOd+ikhTfg9QQdFbRarUaj6e/vV6lUcrm8p6dHKpW2t7fjIbIORxFXsXUV8Eawd4oHlKHvYnp6miAIeL8JnIY8MjIyNDSEz7itOxhgy+E6l1KptKenRy6Xq1QqOFtBo9FoqQCRO78iq34+vAGv5BqoMDQ0NDg4qNVq1Wq1SqXq7e2VyWRtbW1CoXBbTnPBncIKrIoC6EJ8gAi6ao/mSxiNRoPBoNfr0UmnVCp7eno6OzsxlLcBlNva2mQyWW9vr0qlUqvVGo1Gp9PB++ACTyF7A84qg7Nt6OOjr68PQrm1tRVDeVVOXVzIdlUgAIvhJjQrGc1UMxqN8KQbGhrS6XQajUatVisUiq6uLvzfdKsTmSRdiw9DKPf19SEoo0m9aF4jmteLZha+gaapox9tOD6gpSyVSpuamjCUtytNcL9WRYGlQpluCQ0NDWm12oGBAWQGNTc3Y0t5q3NZKBQ2NTVJpVK6pQzNZDTZHOEY3hyE/ksBKENmwwnq6Ecb/pPq6OhobGzEUF6VUxcXsl0VWB6UkRkEoaxSqaDvAppBW51Kr3n7hUJhY2NjR0dHT0+PUqn0sJQhcv1CGf6NGh4eRlCGP9rwn1RbW1t9fT2G8nalCe7XqiiwQijDq+tKpbK7u7u9vR2eca851LZ694VCYX19fVtbW1dXl/c9yUFBmf6jrVar+/r6FAqFTCZrbW2VSCQYyqty6uJCtqsCy4Ay3aE8MDDQ39+PzKC6uroA7ouJsqtjmX9Z9DVRdnWrc21Lt18oFEokktbWVqlUCmdf9Pf3w2t9Hm5lZC/P+5TRBQf6VT6lUimXy6VSaUtLS21tLYbydqUJ7teqKLByKEMzqKurC5lB/pA0lhk/lhnvEN0M8IJ5/JWA09dBAaFQWFNT09zc3NnZ2dvbi4xlrVY7ODiIuEz3L6OLwPNT4tBV4P7+fuRQbmpqqqmpWUMom8oSWW+GHL7RbEJnh+LWH0J4T9FXHMEKbHYFlgRldJXP22EIzSD439QfOCCR/W2F6Q7RzbHMeN95nLUpYTuYsfeUTrTdlPURM6EMffWKmGrzK7ReqfMJledZ0ddk89+XGnO2pO1lp4iXutumzi8UCsViMXQrd3d3Q2MZepYRlz3QDAeG0Wich/Lg4KBOp4MOZblc3t3d3dHR0dDQIBaL1xjKYWG7Q+PuS91nHoayWwn8uUUUWAmU0VU++N+0ubk5SCib/7bT54skycWgzGZHsOJzEWcXgbLtOY91rjIAAjGUvcURCoXV1dUNDQ3t7e1dXV29vb1KpRLdPwInLCOTGU5bRpPkXFD2vm0EXnNoaGiorq5eWyi/cyD18aWod+JzeuApSIOyoTnn8yMRu8Mi3o2I4qaWKSyarPiQPz1UUBklFyPeYiWWUSa24Skv9PANxPUtci7jZm4TBYKEMvx/2tra6n3bCExjzlAAACAASURBVLyHViqVrgeUw2MynqdFh/P4eggTGpQnZPnn4zgRHE4kh/NRCl9FkJK0aBZjB5PN+ShD5iRJXWXax9FskCE6/pJAS5nbAMrJ99J40ZxwFmtvfIbERpVra3mQEBPJ5uzlcA7Gp1WYXJVVpfEOctiRHE5kTMKdWpCVZikTHRlxEXEZrQGedO8NwM2YAm+zrqurg27lnp4exGW1Wg0XiIfP7oCAhlYzvKsPQNlgMNB9FwqFore3F42PioqKtYbyjRZN1ZcRYaeeaMBJOg9lycWo0D/ckAxaLBZN1cWoUG6OQnbrCCuh2GCxWKQ3Dh848v6BS3Vgn7LPw6KuNG+TUxx3Y6spEBjKcP7pyMgIhPLFixclEgn90jpa2KCzs7O5uRk6DP2RBrkvfJrJ5r/tXNxSDo+5p7K1XOKwPxNQ+ERQJlq+47A+ztICJBKymzHMQxlKkpRdi2a6LGXtvVhm9HcUSQnlvY9YcQ+UJElWnmcywhPy1QRJEso7ccy9aTInaatIYkckCCju2ySXo0Pj8/Ukqc+PZ0VfhtQ2CZIiWElltnkoq/N5kdGXxZDp/gTYGulCofDly5e1tbWNjY3t7e0ymQzaywqFAt5yrabCABU87r1+A91grdPp4LyLnp4e6Ltoamqqra19+fLl2kPZYtGUJb4bllCimYeySXJpTwgvHwAYBNmNI/8en6NpTj0QkSyyWPoexh+49CTtyJGfFBZTc+p7VKIrK/7ACqyrAkuFMo/Ha2lpQZfWNwLKJGmrTYlkJ1XZSNINZacsbS8zodRtpeqz4phxWXoalHWuFMhFWxGPGXtPC6DMYp2vdO2mz4oLibunI2vPs9hf17oI6pSl7WfynhO25zzmwQzkzq5NZrOSa11QLhKk7OcklboM6q2BXv+tFAqF5eXlYrG4oaGhtbW1s7NTJpNBe1mhUEBXRl9fXz8VoO08MDCgoYILyoODg/BGPniJD06Gq6+vr6qqKisrWw8oWyyapwlhexLLNG5LGVwDfCuEFRa22/UKDT1yq91SlRJxJF1qeJYQdbbMIEqOOpGj6bkVtzuxzE3vdT0dcWVYAerZegG47G0pHzt27MSJE83NzXDVC3hpvbe3t7OzE11a93e+r5KlDIq3lSWx96bU2hCUa1PC2CkSd80TfB4zOqOXBuWutGgGgxXBZsNXOIt1EBjFC3zKcK8ugn+KGZ2Orv5ps2KZcb+YtI/imB9lIe7KrnGYCQICuC8YTBaLGRqdtvUdF1A+oVBYWlpaUVEhFovr6uqamppaW1s7OjqkUim0mnuo0EsFuVyuoIKSCgDKer0e3siH5uWYzebh4WGNRqNQKODyKGt16pnKEt85cKMFFq/I+TgsKuXJDTj7wiS59PvQhGeerDX8IyHi44dPvoziPdZYDMUJexKfZPHCTj3xzLdWLcblYgU8FQhA5NHRUZ9QPn78uDeUOzo6lgrl0av/Nd0jdBp6Rq/+F3RoBOe+gOgw8U+xo78T3IOzLzwsZbddPO++ALZzfP6om9ruz0q6UQztax1Zm+xpKSeUUpbyfso3Te3rygOgzIz/Rast4FE/Eu5yt/InnBLX1NQEn/6sVCr7+/vhvAv0rFH0EC+Px40CKMO779HKcJ2dnRsEZYtF9jCOFRGx2zUlTvJNVOifbjVTuFWUpCakPAGX+Aaf8N49cuS9uFvgwqDi4Z+ijhyOiM+i3NGeJwv+jhVYDwWWCuUTJ054uC+USmVvb+9SoWy9c2TWOgjZNTdls945ErRP2Q08XX58GIcT4ZoS5/Ipg8t3hCw9hkV5J5Tp0Uwen3L0au/FsuLSZZSnwtZyJymlwO1TjkwSUAYwsIX3A/OZgD5lKtEmucxh8fgmkjTl85BPWS9IiGCnVBHzPmXSJPiMzf4MluRu4db8XBGU4WRJuFwnvKeopaVlw6BssUh/OhLy5luuecru2Rdhu8Mi3ufdEkHyKh7GvvXm71Ml1LyL5rSot946QgF6PU4/XAdWwFuBJUE5NTW1tbXV40LfMqA8zk+em/K8JjbOT16KpQyABzC6g+GapwxnX4CpEZzojy8LdCAD0ZoRw2Ky9qYAt7Fr9gWbHc6OPpVRSzG38hwr5lJWGi8mei+bvZd3rxW2Cs6+oCZyHOJlSFxOC1NVBu8gB0zJ2BuT9KgFZKXNvgCe7r306XpbE8nUKnE1NTXLtJTh1Qa0SFVHR0d9ff36Qdl7gOMUrMBWU2BJUB4YGPCYEod8ykuylAPgyiG6CekcIA/etKYKrMhShjOUIZS7u7tbW1tramrMZrPBYFgPn/JWO/1we7EC3gosCcrwxi1vS7mnpydIKI9l/sUhuhXgRWW4uabQwYUHVoAOZbhQ3BJ8ygjKcJGqpqYmkUiEoex94uEUrIA/BdYTylPt/ACrXqBNM+rGwNTAW9dUgVWAMvwDBZe0r6ysxFD2d/rhdKyAtwLrCeU1RQkufLUUWB0oKxQKqVTa2Nj48uVLDGXvEw+nYAX8KYChvFos2zblrAjKcB0iuJxrZ2dnQ0MDhrK/cw+nYwV8KoChvG1gulodWR0oy+VyuCwchrLPEw8nYgX8KYChvFos2zblYCj7O1lwOlZgPRTAUN42MF2tjqwylMvLy719yqvVVlwOVmD7KfBbwDBHhdnZWScVZqhAEMTU1JTD4RgfH7dard5n3Hr8mOA61kyBVYByX18fdF/U19djKG8/auAerakCAZn8G4bymqFv8xaMobymZxwuHCuwiAIYypuXjhvUMgzlRc4ZvBkrsKYKYChvEPo2b7XrAeXN23vcMqzARiuwFhf6NrpPuP4VKbAeUF5TQwMXjhXY0gqsp6V89+7dT4MId+/eXRFU8M4rUwBDeUuf0bjxW16B9YTyp59++nYQ4dNPP10ZVfDeK1IAQ3nLn9W4A1taga0DZUPOx2+9+b/eBK83qXcqHnKmeEUEslgs7TcOhMQv7fE/pqpLe8IS/7HSmjfn/hjKW/qMxo3f8gpsFJT37dvnz2he1FIuPhMS9mXZ6hHNoOnTLO2RbBjKRiN8wLnn46Dg2hd4nvKWBwPuwMYpsCFQ/uSTT0pKSthstk8uLw3K7kf8RLwbEcVNLQNPXbNosuJD/nTpxomI0PdTJe23joTyUu8kxsceiNgdEf9TWVl6QtwfDkTsjkrIkoLcbkvZ8Dg+JDb14UUetTUi7ocqSGrFs0txv4dPQD6QcF8CEjGUMZQ37pzFNW9zBdYfytevX29qarp//35PT8/KoSy5GBX6hxuSQYDiqotRodwchcViyI9/69+jkksoQvfcOvKvofE/A/4aShJC/zWMlwXSNU95oXsugQezISjnx7/1rwcuiSgU112K+vf4HI3FonnCCw1LKAGPczMIk6NCqOe3YShjKG9zMODubZwC6w/lvLy83Nzct99++/r16yuFsklyaU8IL9/te5DdOEKR1JDPewsC12Kx9Nw6EhL3sI/ydlD8Bai1WCyNqVGhCcULoMwLeS+1mXp+pmUwJz7kwI12kNEwaHBVYCpOCI1IFmFLGTyCBrsvNu6sxTVvawXWH8psNvvXX3/t6ek5f/78iqFclsh6K4QFfQvgPTT0yK12iyGfF/L+Dco3AaEcnwNMaWgU855A7DamHvCGMtrL8ARAuQU8db7sh4S496MOvH/gwPsRof+KoWyATwXDUN7WYMCd2zgF1h/K58+f37dv33//939bLJYVQ1ly6fehCc/cljIFXmDbrh6UDU95obt5OT1U0QZsKesNBgzljTtdcc2vgwLrD+W8vLySkpJ79+7pdLqVQtlikXwTFfqnW80UlhUlqQkpTyif8qpZyor7cW+9lwpczxaNJD0+IiQs8QV2X2D3xevABtzHDVJg/aH89ttvX758OS8vD86+qHIH5M1Y3uyLsN1hEe/zbomoK3KrZylbNGWpf4gI3R114P245HxJ8ecRoe/G32rE85Q3r0+ZUJamJcRyWEwGI4TJPsi7nCuzrcXZpeMn7GUxw3n5+lUt3VmbErZjB8MdQtlx57NaAnZAWZbfMgraUPs1m/Ndy6q2Bhe2AQpsCJTZbDaap8x1B5SyKJTdXgr8uSYKbO2bR5QP4lhhcWmlMhNBkk6bsiqDF8GM/q6WWO2TiyhNYO7PkDlXu1wAZVaS2F2sqeUel8X6TOAXy05Z2sGYeyqQH0PZrdrW/twQKPv0WqBEDOU1YW3QhQqFws7OToVCodFoDAaD2Wy2Wq3j4+MOh2NqaoogCPisA/jcg9nZWbjoNhxIb2zwzSOjfF4oO6liAcGI1suckJh7apJU34sJ5WU8SIr/KC5mLycmma+FSNVVpn0czY7gcCKj4y8JYGLteVbMd1kZn8XHx0azI+PSxAvKJCWXo8OZO0JYnP0J+Q33YlgJGTfjOWHxWXqSVAsuc6M5kRxOJCfuXJZsgsLleVbMpay0hPi4g2z2kcuCRv7lUyDO+SijdmHBpAeUSZKoSmKFpdSCptpqb/KiI9jscDb7IC+j0UaS2vwENvN3DFZEdFKpDUD566x7CTGccBYzwqvNW5tUr1Hr1xPKeEGioMG4kRm3MpQBv5IoftHOYacsbS8jvsAGoMxgxN1RAqt5ouXyXiavyESS2nuxwJQGbCSU9z5ixT1QAqszmcWITKmk3ALaR3HM2HtaWpEgb2kC8wiVqM+KC2HF3YQ+BuW9I8yYmzJQhVOb/zGLc6mFgKXtv0zl0N47wmAcygCwdiozDjF5RQup7BPK4RSUJZfZLB4feEsI5Z04l51OCHjMeUuZGZGQryJIkpClxzC82rywB/jbJlVgPaG8kaTBdQetwBaGsq2Ix9ib5uVSMGV9xIi5owVQDonL0rlOxdqv2azzlaQuK44ZByxcKtiKeJC/tV+z2V/XulLFKazIyy0LPRULoUxZ4iTpURrxnMfcD9oDSrvk8vZWnmNyUmVUyYQggQkaRg8eUDa1ZHBZ7GSX+4WYcLthOtI4rKRKJ0kuhDI7OVCb6fXg+KZVAEM5aFi9Lhm3MJTBP31WUqUbXK6zjm4pM3l8yp9AkqTsGoeZICC60qIZDFYEmw1f4SzWQRdG5y+aiVPYgaHMjM+H9m5XWjQo1H2+i1NYlJELHAsuEJOV51nR6cAYJ0lS8JlPKO9ghDCZodQrjBP/db4SttnWkvV1fMyhmJgjMTH72YxQH1AO3GZ3s/DnplYAQ/l1YW3Q/dzCUCaBT5mVULrAIUC0pkUzKQMZWspuoxhYysm1pD4rjhmfT7kp6GfqgotmQUCZD+tcaHdTljK4GLhEKNMu9NHaVHuJzfo4i3K+kGTrZQ6GMk2c7RTFUA4aVq9Lxq0MZZJUPopjseIuP3fPvhDf40UyY64Bxy7lU2bGQYevrTIlksV7Dq6V3YtlxaVTXmDS1nInKaWA8inTp5cFD2WS5lMmtFkfs6IpA3k1oEwIPmOyv6b8GIQy/3w0k8kTTAD3RQKTk9YBoOTvh8TWVcmvcsGc1NXyy9xzBE0t/KJa03bi2bboC4by68LaoPu5taEMLoKVpiUc4bBCGDtCmOxDvMsFbgap78Uw49MeJcUdimaHsWO+dk20IF2zL8CshuhTGZBS/gCHzvoFPmVmvMtSBuinzb74mg9ZuBpQJomOe7y9LPbe6BhuSn5HbdohFvtIRovTxP+MzQxlxz9S+muz8mYM46MsCF/iOc3tLklhMxMEC33lqIM4slEKrAWUN6ovuN5VUWCrQ9m/CADKvHmHr/+MeAtWYAMVwFDeQPE3Z9UYypvzuOBWvS4KYCi/Lkc66H5iKActFc6IFVgDBTCU10DUrV3k9oXy1j4uuPWviwIYyq/LkQ66nxjKQUuFM2IF1kCBDYTy2DihGbavQZ9wkStSAEN5RfLhnbECK1RgQ6CcUy7/5yNZ//Te/X967/4/H8kSd7jn86+wM3j31VAAQ3k1VMRlYAWWq8CGQPnNwy4iQy5fyQ5uDViwKsASVpolOvj8LnDPwPyM0uWqNL8fbMPvduyYfzHic03gvgQ42wpF5vfZYjEM5S12wHBzt5kCGwJlcYcevhCUO1XmTpV5EW29lmoJvNJsbTIbLA22+lD2eRMsYRu1ue4a2+JzYTGUFxmHeDNWYE0VWBUoDw8PazQahULR2dkpFAr9NZjutYA4RlCOTvz1n967v4jJ7AFltNKskc8LjU7rclfbmxETyvvxWhwrZAczjAPWNweLLKblX+NFR7KYLA7vDnXPLUmaqtJ4BzlssPJtTMIdau1GpyxtPyfl0b0kXnzcQQ77SIrAvaaYq3SvNrjSkYGMIqRN9ktSTCQblH8o4V7rgvUY3G3djJ90KA8PD2+p9ZQ3o564TViBpSmwnlCG5KXj2APK0Ym/Bmq9FxDBomBgES5C8Jlr3VqSJJU3o1kJAhtpyvqIiSxlBjM6pQwskUhIUjhMHrgnVp8fz4q+LKFYaRIkRbCSymykU5axn8FO4JuoJcX5p1hobS9Xw7za4EpHLHZHiKoUdjgvXw2sZ1tFEic8qdK9PFmgPm6CbRjKm+Ag4Ca8xgpsCJR3/jnv/O26K9ktV7Jbbj6Taoft8Lrf0qBMW2mWEKewIfWcyoyD7KQKglwIZbiqLTjOE3ywJriatD3nMQ9mKN33/dcmU0uGASgzE0oBSanFHaNZ5yph3PUOoLxjQfgdK0VMrXWz0Kdcm8yaX48XLB7JSqpaUNKm/YKhvGkPDW7Ya6HA+kP5zcNZ2mH7Lb4MQvmLO3XMY3nQZA4Cyn5WmnW2XI6klmzsSouOSKFW0lpgKbueEQFMZdeDGsDTJNyLtMwvrgugPE9P2bVopg8o+/Ipuw1k9xU/gn+KwQh1L9IbwWaxWAlgSbItENYDykGvjoQzYgVeOwVGAwYzFUZGRkxUAE+WNxoNBoNerx8cHNRqtf39/Uqlsre3t7Ozs6mpqaamJoBPGbovohN/vZLd4u3E+Kf37gcBZV9ApEAnS49mnuLXpkZzXE94WATKwFKmPffSZdiuGpTJ2uSt+mRhBGWtVot9ylvgVxQ3cZspsFqWslarVSqVgS/0QRYHgHJOuTyQvP78uXAf8FRMNic8Gi4tC90XcQ8oPzJ6mhrNUiZN+TzkU9YLEiLYKVUE5VNeFUuZBB6ViAQBNQOb0PEvf+b1hMxAXd3IbRDKSqUSQ3kjDwOu+7VVYD2hTJIknPqGLOWaTj18BaV/YCgDJzKDcTDD9aAdsNx5PJhs8Rlf5xPKYPZFBu8gh7OXw9kbk/SIeqrl6lnKJJp9EcFm741LKXAvMh5UVzcyE4byRqqP68YKBIbyb7/9Njc3Nzs7C58nD58tTxDE1NSUw+EYHx+3Wq1ms3l4eBhaylKpNID7AqmNoAydGG8ezkKbVhAhBJ+x4x4tfArlCop7bXcVCoVSqXRJljIaRW8MDg7qdLq+vj65XN7R0VFfX19eXm42mw0GQzCzJl9b0XHHsQJIAXQ6+YtAKEMu06E8OTk5Pj4+Nja2DCiLO/Topr43D2ct4rVAbQ0YsUkux0QkCLyetRZwJ7zRhwLeUB4bGxsfH5+cnJyamiIIAg4Dp9M5S4W5uTk0eDCUfQiKk7ACS1IAnU7+IgGgPDExMTY2Njo6ajQal2QpwxaOjRNj467JZ0tqs1dmbRaXxYqISxPjx415abP0BDqUjUbj6Ojo2NjYxMQEhvLStcR7YAWWroA/FqN0OpSdTufMzAxBhcnJSTqUdTqdSqUK0n2x9GbiPdZPAQhllUql0+k8oAwP/czMDHRnYUt5/Y4Krun1UQDB118EQ/n1GQywpxjKr9sRx/3dXAr4YzFK94by9PQ0QRDYUt5cB3L1WhMYytPT09hSXj2xcUlYAS8FEHz9RQJD2WazWSwWk8k0ODjY19cnk8mCmX3h1QqcsIkUEAqFMpmsr69vcHDQZDJZLBabzQZ9ygRBYChvokOFm7ItFfDHYpTuD8pwVhyG8vYbFT6h7HA44NQLDOXtd8RxjzaXAgi+/iIeUHY6ndB9gaAMpyoPDQ319/d3dXVhS3lzHeClt0YoFHZ1dfX39w8NDcF1O202Gx3K8CrfppwSNzckyXuYLZBa51C/Hd1l2aIB9HUFkSljd105vyA7MzMzO69QUCMdcqygtMC7zhmbnxVIBgNngludxjZBQU4uv3EomNweecwt/Oycwga9e2Euj83ur84RlcoM8hBKYXZZt+9+09psHZAbp9w7488lKuCPxfR0eJEd3UIyTQUIZbvdDqcqYygvUfjNm90DymNjY3a7HUIZHnr61IvZ2Vn6UNnoecoAygUFT3PLe9HDH1cJysSQ5Fl2oUg6RD3KgLANdb8qzH7WMDSzNgeSBrhFKpizthdni/oXoarvQpxDkmfC7h5RoVgbeP8hSUG5gpq+6iQIwm9e5xThnCPJOXNzcYnU6rtOnLqoAvQzyl/cH5Tp948YDAa1Wt3b24st5UU13+QZhEJhb2+vWq02GAxms5l+58hWgHJBSXtfM79AqHItX02DstOqqhMUPi0oLCzkC9uHHJTd91IO7T5zc2FmnmSIMrGdA6JcgRRxnSRJa0dJZnEzZSy6D9+cVavQWilSOXTNwuJCUG5hiahzCKTNmZv5hZIuqVhYLiguLCiVqKniiOF2mLPgaaGgTmWnqvO1+7ylTOjbRSUFoPBnAonCupCIdnllYW7mw+yCwpJmIzljltcICp+CdhSWSVRUXmDbvmyWigpzS9vN838gQC+IflHhKzUxoxUXClXz1i9hlIlKnubm5uYWvmzWOkhzpyA362F2XiG/cchlKU+phDn8ZvSoIEs7P1eocsA22+WiguyfM3Of8sU93R7ZSnKEKmxBu0eQv09/IKane0AZeTAQlEdHR4eHhwcGBuRyOYayP6m3SrpQKJTL5QMDA8PDw/DOEXg7H7zK5+G72HyWckGJ1EoYGwoLXlEPGCDnoWxu5ueWSc3AtiWMzRRG7N2CPGgl2qWCEkFpCQTNUF0Bv41u6Tm6yzL5HfQU2tGckJfn8hv0EM9q8dNc8QBBzpnb+ZkFIpUDcJBQVeYWgqLt0tJcIVwFxWmV14ikIyTpe3c3lB0qYW6heIBCpl0uLOA3G2lVU/Rv5+eKwQNynMbGwtyX3XaAbae5oyS7pN1Kks5+YWYOv0E3D133/g55eaFk0Al2bCgUdLl+g5w6cUGhWA2yE1pJYW6liqA0hJay231BqEW5/BYXlc0t/NxXaiey7p1qYTa0lJ3qV7mFDUb4Q2Lt4OeK4EFxNwF/+lKADl9/ceRWpnsw0Kw4m80GoQxv6hPisPUVQAtfjI6Oeky98PBd0O+x/u233zaB+wJAmSSJIUlhgVhHkAjKc+bmZ7S/+XapIEeoIqztJYUNRpKckgtLmtUdAkGXgwQOASpx/oSxthdnlvd6cw3kIPqE2cXtyIs9JCnIlQxRUJ6vDmBLrCVJB6BzpVQ9Ygd/86ngZ3cXlMFWPircqa2BcHftCz4A/Skoe3RwoluQLeieIJ39osxnzR42MtjR2l7CbzDCZpjb+cUuO3pIklvQ4HZPOwkC/IaBH7aFUCadGnEunyoW/CcoEOucpA8ok85BSUGBWDtDUqoWiDULDX1aP3AUKeAPxPR0f1CempqamJiw2WxWq9VkMul0uv7+/u7u7ra2tvr6+uvXr9+/f//nn3/OzMx8/Phxbm5ufn7+kydPqP9W4O0ZFfhUeP78eTEOq6RASRChlAoCgaCsrKy8vLyysrK6urq+vr6tra27u7u/v1+n05lMJqvVCqGMpl5sESiTJDEgLngmGSLcljJwN2dmA4+z65WbK+i2kcbGQoHM7tSI+ZIhp7GBL1IRE93lTyVDC+hBWcpuwxCdPDBi7xLQr32ZWwqzRWonYiWVCVxPA1AmScKsahGXF+dm5xaWNwAHg5/dXVC2dwkys3JRmwvycgskC9fcQhVR/nQJtVYsqGhGBXBuAVDOLl3gioHNNjYWZmZlZ+e4XpmZBdTlPqeqMpvfhhwTMK8PKJNOrbiA8mCMNPOhXL6gTM4ZGwpzRf0EaXZng0Xi96AVoLMYxelQRisTwbXiJiYm0FpxBoNhYGBAqVTKZLK2traffvrpl19+efz4cV5eHkQwn88vKSn59ddf/0EFARXKqPDixYvyIMJLHFagQAUtQGu+igpisbi2trahoaGtrU0mkymVyoGBAehQtlqt4+PjExMTaCkiNOnC+x7rzWQpgxHvUFUW8BvVUjj7Ahh0ud6WmnNQXFgpVzfwRX0EAM0ziVopKnilXsBk6FN+1mCkX9abs8rrGtR2ylLmz7trgaVZBy1l6FUATZmHsvtUdE5oG4qzBV12aAsjS9a9uwvKzj63J8C9o+fnPJQ9/grMW8o+oDyjFT8tkdIehePoEhRQjhxXA2A1Mw67zeH0ZSmTpJNy8piNzYWFjZRLxSeUSdLcxs+uVA018z3+fXh2BH/3owACMT0yRwW6Z5m+XNz4+Ljdbke3kKjVaoVCIZPJ7t69C3H8/Pnz0tLSsrKyFy9eVFRUCIXCqqoqkUj0amGopoI4YKjBYVkK1C4MEirU1dXV19c3NDQ0NTW1tLS0t7fLZDKFQqFWq9FtI3a7fXx8HBEZ3suHRgIcGPShsmncF3B82+XleYWFT11T4oAP4WU3vFLm0LWLGynH6YxaVCgQFJd3gwuDDvlLvkBQ6HL70k8SYqjhWWZBebva4nDOOQmrVlpZkF3SDDDtkAuRT3lCLXpaIAH/5d1eBaoQF5RnhhoEQim8XDjnkL/MBZ5c37vTfMp5/IZBymE9Y5XXibtHFv5e0Cpy+ZSBR8JpbiuB1yp9WsqEUuhxJZOc6BbkgqtwhEZcUCBSAQ8zMdTAzwaXAIGlLJBRSfQpccMNhSUi0TP3FT8alEXZhc0jbvls0pKcgsIC/nyKewv+DEYB+gmG4h5Qnp2dpUPZ4XCgiXHDw8M6nU6tVqtUqkePHvH5/NLS0hcvXlRWVopEourq16+RMgAAAnRJREFU6pqamtraWoSDhoaGxsZG+N5EheaAoQWHpSvQ6hXa2traqdBJBZlM1tXV1dvbq1Kp1Gq1TqeDT4GiT4ZDK3YiIs/Ozm56KJOUc+Bhpmuesnv2RcHTgsJSUbeRIh3pkJdnPnSbutYOfmYmcMX6CHCech6Yp5z7tETYrDLDAkjSoQNzKgqfFRY+KxF3UeXSWEm3lO39DeXPoP+kUFAjp646+tzdDWWSpGZfFFIeDH55oxpO2JhvHr0iOPuCchDyXwIrHuDZh/vCjiA7Xw4kL7jcRxg7RfwCavZFeYOWksLaVQ4cLq9UVjqUgWviYWYxuJwIAoIy6VC9KsjOKSjvgluA82c+G61KHA1GAQRiegSee3QnBlwubnp6Gs5WRp7lkZERo9E4NDSk1WpzcnL+8Y9/VFRUvHr1qqampq6urqGhoaWlpbW1FUIBEkFKBciFrsVCNw7BKdATROjt7ZXL5QqFQqVS9fX19ff3a7XaoaEho9E4MjKCvMlohrJPM3mTXegLZozjPOutgFP9qgDN7ljvyrd+fXQWo7g3lKGxTL+LZHx8HF7xM5vNJpNJr9cXFBRAIkskksbGxtbW1o6Ojs7OTsjf7u7uXirIqaBQKJRBBBUOK1agjwr9VFCr1QMDAxqNZnBwcGhoSK/Xm0wmdBff+Pg4IjK8u9rbTMZQ3von/Rr3gNA3lDwVqfH05OXqjEDsM+LTWEZz4yCX4bL3IyMjT58+raqqqq2tbWpqam9vl0qlXV1dcrlcqVRCLqhpAaJBo9FoAwYdDitTYJAWIIUNVDAajSaTaWRkBE5Mttls8Pre5OQkfREiBGUPFqPR8v8BsY6fcmCot4oAAAAASUVORK5CYII=\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Terminals 🖥️\\n\",\n    \"\\n\",\n    \"To create a new Terminal, select `File > New > Terminal` in the menu:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:9016e117-00db-490f-80c4-fa3ed6766d0f.png)\\n\",\n    \"\\n\",\n    \"The terminal opens in a new browser tab:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:88ef6621-8ef1-4174-939c-3dcd8d9166ef.png)\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"72198f40-0581-4a18-bc23-8b4674351a97.png\": {\n     \"image/png\": \"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8WnDtOz0vaw17i9bbRavMjLOzDt1b9ZuOrdi6tOcxTX7nveNqWFXuU8LyXnO4nK+sXYlXXwe+RuKDkAABEAABEAABEAABEBAFlTOcqjEYKQwUnU8RB5fDiON/DF/egfSSDtfD/PTb4c7gAAIgAAIgAAIgAAIgECUBM4ipD3fRwEjhZFGOTAH7g0jHUAy/ASMdDgXnAUBEAABEAABEAABELiUBGCkg2/LmZg8fPjwyZMnz549e/HixcuXL1+9evX69es3b968ffv23cDxzXscf/fNN98MXPju7du3b968ef369atXr16+fPnixYtnz549efLk4cOHgw/wUZ6Bkb7n2wojfU9QaAYCIAACIAACIAACIHAZCJzJvtSEUSNFjVQdD5HHMNLIEaMDEAABEAABEAABEAABEBg5ARjpIPIzMUGNdBBgJGdgpJFgxU1BAARAAARAAARAAARA4EIJnMm+1ExRI0WNVB0Pkccw0sgRowMQAAEQAAEQAAEQAAEQGDkBGOkg8jMxQY10EGAkZ2CkkWDFTUEABEAABEAABEAABEDgQgmcyb7UTFEjRY1UHQ+RxzDSyBGjAxAAARAAARAAARAAARAYOQEY6SDyMzFBjXQQYCRnYKSRYMVNQQAEQAAEQAAEQAAEQOBCCZzJvtRMUSNFjVQdD5HHMNLIEaMDEAABEAABEAABEAABEBg5gQ820t/97ndffvnl119//c0333z77bd//vOfv//+e9d1/zc4fjjvY2RszsQENdIRvS8w0hGBRjcgAAIgAAIgAAIgAAIgMEICZ7IvNa+///u//8d//Md/+qd/+pd/+Zdf/OIXv/zlLzc3N/9VOf7PeR9q75HGZ2ICI430vejeHEbaZYEIBEAABEAABEAABEAABD4WAmeyL/Whb9269Q//8A93797953/+542NjV/84hf379//pXIUz/tQe480PhMTGGmk70X35jDSLgtEIAACIAACIAACIAACIPCxEDiTfakP/etf/3p3d/fRo0dPnz7d39+v1+sHBwd/+MMfvgyO5yccX33oofYeaXwmJjDSSN+L7s1hpF0WiEAABEAABEAABEAABEDgYyFwJvtSH3pnZ+e3v/3tF1988fz588PDwz/+8Y9ff/31q1evXgdH84TjzYceau+RxmdiAiON9L3o3hxG2mWBCARAAARAAARAAARAAAQ+FgJn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qVRIZQLuborFU5Xj0/bale387yOdkN9HShO6dbNYC5aANh9krRnOpzif0pN3qv5pZydjTlKa4LqVyd/Q6PWy11l7r12WYHzOzntPIc/jAAEQAAEQAAEQAAEQAIGTCXywkf7617/e3d199OjR06dP9/f36/X6wcHBH/7why+Dw3fUjqb6FdSjoyN/Zq/65aVqmRRGCiMdPlovh5EOz+0nnu2UUn/ifXA5CIAACIAACIAACIAACPzsCHywkf7Xf/3X/v5+o9F4/fr127dv//SnPzmO8+23334XHMfK8Wfv+Mtf/vL27du+r4rp230XRgojHf4/EYx0OBecBQEQAAEQAAEQAAEQAIGfM4EPNtJardZoNN6+ffvdd999//33P/zww48//vjXv/61Iw5Dqbx7967RaKhSetK3lQ6q6dAbRnHyTEywjjSKt2DIPTsD669//euPP/74ww8/fP/99999993bt28bjUatVhtyzc/kFGqkP5M3CmmCAAiAAAiAAAiAAAicP4Ez2Zfa/YcZabPZ/PLLLw8PD7/++uvXr1935u6qE3f9GEbawwTfR/oRG6n6/xViEAABEAABEAABEAABEPibIjBiI/3666+/+OKLFy9edMqknS2OegTs3TsYaQ8QGCmM9G/qLyY8LAiAAAiAAAiAAAiAwN8IgREb6cuXL//nf/7n+fPnL1++9MukMNI+98Y60uH/68FIh3PBWRAAARAAARAAARAAARD4ORMYsZE2Go3f//73BwcHh4eHR0dHr1+/hpHCSN/rfyAY6XthQiMQAAEQAAEQAAEQAAEQ+FkR+GAj3djY+NWvflUul3d2dh4+fPib3/zmv7zjv4OjOuzY29t78uRJvV5vNBow0j4X9X9FjXT4/0Aw0uFccBYEQAAEQAAEQAAEQAAEfs4EPthId3Z2fve7333xxRdfffXVy5cvG41G5ytJ/+AdwfeSdn9+9dVXv//97x8/fvzs2TN/x91Xr16dtLnRoK2NDPOZmGCv3RG9LzDSEYFGNyAAAiAAAiAAAiAAAiAwQgJnsi81r8ePH3/55ZevXr3605/+9N1333377bcdtzzlC1329/d9j/U3N4KRDoo3aqTqMOvGMNIuC0QgAAIgAAIgAAIgAAIg8LEQ+GAj7fv2lz//+c/ffPPNn/70p/8bHEPv/MUXX8BIBy1UPQMjHf7/Fox0OBec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\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Command Palette 🎨\\n\",\n    \"\\n\",\n    \"Jupyter Notebook includes a command palette, just like in JupyterLab.\\n\",\n    \"\\n\",\n    \"Hit `Ctrl-Shift-C` or `Accel-Shift-C` to activate it. Or via the menu with `View > Activate Command Palette`:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:72198f40-0581-4a18-bc23-8b4674351a97.png)\\n\",\n    \"\\n\",\n    \"Using the palette is very convenient and can give a significant productivity boost over time!\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"9c47f73c-24f2-4c1a-aa3a-52e231144057.png\": {\n     \"image/png\": \"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\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Themes 🌈\\n\",\n    \"\\n\",\n    \"Since Jupyter Notebook v7 is heavily built on top of JupyterLab, it also has support for a Dark Mode! 🕶️\\n\",\n    \"\\n\",\n    \"Go to `Settings > Theme > JupyterLab Dark` to select the theme:\\n\",\n    \"\\n\",\n    \"![image.png](attachment:9c47f73c-24f2-4c1a-aa3a-52e231144057.png)\\n\",\n    \"\\n\",\n    \"New themes can be installed using the federated extension system. These themes will be compatible with both JupyterLab and Jupyter Notebook.\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"ac1323eb-c6e0-4b7c-80f3-7bf5f84adf98.png\": {\n     \"image/png\": \"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\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Zen Mode 😌\\n\",\n    \"\\n\",\n    \"This is an exclusivity in Jupyter Notebook v7 😎\\n\",\n    \"\\n\",\n    \"Activate the palette and choose `Toggle Zen Mode`. The interface will focus on the notebook and the notebook only!\\n\",\n    \"\\n\",\n    \"![image.png](attachment:ac1323eb-c6e0-4b7c-80f3-7bf5f84adf98.png)\\n\",\n    \"\\n\",\n    \"Press `Escape` to exit, or re-run the `Toggle Zen Mode` command from the palette.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Third Party Extensions 🧩\\n\",\n    \"\\n\",\n    \"Jupyter Notebook v7 supports third-party extensions developed for JupyterLab 3.0+, using the new distribution system. These extensions can be installed via `pip`.\\n\",\n    \"\\n\",\n    \"For example the extension to enable Jupyter Widgets rendering in both JupyterLab and Jupyter Notebook can be installed using the following command (run the cell): \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install ipywidgets\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Now reload the page and resume from here. In the next section we will be able to create and use Jupyter Widgets!\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Widgets\\n\",\n    \"\\n\",\n    \"Now let's instantiate a new widget:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from ipywidgets import IntSlider\\n\",\n    \"\\n\",\n    \"slider = IntSlider()\\n\",\n    \"slider\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"slider\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Rich Display\\n\",\n    \"\\n\",\n    \"Just like in many Jupyter Frontends, Jupyter Notebook supports rich display rendering. For example:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from IPython.display import Latex\\n\",\n    \"\\n\",\n    \"Latex(\\n\",\n    \"    r\\\"\\\"\\\"\\\\begin{eqnarray}\\n\",\n    \"\\\\nabla \\\\times \\\\vec{\\\\mathbf{B}} -\\\\, \\\\frac1c\\\\, \\\\frac{\\\\partial\\\\vec{\\\\mathbf{E}}}{\\\\partial t} & = \\\\frac{4\\\\pi}{c}\\\\vec{\\\\mathbf{j}} \\\\\\\\\\n\",\n    \"\\\\nabla \\\\cdot \\\\vec{\\\\mathbf{E}} & = 4 \\\\pi \\\\rho \\\\\\\\\\n\",\n    \"\\\\nabla \\\\times \\\\vec{\\\\mathbf{E}}\\\\, +\\\\, \\\\frac1c\\\\, \\\\frac{\\\\partial\\\\vec{\\\\mathbf{B}}}{\\\\partial t} & = \\\\vec{\\\\mathbf{0}} \\\\\\\\\\n\",\n    \"\\\\nabla \\\\cdot \\\\vec{\\\\mathbf{B}} & = 0\\n\",\n    \"\\\\end{eqnarray}\\\"\\\"\\\"\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Matplotlib figures:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"x = np.linspace(0, 10, 100)\\n\",\n    \"\\n\",\n    \"plt.plot(x, np.sin(x))\\n\",\n    \"plt.plot(x, np.cos(x))\\n\",\n    \"\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Or even HTML:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from IPython.display import HTML, display\\n\",\n    \"\\n\",\n    \"s = \\\"\\\"\\\"<table>\\n\",\n    \"<tr>\\n\",\n    \"<th>Header 1</th>\\n\",\n    \"<th>Header 2</th>\\n\",\n    \"</tr>\\n\",\n    \"<tr>\\n\",\n    \"<td>row 1, cell 1</td>\\n\",\n    \"<td>row 1, cell 2</td>\\n\",\n    \"</tr>\\n\",\n    \"<tr>\\n\",\n    \"<td>row 2, cell 1</td>\\n\",\n    \"<td>row 2, cell 2</td>\\n\",\n    \"</tr>\\n\",\n    \"</table>\\\"\\\"\\\"\\n\",\n    \"h = HTML(s)\\n\",\n    \"display(h)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## That's it!\\n\",\n    \"\\n\",\n    \"Hope you enjoyed the tour. If you have more question or any other issues, don't hesitate to go to the repository on GitHub!\\n\",\n    \"\\n\",\n    \"https://github.com/jupyter/notebook\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "binder/postBuild",
    "content": "#!/bin/bash\nset -euo pipefail\n\npython -m pip install -e \".[dev,test]\"\njlpm develop\n"
  },
  {
    "path": "buildutils/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/buildutils\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"private\": true,\n  \"description\": \"Jupyter Notebook - Build Utilities\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"watch\": \"tsc -w --listEmittedFiles\"\n  },\n  \"dependencies\": {\n    \"@jupyterlab/buildutils\": \"~4.6.0-alpha.4\",\n    \"commander\": \"^6.2.0\",\n    \"fs-extra\": \"^9.1.0\",\n    \"semver\": \"^7.6.3\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"devDependencies\": {\n    \"@types/fs-extra\": \"^9.0.10\",\n    \"@types/node\": \"^22.13.4\",\n    \"@types/semver\": \"^7.5.8\",\n    \"rimraf\": \"^3.0.2\"\n  }\n}\n"
  },
  {
    "path": "buildutils/src/develop.ts",
    "content": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\nimport commander from 'commander';\n\nimport fs from 'fs-extra';\n\nimport path from 'path';\n\nimport process from 'process';\n\nimport { run } from '@jupyterlab/buildutils';\n\ncommander\n  .description('Setup the repository for develop mode')\n  .option('--overwrite', 'Force linking the notebook schemas')\n  .option('--source', 'The path to the notebook package')\n  .action((options: any) => {\n    const { overwrite } = options;\n    const prefix = run(\n      'python -c \"import sys; print(sys.prefix)\"',\n      {\n        stdio: 'pipe',\n      },\n      true\n    );\n    const source = path.resolve(options.source ?? process.cwd());\n    const sourceDir = path.join(\n      source,\n      'notebook',\n      'schemas',\n      '@jupyter-notebook'\n    );\n    const destDir = path.join(\n      prefix,\n      'share',\n      'jupyter',\n      'lab',\n      'schemas',\n      '@jupyter-notebook'\n    );\n    if (overwrite) {\n      try {\n        fs.removeSync(destDir);\n        console.log('Removed previous destination:', destDir);\n      } catch {\n        console.info('Skip unlink', destDir);\n      }\n    }\n    console.log('Symlinking:', sourceDir, destDir);\n    fs.symlinkSync(sourceDir, destDir, 'dir');\n  });\n\ncommander.parse(process.argv);\n"
  },
  {
    "path": "buildutils/src/ensure-repo.ts",
    "content": "import * as path from 'path';\n\nimport * as fs from 'fs-extra';\n\nimport { writePackageData } from '@jupyterlab/buildutils';\n\n/**\n * Ensure the application package resolutions.\n */\nfunction ensureResolutions(): string[] {\n  const basePath = path.resolve('.');\n  const corePath = path.join(basePath, 'app', 'package.json');\n  const corePackage = fs.readJSONSync(corePath);\n\n  corePackage.resolutions = {};\n\n  const packages = Object.keys(corePackage.dependencies).concat(\n    corePackage.jupyterlab.singletonPackages\n  );\n\n  packages.forEach(async (name) => {\n    let version = '';\n    try {\n      const data = require(`${name}/package.json`);\n      version = data.version;\n    } catch {\n      const modulePath = require.resolve(name);\n      const parentDir = path.dirname(path.dirname(modulePath));\n      const data = require(path.join(parentDir, 'package.json'));\n      version = data.version;\n    }\n    // Insist on a restricted version in the yarn resolution.\n    corePackage.resolutions[name] = `~${version}`;\n  });\n\n  // Write the package.json back to disk.\n  if (writePackageData(corePath, corePackage)) {\n    return ['Updated dev mode'];\n  }\n  return [];\n}\n\nif (require.main === module) {\n  void ensureResolutions();\n}\n"
  },
  {
    "path": "buildutils/src/get-latest-lab-version.ts",
    "content": "import * as fs from 'fs-extra';\nimport * as semver from 'semver';\n\nfunction convertPythonVersion(version: string): string {\n  return version\n    .replace('a', '-alpha')\n    .replace('b', '-beta')\n    .replace('rc', '-rc');\n}\n\nfunction extractVersionFromReleases(\n  releases: any,\n  versionTag: string,\n  currentVersion: string\n): string | null {\n  const npmCurrentVersion = convertPythonVersion(currentVersion);\n  const isCurrentPreRelease = semver.prerelease(npmCurrentVersion) !== null;\n\n  if (versionTag === 'latest') {\n    // Find first version that is newer than current and matches pre-release criteria\n    const release = releases.find((r: any) => {\n      const version = r['tag_name'].substring(1); // Remove 'v' prefix for semver\n      const npmVersion = convertPythonVersion(version);\n      return (\n        (isCurrentPreRelease || !r['prerelease']) &&\n        semver.gte(npmVersion, npmCurrentVersion)\n      );\n    });\n    return release ? release['tag_name'] : null;\n  } else {\n    // Find exact version match\n    const release = releases.find((r: any) => r['tag_name'] === versionTag);\n    return release ? release['tag_name'] : null;\n  }\n}\n\nfunction extractCurrentJupyterLabVersion(): string {\n  const toml = fs.readFileSync('pyproject.toml', 'utf8');\n  const match = toml.match(/jupyterlab>=([^,]+)/);\n  if (!match) {\n    throw new Error('Could not find JupyterLab version in pyproject.toml');\n  }\n  return match[1];\n}\n\nasync function findVersion(versionTag: string): Promise<string> {\n  const url = 'https://api.github.com/repos/jupyterlab/jupyterlab/releases';\n  const response = await fetch(url);\n  if (!response.ok) {\n    const error_message = `Failed to fetch package.json from ${url}. HTTP status code: ${response.status}`;\n    throw new Error(error_message);\n  }\n\n  const currentVersion = extractCurrentJupyterLabVersion();\n\n  const releases: any = await response.json();\n  const version: string | null = extractVersionFromReleases(\n    releases,\n    versionTag,\n    currentVersion\n  );\n  if (version === null) {\n    const error_message = 'Invalid release tag';\n    throw new Error(error_message);\n  }\n  return version.substring(1);\n}\n\nasync function getLatestLabVersion(): Promise<void> {\n  const args: string[] = process.argv.slice(2);\n  if (args.length !== 2 || args[0] !== '--set-version') {\n    console.error('Usage: node script.js --set-version <version>');\n    process.exit(1);\n  }\n  const version_tag: string = args[1];\n\n  try {\n    const result: string = await findVersion(version_tag);\n    console.log(result);\n  } catch (error: any) {\n    console.error('Error:', error.message);\n    process.exit(1);\n  }\n}\n\ngetLatestLabVersion();\n"
  },
  {
    "path": "buildutils/src/release-bump.ts",
    "content": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/**\n * Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/buildutils/src/bumpversion.ts\n */\n\nimport * as utils from '@jupyterlab/buildutils';\n\nimport commander from 'commander';\n\nimport { getPythonVersion, postbump } from './utils';\n\n// Specify the program signature.\ncommander\n  .description('Update the version')\n  .option('--dry-run', 'Dry run')\n  .option('--force', 'Force the upgrade')\n  .option('--skip-commit', 'Whether to skip commit changes')\n  .arguments('<spec>')\n  .action((spec: any, opts: any) => {\n    // Get the previous version.\n    const prev = getPythonVersion();\n    const isFinal = /\\d+\\.\\d+\\.\\d+$/.test(prev);\n\n    // Whether to commit after bumping\n    const commit = opts.skipCommit !== true;\n\n    // for \"next\", determine whether to use \"patch\" or \"build\"\n    if (spec === 'next') {\n      spec = isFinal ? 'patch' : 'build';\n    }\n\n    // For patch, defer to `patch:release` command\n    if (spec === 'patch') {\n      let cmd = 'jlpm run release:patch';\n      if (opts.force) {\n        cmd += ' --force';\n      }\n      if (!commit) {\n        cmd += ' --skip-commit';\n      }\n      utils.run(cmd);\n      process.exit(0);\n    }\n\n    // Make sure we have a valid version spec.\n    const options = ['major', 'minor', 'release', 'build'];\n    if (options.indexOf(spec) === -1) {\n      throw new Error(`Version spec must be one of: ${options}`);\n    }\n    if (isFinal && spec === 'build') {\n      throw new Error('Cannot increment a build on a final release');\n    }\n\n    // Run pre-bump script.\n    utils.prebump();\n\n    // Handle dry runs.\n    if (opts.dryRun) {\n      return;\n    }\n\n    // If this is a major release during the alpha cycle, bump\n    // just the Python version.\n    if (prev.indexOf('a') !== -1 && spec === 'major') {\n      // Bump the version.\n      utils.run(`hatch version ${spec}`);\n\n      // Run the post-bump script.\n      postbump(commit);\n\n      return;\n    }\n\n    // Determine the version spec to use for lerna.\n    let lernaVersion = 'preminor';\n    if (spec === 'build') {\n      lernaVersion = 'prerelease';\n      // a -> b\n    } else if (spec === 'release' && prev.indexOf('a') !== -1) {\n      lernaVersion = 'prerelease --preid=beta';\n      // b -> rc\n    } else if (spec === 'release' && prev.indexOf('b') !== -1) {\n      lernaVersion = 'prerelease --preid=rc';\n      // rc -> final\n    } else if (spec === 'release' && prev.indexOf('rc') !== -1) {\n      lernaVersion = 'patch';\n    }\n    if (lernaVersion === 'preminor') {\n      lernaVersion += ' --preid=alpha';\n    }\n\n    let cmd = `jlpm run lerna version --force-publish --no-push --no-git-tag-version ${lernaVersion}`;\n    if (opts.force) {\n      cmd += ' --yes';\n    }\n    // For a preminor release, we bump 10 minor versions so that we do\n    // not conflict with versions during minor releases of the top\n    // level package.\n    if (lernaVersion === 'preminor') {\n      for (let i = 0; i < 10; i++) {\n        utils.run(cmd);\n      }\n    } else {\n      utils.run(cmd);\n    }\n\n    // Bump the version.\n    let pySpec = spec;\n    if (spec === 'release') {\n      if (prev.indexOf('a') !== -1) {\n        pySpec = 'beta';\n      } else if (prev.indexOf('b') !== -1) {\n        pySpec = 'rc';\n      } else if (prev.indexOf('rc') !== -1) {\n        pySpec = 'release';\n      } else {\n        pySpec = 'alpha';\n      }\n    } else if (spec === 'build') {\n      if (prev.indexOf('a') !== -1) {\n        pySpec = 'a';\n      } else if (prev.indexOf('b') !== -1) {\n        pySpec = 'b';\n      } else if (prev.indexOf('rc') !== -1) {\n        pySpec = 'rc';\n      }\n    } else if (spec === 'major' || spec === 'minor') {\n      if (prev.indexOf('a') !== -1) {\n        pySpec = `${spec},beta`;\n      } else if (prev.indexOf('b') !== -1) {\n        pySpec = `${spec},rc`;\n      } else if (prev.indexOf('rc') !== -1) {\n        pySpec = `${spec},release`;\n      } else {\n        pySpec = `${spec},alpha`;\n      }\n    }\n    utils.run(`hatch version ${pySpec}`);\n\n    // Run the post-bump script.\n    postbump(commit);\n  });\n\ncommander.parse(process.argv);\n"
  },
  {
    "path": "buildutils/src/release-patch.ts",
    "content": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/**\n * Inspired by: https://github.com/jupyterlab/jupyterlab/blob/master/buildutils/src/patch-release.ts\n */\n\nimport * as utils from '@jupyterlab/buildutils';\n\nimport commander from 'commander';\n\nimport { getPythonVersion, postbump } from './utils';\n\n// Specify the program signature.\ncommander\n  .description('Create a patch release')\n  .option('--force', 'Force the upgrade')\n  .option('--skip-commit', 'Whether to skip commit changes')\n  .action((options: any) => {\n    // Make sure we can patch release.\n    const pyVersion = getPythonVersion();\n    if (\n      pyVersion.includes('a') ||\n      pyVersion.includes('b') ||\n      pyVersion.includes('rc')\n    ) {\n      throw new Error('Can only make a patch release from a final version');\n    }\n\n    // Run pre-bump actions.\n    utils.prebump();\n\n    // Patch the python version\n    utils.run('hatch version patch');\n\n    // Version the changed\n    let cmd =\n      'jlpm run lerna version patch --no-push --force-publish --no-git-tag-version';\n    if (options.force) {\n      cmd += ' --yes';\n    }\n    utils.run(cmd);\n\n    // Whether to commit after bumping\n    const commit = options.skipCommit !== true;\n    postbump(commit);\n  });\n\ncommander.parse(process.argv);\n"
  },
  {
    "path": "buildutils/src/upgrade-lab-dependencies.ts",
    "content": "import fs from 'fs';\nimport path from 'path';\n\nconst PACKAGE_JSON_PATHS: string[] = [\n  'app/package.json',\n  'buildutils/package.json',\n  'package.json',\n  'packages/application-extension/package.json',\n  'packages/application/package.json',\n  'packages/console-extension/package.json',\n  'packages/docmanager-extension/package.json',\n  'packages/documentsearch-extension/package.json',\n  'packages/help-extension/package.json',\n  'packages/lab-extension/package.json',\n  'packages/notebook-extension/package.json',\n  'packages/terminal-extension/package.json',\n  'packages/tree-extension/package.json',\n  'packages/tree/package.json',\n  'packages/ui-components/package.json',\n  'ui-tests/package.json',\n];\n\nconst DEPENDENCY_GROUP = '@jupyterlab';\n\ninterface IVersion {\n  major: number;\n  minor: number;\n  patch: number;\n  preRelease?: string;\n}\n\nfunction parseVersion(version: string): IVersion {\n  const match = version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(?:(a|b|rc)(\\d+))?$/);\n  if (!match) {\n    throw new Error(`Invalid version format: ${version}`);\n  }\n\n  const [, major, minor, patch, type, preVersion] = match;\n  const baseVersion = {\n    major: parseInt(major, 10),\n    minor: parseInt(minor, 10),\n    patch: parseInt(patch, 10),\n  };\n\n  if (type && preVersion) {\n    return {\n      ...baseVersion,\n      preRelease: `${type}${preVersion}`,\n    };\n  }\n\n  return baseVersion;\n}\n\nfunction getVersionRange(version: IVersion): string {\n  const baseVersion = `${version.major}.${version.minor}.${version.patch}${\n    version.preRelease ?? ''\n  }`;\n  return `>=${baseVersion},<${version.major}.${version.minor + 1}`;\n}\n\nfunction updateVersionInFile(\n  filePath: string,\n  pattern: RegExp,\n  version: IVersion\n): void {\n  const content = fs.readFileSync(filePath, 'utf-8');\n  const versionRange = getVersionRange(version);\n  const updatedContent = content.replace(pattern, `$1${versionRange}`);\n  fs.writeFileSync(filePath, updatedContent);\n}\n\nasync function updatePackageJson(newVersion: string): Promise<void> {\n  const url = `https://raw.githubusercontent.com/jupyterlab/jupyterlab/v${newVersion}/jupyterlab/staging/package.json`;\n  const response = await fetch(url);\n\n  if (!response.ok) {\n    const errorMessage = `Failed to fetch package.json from ${url}. HTTP status code: ${response.status}`;\n    throw new Error(errorMessage);\n  }\n\n  // fetch the new galata version\n  const galataUrl = `https://raw.githubusercontent.com/jupyterlab/jupyterlab/v${newVersion}/galata/package.json`;\n  const galataResponse = await fetch(galataUrl);\n  if (!galataResponse.ok) {\n    const errorMessage = `Failed to fetch galata/package.json from ${galataUrl}. HTTP status code: ${galataResponse.status}`;\n    throw new Error(errorMessage);\n  }\n\n  const newPackageJson = await response.json();\n  const galataPackageJson = await galataResponse.json();\n\n  for (const packageJsonPath of PACKAGE_JSON_PATHS) {\n    const filePath: string = path.resolve(packageJsonPath);\n    const existingPackageJson = JSON.parse(fs.readFileSync(filePath, 'utf-8'));\n\n    const newDependencies = {\n      ...newPackageJson.devDependencies,\n      ...newPackageJson.resolutions,\n      [galataPackageJson.name]: galataPackageJson.version,\n    };\n\n    updateDependencyVersion(existingPackageJson, newDependencies);\n\n    fs.writeFileSync(\n      filePath,\n      JSON.stringify(existingPackageJson, null, 2) + '\\n'\n    );\n  }\n}\n\nfunction updateDependencyVersion(existingJson: any, newJson: any): void {\n  if (!existingJson) {\n    return;\n  }\n\n  const sectionPaths: string[] = [\n    'resolutions',\n    'dependencies',\n    'devDependencies',\n  ];\n\n  for (const section of sectionPaths) {\n    if (!existingJson[section]) {\n      continue;\n    }\n\n    const updated = existingJson[section];\n\n    for (const [pkg, version] of Object.entries<string>(\n      existingJson[section]\n    )) {\n      if (pkg.startsWith(DEPENDENCY_GROUP) && pkg in newJson) {\n        if (version[0] === '^' || version[0] === '~') {\n          updated[pkg] = version[0] + absoluteVersion(newJson[pkg]);\n        } else {\n          updated[pkg] = absoluteVersion(newJson[pkg]);\n        }\n      }\n    }\n  }\n}\n\nfunction absoluteVersion(version: string): string {\n  if (version.length > 0 && (version[0] === '^' || version[0] === '~')) {\n    return version.substring(1);\n  }\n  return version;\n}\n\nconst versionPattern = /(jupyterlab)(>=[\\d.]+(?:[a|b|rc]\\d+)?,<[\\d.]+)/g;\n\nconst FILES_TO_UPDATE = ['pyproject.toml', '.pre-commit-config.yaml'];\n\nasync function upgradeLabDependencies(): Promise<void> {\n  const args: string[] = process.argv.slice(2);\n\n  if (args.length < 2) {\n    throw new Error('Please provide the set-version flag and version');\n  }\n\n  const version = parseVersion(args[1]);\n  await updatePackageJson(args[1]); // Keep original string version for package.json\n\n  for (const file of FILES_TO_UPDATE) {\n    updateVersionInFile(path.resolve(file), versionPattern, version);\n  }\n}\n\nupgradeLabDependencies();\n"
  },
  {
    "path": "buildutils/src/utils.ts",
    "content": "import { run } from '@jupyterlab/buildutils';\n\n/**\n * Get the current version of notebook\n */\nexport function getPythonVersion(): string {\n  const cmd = 'hatch version';\n  const lines = run(cmd, { stdio: 'pipe' }, true).split('\\n');\n  return lines[lines.length - 1];\n}\n\nexport function postbump(commit = true): void {\n  // run the integrity\n  run('jlpm integrity');\n\n  const newPyVersion = getPythonVersion();\n\n  // Commit changes.\n  if (commit) {\n    run(`git commit -am \"Release ${newPyVersion}\"`);\n    run(`git tag ${newPyVersion}`);\n  }\n}\n"
  },
  {
    "path": "buildutils/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\",\n    \"module\": \"commonjs\"\n  },\n  \"include\": [\"src/*\"],\n  \"references\": []\n}\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nPAPER         =\nBUILDDIR      = build\n\n# User-friendly check for sphinx-build\nifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)\n$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)\nendif\n\n# Internal variables.\nPAPEROPT_a4     = -D latex_paper_size=a4\nPAPEROPT_letter = -D latex_paper_size=letter\nALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source\n# the i18n builder cannot share the environment and doctrees with the others\nI18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source\n\n.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage spelling gettext\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  html       to make standalone HTML files\"\n\t@echo \"  dirhtml    to make HTML files named index.html in directories\"\n\t@echo \"  singlehtml to make a single large HTML file\"\n\t@echo \"  pickle     to make pickle files\"\n\t@echo \"  json       to make JSON files\"\n\t@echo \"  htmlhelp   to make HTML files and a HTML help project\"\n\t@echo \"  qthelp     to make HTML files and a qthelp project\"\n\t@echo \"  applehelp  to make an Apple Help Book\"\n\t@echo \"  devhelp    to make HTML files and a Devhelp project\"\n\t@echo \"  epub       to make an epub\"\n\t@echo \"  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\"\n\t@echo \"  latexpdf   to make LaTeX files and run them through pdflatex\"\n\t@echo \"  latexpdfja to make LaTeX files and run them through platex/dvipdfmx\"\n\t@echo \"  text       to make text files\"\n\t@echo \"  man        to make manual pages\"\n\t@echo \"  texinfo    to make Texinfo files\"\n\t@echo \"  info       to make Texinfo files and run them through makeinfo\"\n\t@echo \"  gettext    to make PO message catalogs\"\n\t@echo \"  changes    to make an overview of all changed/added/deprecated items\"\n\t@echo \"  xml        to make Docutils-native XML files\"\n\t@echo \"  pseudoxml  to make pseudoxml-XML files for display purposes\"\n\t@echo \"  linkcheck  to check all external links for integrity\"\n\t@echo \"  doctest    to run all doctests embedded in the documentation (if enabled)\"\n\t@echo \"  coverage   to run coverage check of the documentation (if enabled)\"\n\t@echo \"  spelling   to spell check the documentation\"\n\nclean:\n\trm -rf $(BUILDDIR)/*\n\trm -rf source/config.rst\n\nhtml:\n\t$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/html.\"\n\ndirhtml:\n\t$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/dirhtml.\"\n\nsinglehtml:\n\t$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml\n\t@echo\n\t@echo \"Build finished. The HTML page is in $(BUILDDIR)/singlehtml.\"\n\npickle:\n\t$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle\n\t@echo\n\t@echo \"Build finished; now you can process the pickle files.\"\n\njson:\n\t$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json\n\t@echo\n\t@echo \"Build finished; now you can process the JSON files.\"\n\nhtmlhelp:\n\t$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp\n\t@echo\n\t@echo \"Build finished; now you can run HTML Help Workshop with the\" \\\n\t      \".hhp project file in $(BUILDDIR)/htmlhelp.\"\n\nqthelp:\n\t$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp\n\t@echo\n\t@echo \"Build finished; now you can run \"qcollectiongenerator\" with the\" \\\n\t      \".qhcp project file in $(BUILDDIR)/qthelp, like this:\"\n\t@echo \"# qcollectiongenerator $(BUILDDIR)/qthelp/JupyterNotebook.qhcp\"\n\t@echo \"To view the help file:\"\n\t@echo \"# assistant -collectionFile $(BUILDDIR)/qthelp/JupyterNotebook.qhc\"\n\napplehelp:\n\t$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp\n\t@echo\n\t@echo \"Build finished. The help book is in $(BUILDDIR)/applehelp.\"\n\t@echo \"N.B. You won't be able to view it unless you put it in\" \\\n\t      \"~/Library/Documentation/Help or install it in your application\" \\\n\t      \"bundle.\"\n\ndevhelp:\n\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp\n\t@echo\n\t@echo \"Build finished.\"\n\t@echo \"To view the help file:\"\n\t@echo \"# mkdir -p $$HOME/.local/share/devhelp/JupyterNotebook\"\n\t@echo \"# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/JupyterNotebook\"\n\t@echo \"# devhelp\"\n\nepub:\n\t$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub\n\t@echo\n\t@echo \"Build finished. The epub file is in $(BUILDDIR)/epub.\"\n\nlatex:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo\n\t@echo \"Build finished; the LaTeX files are in $(BUILDDIR)/latex.\"\n\t@echo \"Run \\`make' in that directory to run these through (pdf)latex\" \\\n\t      \"(use \\`make latexpdf' here to do that automatically).\"\n\nlatexpdf:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through pdflatex...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\nlatexpdfja:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through platex and dvipdfmx...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\ntext:\n\t$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text\n\t@echo\n\t@echo \"Build finished. The text files are in $(BUILDDIR)/text.\"\n\nman:\n\t$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man\n\t@echo\n\t@echo \"Build finished. The manual pages are in $(BUILDDIR)/man.\"\n\ntexinfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo\n\t@echo \"Build finished. The Texinfo files are in $(BUILDDIR)/texinfo.\"\n\t@echo \"Run \\`make' in that directory to run these through makeinfo\" \\\n\t      \"(use \\`make info' here to do that automatically).\"\n\ninfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo \"Running Texinfo files through makeinfo...\"\n\tmake -C $(BUILDDIR)/texinfo info\n\t@echo \"makeinfo finished; the Info files are in $(BUILDDIR)/texinfo.\"\n\ngettext:\n\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale\n\t@echo\n\t@echo \"Build finished. The message catalogs are in $(BUILDDIR)/locale.\"\n\nchanges:\n\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes\n\t@echo\n\t@echo \"The overview file is in $(BUILDDIR)/changes.\"\n\nlinkcheck:\n\t$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck\n\t@echo\n\t@echo \"Link check complete; look for any errors in the above output \" \\\n\t      \"or in $(BUILDDIR)/linkcheck/output.txt.\"\n\nspelling:\n\t$(SPHINXBUILD) -b spelling $(ALLSPHINXOPTS) $(BUILDDIR)/spelling\n\t@echo \"Spell check complete; look for any errors in the above output \" \\\n\t\t  \"or in $(BUILDDIR)/spelling/output.txt.\"\n\ndoctest:\n\t$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest\n\t@echo \"Testing of doctests in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/doctest/output.txt.\"\n\ncoverage:\n\t$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage\n\t@echo \"Testing of coverage in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/coverage/python.txt.\"\n\nxml:\n\t$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml\n\t@echo\n\t@echo \"Build finished. The XML files are in $(BUILDDIR)/xml.\"\n\npseudoxml:\n\t$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml\n\t@echo\n\t@echo \"Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml.\"\n"
  },
  {
    "path": "docs/jsdoc_config.json",
    "content": "{\n  \"markdown\": {\n    \"parser\": \"gfm\"\n  },\n  \"plugins\": [\"plugins/markdown\", \"jsdoc_plugin.js\"],\n  \"source\": {\n    \"include\": [\"../notebook/static/notebook/js/notebook.js\"]\n  },\n  \"tags\": {\n    \"allowUnknownTags\": true\n  },\n  \"templates\": {\n    \"cleverLinks\": false,\n    \"monospaceLinks\": false\n  }\n}\n"
  },
  {
    "path": "docs/jsdoc_plugin.js",
    "content": "exports.handlers = {\n  newDoclet: function (e) {\n    // e.doclet will refer to the newly created doclet\n    // you can read and modify properties of that doclet if you wish\n    if (typeof e.doclet.name === 'string') {\n      if (e.doclet.name[0] === '_') {\n        console.log(\n          'Private method \"' + e.doclet.longname + '\" not documented.'\n        );\n        e.doclet.memberof = '<anonymous>';\n      }\n    }\n  },\n};\n"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\nset BUILDDIR=build\r\nset ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source\r\nset I18NSPHINXOPTS=%SPHINXOPTS% source\r\nif NOT \"%PAPER%\" == \"\" (\r\n\tset ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%\r\n\tset I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%\r\n)\r\n\r\nif \"%1\" == \"\" goto help\r\n\r\nif \"%1\" == \"help\" (\r\n\t:help\r\n\techo.Please use `make ^<target^>` where ^<target^> is one of\r\n\techo.  html       to make standalone HTML files\r\n\techo.  dirhtml    to make HTML files named index.html in directories\r\n\techo.  singlehtml to make a single large HTML file\r\n\techo.  pickle     to make pickle files\r\n\techo.  json       to make JSON files\r\n\techo.  htmlhelp   to make HTML files and a HTML help project\r\n\techo.  qthelp     to make HTML files and a qthelp project\r\n\techo.  devhelp    to make HTML files and a Devhelp project\r\n\techo.  epub       to make an epub\r\n\techo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\r\n\techo.  text       to make text files\r\n\techo.  man        to make manual pages\r\n\techo.  texinfo    to make Texinfo files\r\n\techo.  gettext    to make PO message catalogs\r\n\techo.  changes    to make an overview over all changed/added/deprecated items\r\n\techo.  xml        to make Docutils-native XML files\r\n\techo.  pseudoxml  to make pseudoxml-XML files for display purposes\r\n\techo.  linkcheck  to check all external links for integrity\r\n\techo.  doctest    to run all doctests embedded in the documentation if enabled\r\n\techo.  coverage   to run coverage check of the documentation if enabled\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"clean\" (\r\n\tfor /d %%i in (%BUILDDIR%\\*) do rmdir /q /s %%i\r\n\tdel /q /s %BUILDDIR%\\*\r\n\tgoto end\r\n)\r\n\r\n\r\nREM Check if sphinx-build is available and fallback to Python version if any\r\n%SPHINXBUILD% 2> nul\r\nif errorlevel 9009 goto sphinx_python\r\ngoto sphinx_ok\r\n\r\n:sphinx_python\r\n\r\nset SPHINXBUILD=python -m sphinx.__init__\r\n%SPHINXBUILD% 2> nul\r\nif errorlevel 9009 (\r\n\techo.\r\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\r\n\techo.installed, then set the SPHINXBUILD environment variable to point\r\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\r\n\techo.may add the Sphinx directory to PATH.\r\n\techo.\r\n\techo.If you don't have Sphinx installed, grab it from\r\n\techo.http://sphinx-doc.org/\r\n\texit /b 1\r\n)\r\n\r\n:sphinx_ok\r\n\r\n\r\nif \"%1\" == \"html\" (\r\n\t%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The HTML pages are in %BUILDDIR%/html.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"dirhtml\" (\r\n\t%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"singlehtml\" (\r\n\t%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"pickle\" (\r\n\t%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished; now you can process the pickle files.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"json\" (\r\n\t%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished; now you can process the JSON files.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"htmlhelp\" (\r\n\t%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished; now you can run HTML Help Workshop with the ^\r\n.hhp project file in %BUILDDIR%/htmlhelp.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"qthelp\" (\r\n\t%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished; now you can run \"qcollectiongenerator\" with the ^\r\n.qhcp project file in %BUILDDIR%/qthelp, like this:\r\n\techo.^> qcollectiongenerator %BUILDDIR%\\qthelp\\JupyterNotebook.qhcp\r\n\techo.To view the help file:\r\n\techo.^> assistant -collectionFile %BUILDDIR%\\qthelp\\JupyterNotebook.ghc\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"devhelp\" (\r\n\t%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"epub\" (\r\n\t%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The epub file is in %BUILDDIR%/epub.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"latex\" (\r\n\t%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished; the LaTeX files are in %BUILDDIR%/latex.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"latexpdf\" (\r\n\t%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex\r\n\tcd %BUILDDIR%/latex\r\n\tmake all-pdf\r\n\tcd %~dp0\r\n\techo.\r\n\techo.Build finished; the PDF files are in %BUILDDIR%/latex.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"latexpdfja\" (\r\n\t%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex\r\n\tcd %BUILDDIR%/latex\r\n\tmake all-pdf-ja\r\n\tcd %~dp0\r\n\techo.\r\n\techo.Build finished; the PDF files are in %BUILDDIR%/latex.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"text\" (\r\n\t%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The text files are in %BUILDDIR%/text.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"man\" (\r\n\t%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The manual pages are in %BUILDDIR%/man.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"texinfo\" (\r\n\t%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"gettext\" (\r\n\t%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The message catalogs are in %BUILDDIR%/locale.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"changes\" (\r\n\t%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.The overview file is in %BUILDDIR%/changes.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"linkcheck\" (\r\n\t%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Link check complete; look for any errors in the above output ^\r\nor in %BUILDDIR%/linkcheck/output.txt.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"doctest\" (\r\n\t%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Testing of doctests in the sources finished, look at the ^\r\nresults in %BUILDDIR%/doctest/output.txt.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"coverage\" (\r\n\t%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Testing of coverage in the sources finished, look at the ^\r\nresults in %BUILDDIR%/coverage/python.txt.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"xml\" (\r\n\t%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The XML files are in %BUILDDIR%/xml.\r\n\tgoto end\r\n)\r\n\r\nif \"%1\" == \"pseudoxml\" (\r\n\t%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml\r\n\tif errorlevel 1 exit /b 1\r\n\techo.\r\n\techo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.\r\n\tgoto end\r\n)\r\n\r\n:end\r\n"
  },
  {
    "path": "docs/resources/Info.plist.example",
    "content": "    # Add this into the info.plist file of an application\n    # and the icns icon in Contents/Resources\n    # then move the application twice :\n    # https://superuser.com/questions/178316/how-to-set-an-icon-for-a-file-type-on-mac\n\n    <key>CFBundleDocumentTypes</key>\n    <array>\n        <dict>\n            <key>CFBundleTypeExtensions</key>\n            <array>\n                <string>ipynb</string>\n            </array>\n            <key>CFBundleTypeIconFile</key>\n            <string>ipynb_mac_icon</string>\n            <key>CFBundleTypeName</key>\n            <string>IPython notebook file</string>\n            <key>CFBundleTypeRole</key>\n            <string>None</string>\n        </dict>\n    <array>\n"
  },
  {
    "path": "docs/resources/generate_icons.sh",
    "content": "#!/bin/bash\nINKSCAPE=inkscape\n\n${INKSCAPE} -z -C --file=ipynb_icon_16x16.svg  --export-png=ipynb_icon_16x16_uncrush.png\n${INKSCAPE} -z -C --file=ipynb_icon_24x24.svg  --export-png=ipynb_icon_24x24_uncrush.png\n${INKSCAPE} -z -C --file=ipynb_icon_32x32.svg  --export-png=ipynb_icon_32x32_uncrush.png\n${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg  --export-png=ipynb_icon_64x64_uncrush.png -w 64 -h 64\n${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg  --export-png=ipynb_icon_128x128_uncrush.png -w 128 -h 128\n${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg  --export-png=ipynb_icon_256x256_uncrush.png -w 256 -h 256\n${INKSCAPE} -z -C --file=ipynb_icon_512x512.svg  --export-png=ipynb_icon_512x512_uncrush.png -w 512 -h 512\n\n\nfor file in `ls *_uncrush.png`; do\n    pngcrush -brute  -l 9 -reduce -rem alla -rem text -rem time -rem gAMA -rem cHRM -rem iCCP -rem sRGB $file `basename $file _uncrush.png`.png\n    rm $file\ndone\n"
  },
  {
    "path": "docs/source/_static/.gitkeep",
    "content": ""
  },
  {
    "path": "docs/source/conf.py",
    "content": "# Jupyter Notebook documentation build configuration file, created by\n# sphinx-quickstart on Mon Apr 13 09:51:11 2015.\n#\n# This file is execfile()d with the current directory set to its\n# containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\nimport logging\nimport os\nimport shutil\nimport sys\n\nlogger = logging.getLogger(__name__)\nlogging.basicConfig()\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n\n# DEBUG for RTD\nlogger.info(\"DEBUG:: sys.path\")\nlogger.info(\"================\")\nfor item in sys.path:\n    logger.info(item)\n\n# add repo root to sys.path\n# here = root/docs/source\nhere = os.path.abspath(os.path.dirname(__file__))\nrepo_root = os.path.dirname(os.path.dirname(here))\nsys.path.insert(0, repo_root)\n\n# Copy the markdown file here\nshutil.copy(os.path.join(repo_root, \"CHANGELOG.md\"), os.path.join(here, \"changelog.md\"))\n\n# Copy the contributing file here\nshutil.copy(os.path.join(repo_root, \"CONTRIBUTING.md\"), os.path.join(here, \"contributing.md\"))\n\nlogger.info(\"repo_root\")\nlogger.info(\"=====================\")\nlogger.info(repo_root)\n\n# DEBUG for post insert on RTD\nlogger.info(\"DEBUG:: Post insert to sys.path\")\nlogger.info(\"===============================\")\nfor item in sys.path:\n    logger.info(item)\n\n# -- General configuration ------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n    \"sphinx.ext.autodoc\",\n    \"sphinx.ext.doctest\",\n    \"sphinx.ext.intersphinx\",\n    \"sphinx.ext.autosummary\",\n    \"sphinx.ext.mathjax\",\n    \"IPython.sphinxext.ipython_console_highlighting\",\n    \"nbsphinx\",\n    \"sphinxcontrib_github_alt\",\n    \"myst_parser\",\n]\n\ntry:\n    import enchant  # noqa: F401\n\n    extensions += [\"sphinxcontrib.spelling\"]\nexcept ImportError:\n    pass\n\nmyst_enable_extensions = [\"html_image\"]\nmyst_update_mathjax = False\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of string:\n# source_suffix = ['.rst', '.md']\n\n# The encoding of source files.\n# source_encoding = 'utf-8-sig'\n\n# The master toctree document.\nmaster_doc = \"index\"\n\n# General information about the project.\nproject = \"Jupyter Notebook\"\ncopyright = \"2015, Jupyter Team, https://jupyter.org\"\nauthor = \"The Jupyter Team\"\n\n# ghissue config\ngithub_project_url = \"https://github.com/jupyter/notebook\"\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n_version_py = os.path.join(here, \"../../notebook/_version.py\")\nversion_ns = {}\nexec(compile(open(_version_py).read(), _version_py, \"exec\"), version_ns)  # noqa: S102, SIM115\n# The short X.Y version.\nversion = \"{}.{}\".format(*version_ns[\"version_info\"][:2])\n# The full version, including alpha/beta/rc tags.\nrelease = version_ns[\"__version__\"]\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = \"en\"\n\n# There are two options for replacing |today|: either, you set today to some\n# non-false value, then it is used:\n# today = ''\n# Else, today_fmt is used as the format for a strftime call.\n# today_fmt = '%B %d, %Y'\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = [\n    \"examples/Notebook/.ipynb_checkpoints\",\n    \"examples/Notebook/nbpackage/*.ipynb\",\n    \"examples/Notebook/nbpackage/nbs/*.ipynb\",\n]\n\n# The reST default role (used for this markup: `text`) to use for all\n# documents.\n# default_role = None\n\n# If true, '()' will be appended to :func: etc. cross-reference text.\n# add_function_parentheses = True\n\n# If true, the current module name will be prepended to all description\n# unit titles (such as .. function::).\n# add_module_names = True\n\n# If true, sectionauthor and moduleauthor directives will be shown in the\n# output. They are ignored by default.\n# show_authors = False\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = \"sphinx\"\n\n# A list of ignored prefixes for module index sorting.\n# modindex_common_prefix = []\n\n# If true, keep warnings as \"system message\" paragraphs in the built documents.\n# keep_warnings = False\n\n# If true, `todo` and `todoList` produce output, else they produce nothing.\ntodo_include_todos = False\n\n\n# -- Options for HTML output ----------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = \"pydata_sphinx_theme\"\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\nhtml_theme_options = {\n    \"header_links_before_dropdown\": 5,\n    \"icon_links\": [\n        {\n            \"name\": \"jupyter.org\",\n            \"url\": \"https://jupyter.org\",\n            \"icon\": \"_static/jupyter_logo.svg\",\n            \"type\": \"local\",\n        },\n        {\n            \"name\": \"GitHub\",\n            \"url\": \"https://github.com/jupyter/notebook\",\n            \"icon\": \"fab fa-github-square\",\n        },\n        {\n            \"name\": \"Discourse\",\n            \"url\": \"https://discourse.jupyter.org/c/notebook/31\",\n            \"icon\": \"fab fa-discourse\",\n        },\n        {\n            \"name\": \"Zulip\",\n            \"url\": \"https://jupyter.zulipchat.com/\",\n            \"icon\": \"_static/zulip-icon-square.svg\",\n            \"type\": \"local\",\n        },\n    ],\n    \"logo\": {\n        \"alt_text\": \"Jupyter\",\n        \"image_light\": \"_static/logo-rectangle.svg\",\n        \"image_dark\": \"_static/logo-rectangle-dark.svg\",\n    },\n    \"use_edit_page_button\": True,\n    \"navigation_with_keys\": False,\n}\n\n# Output for github to be used in links\nhtml_context = {\n    \"github_user\": \"jupyter\",  # Username\n    \"github_repo\": \"notebook\",  # Repo name\n    \"github_version\": \"main\",  # Version\n    \"doc_path\": \"docs/source/\",  # Path in the checkout to the docs root\n}\n\n# Add any paths that contain custom themes here, relative to this directory.\n# html_theme_path = []\n\n# The name for this set of Sphinx documents.  If None, it defaults to\n# \"<project> v<release> documentation\".\n# html_title = None\n\n# A shorter title for the navigation bar.  Default is the same as html_title.\n# html_short_title = None\n\n# The name of an image file (relative to this directory) to place at the top\n# of the sidebar.\nhtml_logo = \"examples/images/jupyter_logo.png\"\n\n# The name of an image file (within the static path) to use as favicon of the\n# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32\n# pixels large.\n# html_favicon = None\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\n# NOTE: Sphinx's 'make html' builder will throw a warning about an unfound\n#       _static directory. Do not remove or comment out html_static_path\n#       since it is needed to properly generate _static in the build directory\nhtml_static_path = [\"_static\"]\n\n# Add any extra paths that contain custom files (such as robots.txt or\n# .htaccess) here, relative to this directory. These files are copied\n# directly to the root of the documentation.\n# html_extra_path = []\n\n# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,\n# using the given strftime format.\n# html_last_updated_fmt = '%b %d, %Y'\n\n# If true, SmartyPants will be used to convert quotes and dashes to\n# typographically correct entities.\n# html_use_smartypants = True\n\n# Custom sidebar templates, maps document names to template names.\n# html_sidebars = {}\n\n# Additional templates that should be rendered to pages, maps page names to\n# template names.\n# html_additional_pages = {}\n\n# If false, no module index is generated.\n# html_domain_indices = True\n\n# If false, no index is generated.\n# html_use_index = True\n\n# If true, the index is split into individual pages for each letter.\n# html_split_index = False\n\n# If true, links to the reST sources are added to the pages.\n# html_show_sourcelink = True\n\n# If true, \"Created using Sphinx\" is shown in the HTML footer. Default is True.\n# html_show_sphinx = True\n\n# If true, \"(C) Copyright ...\" is shown in the HTML footer. Default is True.\n# html_show_copyright = True\n\n# If true, an OpenSearch description file will be output, and all pages will\n# contain a <link> tag referring to it.  The value of this option must be the\n# base URL from which the finished HTML is served.\n# html_use_opensearch = ''\n\n# This is the file name suffix for HTML files (e.g. \".xhtml\").\n# html_file_suffix = None\n\n# Language to be used for generating the HTML full-text search index.\n# Sphinx supports the following languages:\n#   'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'\n#   'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'\n# html_search_language = 'en'\n\n# A dictionary with options for the search language support, empty by default.\n# Now only 'ja' uses this config value\n# html_search_options = {'type': 'default'}\n\n# The name of a javascript file (relative to the configuration directory) that\n# implements a search results scorer. If empty, the default will be used.\n# html_search_scorer = 'scorer.js'\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = \"JupyterNotebookdoc\"\n\n# This will ensure that we use the correctly set environment for canonical URLs\n# Old Read the Docs injections makes it point only to the default version,\n# for instance /en/stable/\nhtml_baseurl = os.environ.get(\"READTHEDOCS_CANONICAL_URL\", \"/\")\n\n# -- Options for LaTeX output ---------------------------------------------\n\nlatex_elements = {}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    (\n        master_doc,\n        \"JupyterNotebook.tex\",\n        \"Jupyter Notebook Documentation\",\n        \"https://jupyter.org\",\n        \"manual\",\n    ),\n]\n\n# The name of an image file (relative to this directory) to place at the top of\n# the title page.\n# latex_logo = None\n\n# For \"manual\" documents, if this is true, then toplevel headings are parts,\n# not chapters.\n# latex_use_parts = False\n\n# If true, show page references after internal links.\n# latex_show_pagerefs = False\n\n# If true, show URL addresses after external links.\n# latex_show_urls = False\n\n# Documents to append as an appendix to all manuals.\n# latex_appendices = []\n\n# If false, no module index is generated.\n# latex_domain_indices = True\n\n\n# -- Options for manual page output ---------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [(master_doc, \"jupyternotebook\", \"Jupyter Notebook Documentation\", [author], 1)]\n\n# If true, show URL addresses after external links.\n# man_show_urls = False\n\n\n# -- Options for link checks ----------------------------------------------\n\nlinkcheck_ignore = [r\"http://127\\.0\\.0\\.1/*\"]\n\n\n# -- Options for Texinfo output -------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (\n        master_doc,\n        \"JupyterNotebook\",\n        \"Jupyter Notebook Documentation\",\n        author,\n        \"JupyterNotebook\",\n        \"One line description of project.\",\n        \"Miscellaneous\",\n    ),\n]\n\n# Documents to append as an appendix to all manuals.\n# texinfo_appendices = []\n\n# If false, no module index is generated.\n# texinfo_domain_indices = True\n\n# How to display URL addresses: 'footnote', 'no', or 'inline'.\n# texinfo_show_urls = 'footnote'\n\n# If true, do not generate a @detailmenu in the \"Top\" node's menu.\n# texinfo_no_detailmenu = False\n\nintersphinx_mapping = {\n    \"ipython\": (\"https://ipython.readthedocs.io/en/stable/\", None),\n    \"nbconvert\": (\"https://nbconvert.readthedocs.io/en/latest/\", None),\n    \"nbformat\": (\"https://nbformat.readthedocs.io/en/latest/\", None),\n    \"jupyter\": (\"https://jupyter.readthedocs.io/en/latest/\", None),\n}\n\nspelling_lang = \"en_US\"\nspelling_word_list_filename = \"spelling_wordlist.txt\"\n\n\ndef setup(app):\n    app.add_css_file(\"https://docs.jupyter.org/en/latest/_static/jupyter.css\")\n"
  },
  {
    "path": "docs/source/configuration.md",
    "content": "# Configuration\n\n```{toctree}\n:caption: Configuration\n:maxdepth: 1\n\nconfiguring/config_overview\nSecurity <https://jupyter-server.readthedocs.io/en/stable/operators/security.html>\nextending/index.rst\n```\n"
  },
  {
    "path": "docs/source/configuring/config_overview.md",
    "content": "(configuration-overview)=\n\n# Configuration Overview\n\nBeyond the default configuration settings, you can configure a rich array of\noptions to suit your workflow. Here are areas that are commonly configured\nwhen using Jupyter Notebook:\n\n> - {ref}`Jupyter's common configuration system <configure-common>`\n> - {ref}`Jupyter Server <configure-jupyter-server>`\n> - {ref}`Notebook extensions <configure-nbextensions>`\n\nLet's look at highlights of each area.\n\n(configure-common)=\n\n## Jupyter's Common Configuration system\n\nJupyter applications, from the Notebook to JupyterHub to nbgrader, share a\ncommon configuration system. The process for creating a configuration file\nand editing settings is similar for all the Jupyter applications.\n\n> - [Jupyter’s Common Configuration Approach](https://jupyter.readthedocs.io/en/latest/use/config.html)\n> - [Common Directories and File Locations](https://jupyter.readthedocs.io/en/latest/use/jupyter-directories.html)\n> - [Language kernels](https://jupyter.readthedocs.io/en/latest/projects/kernels.html)\n> - [traitlets](https://traitlets.readthedocs.io/en/latest/config.html#module-traitlets.config)\n>   provide a low-level architecture for configuration.\n\n### Disabling Custom CSS\n\nCustom CSS is loaded by default as was done with Jupyter Notebook 6. In the jupyter configuration directory, the `/.jupyter/custom/custom.css` file will be loaded unless the the application is initialized with the `custom_css` flag with the argument set to `False` as in `--JupyterNotebookApp.custom_css=False`.\n\n(configure-jupyter-server)=\n\n## Jupyter server\n\nThe Jupyter Server runs the language kernel and communicates with the\nfront-end Notebook client (i.e. the familiar notebook interface).\n\n> - Configuring the Jupyter Server\n>\n>   > To create a `jupyter_server_config.py` file in the `.jupyter`\n>   > directory, with all the defaults commented out, use the following\n>   > command:\n>   >\n>   > ```\n>   > $ jupyter server --generate-config\n>   > ```\n>\n> - [Running a Jupyter Server](https://jupyter-server.readthedocs.io/en/stable/operators/public-server.html)\n>\n> - Related: [Configuring a language kernel](https://ipython.readthedocs.io/en/latest/install/kernel_install.html)\n>   to run in the Jupyter Server enables your server to run other languages, like R or Julia.\n\n```{warning}\nJupyter Notebook 7 is now based on Jupyter Server. This may break some previous `notebook` imports you may have been using, such as `notebook.auth` or `notebook.notebookapp`.\n\nCheck out the [migration guide](../migrating/server-imports.md) to learn more on how to update these server imports.\n```\n\n(configure-nbextensions)=\n\n## Notebook extensions\n\nThe Notebook frontend can be extending with JupyterLab extensions.\n\nSee the {ref}`Frontend Extension Guide <frontend-extensions>` for more information.\n\n[Security in Jupyter notebooks:](https://jupyter-server.readthedocs.io/en/stable/operators/security.html)\nSince security policies vary from organization to organization, we encourage you to\nconsult with your security team on settings that would be best for your use\ncases. Our documentation offers some responsible security practices, and we\nrecommend becoming familiar with the practices.\n"
  },
  {
    "path": "docs/source/configuring/interface_customization.md",
    "content": "# Interface Customization\n\nMultiple elements in the Notebook interface can be customized via the Settings Editor.\n\n## Layout\n\nBy default some widgets are displayed in pre-defined parts of the user interface, which are often called \"areas\" or \"regions\".\nFor example the table of contents will be displayed in the `left` area by default, while the debugger will be displayed in the `right` area.\n\nHowever the positioning of some of these components can also be customized via the Settings Editor. Below are a few examples of how to do this.\n\n### Open the Markdown Preview on the left\n\nIt is often useful to be able to see a rendered preview of a Markdown document while editing it.\n\nBy default the Markdown Preview opens on the right side of the application. However it is also possible to open it on the left side by changing the Notebook Shell settings in the Advanced Settings Editor:\n\n```json\n{\n  \"layout\": {\n    \"Markdown Preview\": {\n      \"area\": \"left\"\n    }\n  }\n}\n```\n\n![a screenshot showing the markdown preview in Notebook 7](https://github.com/jupyter/notebook/assets/591645/3faf0823-ec6f-4d5f-a66f-d6f53dc383de)\n\n### Configuring a third-party widget\n\nThird-party extensions can also add widgets to the application shell. This is for example the case with the [Voila extension](https://github.com/voila-dashboards/voila), which adds a preview widget to visualize a notebook as a dashboard.\n\nBy default in JupyterLab the Voila Preview is added to the `main` area next to the corresponding notebook. With Notebook 7 it is possible to move the Voila Preview to the `right` area by changing the Notebook Shell setting in the Advanced Settings Editor as follows:\n\n```json\n{\n  \"layout\": {\n    \"Voila Preview\": {\n      \"area\": \"right\"\n    }\n  }\n}\n```\n\n![a screenshot showing the voila preview in Notebook 7](https://github.com/jupyter/notebook/assets/591645/524ade3b-05de-4d3b-8ff9-089f2d38ac77)\n\n```{note}\nRefer to the [JupyterLab Layout Documentation](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html#layout)\nto learn more about the default positioning of other UI elements.\n```\n\n## Toolbars, Menu bar and Context Menu\n\nIt is also possible to customize toolbars, menus and context menu entries via the Settings Editor.\n\nFor example the items of the notebook toolbar can be reordered, or some menu entries can be hidden.\n\n```{note}\nRefer to the [JupyterLab Documentation](https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html)\nto learn more about general interface customization via the settings editor.\n```\n"
  },
  {
    "path": "docs/source/configuring/plugins.md",
    "content": "# Managing plugins\n\nNotebook 7 uses the same extension system as JupyterLab. An extension can provide multiple plugins.\n\n```{note}\nSee the [JupyterLab documentation](https://jupyterlab.readthedocs.io/en/latest/user/extensions.html) to learn more about the extension system.\n```\n\n## Examples\n\n### Disabling the download button\n\nBy default Notebook 7 provides a way to download files from the file browser. This functionality consists of a context menu entry and a main menu entry. They are provided by an application plugin that can be disabled.\n\nTo disable the download entry of file browser context menus, open a terminal and run the following command:\n\n```text\njupyter labextension disable @jupyterlab/filebrowser-extension:download\n```\n\nThen restart the application and refresh the page.\n"
  },
  {
    "path": "docs/source/contributor.md",
    "content": "# Contributing\n\n```{toctree}\n:caption: Contributor Documentation\n:maxdepth: 1\n\ncontributing\ndevelopment_faq\n```\n"
  },
  {
    "path": "docs/source/custom_css.md",
    "content": "# Applying Custom CSS\n\nTo apply custom CSS, you can add a `/custom/custom.css` file in the jupyter `config` directory. You can find the path, `~/.jupyter`, to this directory by running `jupyter --paths`. There you can create a folder named `custom` and create a `custom.css` file within the folder.\n\n## Jupyter Styling\n\nYou can use a custom CSS file to modify default Jupyter styling.\n\n```css\n/* Modify Jupyter Styles */\n#top-panel-wrapper,\n#jp-top-bar {\n  background-color: #aecad4 !important;\n}\n\n#menu-panel-wrapper,\n#jp-MainMenu,\n#menu-panel {\n  background-color: #aecad4 !important;\n}\n\n.jp-NotebookPanel-toolbar {\n  background-color: #aecad4 !important;\n}\n.lm-MenuBar-content {\n  color: #02484d;\n}\n```\n\n![a screenshot custom jupyter styling](https://user-images.githubusercontent.com/12378147/245519958-17ce04e7-edc2-434e-8d93-a5c2de9fb225.png)\n\n## Markdown\n\nAnother potential application for custom CSS is styling markdown.\n\n```css\n/* Headings */\nh1,\nh2 {\n  font-family: Impact, Charcoal, sans-serif;\n  font-weight: bold;\n  text-shadow: 2px 2px 4px #000000;\n}\n\nh1 {\n  font-size: 52px;\n  margin-bottom: 40px;\n  color: #10929e;\n  text-decoration: underline;\n}\n\nh2 {\n  font-size: 448px;\n  margin-bottom: 32px;\n  color: #76b4be;\n  text-transform: uppercase;\n}\n\n/* Block Quotes */\nblockquote {\n  font-family: Georgia, serif;\n  font-size: 16px;\n  color: #19085c;\n  border-left: 8px solid #effffc;\n  background-color: #eafcff;\n  padding: 20px;\n}\n\n/* Lists */\nul,\nol {\n  font-family: Verdana, Geneva, sans-serif;\n  font-size: 18px;\n  color: #333333;\n  margin-bottom: 24px;\n}\n```\n\n![a screenshot of custom markdown styling](https://user-images.githubusercontent.com/12378147/245520291-968848d3-d336-4523-a046-023b15082ff8.png)\n"
  },
  {
    "path": "docs/source/development_faq.md",
    "content": "(development-faq)=\n\n# Developer FAQ\n\n1. How do I install a prerelease version such as a beta or release candidate?\n\nYou can install a prerelease version of the notebook using the `--pre` flag with `pip`:\n\n```bash\npython -m pip install notebook --pre --upgrade\n```\n\nIf you are using `conda` or `mamba`, you can install a prerelease version of the notebook using the alpha or beta label. For example, to install the latest alpha release, you can run:\n\n```bash\nconda install -c conda-forge -c conda-forge/label/notebook_alpha notebook=7.0.0a18\n```\n"
  },
  {
    "path": "docs/source/examples/Notebook/Connecting with the Qt Console.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Connecting to an existing IPython kernel using the Qt Console\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The Frontend/Kernel Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The traditional IPython (`ipython`) consists of a single process that combines a terminal based UI with the process that runs the users code.\\n\",\n    \"\\n\",\n    \"While this traditional application still exists, the modern Jupyter consists of two processes:\\n\",\n    \"\\n\",\n    \"* Kernel: this is the process that runs the users code.\\n\",\n    \"* Frontend: this is the process that provides the user interface where the user types code and sees results.\\n\",\n    \"\\n\",\n    \"Jupyter currently has 3 frontends:\\n\",\n    \"\\n\",\n    \"* Terminal Console (`jupyter console`)\\n\",\n    \"* Qt Console (`jupyter qtconsole`)\\n\",\n    \"* Notebook (`jupyter notebook`)\\n\",\n    \"\\n\",\n    \"The Kernel and Frontend communicate over a ZeroMQ/JSON based messaging protocol, which allows multiple Frontends (even of different types) to communicate with a single Kernel. This opens the door for all sorts of interesting things, such as connecting a Console or Qt Console to a Notebook's Kernel.  For example, you may want to connect a Qt console to your Notebook's Kernel and use it as a help\\n\",\n    \"browser, calling `??` on objects in the Qt console (whose pager is more flexible than the\\n\",\n    \"one in the notebook).  \\n\",\n    \"\\n\",\n    \"This Notebook describes how you would connect another Frontend to an IPython Kernel that is associated with a Notebook.\\n\",\n    \"The commands currently given here are specific to the IPython kernel.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Manual connection\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To connect another Frontend to a Kernel manually, you first need to find out the connection information for the Kernel using the `%connect_info` magic:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%connect_info\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can see that this magic displays everything you need to connect to this Notebook's Kernel.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Automatic connection using a new Qt Console\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can also start a new Qt Console connected to your current Kernel by using the `%qtconsole` magic. This will detect the necessary connection\\n\",\n    \"information and start the Qt Console for you automatically.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"a = 10\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%qtconsole\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"nbsphinx\": {\n   \"execute\": \"never\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/Custom Keyboard Shortcuts.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Keyboard Shortcut Customization\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can customize the `command` mode shortcuts from within the Notebook Application itself. \\n\",\n    \"\\n\",\n    \"Head to the **Settings** menu and select the **Settings Editor** item.\\n\",\n    \"A dialog will guide you through the process of adding custom keyboard shortcuts.\\n\",\n    \"\\n\",\n    \"Keyboard shortcut set from within the Notebook Application will be persisted to your configuration file. \\n\",\n    \"A single action may have several shortcuts attached to it.\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.2\"\n  },\n  \"nbsphinx\": {\n   \"execute\": \"never\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/Importing Notebooks.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Importing Jupyter Notebooks as Modules\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"It is a common problem that people want to import code from Jupyter Notebooks.\\n\",\n    \"This is made difficult by the fact that Notebooks are not plain Python files,\\n\",\n    \"and thus cannot be imported by the regular Python machinery.\\n\",\n    \"\\n\",\n    \"Fortunately, Python provides some fairly sophisticated [hooks](https://www.python.org/dev/peps/pep-0302/) into the import machinery,\\n\",\n    \"so we can actually make Jupyter notebooks importable without much difficulty,\\n\",\n    \"and only using public APIs.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import io, os, sys, types\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from IPython import get_ipython\\n\",\n    \"from nbformat import read\\n\",\n    \"from IPython.core.interactiveshell import InteractiveShell\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Import hooks typically take the form of two objects:\\n\",\n    \"\\n\",\n    \"1. a Module **Loader**, which takes a module name (e.g. `'IPython.display'`), and returns a Module\\n\",\n    \"2. a Module **Finder**, which figures out whether a module might exist, and tells Python what **Loader** to use\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def find_notebook(fullname, path=None):\\n\",\n    \"    \\\"\\\"\\\"find a notebook, given its fully qualified name and an optional path\\n\",\n    \"\\n\",\n    \"    This turns \\\"foo.bar\\\" into \\\"foo/bar.ipynb\\\"\\n\",\n    \"    and tries turning \\\"Foo_Bar\\\" into \\\"Foo Bar\\\" if Foo_Bar\\n\",\n    \"    does not exist.\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    name = fullname.rsplit('.', 1)[-1]\\n\",\n    \"    if not path:\\n\",\n    \"        path = ['']\\n\",\n    \"    for d in path:\\n\",\n    \"        nb_path = os.path.join(d, name + \\\".ipynb\\\")\\n\",\n    \"        if os.path.isfile(nb_path):\\n\",\n    \"            return nb_path\\n\",\n    \"        # let import Notebook_Name find \\\"Notebook Name.ipynb\\\"\\n\",\n    \"        nb_path = nb_path.replace(\\\"_\\\", \\\" \\\")\\n\",\n    \"        if os.path.isfile(nb_path):\\n\",\n    \"            return nb_path\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Notebook Loader\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Here we have our Notebook Loader.\\n\",\n    \"It's actually quite simple - once we figure out the filename of the module,\\n\",\n    \"all it does is:\\n\",\n    \"\\n\",\n    \"1. load the notebook document into memory\\n\",\n    \"2. create an empty Module\\n\",\n    \"3. execute every cell in the Module namespace\\n\",\n    \"\\n\",\n    \"Since IPython cells can have extended syntax,\\n\",\n    \"the IPython transform is applied to turn each of these cells into their pure-Python counterparts before executing them.\\n\",\n    \"If all of your notebook cells are pure-Python,\\n\",\n    \"this step is unnecessary.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"class NotebookLoader(object):\\n\",\n    \"    \\\"\\\"\\\"Module Loader for Jupyter Notebooks\\\"\\\"\\\"\\n\",\n    \"\\n\",\n    \"    def __init__(self, path=None):\\n\",\n    \"        self.shell = InteractiveShell.instance()\\n\",\n    \"        self.path = path\\n\",\n    \"\\n\",\n    \"    def load_module(self, fullname):\\n\",\n    \"        \\\"\\\"\\\"import a notebook as a module\\\"\\\"\\\"\\n\",\n    \"        path = find_notebook(fullname, self.path)\\n\",\n    \"\\n\",\n    \"        print(\\\"importing Jupyter notebook from %s\\\" % path)\\n\",\n    \"\\n\",\n    \"        # load the notebook object\\n\",\n    \"        with io.open(path, 'r', encoding='utf-8') as f:\\n\",\n    \"            nb = read(f, 4)\\n\",\n    \"\\n\",\n    \"        # create the module and add it to sys.modules\\n\",\n    \"        # if name in sys.modules:\\n\",\n    \"        #    return sys.modules[name]\\n\",\n    \"        mod = types.ModuleType(fullname)\\n\",\n    \"        mod.__file__ = path\\n\",\n    \"        mod.__loader__ = self\\n\",\n    \"        mod.__dict__['get_ipython'] = get_ipython\\n\",\n    \"        sys.modules[fullname] = mod\\n\",\n    \"\\n\",\n    \"        # extra work to ensure that magics that would affect the user_ns\\n\",\n    \"        # actually affect the notebook module's ns\\n\",\n    \"        save_user_ns = self.shell.user_ns\\n\",\n    \"        self.shell.user_ns = mod.__dict__\\n\",\n    \"\\n\",\n    \"        try:\\n\",\n    \"            for cell in nb.cells:\\n\",\n    \"                if cell.cell_type == 'code':\\n\",\n    \"                    # transform the input to executable Python\\n\",\n    \"                    code = self.shell.input_transformer_manager.transform_cell(cell.source)\\n\",\n    \"                    # run the code in themodule\\n\",\n    \"                    exec(code, mod.__dict__)\\n\",\n    \"        finally:\\n\",\n    \"            self.shell.user_ns = save_user_ns\\n\",\n    \"        return mod\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The Module Finder\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The finder is a simple object that tells you whether a name can be imported,\\n\",\n    \"and returns the appropriate loader.\\n\",\n    \"All this one does is check, when you do:\\n\",\n    \"\\n\",\n    \"```python\\n\",\n    \"import mynotebook\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"it checks whether `mynotebook.ipynb` exists.\\n\",\n    \"If a notebook is found, then it returns a NotebookLoader.\\n\",\n    \"\\n\",\n    \"Any extra logic is just for resolving paths within packages.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"class NotebookFinder(object):\\n\",\n    \"    \\\"\\\"\\\"Module finder that locates Jupyter Notebooks\\\"\\\"\\\"\\n\",\n    \"\\n\",\n    \"    def __init__(self):\\n\",\n    \"        self.loaders = {}\\n\",\n    \"\\n\",\n    \"    def find_module(self, fullname, path=None):\\n\",\n    \"        nb_path = find_notebook(fullname, path)\\n\",\n    \"        if not nb_path:\\n\",\n    \"            return\\n\",\n    \"\\n\",\n    \"        key = path\\n\",\n    \"        if path:\\n\",\n    \"            # lists aren't hashable\\n\",\n    \"            key = os.path.sep.join(path)\\n\",\n    \"\\n\",\n    \"        if key not in self.loaders:\\n\",\n    \"            self.loaders[key] = NotebookLoader(path)\\n\",\n    \"        return self.loaders[key]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Register the hook\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Now we register the `NotebookFinder` with `sys.meta_path`\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"sys.meta_path.append(NotebookFinder())\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"After this point, my notebooks should be importable.\\n\",\n    \"\\n\",\n    \"Let's look at what we have in the CWD:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"ls nbpackage\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"So I should be able to `import nbpackage.mynotebook`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import nbpackage.mynotebook\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Aside: displaying notebooks\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Here is some simple code to display the contents of a notebook\\n\",\n    \"with syntax highlighting, etc.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from pygments import highlight\\n\",\n    \"from pygments.lexers import PythonLexer\\n\",\n    \"from pygments.formatters import HtmlFormatter\\n\",\n    \"\\n\",\n    \"from IPython.display import display, HTML\\n\",\n    \"\\n\",\n    \"formatter = HtmlFormatter()\\n\",\n    \"lexer = PythonLexer()\\n\",\n    \"\\n\",\n    \"# publish the CSS for pygments highlighting\\n\",\n    \"display(\\n\",\n    \"    HTML(\\n\",\n    \"        \\\"\\\"\\\"\\n\",\n    \"<style type='text/css'>\\n\",\n    \"%s\\n\",\n    \"</style>\\n\",\n    \"\\\"\\\"\\\"\\n\",\n    \"        % formatter.get_style_defs()\\n\",\n    \"    )\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def show_notebook(fname):\\n\",\n    \"    \\\"\\\"\\\"display a short summary of the cells of a notebook\\\"\\\"\\\"\\n\",\n    \"    with io.open(fname, 'r', encoding='utf-8') as f:\\n\",\n    \"        nb = read(f, 4)\\n\",\n    \"    html = []\\n\",\n    \"    for cell in nb.cells:\\n\",\n    \"        html.append(\\\"<h4>%s cell</h4>\\\" % cell.cell_type)\\n\",\n    \"        if cell.cell_type == 'code':\\n\",\n    \"            html.append(highlight(cell.source, lexer, formatter))\\n\",\n    \"        else:\\n\",\n    \"            html.append(\\\"<pre>%s</pre>\\\" % cell.source)\\n\",\n    \"    display(HTML('\\\\n'.join(html)))\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"show_notebook(os.path.join(\\\"nbpackage\\\", \\\"mynotebook.ipynb\\\"))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"So my notebook has some code cells,\\n\",\n    \"one of which contains some IPython syntax.\\n\",\n    \"\\n\",\n    \"Let's see what happens when we import it\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from nbpackage import mynotebook\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Hooray, it imported!  Does it work?\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"mynotebook.foo()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Hooray again!\\n\",\n    \"\\n\",\n    \"Even the function that contains IPython syntax works:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"mynotebook.has_ip_syntax()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Notebooks in packages\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We also have a notebook inside the `nb` package,\\n\",\n    \"so let's make sure that works as well.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"ls nbpackage/nbs\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Note that the `__init__.py` is necessary for `nb` to be considered a package,\\n\",\n    \"just like usual.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"show_notebook(os.path.join(\\\"nbpackage\\\", \\\"nbs\\\", \\\"other.ipynb\\\"))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from nbpackage.nbs import other\\n\",\n    \"\\n\",\n    \"other.bar(5)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"So now we have importable notebooks, from both the local directory and inside packages.\\n\",\n    \"\\n\",\n    \"I can even put a notebook inside IPython, to further demonstrate that this is working properly:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import shutil\\n\",\n    \"from IPython.paths import get_ipython_package_dir\\n\",\n    \"\\n\",\n    \"utils = os.path.join(get_ipython_package_dir(), 'utils')\\n\",\n    \"shutil.copy(\\n\",\n    \"    os.path.join(\\\"nbpackage\\\", \\\"mynotebook.ipynb\\\"), os.path.join(utils, \\\"inside_ipython.ipynb\\\")\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"and import the notebook from `IPython.utils`\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from IPython.utils import inside_ipython\\n\",\n    \"\\n\",\n    \"inside_ipython.whatsmyname()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"This approach can even import functions and classes that are defined in a notebook using the `%%cython` magic.\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"gist_id\": \"6011986\",\n  \"nbsphinx\": {\n   \"execute\": \"never\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.1+\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/Notebook Basics.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Notebook Basics\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The Notebook dashboard\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"When you first start the notebook server, your browser will open to the notebook dashboard. The dashboard serves as a home page for the notebook. Its main purpose is to display the notebooks and files in the current directory. For example, here is a screenshot of the dashboard page for the `examples` directory in the Jupyter repository:\\n\",\n    \"\\n\",\n    \"![Jupyter dashboard showing files tab](images/dashboard_files_tab.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The top of the notebook list displays clickable breadcrumbs of the current directory. By clicking on these breadcrumbs or on sub-directories in the notebook list, you can navigate your file system.\\n\",\n    \"\\n\",\n    \"To create a new notebook, click on the \\\"New\\\" button at the top of the list and select a kernel from the dropdown (as seen below).  Which kernels are listed depend on what's installed on the server.  Some of the kernels in the screenshot below may not exist as an option to you.\\n\",\n    \"\\n\",\n    \"![Jupyter \\\"New\\\" menu](images/dashboard_files_tab_new.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Notebooks and files can be uploaded to the current directory by dragging a notebook file onto the notebook list or by the \\\"click here\\\" text above the list.\\n\",\n    \"\\n\",\n    \"The notebook list shows green \\\"Running\\\" text and a green notebook icon next to running notebooks (as seen below). Notebooks remain running until you explicitly shut them down; closing the notebook's page is not sufficient.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"![Jupyter dashboard showing one notebook with a running kernel](images/dashboard_files_tab_run.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To shutdown, delete, duplicate, or rename a notebook check the checkbox next to it and an array of controls will appear at the top of the notebook list (as seen below).  You can also use the same operations on directories and files when applicable.\\n\",\n    \"\\n\",\n    \"![Buttons: Duplicate, rename, shutdown, delete, new, refresh](images/dashboard_files_tab_btns.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To see all of your running notebooks along with their directories, click on the \\\"Running\\\" tab:\\n\",\n    \"\\n\",\n    \"![Jupyter dashboard running tab](images/dashboard_running_tab.png)\\n\",\n    \"\\n\",\n    \"This view provides a convenient way to track notebooks that you start as you navigate the file system in a long running notebook server.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Overview of the Notebook UI\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"If you create a new notebook or open an existing one, you will be taken to the notebook user interface (UI). This UI allows you to run code and author notebook documents interactively. The notebook UI has the following main areas:\\n\",\n    \"\\n\",\n    \"* Menu\\n\",\n    \"* Toolbar\\n\",\n    \"* Notebook area and cells\\n\",\n    \"\\n\",\n    \"The notebook has an interactive tour of these elements that can be started in the \\\"Help:User Interface Tour\\\" menu item.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Modal editor\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Starting with IPython 2.0, the Jupyter Notebook has a modal user interface. This means that the keyboard does different things depending on which mode the Notebook is in. There are two modes: edit mode and command mode.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Edit mode\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Edit mode is indicated by a green cell border and a prompt showing in the editor area:\\n\",\n    \"\\n\",\n    \"![Jupyter cell with green border](images/edit_mode.png)\\n\",\n    \"\\n\",\n    \"When a cell is in edit mode, you can type into the cell, like a normal text editor.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div class=\\\"alert alert-success\\\">\\n\",\n    \"Enter edit mode by pressing `Enter` or using the mouse to click on a cell's editor area.\\n\",\n    \"</div>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Command mode\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Command mode is indicated by a grey cell border with a blue left margin:\\n\",\n    \"\\n\",\n    \"![Jupyter cell with blue & grey border](images/command_mode.png)\\n\",\n    \"\\n\",\n    \"When you are in command mode, you are able to edit the notebook as a whole, but not type into individual cells. Most importantly, in command mode, the keyboard is mapped to a set of shortcuts that let you perform notebook and cell actions efficiently. For example, if you are in command mode and you press `c`, you will copy the current cell - no modifier is needed.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div class=\\\"alert alert-error\\\">\\n\",\n    \"Don't try to type into a cell in command mode; unexpected things will happen!\\n\",\n    \"</div>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div class=\\\"alert alert-success\\\">\\n\",\n    \"Enter command mode by pressing `Esc` or using the mouse to click *outside* a cell's editor area.\\n\",\n    \"</div>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Mouse navigation\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"All navigation and actions in the Notebook are available using the mouse through the menubar and toolbar, which are both above the main Notebook area:\\n\",\n    \"\\n\",\n    \"![Jupyter notebook menus and toolbar](images/menubar_toolbar.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The first idea of mouse based navigation is that **cells can be selected by clicking on them.** The currently selected cell gets a grey or green border depending on whether the notebook is in edit or command mode. If you click inside a cell's editor area, you will enter edit mode. If you click on the prompt or output area of a cell you will enter command mode.\\n\",\n    \"\\n\",\n    \"If you are running this notebook in a live session (not on https://nbviewer.jupyter.org) try selecting different cells and going between edit and command mode. Try typing into a cell.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The second idea of mouse based navigation is that **cell actions usually apply to the currently selected cell**. Thus if you want to run the code in a cell, you would select it and click the <button class='btn btn-default btn-xs'><i class=\\\"fa fa-play icon-step-forward\\\"></i></button> button in the toolbar or the \\\"Cell:Run\\\" menu item. Similarly, to copy a cell you would select it and click the <button class='btn btn-default btn-xs'><i class=\\\"fa fa-copy icon-copy\\\"></i></button> button in the toolbar or the \\\"Edit:Copy\\\" menu item. With this simple pattern, you should be able to do most everything you need with the mouse.\\n\",\n    \"\\n\",\n    \"Markdown cells have one other state that can be modified with the mouse. These cells can either be rendered or unrendered. When they are rendered, you will see a nice formatted representation of the cell's contents. When they are unrendered, you will see the raw text source of the cell. To render the selected cell with the mouse, click the <button class='btn btn-default btn-xs'><i class=\\\"fa fa-play icon-step-forward\\\"></i></button> button in the toolbar or the \\\"Cell:Run\\\" menu item. To unrender the selected cell, double click on the cell.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Keyboard Navigation\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The modal user interface of the Jupyter Notebook has been optimized for efficient keyboard usage. This is made possible by having two different sets of keyboard shortcuts: one set that is active in edit mode and another in command mode.\\n\",\n    \"\\n\",\n    \"The most important keyboard shortcuts are `Enter`, which enters edit mode, and `Esc`, which enters command mode.\\n\",\n    \"\\n\",\n    \"In edit mode, most of the keyboard is dedicated to typing into the cell's editor. Thus, in edit mode there are relatively few shortcuts.  In command mode, the entire keyboard is available for shortcuts, so there are many more.  The `Help`->`Keyboard Shortcuts` dialog lists the available shortcuts.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We recommend learning the command mode shortcuts in the following rough order:\\n\",\n    \"\\n\",\n    \"1. Basic navigation: `enter`, `shift-enter`, `up/k`, `down/j`\\n\",\n    \"2. Saving the notebook: `s`\\n\",\n    \"2. Change Cell types: `y`, `m`, `1-6`, `t`\\n\",\n    \"3. Cell creation: `a`, `b`\\n\",\n    \"4. Cell editing: `x`, `c`, `v`, `d`, `z`\\n\",\n    \"5. Kernel operations: `i`, `0` (press twice)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/Running Code.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Running Code\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"First and foremost, the Jupyter Notebook is an interactive environment for writing and running code. The notebook is capable of running code in a wide range of languages. However, each notebook is associated with a single kernel.  This notebook is associated with the IPython kernel, therefore runs Python code.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Code cells allow you to enter and run code\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Run a code cell using `Shift-Enter` or pressing the <button class='btn btn-default btn-xs'><i class=\\\"icon-step-forward fa fa-play\\\"></i></button> button in the toolbar above:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"a = 10\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"10\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(a)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are two other keyboard shortcuts for running code:\\n\",\n    \"\\n\",\n    \"* `Alt-Enter` runs the current cell and inserts a new one below.\\n\",\n    \"* `Ctrl-Enter` run the current cell and enters command mode.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Managing the Kernel\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Code is run in a separate process called the Kernel.  The Kernel can be interrupted or restarted.  Try running the following cell and then hit the <button class='btn btn-default btn-xs'><i class='icon-stop fa fa-stop'></i></button> button in the toolbar above.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import time\\n\",\n    \"\\n\",\n    \"time.sleep(10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"If the Kernel dies you will be prompted to restart it. Here we call the low-level system libc.time routine with the wrong argument via\\n\",\n    \"ctypes to segfault the Python interpreter:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import sys\\n\",\n    \"\\n\",\n    \"# This will crash a Linux or Mac system\\n\",\n    \"# equivalent calls can be made on Windows\\n\",\n    \"\\n\",\n    \"# Uncomment these lines if you would like to see the segfault\\n\",\n    \"\\n\",\n    \"# dll = 'dylib' if sys.platform == 'darwin' else 'so.6'\\n\",\n    \"# libc = CDLL(\\\"libc.%s\\\" % dll)\\n\",\n    \"# libc.time(-1)  # BOOM!!\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Cell menu\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The \\\"Cell\\\" menu has a number of menu items for running code in different ways. These includes:\\n\",\n    \"\\n\",\n    \"* Run and Select Below\\n\",\n    \"* Run and Insert Below\\n\",\n    \"* Run All\\n\",\n    \"* Run All Above\\n\",\n    \"* Run All Below\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Restarting the kernels\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The kernel maintains the state of a notebook's computations. You can reset this state by restarting the kernel. This is done by clicking on the <button class='btn btn-default btn-xs'><i class='fa fa-repeat icon-repeat'></i></button> in the toolbar above.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## sys.stdout and sys.stderr\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The stdout and stderr streams are displayed as text in the output area.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"hi, stdout\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"hi, stdout\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"hi, stderr\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"hi, stderr\\\", file=sys.stderr)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Output is asynchronous\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"All output is displayed asynchronously as it is generated in the Kernel. If you execute the next cell, you will see the output one piece at a time, not all at the end.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"0\\n\",\n      \"1\\n\",\n      \"2\\n\",\n      \"3\\n\",\n      \"4\\n\",\n      \"5\\n\",\n      \"6\\n\",\n      \"7\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import sys\\n\",\n    \"import time\\n\",\n    \"\\n\",\n    \"for i in range(8):\\n\",\n    \"    print(i)\\n\",\n    \"    time.sleep(0.5)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Large outputs\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To better handle large outputs, the output area can be collapsed. Run the following cell and then single- or double- click on the active area to the left of the output:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"0\\n\",\n      \"1\\n\",\n      \"2\\n\",\n      \"3\\n\",\n      \"4\\n\",\n      \"5\\n\",\n      \"6\\n\",\n      \"7\\n\",\n      \"8\\n\",\n      \"9\\n\",\n      \"10\\n\",\n      \"11\\n\",\n      \"12\\n\",\n      \"13\\n\",\n      \"14\\n\",\n      \"15\\n\",\n      \"16\\n\",\n      \"17\\n\",\n      \"18\\n\",\n      \"19\\n\",\n      \"20\\n\",\n      \"21\\n\",\n      \"22\\n\",\n      \"23\\n\",\n      \"24\\n\",\n      \"25\\n\",\n      \"26\\n\",\n      \"27\\n\",\n      \"28\\n\",\n      \"29\\n\",\n      \"30\\n\",\n      \"31\\n\",\n      \"32\\n\",\n      \"33\\n\",\n      \"34\\n\",\n      \"35\\n\",\n      \"36\\n\",\n      \"37\\n\",\n      \"38\\n\",\n      \"39\\n\",\n      \"40\\n\",\n      \"41\\n\",\n      \"42\\n\",\n      \"43\\n\",\n      \"44\\n\",\n      \"45\\n\",\n      \"46\\n\",\n      \"47\\n\",\n      \"48\\n\",\n      \"49\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for i in range(50):\\n\",\n    \"    print(i)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Beyond a certain point, output will scroll automatically:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"0\\n\",\n      \"1\\n\",\n      \"3\\n\",\n      \"7\\n\",\n      \"15\\n\",\n      \"31\\n\",\n      \"63\\n\",\n      \"127\\n\",\n      \"255\\n\",\n      \"511\\n\",\n      \"1023\\n\",\n      \"2047\\n\",\n      \"4095\\n\",\n      \"8191\\n\",\n      \"16383\\n\",\n      \"32767\\n\",\n      \"65535\\n\",\n      \"131071\\n\",\n      \"262143\\n\",\n      \"524287\\n\",\n      \"1048575\\n\",\n      \"2097151\\n\",\n      \"4194303\\n\",\n      \"8388607\\n\",\n      \"16777215\\n\",\n      \"33554431\\n\",\n      \"67108863\\n\",\n      \"134217727\\n\",\n      \"268435455\\n\",\n      \"536870911\\n\",\n      \"1073741823\\n\",\n      \"2147483647\\n\",\n      \"4294967295\\n\",\n      \"8589934591\\n\",\n      \"17179869183\\n\",\n      \"34359738367\\n\",\n      \"68719476735\\n\",\n      \"137438953471\\n\",\n      \"274877906943\\n\",\n      \"549755813887\\n\",\n      \"1099511627775\\n\",\n      \"2199023255551\\n\",\n      \"4398046511103\\n\",\n      \"8796093022207\\n\",\n      \"17592186044415\\n\",\n      \"35184372088831\\n\",\n      \"70368744177663\\n\",\n      \"140737488355327\\n\",\n      \"281474976710655\\n\",\n      \"562949953421311\\n\",\n      \"1125899906842623\\n\",\n      \"2251799813685247\\n\",\n      \"4503599627370495\\n\",\n      \"9007199254740991\\n\",\n      \"18014398509481983\\n\",\n      \"36028797018963967\\n\",\n      \"72057594037927935\\n\",\n      \"144115188075855871\\n\",\n      \"288230376151711743\\n\",\n      \"576460752303423487\\n\",\n      \"1152921504606846975\\n\",\n      \"2305843009213693951\\n\",\n      \"4611686018427387903\\n\",\n      \"9223372036854775807\\n\",\n      \"18446744073709551615\\n\",\n      \"36893488147419103231\\n\",\n      \"73786976294838206463\\n\",\n      \"147573952589676412927\\n\",\n      \"295147905179352825855\\n\",\n      \"590295810358705651711\\n\",\n      \"1180591620717411303423\\n\",\n      \"2361183241434822606847\\n\",\n      \"4722366482869645213695\\n\",\n      \"9444732965739290427391\\n\",\n      \"18889465931478580854783\\n\",\n      \"37778931862957161709567\\n\",\n      \"75557863725914323419135\\n\",\n      \"151115727451828646838271\\n\",\n      \"302231454903657293676543\\n\",\n      \"604462909807314587353087\\n\",\n      \"1208925819614629174706175\\n\",\n      \"2417851639229258349412351\\n\",\n      \"4835703278458516698824703\\n\",\n      \"9671406556917033397649407\\n\",\n      \"19342813113834066795298815\\n\",\n      \"38685626227668133590597631\\n\",\n      \"77371252455336267181195263\\n\",\n      \"154742504910672534362390527\\n\",\n      \"309485009821345068724781055\\n\",\n      \"618970019642690137449562111\\n\",\n      \"1237940039285380274899124223\\n\",\n      \"2475880078570760549798248447\\n\",\n      \"4951760157141521099596496895\\n\",\n      \"9903520314283042199192993791\\n\",\n      \"19807040628566084398385987583\\n\",\n      \"39614081257132168796771975167\\n\",\n      \"79228162514264337593543950335\\n\",\n      \"158456325028528675187087900671\\n\",\n      \"316912650057057350374175801343\\n\",\n      \"633825300114114700748351602687\\n\",\n      \"1267650600228229401496703205375\\n\",\n      \"2535301200456458802993406410751\\n\",\n      \"5070602400912917605986812821503\\n\",\n      \"10141204801825835211973625643007\\n\",\n      \"20282409603651670423947251286015\\n\",\n      \"40564819207303340847894502572031\\n\",\n      \"81129638414606681695789005144063\\n\",\n      \"162259276829213363391578010288127\\n\",\n      \"324518553658426726783156020576255\\n\",\n      \"649037107316853453566312041152511\\n\",\n      \"1298074214633706907132624082305023\\n\",\n      \"2596148429267413814265248164610047\\n\",\n      \"5192296858534827628530496329220095\\n\",\n      \"10384593717069655257060992658440191\\n\",\n      \"20769187434139310514121985316880383\\n\",\n      \"41538374868278621028243970633760767\\n\",\n      \"83076749736557242056487941267521535\\n\",\n      \"166153499473114484112975882535043071\\n\",\n      \"332306998946228968225951765070086143\\n\",\n      \"664613997892457936451903530140172287\\n\",\n      \"1329227995784915872903807060280344575\\n\",\n      \"2658455991569831745807614120560689151\\n\",\n      \"5316911983139663491615228241121378303\\n\",\n      \"10633823966279326983230456482242756607\\n\",\n      \"21267647932558653966460912964485513215\\n\",\n      \"42535295865117307932921825928971026431\\n\",\n      \"85070591730234615865843651857942052863\\n\",\n      \"170141183460469231731687303715884105727\\n\",\n      \"340282366920938463463374607431768211455\\n\",\n      \"680564733841876926926749214863536422911\\n\",\n      \"1361129467683753853853498429727072845823\\n\",\n      \"2722258935367507707706996859454145691647\\n\",\n      \"5444517870735015415413993718908291383295\\n\",\n      \"10889035741470030830827987437816582766591\\n\",\n      \"21778071482940061661655974875633165533183\\n\",\n      \"43556142965880123323311949751266331066367\\n\",\n      \"87112285931760246646623899502532662132735\\n\",\n      \"174224571863520493293247799005065324265471\\n\",\n      \"348449143727040986586495598010130648530943\\n\",\n      \"696898287454081973172991196020261297061887\\n\",\n      \"1393796574908163946345982392040522594123775\\n\",\n      \"2787593149816327892691964784081045188247551\\n\",\n      \"5575186299632655785383929568162090376495103\\n\",\n      \"11150372599265311570767859136324180752990207\\n\",\n      \"22300745198530623141535718272648361505980415\\n\",\n      \"44601490397061246283071436545296723011960831\\n\",\n      \"89202980794122492566142873090593446023921663\\n\",\n      \"178405961588244985132285746181186892047843327\\n\",\n      \"356811923176489970264571492362373784095686655\\n\",\n      \"713623846352979940529142984724747568191373311\\n\",\n      \"1427247692705959881058285969449495136382746623\\n\",\n      \"2854495385411919762116571938898990272765493247\\n\",\n      \"5708990770823839524233143877797980545530986495\\n\",\n      \"11417981541647679048466287755595961091061972991\\n\",\n      \"22835963083295358096932575511191922182123945983\\n\",\n      \"45671926166590716193865151022383844364247891967\\n\",\n      \"91343852333181432387730302044767688728495783935\\n\",\n      \"182687704666362864775460604089535377456991567871\\n\",\n      \"365375409332725729550921208179070754913983135743\\n\",\n      \"730750818665451459101842416358141509827966271487\\n\",\n      \"1461501637330902918203684832716283019655932542975\\n\",\n      \"2923003274661805836407369665432566039311865085951\\n\",\n      \"5846006549323611672814739330865132078623730171903\\n\",\n      \"11692013098647223345629478661730264157247460343807\\n\",\n      \"23384026197294446691258957323460528314494920687615\\n\",\n      \"46768052394588893382517914646921056628989841375231\\n\",\n      \"93536104789177786765035829293842113257979682750463\\n\",\n      \"187072209578355573530071658587684226515959365500927\\n\",\n      \"374144419156711147060143317175368453031918731001855\\n\",\n      \"748288838313422294120286634350736906063837462003711\\n\",\n      \"1496577676626844588240573268701473812127674924007423\\n\",\n      \"2993155353253689176481146537402947624255349848014847\\n\",\n      \"5986310706507378352962293074805895248510699696029695\\n\",\n      \"11972621413014756705924586149611790497021399392059391\\n\",\n      \"23945242826029513411849172299223580994042798784118783\\n\",\n      \"47890485652059026823698344598447161988085597568237567\\n\",\n      \"95780971304118053647396689196894323976171195136475135\\n\",\n      \"191561942608236107294793378393788647952342390272950271\\n\",\n      \"383123885216472214589586756787577295904684780545900543\\n\",\n      \"766247770432944429179173513575154591809369561091801087\\n\",\n      \"1532495540865888858358347027150309183618739122183602175\\n\",\n      \"3064991081731777716716694054300618367237478244367204351\\n\",\n      \"6129982163463555433433388108601236734474956488734408703\\n\",\n      \"12259964326927110866866776217202473468949912977468817407\\n\",\n      \"24519928653854221733733552434404946937899825954937634815\\n\",\n      \"49039857307708443467467104868809893875799651909875269631\\n\",\n      \"98079714615416886934934209737619787751599303819750539263\\n\",\n      \"196159429230833773869868419475239575503198607639501078527\\n\",\n      \"392318858461667547739736838950479151006397215279002157055\\n\",\n      \"784637716923335095479473677900958302012794430558004314111\\n\",\n      \"1569275433846670190958947355801916604025588861116008628223\\n\",\n      \"3138550867693340381917894711603833208051177722232017256447\\n\",\n      \"6277101735386680763835789423207666416102355444464034512895\\n\",\n      \"12554203470773361527671578846415332832204710888928069025791\\n\",\n      \"25108406941546723055343157692830665664409421777856138051583\\n\",\n      \"50216813883093446110686315385661331328818843555712276103167\\n\",\n      \"100433627766186892221372630771322662657637687111424552206335\\n\",\n      \"200867255532373784442745261542645325315275374222849104412671\\n\",\n      \"401734511064747568885490523085290650630550748445698208825343\\n\",\n      \"803469022129495137770981046170581301261101496891396417650687\\n\",\n      \"1606938044258990275541962092341162602522202993782792835301375\\n\",\n      \"3213876088517980551083924184682325205044405987565585670602751\\n\",\n      \"6427752177035961102167848369364650410088811975131171341205503\\n\",\n      \"12855504354071922204335696738729300820177623950262342682411007\\n\",\n      \"25711008708143844408671393477458601640355247900524685364822015\\n\",\n      \"51422017416287688817342786954917203280710495801049370729644031\\n\",\n      \"102844034832575377634685573909834406561420991602098741459288063\\n\",\n      \"205688069665150755269371147819668813122841983204197482918576127\\n\",\n      \"411376139330301510538742295639337626245683966408394965837152255\\n\",\n      \"822752278660603021077484591278675252491367932816789931674304511\\n\",\n      \"1645504557321206042154969182557350504982735865633579863348609023\\n\",\n      \"3291009114642412084309938365114701009965471731267159726697218047\\n\",\n      \"6582018229284824168619876730229402019930943462534319453394436095\\n\",\n      \"13164036458569648337239753460458804039861886925068638906788872191\\n\",\n      \"26328072917139296674479506920917608079723773850137277813577744383\\n\",\n      \"52656145834278593348959013841835216159447547700274555627155488767\\n\",\n      \"105312291668557186697918027683670432318895095400549111254310977535\\n\",\n      \"210624583337114373395836055367340864637790190801098222508621955071\\n\",\n      \"421249166674228746791672110734681729275580381602196445017243910143\\n\",\n      \"842498333348457493583344221469363458551160763204392890034487820287\\n\",\n      \"1684996666696914987166688442938726917102321526408785780068975640575\\n\",\n      \"3369993333393829974333376885877453834204643052817571560137951281151\\n\",\n      \"6739986666787659948666753771754907668409286105635143120275902562303\\n\",\n      \"13479973333575319897333507543509815336818572211270286240551805124607\\n\",\n      \"26959946667150639794667015087019630673637144422540572481103610249215\\n\",\n      \"53919893334301279589334030174039261347274288845081144962207220498431\\n\",\n      \"107839786668602559178668060348078522694548577690162289924414440996863\\n\",\n      \"215679573337205118357336120696157045389097155380324579848828881993727\\n\",\n      \"431359146674410236714672241392314090778194310760649159697657763987455\\n\",\n      \"862718293348820473429344482784628181556388621521298319395315527974911\\n\",\n      \"1725436586697640946858688965569256363112777243042596638790631055949823\\n\",\n      \"3450873173395281893717377931138512726225554486085193277581262111899647\\n\",\n      \"6901746346790563787434755862277025452451108972170386555162524223799295\\n\",\n      \"13803492693581127574869511724554050904902217944340773110325048447598591\\n\",\n      \"27606985387162255149739023449108101809804435888681546220650096895197183\\n\",\n      \"55213970774324510299478046898216203619608871777363092441300193790394367\\n\",\n      \"110427941548649020598956093796432407239217743554726184882600387580788735\\n\",\n      \"220855883097298041197912187592864814478435487109452369765200775161577471\\n\",\n      \"441711766194596082395824375185729628956870974218904739530401550323154943\\n\",\n      \"883423532389192164791648750371459257913741948437809479060803100646309887\\n\",\n      \"1766847064778384329583297500742918515827483896875618958121606201292619775\\n\",\n      \"3533694129556768659166595001485837031654967793751237916243212402585239551\\n\",\n      \"7067388259113537318333190002971674063309935587502475832486424805170479103\\n\",\n      \"14134776518227074636666380005943348126619871175004951664972849610340958207\\n\",\n      \"28269553036454149273332760011886696253239742350009903329945699220681916415\\n\",\n      \"56539106072908298546665520023773392506479484700019806659891398441363832831\\n\",\n      \"113078212145816597093331040047546785012958969400039613319782796882727665663\\n\",\n      \"226156424291633194186662080095093570025917938800079226639565593765455331327\\n\",\n      \"452312848583266388373324160190187140051835877600158453279131187530910662655\\n\",\n      \"904625697166532776746648320380374280103671755200316906558262375061821325311\\n\",\n      \"1809251394333065553493296640760748560207343510400633813116524750123642650623\\n\",\n      \"3618502788666131106986593281521497120414687020801267626233049500247285301247\\n\",\n      \"7237005577332262213973186563042994240829374041602535252466099000494570602495\\n\",\n      \"14474011154664524427946373126085988481658748083205070504932198000989141204991\\n\",\n      \"28948022309329048855892746252171976963317496166410141009864396001978282409983\\n\",\n      \"57896044618658097711785492504343953926634992332820282019728792003956564819967\\n\",\n      \"115792089237316195423570985008687907853269984665640564039457584007913129639935\\n\",\n      \"231584178474632390847141970017375815706539969331281128078915168015826259279871\\n\",\n      \"463168356949264781694283940034751631413079938662562256157830336031652518559743\\n\",\n      \"926336713898529563388567880069503262826159877325124512315660672063305037119487\\n\",\n      \"1852673427797059126777135760139006525652319754650249024631321344126610074238975\\n\",\n      \"3705346855594118253554271520278013051304639509300498049262642688253220148477951\\n\",\n      \"7410693711188236507108543040556026102609279018600996098525285376506440296955903\\n\",\n      \"14821387422376473014217086081112052205218558037201992197050570753012880593911807\\n\",\n      \"29642774844752946028434172162224104410437116074403984394101141506025761187823615\\n\",\n      \"59285549689505892056868344324448208820874232148807968788202283012051522375647231\\n\",\n      \"118571099379011784113736688648896417641748464297615937576404566024103044751294463\\n\",\n      \"237142198758023568227473377297792835283496928595231875152809132048206089502588927\\n\",\n      \"474284397516047136454946754595585670566993857190463750305618264096412179005177855\\n\",\n      \"948568795032094272909893509191171341133987714380927500611236528192824358010355711\\n\",\n      \"1897137590064188545819787018382342682267975428761855001222473056385648716020711423\\n\",\n      \"3794275180128377091639574036764685364535950857523710002444946112771297432041422847\\n\",\n      \"7588550360256754183279148073529370729071901715047420004889892225542594864082845695\\n\",\n      \"15177100720513508366558296147058741458143803430094840009779784451085189728165691391\\n\",\n      \"30354201441027016733116592294117482916287606860189680019559568902170379456331382783\\n\",\n      \"60708402882054033466233184588234965832575213720379360039119137804340758912662765567\\n\",\n      \"121416805764108066932466369176469931665150427440758720078238275608681517825325531135\\n\",\n      \"242833611528216133864932738352939863330300854881517440156476551217363035650651062271\\n\",\n      \"485667223056432267729865476705879726660601709763034880312953102434726071301302124543\\n\",\n      \"971334446112864535459730953411759453321203419526069760625906204869452142602604249087\\n\",\n      \"1942668892225729070919461906823518906642406839052139521251812409738904285205208498175\\n\",\n      \"3885337784451458141838923813647037813284813678104279042503624819477808570410416996351\\n\",\n      \"7770675568902916283677847627294075626569627356208558085007249638955617140820833992703\\n\",\n      \"15541351137805832567355695254588151253139254712417116170014499277911234281641667985407\\n\",\n      \"31082702275611665134711390509176302506278509424834232340028998555822468563283335970815\\n\",\n      \"62165404551223330269422781018352605012557018849668464680057997111644937126566671941631\\n\",\n      \"124330809102446660538845562036705210025114037699336929360115994223289874253133343883263\\n\",\n      \"248661618204893321077691124073410420050228075398673858720231988446579748506266687766527\\n\",\n      \"497323236409786642155382248146820840100456150797347717440463976893159497012533375533055\\n\",\n      \"994646472819573284310764496293641680200912301594695434880927953786318994025066751066111\\n\",\n      \"1989292945639146568621528992587283360401824603189390869761855907572637988050133502132223\\n\",\n      \"3978585891278293137243057985174566720803649206378781739523711815145275976100267004264447\\n\",\n      \"7957171782556586274486115970349133441607298412757563479047423630290551952200534008528895\\n\",\n      \"15914343565113172548972231940698266883214596825515126958094847260581103904401068017057791\\n\",\n      \"31828687130226345097944463881396533766429193651030253916189694521162207808802136034115583\\n\",\n      \"63657374260452690195888927762793067532858387302060507832379389042324415617604272068231167\\n\",\n      \"127314748520905380391777855525586135065716774604121015664758778084648831235208544136462335\\n\",\n      \"254629497041810760783555711051172270131433549208242031329517556169297662470417088272924671\\n\",\n      \"509258994083621521567111422102344540262867098416484062659035112338595324940834176545849343\\n\",\n      \"1018517988167243043134222844204689080525734196832968125318070224677190649881668353091698687\\n\",\n      \"2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397375\\n\",\n      \"4074071952668972172536891376818756322102936787331872501272280898708762599526673412366794751\\n\",\n      \"8148143905337944345073782753637512644205873574663745002544561797417525199053346824733589503\\n\",\n      \"16296287810675888690147565507275025288411747149327490005089123594835050398106693649467179007\\n\",\n      \"32592575621351777380295131014550050576823494298654980010178247189670100796213387298934358015\\n\",\n      \"65185151242703554760590262029100101153646988597309960020356494379340201592426774597868716031\\n\",\n      \"130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432063\\n\",\n      \"260740604970814219042361048116400404614587954389239840081425977517360806369707098391474864127\\n\",\n      \"521481209941628438084722096232800809229175908778479680162851955034721612739414196782949728255\\n\",\n      \"1042962419883256876169444192465601618458351817556959360325703910069443225478828393565899456511\\n\",\n      \"2085924839766513752338888384931203236916703635113918720651407820138886450957656787131798913023\\n\",\n      \"4171849679533027504677776769862406473833407270227837441302815640277772901915313574263597826047\\n\",\n      \"8343699359066055009355553539724812947666814540455674882605631280555545803830627148527195652095\\n\",\n      \"16687398718132110018711107079449625895333629080911349765211262561111091607661254297054391304191\\n\",\n      \"33374797436264220037422214158899251790667258161822699530422525122222183215322508594108782608383\\n\",\n      \"66749594872528440074844428317798503581334516323645399060845050244444366430645017188217565216767\\n\",\n      \"133499189745056880149688856635597007162669032647290798121690100488888732861290034376435130433535\\n\",\n      \"266998379490113760299377713271194014325338065294581596243380200977777465722580068752870260867071\\n\",\n      \"533996758980227520598755426542388028650676130589163192486760401955554931445160137505740521734143\\n\",\n      \"1067993517960455041197510853084776057301352261178326384973520803911109862890320275011481043468287\\n\",\n      \"2135987035920910082395021706169552114602704522356652769947041607822219725780640550022962086936575\\n\",\n      \"4271974071841820164790043412339104229205409044713305539894083215644439451561281100045924173873151\\n\",\n      \"8543948143683640329580086824678208458410818089426611079788166431288878903122562200091848347746303\\n\",\n      \"17087896287367280659160173649356416916821636178853222159576332862577757806245124400183696695492607\\n\",\n      \"34175792574734561318320347298712833833643272357706444319152665725155515612490248800367393390985215\\n\",\n      \"68351585149469122636640694597425667667286544715412888638305331450311031224980497600734786781970431\\n\",\n      \"136703170298938245273281389194851335334573089430825777276610662900622062449960995201469573563940863\\n\",\n      \"273406340597876490546562778389702670669146178861651554553221325801244124899921990402939147127881727\\n\",\n      \"546812681195752981093125556779405341338292357723303109106442651602488249799843980805878294255763455\\n\",\n      \"1093625362391505962186251113558810682676584715446606218212885303204976499599687961611756588511526911\\n\",\n      \"2187250724783011924372502227117621365353169430893212436425770606409952999199375923223513177023053823\\n\",\n      \"4374501449566023848745004454235242730706338861786424872851541212819905998398751846447026354046107647\\n\",\n      \"8749002899132047697490008908470485461412677723572849745703082425639811996797503692894052708092215295\\n\",\n      \"17498005798264095394980017816940970922825355447145699491406164851279623993595007385788105416184430591\\n\",\n      \"34996011596528190789960035633881941845650710894291398982812329702559247987190014771576210832368861183\\n\",\n      \"69992023193056381579920071267763883691301421788582797965624659405118495974380029543152421664737722367\\n\",\n      \"139984046386112763159840142535527767382602843577165595931249318810236991948760059086304843329475444735\\n\",\n      \"279968092772225526319680285071055534765205687154331191862498637620473983897520118172609686658950889471\\n\",\n      \"559936185544451052639360570142111069530411374308662383724997275240947967795040236345219373317901778943\\n\",\n      \"1119872371088902105278721140284222139060822748617324767449994550481895935590080472690438746635803557887\\n\",\n      \"2239744742177804210557442280568444278121645497234649534899989100963791871180160945380877493271607115775\\n\",\n      \"4479489484355608421114884561136888556243290994469299069799978201927583742360321890761754986543214231551\\n\",\n      \"8958978968711216842229769122273777112486581988938598139599956403855167484720643781523509973086428463103\\n\",\n      \"17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926207\\n\",\n      \"35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852415\\n\",\n      \"71671831749689734737838152978190216899892655911508785116799651230841339877765150252188079784691427704831\\n\",\n      \"143343663499379469475676305956380433799785311823017570233599302461682679755530300504376159569382855409663\\n\",\n      \"286687326998758938951352611912760867599570623646035140467198604923365359511060601008752319138765710819327\\n\",\n      \"573374653997517877902705223825521735199141247292070280934397209846730719022121202017504638277531421638655\\n\",\n      \"1146749307995035755805410447651043470398282494584140561868794419693461438044242404035009276555062843277311\\n\",\n      \"2293498615990071511610820895302086940796564989168281123737588839386922876088484808070018553110125686554623\\n\",\n      \"4586997231980143023221641790604173881593129978336562247475177678773845752176969616140037106220251373109247\\n\",\n      \"9173994463960286046443283581208347763186259956673124494950355357547691504353939232280074212440502746218495\\n\",\n      \"18347988927920572092886567162416695526372519913346248989900710715095383008707878464560148424881005492436991\\n\",\n      \"36695977855841144185773134324833391052745039826692497979801421430190766017415756929120296849762010984873983\\n\",\n      \"73391955711682288371546268649666782105490079653384995959602842860381532034831513858240593699524021969747967\\n\",\n      \"146783911423364576743092537299333564210980159306769991919205685720763064069663027716481187399048043939495935\\n\",\n      \"293567822846729153486185074598667128421960318613539983838411371441526128139326055432962374798096087878991871\\n\",\n      \"587135645693458306972370149197334256843920637227079967676822742883052256278652110865924749596192175757983743\\n\",\n      \"1174271291386916613944740298394668513687841274454159935353645485766104512557304221731849499192384351515967487\\n\",\n      \"2348542582773833227889480596789337027375682548908319870707290971532209025114608443463698998384768703031934975\\n\",\n      \"4697085165547666455778961193578674054751365097816639741414581943064418050229216886927397996769537406063869951\\n\",\n      \"9394170331095332911557922387157348109502730195633279482829163886128836100458433773854795993539074812127739903\\n\",\n      \"18788340662190665823115844774314696219005460391266558965658327772257672200916867547709591987078149624255479807\\n\",\n      \"37576681324381331646231689548629392438010920782533117931316655544515344401833735095419183974156299248510959615\\n\",\n      \"75153362648762663292463379097258784876021841565066235862633311089030688803667470190838367948312598497021919231\\n\",\n      \"150306725297525326584926758194517569752043683130132471725266622178061377607334940381676735896625196994043838463\\n\",\n      \"300613450595050653169853516389035139504087366260264943450533244356122755214669880763353471793250393988087676927\\n\",\n      \"601226901190101306339707032778070279008174732520529886901066488712245510429339761526706943586500787976175353855\\n\",\n      \"1202453802380202612679414065556140558016349465041059773802132977424491020858679523053413887173001575952350707711\\n\",\n      \"2404907604760405225358828131112281116032698930082119547604265954848982041717359046106827774346003151904701415423\\n\",\n      \"4809815209520810450717656262224562232065397860164239095208531909697964083434718092213655548692006303809402830847\\n\",\n      \"9619630419041620901435312524449124464130795720328478190417063819395928166869436184427311097384012607618805661695\\n\",\n      \"19239260838083241802870625048898248928261591440656956380834127638791856333738872368854622194768025215237611323391\\n\",\n      \"38478521676166483605741250097796497856523182881313912761668255277583712667477744737709244389536050430475222646783\\n\",\n      \"76957043352332967211482500195592995713046365762627825523336510555167425334955489475418488779072100860950445293567\\n\",\n      \"153914086704665934422965000391185991426092731525255651046673021110334850669910978950836977558144201721900890587135\\n\",\n      \"307828173409331868845930000782371982852185463050511302093346042220669701339821957901673955116288403443801781174271\\n\",\n      \"615656346818663737691860001564743965704370926101022604186692084441339402679643915803347910232576806887603562348543\\n\",\n      \"1231312693637327475383720003129487931408741852202045208373384168882678805359287831606695820465153613775207124697087\\n\",\n      \"2462625387274654950767440006258975862817483704404090416746768337765357610718575663213391640930307227550414249394175\\n\",\n      \"4925250774549309901534880012517951725634967408808180833493536675530715221437151326426783281860614455100828498788351\\n\",\n      \"9850501549098619803069760025035903451269934817616361666987073351061430442874302652853566563721228910201656997576703\\n\",\n      \"19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153407\\n\",\n      \"39402006196394479212279040100143613805079739270465446667948293404245721771497210611414266254884915640806627990306815\\n\",\n      \"78804012392788958424558080200287227610159478540930893335896586808491443542994421222828532509769831281613255980613631\\n\",\n      \"157608024785577916849116160400574455220318957081861786671793173616982887085988842445657065019539662563226511961227263\\n\",\n      \"315216049571155833698232320801148910440637914163723573343586347233965774171977684891314130039079325126453023922454527\\n\",\n      \"630432099142311667396464641602297820881275828327447146687172694467931548343955369782628260078158650252906047844909055\\n\",\n      \"1260864198284623334792929283204595641762551656654894293374345388935863096687910739565256520156317300505812095689818111\\n\",\n      \"2521728396569246669585858566409191283525103313309788586748690777871726193375821479130513040312634601011624191379636223\\n\",\n      \"5043456793138493339171717132818382567050206626619577173497381555743452386751642958261026080625269202023248382759272447\\n\",\n      \"10086913586276986678343434265636765134100413253239154346994763111486904773503285916522052161250538404046496765518544895\\n\",\n      \"20173827172553973356686868531273530268200826506478308693989526222973809547006571833044104322501076808092993531037089791\\n\",\n      \"40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179583\\n\",\n      \"80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359167\\n\",\n      \"161390617380431786853494948250188242145606612051826469551916209783790476376052574664352834580008614464743948248296718335\\n\",\n      \"322781234760863573706989896500376484291213224103652939103832419567580952752105149328705669160017228929487896496593436671\\n\",\n      \"645562469521727147413979793000752968582426448207305878207664839135161905504210298657411338320034457858975792993186873343\\n\",\n      \"1291124939043454294827959586001505937164852896414611756415329678270323811008420597314822676640068915717951585986373746687\\n\",\n      \"2582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493375\\n\",\n      \"5164499756173817179311838344006023748659411585658447025661318713081295244033682389259290706560275662871806343945494986751\\n\",\n      \"10328999512347634358623676688012047497318823171316894051322637426162590488067364778518581413120551325743612687890989973503\\n\",\n      \"20657999024695268717247353376024094994637646342633788102645274852325180976134729557037162826241102651487225375781979947007\\n\",\n      \"41315998049390537434494706752048189989275292685267576205290549704650361952269459114074325652482205302974450751563959894015\\n\",\n      \"82631996098781074868989413504096379978550585370535152410581099409300723904538918228148651304964410605948901503127919788031\\n\",\n      \"165263992197562149737978827008192759957101170741070304821162198818601447809077836456297302609928821211897803006255839576063\\n\",\n      \"330527984395124299475957654016385519914202341482140609642324397637202895618155672912594605219857642423795606012511679152127\\n\",\n      \"661055968790248598951915308032771039828404682964281219284648795274405791236311345825189210439715284847591212025023358304255\\n\",\n      \"1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430569695182424050046716608511\\n\",\n      \"2644223875160994395807661232131084159313618731857124877138595181097623164945245383300756841758861139390364848100093433217023\\n\",\n      \"5288447750321988791615322464262168318627237463714249754277190362195246329890490766601513683517722278780729696200186866434047\\n\",\n      \"10576895500643977583230644928524336637254474927428499508554380724390492659780981533203027367035444557561459392400373732868095\\n\",\n      \"21153791001287955166461289857048673274508949854856999017108761448780985319561963066406054734070889115122918784800747465736191\\n\",\n      \"42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472383\\n\",\n      \"84615164005151820665845159428194693098035799419427996068435045795123941278247852265624218936283556460491675139202989862944767\\n\",\n      \"169230328010303641331690318856389386196071598838855992136870091590247882556495704531248437872567112920983350278405979725889535\\n\",\n      \"338460656020607282663380637712778772392143197677711984273740183180495765112991409062496875745134225841966700556811959451779071\\n\",\n      \"676921312041214565326761275425557544784286395355423968547480366360991530225982818124993751490268451683933401113623918903558143\\n\",\n      \"1353842624082429130653522550851115089568572790710847937094960732721983060451965636249987502980536903367866802227247837807116287\\n\",\n      \"2707685248164858261307045101702230179137145581421695874189921465443966120903931272499975005961073806735733604454495675614232575\\n\",\n      \"5415370496329716522614090203404460358274291162843391748379842930887932241807862544999950011922147613471467208908991351228465151\\n\",\n      \"10830740992659433045228180406808920716548582325686783496759685861775864483615725089999900023844295226942934417817982702456930303\\n\",\n      \"21661481985318866090456360813617841433097164651373566993519371723551728967231450179999800047688590453885868835635965404913860607\\n\",\n      \"43322963970637732180912721627235682866194329302747133987038743447103457934462900359999600095377180907771737671271930809827721215\\n\",\n      \"86645927941275464361825443254471365732388658605494267974077486894206915868925800719999200190754361815543475342543861619655442431\\n\",\n      \"173291855882550928723650886508942731464777317210988535948154973788413831737851601439998400381508723631086950685087723239310884863\\n\",\n      \"346583711765101857447301773017885462929554634421977071896309947576827663475703202879996800763017447262173901370175446478621769727\\n\",\n      \"693167423530203714894603546035770925859109268843954143792619895153655326951406405759993601526034894524347802740350892957243539455\\n\",\n      \"1386334847060407429789207092071541851718218537687908287585239790307310653902812811519987203052069789048695605480701785914487078911\\n\",\n      \"2772669694120814859578414184143083703436437075375816575170479580614621307805625623039974406104139578097391210961403571828974157823\\n\",\n      \"5545339388241629719156828368286167406872874150751633150340959161229242615611251246079948812208279156194782421922807143657948315647\\n\",\n      \"11090678776483259438313656736572334813745748301503266300681918322458485231222502492159897624416558312389564843845614287315896631295\\n\",\n      \"22181357552966518876627313473144669627491496603006532601363836644916970462445004984319795248833116624779129687691228574631793262591\\n\",\n      \"44362715105933037753254626946289339254982993206013065202727673289833940924890009968639590497666233249558259375382457149263586525183\\n\",\n      \"88725430211866075506509253892578678509965986412026130405455346579667881849780019937279180995332466499116518750764914298527173050367\\n\",\n      \"177450860423732151013018507785157357019931972824052260810910693159335763699560039874558361990664932998233037501529828597054346100735\\n\",\n      \"354901720847464302026037015570314714039863945648104521621821386318671527399120079749116723981329865996466075003059657194108692201471\\n\",\n      \"709803441694928604052074031140629428079727891296209043243642772637343054798240159498233447962659731992932150006119314388217384402943\\n\",\n      \"1419606883389857208104148062281258856159455782592418086487285545274686109596480318996466895925319463985864300012238628776434768805887\\n\",\n      \"2839213766779714416208296124562517712318911565184836172974571090549372219192960637992933791850638927971728600024477257552869537611775\\n\",\n      \"5678427533559428832416592249125035424637823130369672345949142181098744438385921275985867583701277855943457200048954515105739075223551\\n\",\n      \"11356855067118857664833184498250070849275646260739344691898284362197488876771842551971735167402555711886914400097909030211478150447103\\n\",\n      \"22713710134237715329666368996500141698551292521478689383796568724394977753543685103943470334805111423773828800195818060422956300894207\\n\",\n      \"45427420268475430659332737993000283397102585042957378767593137448789955507087370207886940669610222847547657600391636120845912601788415\\n\",\n      \"90854840536950861318665475986000566794205170085914757535186274897579911014174740415773881339220445695095315200783272241691825203576831\\n\",\n      \"181709681073901722637330951972001133588410340171829515070372549795159822028349480831547762678440891390190630401566544483383650407153663\\n\",\n      \"363419362147803445274661903944002267176820680343659030140745099590319644056698961663095525356881782780381260803133088966767300814307327\\n\",\n      \"726838724295606890549323807888004534353641360687318060281490199180639288113397923326191050713763565560762521606266177933534601628614655\\n\",\n      \"1453677448591213781098647615776009068707282721374636120562980398361278576226795846652382101427527131121525043212532355867069203257229311\\n\",\n      \"2907354897182427562197295231552018137414565442749272241125960796722557152453591693304764202855054262243050086425064711734138406514458623\\n\",\n      \"5814709794364855124394590463104036274829130885498544482251921593445114304907183386609528405710108524486100172850129423468276813028917247\\n\",\n      \"11629419588729710248789180926208072549658261770997088964503843186890228609814366773219056811420217048972200345700258846936553626057834495\\n\",\n      \"23258839177459420497578361852416145099316523541994177929007686373780457219628733546438113622840434097944400691400517693873107252115668991\\n\",\n      \"46517678354918840995156723704832290198633047083988355858015372747560914439257467092876227245680868195888801382801035387746214504231337983\\n\",\n      \"93035356709837681990313447409664580397266094167976711716030745495121828878514934185752454491361736391777602765602070775492429008462675967\\n\",\n      \"186070713419675363980626894819329160794532188335953423432061490990243657757029868371504908982723472783555205531204141550984858016925351935\\n\",\n      \"372141426839350727961253789638658321589064376671906846864122981980487315514059736743009817965446945567110411062408283101969716033850703871\\n\",\n      \"744282853678701455922507579277316643178128753343813693728245963960974631028119473486019635930893891134220822124816566203939432067701407743\\n\",\n      \"1488565707357402911845015158554633286356257506687627387456491927921949262056238946972039271861787782268441644249633132407878864135402815487\\n\",\n      \"2977131414714805823690030317109266572712515013375254774912983855843898524112477893944078543723575564536883288499266264815757728270805630975\\n\",\n      \"5954262829429611647380060634218533145425030026750509549825967711687797048224955787888157087447151129073766576998532529631515456541611261951\\n\",\n      \"11908525658859223294760121268437066290850060053501019099651935423375594096449911575776314174894302258147533153997065059263030913083222523903\\n\",\n      \"23817051317718446589520242536874132581700120107002038199303870846751188192899823151552628349788604516295066307994130118526061826166445047807\\n\",\n      \"47634102635436893179040485073748265163400240214004076398607741693502376385799646303105256699577209032590132615988260237052123652332890095615\\n\",\n      \"95268205270873786358080970147496530326800480428008152797215483387004752771599292606210513399154418065180265231976520474104247304665780191231\\n\",\n      \"190536410541747572716161940294993060653600960856016305594430966774009505543198585212421026798308836130360530463953040948208494609331560382463\\n\",\n      \"381072821083495145432323880589986121307201921712032611188861933548019011086397170424842053596617672260721060927906081896416989218663120764927\\n\",\n      \"762145642166990290864647761179972242614403843424065222377723867096038022172794340849684107193235344521442121855812163792833978437326241529855\\n\",\n      \"1524291284333980581729295522359944485228807686848130444755447734192076044345588681699368214386470689042884243711624327585667956874652483059711\\n\",\n      \"3048582568667961163458591044719888970457615373696260889510895468384152088691177363398736428772941378085768487423248655171335913749304966119423\\n\",\n      \"6097165137335922326917182089439777940915230747392521779021790936768304177382354726797472857545882756171536974846497310342671827498609932238847\\n\",\n      \"12194330274671844653834364178879555881830461494785043558043581873536608354764709453594945715091765512343073949692994620685343654997219864477695\\n\",\n      \"24388660549343689307668728357759111763660922989570087116087163747073216709529418907189891430183531024686147899385989241370687309994439728955391\\n\",\n      \"48777321098687378615337456715518223527321845979140174232174327494146433419058837814379782860367062049372295798771978482741374619988879457910783\\n\",\n      \"97554642197374757230674913431036447054643691958280348464348654988292866838117675628759565720734124098744591597543956965482749239977758915821567\\n\",\n      \"195109284394749514461349826862072894109287383916560696928697309976585733676235351257519131441468248197489183195087913930965498479955517831643135\\n\",\n      \"390218568789499028922699653724145788218574767833121393857394619953171467352470702515038262882936496394978366390175827861930996959911035663286271\\n\",\n      \"780437137578998057845399307448291576437149535666242787714789239906342934704941405030076525765872992789956732780351655723861993919822071326572543\\n\",\n      \"1560874275157996115690798614896583152874299071332485575429578479812685869409882810060153051531745985579913465560703311447723987839644142653145087\\n\",\n      \"3121748550315992231381597229793166305748598142664971150859156959625371738819765620120306103063491971159826931121406622895447975679288285306290175\\n\",\n      \"6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580351\\n\",\n      \"12486994201263968925526388919172665222994392570659884603436627838501486955279062480481224412253967884639307724485626491581791902717153141225160703\\n\",\n      \"24973988402527937851052777838345330445988785141319769206873255677002973910558124960962448824507935769278615448971252983163583805434306282450321407\\n\",\n      \"49947976805055875702105555676690660891977570282639538413746511354005947821116249921924897649015871538557230897942505966327167610868612564900642815\\n\",\n      \"99895953610111751404211111353381321783955140565279076827493022708011895642232499843849795298031743077114461795885011932654335221737225129801285631\\n\",\n      \"199791907220223502808422222706762643567910281130558153654986045416023791284464999687699590596063486154228923591770023865308670443474450259602571263\\n\",\n      \"399583814440447005616844445413525287135820562261116307309972090832047582568929999375399181192126972308457847183540047730617340886948900519205142527\\n\",\n      \"799167628880894011233688890827050574271641124522232614619944181664095165137859998750798362384253944616915694367080095461234681773897801038410285055\\n\",\n      \"1598335257761788022467377781654101148543282249044465229239888363328190330275719997501596724768507889233831388734160190922469363547795602076820570111\\n\",\n      \"3196670515523576044934755563308202297086564498088930458479776726656380660551439995003193449537015778467662777468320381844938727095591204153641140223\\n\",\n      \"6393341031047152089869511126616404594173128996177860916959553453312761321102879990006386899074031556935325554936640763689877454191182408307282280447\\n\",\n      \"12786682062094304179739022253232809188346257992355721833919106906625522642205759980012773798148063113870651109873281527379754908382364816614564560895\\n\",\n      \"25573364124188608359478044506465618376692515984711443667838213813251045284411519960025547596296126227741302219746563054759509816764729633229129121791\\n\",\n      \"51146728248377216718956089012931236753385031969422887335676427626502090568823039920051095192592252455482604439493126109519019633529459266458258243583\\n\",\n      \"102293456496754433437912178025862473506770063938845774671352855253004181137646079840102190385184504910965208878986252219038039267058918532916516487167\\n\",\n      \"204586912993508866875824356051724947013540127877691549342705710506008362275292159680204380770369009821930417757972504438076078534117837065833032974335\\n\",\n      \"409173825987017733751648712103449894027080255755383098685411421012016724550584319360408761540738019643860835515945008876152157068235674131666065948671\\n\",\n      \"818347651974035467503297424206899788054160511510766197370822842024033449101168638720817523081476039287721671031890017752304314136471348263332131897343\\n\",\n      \"1636695303948070935006594848413799576108321023021532394741645684048066898202337277441635046162952078575443342063780035504608628272942696526664263794687\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for i in range(500):\\n\",\n    \"    print(2**i - 1)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/Typesetting Equations.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The Markdown parser included in the Jupyter Notebook is MathJax-aware.  This means that you can freely mix in mathematical expressions using the [MathJax subset of Tex and LaTeX](https://docs.mathjax.org/en/latest/input/tex/).  [Some examples from the MathJax demos site](https://mathjax.github.io/MathJax-demos-web/) are reproduced below, as well as the Markdown+TeX source.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Motivating Examples\\n\",\n    \"\\n\",\n    \"## The Lorenz Equations\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\dot{x} & = \\\\sigma(y-x) \\\\\\\\\\n\",\n    \"\\\\dot{y} & = \\\\rho x - y - xz \\\\\\\\\\n\",\n    \"\\\\dot{z} & = -\\\\beta z + xy\\n\",\n    \"\\\\end{align}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"\\n\",\n    \"$\\\\begin{align}\\n\",\n    \"\\\\dot{x} & = \\\\sigma(y-x) \\\\\\\\\\n\",\n    \"\\\\dot{y} & = \\\\rho x - y - xz \\\\\\\\\\n\",\n    \"\\\\dot{z} & = -\\\\beta z + xy\\n\",\n    \"\\\\end{align}$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The Cauchy-Schwarz Inequality\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{equation*}\\n\",\n    \"\\\\left( \\\\sum_{k=1}^n a_k b_k \\\\right)^2 \\\\leq \\\\left( \\\\sum_{k=1}^n a_k^2 \\\\right) \\\\left( \\\\sum_{k=1}^n b_k^2 \\\\right)\\n\",\n    \"\\\\end{equation*}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"\\n\",\n    \"$\\\\begin{equation*}\\n\",\n    \"\\\\left( \\\\sum_{k=1}^n a_k b_k \\\\right)^2 \\\\leq \\\\left( \\\\sum_{k=1}^n a_k^2 \\\\right) \\\\left( \\\\sum_{k=1}^n b_k^2 \\\\right)\\n\",\n    \"\\\\end{equation*}$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## A Cross Product Formula\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{equation*}\\n\",\n    \"\\\\mathbf{V}_1 \\\\times \\\\mathbf{V}_2 =  \\\\begin{vmatrix}\\n\",\n    \"\\\\mathbf{i} & \\\\mathbf{j} & \\\\mathbf{k} \\\\\\\\\\n\",\n    \"\\\\frac{\\\\partial X}{\\\\partial u} &  \\\\frac{\\\\partial Y}{\\\\partial u} & 0 \\\\\\\\\\n\",\n    \"\\\\frac{\\\\partial X}{\\\\partial v} &  \\\\frac{\\\\partial Y}{\\\\partial v} & 0\\n\",\n    \"\\\\end{vmatrix}  \\n\",\n    \"\\\\end{equation*}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"\\n\",\n    \"$\\\\begin{equation*}\\n\",\n    \"\\\\mathbf{V}_1 \\\\times \\\\mathbf{V}_2 =  \\\\begin{vmatrix}\\n\",\n    \"\\\\mathbf{i} & \\\\mathbf{j} & \\\\mathbf{k} \\\\\\\\\\n\",\n    \"\\\\frac{\\\\partial X}{\\\\partial u} &  \\\\frac{\\\\partial Y}{\\\\partial u} & 0 \\\\\\\\\\n\",\n    \"\\\\frac{\\\\partial X}{\\\\partial v} &  \\\\frac{\\\\partial Y}{\\\\partial v} & 0\\n\",\n    \"\\\\end{vmatrix}  \\n\",\n    \"\\\\end{equation*}$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## The probability of getting \\\\(k\\\\) heads when flipping \\\\(n\\\\) coins is\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{equation*}\\n\",\n    \"P(E)   = {n \\\\choose k} p^k (1-p)^{ n-k} \\n\",\n    \"\\\\end{equation*}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"\\n\",\n    \"$\\\\begin{equation*}\\n\",\n    \"P(E)   = {n \\\\choose k} p^k (1-p)^{ n-k} \\n\",\n    \"\\\\end{equation*}$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## An Identity of Ramanujan\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{equation*}\\n\",\n    \"\\\\frac{1}{\\\\Bigl(\\\\sqrt{\\\\phi \\\\sqrt{5}}-\\\\phi\\\\Bigr) e^{\\\\frac25 \\\\pi}} =\\n\",\n    \"1+\\\\frac{e^{-2\\\\pi}} {1+\\\\frac{e^{-4\\\\pi}} {1+\\\\frac{e^{-6\\\\pi}}\\n\",\n    \"{1+\\\\frac{e^{-8\\\\pi}} {1+\\\\ldots} } } } \\n\",\n    \"\\\\end{equation*}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"$\\\\begin{equation*}\\n\",\n    \"\\\\frac{1}{\\\\Bigl(\\\\sqrt{\\\\phi \\\\sqrt{5}}-\\\\phi\\\\Bigr) e^{\\\\frac25 \\\\pi}} =\\n\",\n    \"1+\\\\frac{e^{-2\\\\pi}} {1+\\\\frac{e^{-4\\\\pi}} {1+\\\\frac{e^{-6\\\\pi}}\\n\",\n    \"{1+\\\\frac{e^{-8\\\\pi}} {1+\\\\ldots} } } } \\n\",\n    \"\\\\end{equation*}$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## A Rogers-Ramanujan Identity\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{equation*}\\n\",\n    \"1 +  \\\\frac{q^2}{(1-q)}+\\\\frac{q^6}{(1-q)(1-q^2)}+\\\\cdots =\\n\",\n    \"\\\\prod_{j=0}^{\\\\infty}\\\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\\n\",\n    \"\\\\quad\\\\quad \\\\text{for $|q|<1$}. \\n\",\n    \"\\\\end{equation*}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"\\n\",\n    \"$$\\\\begin{equation*}\\n\",\n    \"1 + \\\\frac{q^2}{(1-q)}+\\\\frac{q^6}{(1-q)(1-q^2)}+\\\\cdots =\\n\",\n    \"\\\\prod_{j=0}^{\\\\infty}\\\\frac{1}{(1-q^{5j+2})(1-q^{5j+3})},\\n\",\n    \"\\\\quad\\\\quad \\\\text{for $|q|<1$}. \\n\",\n    \"\\\\end{equation*}$$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Maxwell's Equations\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\nabla \\\\times \\\\vec{\\\\mathbf{B}} -\\\\, \\\\frac1c\\\\, \\\\frac{\\\\partial\\\\vec{\\\\mathbf{E}}}{\\\\partial t} & = \\\\frac{4\\\\pi}{c}\\\\vec{\\\\mathbf{j}} \\\\\\\\   \\\\nabla \\\\cdot \\\\vec{\\\\mathbf{E}} & = 4 \\\\pi \\\\rho \\\\\\\\\\n\",\n    \"\\\\nabla \\\\times \\\\vec{\\\\mathbf{E}}\\\\, +\\\\, \\\\frac1c\\\\, \\\\frac{\\\\partial\\\\vec{\\\\mathbf{B}}}{\\\\partial t} & = \\\\vec{\\\\mathbf{0}} \\\\\\\\\\n\",\n    \"\\\\nabla \\\\cdot \\\\vec{\\\\mathbf{B}} & = 0 \\n\",\n    \"\\\\end{align}\\n\",\n    \"```\\n\",\n    \"### Display\\n\",\n    \"\\n\",\n    \"$\\\\begin{align}\\n\",\n    \"\\\\nabla \\\\times \\\\vec{\\\\mathbf{B}} -\\\\, \\\\frac1c\\\\, \\\\frac{\\\\partial\\\\vec{\\\\mathbf{E}}}{\\\\partial t} & = \\\\frac{4\\\\pi}{c}\\\\vec{\\\\mathbf{j}} \\\\\\\\   \\\\nabla \\\\cdot \\\\vec{\\\\mathbf{E}} & = 4 \\\\pi \\\\rho \\\\\\\\\\n\",\n    \"\\\\nabla \\\\times \\\\vec{\\\\mathbf{E}}\\\\, +\\\\, \\\\frac1c\\\\, \\\\frac{\\\\partial\\\\vec{\\\\mathbf{B}}}{\\\\partial t} & = \\\\vec{\\\\mathbf{0}} \\\\\\\\\\n\",\n    \"\\\\nabla \\\\cdot \\\\vec{\\\\mathbf{B}} & = 0 \\n\",\n    \"\\\\end{align}$\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Equation Numbering and References\\n\",\n    \"\\n\",\n    \"Equation numbering and referencing will be available in a future version of the Jupyter notebook.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Inline Typesetting (Mixing Markdown and TeX)\\n\",\n    \"\\n\",\n    \"While display equations look good for a page of samples, the ability to mix math and *formatted* **text** in a paragraph is also important.\\n\",\n    \"\\n\",\n    \"### Source\\n\",\n    \"```\\n\",\n    \"This expression $\\\\sqrt{3x-1}+(1+x)^2$ is an example of a TeX inline equation in a [Markdown-formatted](https://daringfireball.net/projects/markdown/) sentence.  \\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"### Display\\n\",\n    \"This expression $\\\\sqrt{3x-1}+(1+x)^2$ is an example of a TeX inline equation in a [Markdown-formatted](https://daringfireball.net/projects/markdown/) sentence.  \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Other Syntax\\n\",\n    \"\\n\",\n    \"You will notice in other places on the web that `$$` are needed explicitly to begin and end MathJax typesetting.  This is **not** required if you will be using TeX environments, but the Jupyter notebook will accept this syntax on legacy notebooks.  \\n\",\n    \"\\n\",\n    \"## Source\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"$$\\n\",\n    \"\\\\begin{array}{c}\\n\",\n    \"y_1 \\\\\\\\\\\\\\n\",\n    \"y_2 \\\\mathtt{t}_i \\\\\\\\\\\\\\n\",\n    \"z_{3,4}\\n\",\n    \"\\\\end{array}\\n\",\n    \"$$\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"$$\\n\",\n    \"\\\\begin{array}{c}\\n\",\n    \"y_1 \\\\cr\\n\",\n    \"y_2 \\\\mathtt{t}_i \\\\cr\\n\",\n    \"y_{3}\\n\",\n    \"\\\\end{array}\\n\",\n    \"$$\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"$$\\\\begin{eqnarray} \\n\",\n    \"x' &=& &x \\\\sin\\\\phi &+& z \\\\cos\\\\phi \\\\\\\\\\n\",\n    \"z' &=& - &x \\\\cos\\\\phi &+& z \\\\sin\\\\phi \\\\\\\\\\n\",\n    \"\\\\end{eqnarray}$$\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"$$\\n\",\n    \"x=4\\n\",\n    \"$$\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"## Display\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{array}{c}\\n\",\n    \"y_1 \\\\\\\\\\\\\\n\",\n    \"y_2 \\\\mathtt{t}_i \\\\\\\\\\\\\\n\",\n    \"z_{3,4}\\n\",\n    \"\\\\end{array}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{array}{c}\\n\",\n    \"y_1 \\\\cr\\n\",\n    \"y_2 \\\\mathtt{t}_i \\\\cr\\n\",\n    \"y_{3}\\n\",\n    \"\\\\end{array}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"$$\\\\begin{eqnarray} \\n\",\n    \"x' &=& &x \\\\sin\\\\phi &+& z \\\\cos\\\\phi \\\\\\\\\\n\",\n    \"z' &=& - &x \\\\cos\\\\phi &+& z \\\\sin\\\\phi \\\\\\\\\\n\",\n    \"\\\\end{eqnarray}$$\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"x=4\\n\",\n    \"$$\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/What is the Jupyter Notebook.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# What is the Jupyter Notebook?\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Introduction\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The Jupyter Notebook is an **interactive computing environment** that enables users to author notebook documents that include: \\n\",\n    \"- Live code\\n\",\n    \"- Interactive widgets\\n\",\n    \"- Plots\\n\",\n    \"- Narrative text\\n\",\n    \"- Equations\\n\",\n    \"- Images\\n\",\n    \"- Video\\n\",\n    \"\\n\",\n    \"These documents provide a **complete and self-contained record of a computation** that can be converted to various formats and shared with others using email, [Dropbox](https://www.dropbox.com/), version control systems (like git/[GitHub](https://github.com)) or [nbviewer.jupyter.org](https://nbviewer.jupyter.org).\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"### Components\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The Jupyter Notebook combines three components:\\n\",\n    \"\\n\",\n    \"* **The notebook web application**: An interactive web application for writing and running code interactively and authoring notebook documents.\\n\",\n    \"* **Kernels**: Separate processes started by the notebook web application that runs users' code in a given language and returns output back to the notebook web application. The kernel also handles things like computations for interactive widgets, tab completion and introspection. \\n\",\n    \"* **Notebook documents**: Self-contained documents that contain a representation of all content visible in the notebook web application, including inputs and outputs of the computations, narrative\\n\",\n    \"text, equations, images, and rich media representations of objects. Each notebook document has its own kernel.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"## Notebook web application\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The notebook web application enables users to:\\n\",\n    \"\\n\",\n    \"* **Edit code in the browser**, with automatic syntax highlighting, indentation, and tab completion/introspection.\\n\",\n    \"* **Run code from the browser**, with the results of computations attached to the code which generated them.\\n\",\n    \"* See the results of computations with **rich media representations**, such as HTML, LaTeX, PNG, SVG, PDF, etc.\\n\",\n    \"* Create and use **interactive JavaScript widgets**, which bind interactive user interface controls and visualizations to reactive kernel side computations.\\n\",\n    \"* Author **narrative text** using the [Markdown](https://daringfireball.net/projects/markdown/) markup language.\\n\",\n    \"* Include mathematical equations using **LaTeX syntax in Markdown**, which are rendered in-browser by [MathJax](https://www.mathjax.org/).\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"## Kernels\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Through Jupyter's kernel and messaging architecture, the Notebook allows code to be run in a range of different programming languages.  For each notebook document that a user opens, the web application starts a kernel that runs the code for that notebook. Each kernel is capable of running code in a single programming language and there are kernels available in the following languages:\\n\",\n    \"\\n\",\n    \"* Python(https://github.com/ipython/ipython)\\n\",\n    \"* Julia (https://github.com/JuliaLang/IJulia.jl)\\n\",\n    \"* R (https://github.com/IRkernel/IRkernel)\\n\",\n    \"* Ruby (https://github.com/minrk/iruby)\\n\",\n    \"* Haskell (https://github.com/gibiansky/IHaskell)\\n\",\n    \"* Scala (https://github.com/Bridgewater/scala-notebook)\\n\",\n    \"* node.js (https://gist.github.com/Carreau/4279371)\\n\",\n    \"* Go (https://github.com/takluyver/igo)\\n\",\n    \"\\n\",\n    \"The default kernel runs Python code. The notebook provides a simple way for users to pick which of these kernels is used for a given notebook. \\n\",\n    \"\\n\",\n    \"Each of these kernels communicate with the notebook web application and web browser using a JSON over ZeroMQ/WebSockets message protocol that is described [here](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messaging). Most users don't need to know about these details, but it helps to understand that \\\"kernels run code.\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"## Notebook documents\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Notebook documents contain the **inputs and outputs** of an interactive session as well as **narrative text** that accompanies the code but is not meant for execution. **Rich output** generated by running code, including HTML, images, video, and plots, is embeddeed in the notebook, which makes it a complete and self-contained record of a computation. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"When you run the notebook web application on your computer, notebook documents are just **files on your local filesystem with a** `.ipynb` **extension**. This allows you to use familiar workflows for organizing your notebooks into folders and sharing them with others.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Notebooks consist of a **linear sequence of cells**. There are three basic cell types:\\n\",\n    \"\\n\",\n    \"* **Code cells:** Input and output of live code that is run in the kernel\\n\",\n    \"* **Markdown cells:** Narrative text with embedded LaTeX equations\\n\",\n    \"* **Raw cells:** Unformatted text that is included, without modification, when notebooks are converted to different formats using nbconvert\\n\",\n    \"\\n\",\n    \"Internally, notebook documents are [JSON](https://en.wikipedia.org/wiki/JSON) **data** with **binary values** [base64](https://en.wikipedia.org/wiki/Base64) encoded. This allows them to be **read and manipulated programmatically** by any programming language. Because JSON is a text format, notebook documents are version control friendly.\\n\",\n    \"\\n\",\n    \"**Notebooks can be exported** to different static formats including HTML, reStructeredText, LaTeX, PDF, and slide shows ([reveal.js](https://revealjs.com)) using Jupyter's `nbconvert` utility.\\n\",\n    \"\\n\",\n    \"Furthermore, any notebook document available from a **public URL or on GitHub can be shared** via [nbviewer](https://nbviewer.jupyter.org). This service loads the notebook document from the URL and renders it as a static web page. The resulting web page may thus be shared with others **without their needing to install the Jupyter Notebook**.\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/Working With Markdown Cells.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Markdown Cells\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Text can be added to Jupyter Notebooks using Markdown cells.  You can change the cell type to Markdown by using the `Cell` menu, the toolbar, or the key shortcut `m`.  Markdown is a popular markup language that is a superset of HTML. Its specification can be found here:\\n\",\n    \"\\n\",\n    \"<https://daringfireball.net/projects/markdown/>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Markdown basics\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can make text *italic* or **bold** by surrounding a block of text with a single or double * respectively\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can build nested itemized or enumerated lists:\\n\",\n    \"\\n\",\n    \"* One\\n\",\n    \"    - Sublist\\n\",\n    \"        - This\\n\",\n    \"  - Sublist\\n\",\n    \"        - That\\n\",\n    \"        - The other thing\\n\",\n    \"* Two\\n\",\n    \"  - Sublist\\n\",\n    \"* Three\\n\",\n    \"  - Sublist\\n\",\n    \"\\n\",\n    \"Now another list:\\n\",\n    \"\\n\",\n    \"1. Here we go\\n\",\n    \"    1. Sublist\\n\",\n    \"    2. Sublist\\n\",\n    \"2. There we go\\n\",\n    \"3. Now this\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can add horizontal rules:\\n\",\n    \"\\n\",\n    \"---\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Here is a blockquote:\\n\",\n    \"\\n\",\n    \"> Beautiful is better than ugly.\\n\",\n    \"> Explicit is better than implicit.\\n\",\n    \"> Simple is better than complex.\\n\",\n    \"> Complex is better than complicated.\\n\",\n    \"> Flat is better than nested.\\n\",\n    \"> Sparse is better than dense.\\n\",\n    \"> Readability counts.\\n\",\n    \"> Special cases aren't special enough to break the rules.\\n\",\n    \"> Although practicality beats purity.\\n\",\n    \"> Errors should never pass silently.\\n\",\n    \"> Unless explicitly silenced.\\n\",\n    \"> In the face of ambiguity, refuse the temptation to guess.\\n\",\n    \"> There should be one-- and preferably only one --obvious way to do it.\\n\",\n    \"> Although that way may not be obvious at first unless you're Dutch.\\n\",\n    \"> Now is better than never.\\n\",\n    \"> Although never is often better than *right* now.\\n\",\n    \"> If the implementation is hard to explain, it's a bad idea.\\n\",\n    \"> If the implementation is easy to explain, it may be a good idea.\\n\",\n    \"> Namespaces are one honking great idea -- let's do more of those!\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"And shorthand for links:\\n\",\n    \"\\n\",\n    \"[Jupyter's website](https://jupyter.org)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can use backslash \\\\ to generate literal characters which would otherwise have special meaning in the Markdown syntax.\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"\\\\*literal asterisks\\\\*\\n\",\n    \" *literal asterisks*\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"Use double backslash \\\\ \\\\ to generate the literal $ symbol.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Headings\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can add headings by starting a line with one (or multiple) `#` followed by a space, as in the following example:\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"# Heading 1\\n\",\n    \"# Heading 2\\n\",\n    \"## Heading 2.1\\n\",\n    \"## Heading 2.2\\n\",\n    \"```\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Embedded code\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You can embed code meant for illustration instead of execution in Python:\\n\",\n    \"\\n\",\n    \"    def f(x):\\n\",\n    \"        \\\"\\\"\\\"a docstring\\\"\\\"\\\"\\n\",\n    \"        return x**2\\n\",\n    \"\\n\",\n    \"or other languages:\\n\",\n    \"\\n\",\n    \"    for (i=0; i<n; i++) {\\n\",\n    \"      printf(\\\"hello %d\\\\n\\\", i);\\n\",\n    \"      x += 4;\\n\",\n    \"    }\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## LaTeX equations\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Courtesy of MathJax, you can include mathematical expressions both inline: \\n\",\n    \"$e^{i\\\\pi} + 1 = 0$  and displayed:\\n\",\n    \"\\n\",\n    \"\\\\begin{equation}\\n\",\n    \"e^x=\\\\sum_{i=0}^\\\\infty \\\\frac{1}{i!}x^i\\n\",\n    \"\\\\end{equation}\\n\",\n    \"\\n\",\n    \"Inline expressions can be added by surrounding the latex code with `$`:\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"$e^{i\\\\pi} + 1 = 0$\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"Expressions on their own line are surrounded by `\\\\begin{equation}` and `\\\\end{equation}`:\\n\",\n    \"\\n\",\n    \"```latex\\n\",\n    \"\\\\begin{equation}\\n\",\n    \"e^x=\\\\sum_{i=0}^\\\\infty \\\\frac{1}{i!}x^i\\n\",\n    \"\\\\end{equation}\\n\",\n    \"```\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## GitHub flavored markdown\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The Notebook webapp supports Github flavored markdown meaning that you can use triple backticks for code blocks:\\n\",\n    \"\\n\",\n    \"    ```python\\n\",\n    \"    print \\\"Hello World\\\"\\n\",\n    \"    ```\\n\",\n    \"\\n\",\n    \"    ```javascript\\n\",\n    \"    console.log(\\\"Hello World\\\")\\n\",\n    \"    ```\\n\",\n    \"\\n\",\n    \"Gives:\\n\",\n    \"\\n\",\n    \"```python\\n\",\n    \"print \\\"Hello World\\\"\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"```javascript\\n\",\n    \"console.log(\\\"Hello World\\\")\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"And a table like this: \\n\",\n    \"\\n\",\n    \"    | This | is   |\\n\",\n    \"    |------|------|\\n\",\n    \"    |   a  | table| \\n\",\n    \"\\n\",\n    \"A nice HTML Table:\\n\",\n    \"\\n\",\n    \"| This | is   |\\n\",\n    \"|------|------|\\n\",\n    \"|   a  | table| \\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## General HTML\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Because Markdown is a superset of HTML you can even add things like HTML tables:\\n\",\n    \"\\n\",\n    \"<table>\\n\",\n    \"<tr>\\n\",\n    \"<th>Header 1</th>\\n\",\n    \"<th>Header 2</th>\\n\",\n    \"</tr>\\n\",\n    \"<tr>\\n\",\n    \"<td>row 1, cell 1</td>\\n\",\n    \"<td>row 1, cell 2</td>\\n\",\n    \"</tr>\\n\",\n    \"<tr>\\n\",\n    \"<td>row 2, cell 1</td>\\n\",\n    \"<td>row 2, cell 2</td>\\n\",\n    \"</tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Local files\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"If you have local files in your Notebook directory, you can refer to these files in Markdown cells directly:\\n\",\n    \"\\n\",\n    \"    [subdirectory/]<filename>\\n\",\n    \"\\n\",\n    \"For example, in the images folder, we have the Python logo:\\n\",\n    \"\\n\",\n    \"    <img src=\\\"../images/python_logo.svg\\\" />\\n\",\n    \"\\n\",\n    \"<img src=\\\"../images/python_logo.svg\\\" />\\n\",\n    \"\\n\",\n    \"and a video with the HTML5 video tag:\\n\",\n    \"\\n\",\n    \"    <video controls src=\\\"../images/animation.m4v\\\">animation</video>\\n\",\n    \"\\n\",\n    \"<video controls src=\\\"../images/animation.m4v\\\">animation</video>\\n\",\n    \"\\n\",\n    \"These do not embed the data into the notebook file, and require that the files exist when you are viewing the notebook.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Security of local files\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Note that this means that the Jupyter notebook server also acts as a generic file server\\n\",\n    \"for files inside the same tree as your notebooks.  Access is not granted outside the\\n\",\n    \"notebook folder so you have strict control over what files are visible, but for this\\n\",\n    \"reason it is highly recommended that you do not run the notebook server with a notebook\\n\",\n    \"directory at a high level in your filesystem (e.g. your home directory).\\n\",\n    \"\\n\",\n    \"When you run the notebook in a password-protected manner, local file access is restricted\\n\",\n    \"to authenticated users unless read-only views are active.\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"pycon-logo.jpg\": {\n     \"image/jpeg\": \"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wwFLUXxDFNS9srVKbE1EY0t20AWVo/BAxBIcm/CVxiLnd+D8sSVNhM9eEg2cIChfkf8APNnAIoW5nCRMlTYTPT/wD//aAAwDAQACAAMAAAAQ8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888YU88888888888888888888888888s8skcw84Mw488888888888888888cYMIcc8g4c8ss44IU088888888888888oQYYQocMMc8MAoYQ4Qc888888888888M8I88888462088E88csU8888888888888s088zGfI4zEvKz88s088888888888888883/y2EWUV6np2/788888888888888888E4E0VUVUVpVpGI5I888888888888888E+XVcQeSZbiYjVpU+J8888888xw05KAxASQTCCCCCCCCCCwjiAxAG14wxDCCCGEMLJDEHP+sMMc+PLIDFHMIKCCCDL7eVPd/48004088808888w8w0vlbJu3H88/Q8N84s08wI4Ak08gkEMYM08t6sv8APPPK7LnfLGKPKPPAOFPOHAPAPPPLHnF/PPPPvovPLHKHJNOCEFPKGGEAONPPEvvvPPPPMPPPPPPHDHPHDPPPPHPHDPPPPMPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP/EACkRAQABAgMHBQEBAQAAAAAAAAEAETEhQaFRYXGBkcHRIECx4fAwgBD/2gAIAQMB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Davod+mLkEux2EJow4QYBAeh+RxozNxn2CmbIhHI9LnI8MZPeP5fcnCR9XToUi4uisp9PzlqJENxGvkG3P4FsKGF4ZNhhR2omuZ2AFFpV24N+jNAS8JExaTWRPFqBili0cwo8VYigsbJhwOiZ1dGnCeRUEIGS5lphG0xmo5Mw2xvIz7VOM4QZCyXZi6hdgoXldqkuY0kJ4qHB2DQmZYBquzpFOVcyg3dhSJ0miPLPRkwsAO7a34Z8OATDYGInmr+giXXaiqEoiuRvRLSAVIIW7exvaghfMY4iIbaGJGamgqAw3iKeSjvpdimReQ3AIm8uOnNAzUjiYmrWuRQA0AydyuYyXqDwb1dH34ARF4lmWIj+AIFxdJYRxfp7k4Sfq6/ymC+8CBNCRC9KSHttjCFss+f88D22ThA3WfPSk4L7yaA0BEB/wDgH//ZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Markdown attachments\\n\",\n    \"\\n\",\n    \"Since Jupyter notebook version 5.0, in addition to referencing external file you can attach a file to a markdown cell. \\n\",\n    \"To do so drag the file from in a markdown cell while editing it:\\n\",\n    \"\\n\",\n    \"![pycon-logo.jpg](attachment:pycon-logo.jpg)\\n\",\n    \"\\n\",\n    \"Files are stored in cell metadata and will be automatically scrubbed at save-time if not referenced. You can recognized attached images from other files by their url that starts with `attachment:`. For the image above:\\n\",\n    \"\\n\",\n    \"    ![pycon-logo.jpg](attachment:pycon-logo.jpg)\\n\",\n    \"    \\n\",\n    \"Keep in mind that attached files will increase the size of your notebook. \\n\",\n    \"\\n\",\n    \"You can manually edit the attachment by using the `View > Cell Toolbar > Attachment` menu, but you should not need to. \"\n   ]\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/examples_index.rst",
    "content": "=================\nNotebook Examples\n=================\n\nThe pages in this section are all converted notebook files. You can also\n`view these notebooks on nbviewer`__.\n\n__ https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/\n   docs/source/examples/Notebook/\n\n.. toctree::\n   :maxdepth: 2\n\n   What is the Jupyter Notebook\n   Notebook Basics\n   Running Code\n   Working With Markdown Cells\n   Custom Keyboard Shortcuts\n   Importing Notebooks\n   Connecting with the Qt Console\n   Typesetting Equations\n"
  },
  {
    "path": "docs/source/examples/Notebook/nbpackage/__init__.py",
    "content": ""
  },
  {
    "path": "docs/source/examples/Notebook/nbpackage/mynotebook.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# My Notebook\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def foo():\\n\",\n    \"    return \\\"foo\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def has_ip_syntax():\\n\",\n    \"    listing = !ls\\n\",\n    \"    return listing\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def whatsmyname():\\n\",\n    \"    return __name__\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.1+\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "docs/source/examples/Notebook/nbpackage/nbs/__init__.py",
    "content": ""
  },
  {
    "path": "docs/source/examples/Notebook/nbpackage/nbs/other.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Other notebook\\n\",\n    \"\\n\",\n    \"This notebook just defines `bar`\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def bar(x):\\n\",\n    \"    return \\\"bar\\\" * x\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "docs/source/examples/images/FrontendKernel.graffle/data.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ActiveLayerIndex</key>\n\t<integer>0</integer>\n\t<key>ApplicationVersion</key>\n\t<array>\n\t\t<string>com.omnigroup.OmniGraffle</string>\n\t\t<string>139.18.0.187838</string>\n\t</array>\n\t<key>AutoAdjust</key>\n\t<true/>\n\t<key>BackgroundGraphic</key>\n\t<dict>\n\t\t<key>Bounds</key>\n\t\t<string>{{0, 0}, {576, 733}}</string>\n\t\t<key>Class</key>\n\t\t<string>SolidGraphic</string>\n\t\t<key>ID</key>\n\t\t<integer>2</integer>\n\t\t<key>Style</key>\n\t\t<dict>\n\t\t\t<key>shadow</key>\n\t\t\t<dict>\n\t\t\t\t<key>Draws</key>\n\t\t\t\t<string>NO</string>\n\t\t\t</dict>\n\t\t\t<key>stroke</key>\n\t\t\t<dict>\n\t\t\t\t<key>Draws</key>\n\t\t\t\t<string>NO</string>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>BaseZoom</key>\n\t<integer>0</integer>\n\t<key>CanvasOrigin</key>\n\t<string>{0, 0}</string>\n\t<key>ColumnAlign</key>\n\t<integer>1</integer>\n\t<key>ColumnSpacing</key>\n\t<real>36</real>\n\t<key>CreationDate</key>\n\t<string>2014-05-27 21:39:30 +0000</string>\n\t<key>Creator</key>\n\t<string>bgranger</string>\n\t<key>DisplayScale</key>\n\t<string>1 0/72 in = 1.0000 in</string>\n\t<key>GraphDocumentVersion</key>\n\t<integer>8</integer>\n\t<key>GraphicsList</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>ControlPoints</key>\n\t\t\t<array>\n\t\t\t\t<string>{0, 0}</string>\n\t\t\t\t<string>{-7, 8}</string>\n\t\t\t\t<string>{6.9999849080788863, -8.0000033519149838}</string>\n\t\t\t\t<string>{0, 0}</string>\n\t\t\t</array>\n\t\t\t<key>ID</key>\n\t\t\t<integer>29</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{164, 341.5}</string>\n\t\t\t\t<string>{186.5, 338}</string>\n\t\t\t\t<string>{196, 327.5}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Bezier</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t\t<key>Legacy</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>LineType</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{107.64779663085938, 305.5}, {69.088050842285156, 84.499992370605469}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>ID</key>\n\t\t\t<integer>9</integer>\n\t\t\t<key>ImageID</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>shadow</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>6</integer>\n\t\t\t\t<key>Position</key>\n\t\t\t\t<real>0.53676468133926392</real>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>8</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{288.09285678056523, 276}</string>\n\t\t\t\t<string>{288.49999833106995, 304.50001973116196}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>FilledArrow</string>\n\t\t\t\t\t<key>Legacy</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>LineType</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>0</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>7</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{207, 263}, {162, 13}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>FitText</key>\n\t\t\t<string>YES</string>\n\t\t\t<key>Flow</key>\n\t\t\t<string>Resize</string>\n\t\t\t<key>ID</key>\n\t\t\t<integer>7</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>fill</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>shadow</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Pad</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1265\\cocoasubrtf190\n\\cocoascreenfonts1{\\fonttbl\\f0\\fnil\\fcharset0 xkcd-Regular;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\qc\n\n\\f0\\fs20 \\cf0 Interactive Computing Protocol}</string>\n\t\t\t\t<key>VerticalPad</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>Wrap</key>\n\t\t\t<string>NO</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Class</key>\n\t\t\t<string>LineGraphic</string>\n\t\t\t<key>Head</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t</dict>\n\t\t\t<key>ID</key>\n\t\t\t<integer>6</integer>\n\t\t\t<key>Points</key>\n\t\t\t<array>\n\t\t\t\t<string>{252, 304.50001973116196}</string>\n\t\t\t\t<string>{320, 304.50001973116196}</string>\n\t\t\t</array>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>stroke</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HeadArrow</key>\n\t\t\t\t\t<string>FilledArrow</string>\n\t\t\t\t\t<key>Legacy</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>LineType</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>Pattern</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>TailArrow</key>\n\t\t\t\t\t<string>FilledArrow</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Tail</key>\n\t\t\t<dict>\n\t\t\t\t<key>ID</key>\n\t\t\t\t<integer>5</integer>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{186.5, 286.5}, {65, 36}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>ID</key>\n\t\t\t<integer>5</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>shadow</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1265\\cocoasubrtf190\n\\cocoascreenfonts1{\\fonttbl\\f0\\fnil\\fcharset0 xkcd-Regular;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\qc\n\n\\f0\\fs20 \\cf0 Frontend}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>Bounds</key>\n\t\t\t<string>{{320.5, 286.5}, {65, 36}}</string>\n\t\t\t<key>Class</key>\n\t\t\t<string>ShapedGraphic</string>\n\t\t\t<key>ID</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>Shape</key>\n\t\t\t<string>Rectangle</string>\n\t\t\t<key>Style</key>\n\t\t\t<dict>\n\t\t\t\t<key>shadow</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Draws</key>\n\t\t\t\t\t<string>NO</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>Text</key>\n\t\t\t<dict>\n\t\t\t\t<key>Text</key>\n\t\t\t\t<string>{\\rtf1\\ansi\\ansicpg1252\\cocoartf1265\\cocoasubrtf190\n\\cocoascreenfonts1{\\fonttbl\\f0\\fnil\\fcharset0 xkcd-Regular;}\n{\\colortbl;\\red255\\green255\\blue255;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\qc\n\n\\f0\\fs20 \\cf0 Kernel}</string>\n\t\t\t</dict>\n\t\t</dict>\n\t</array>\n\t<key>GridInfo</key>\n\t<dict/>\n\t<key>GuidesLocked</key>\n\t<string>NO</string>\n\t<key>GuidesVisible</key>\n\t<string>YES</string>\n\t<key>HPages</key>\n\t<integer>1</integer>\n\t<key>ImageCounter</key>\n\t<integer>2</integer>\n\t<key>ImageLinkBack</key>\n\t<array>\n\t\t<dict/>\n\t</array>\n\t<key>ImageList</key>\n\t<array>\n\t\t<string>image1.png</string>\n\t</array>\n\t<key>KeepToScale</key>\n\t<false/>\n\t<key>Layers</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>Lock</key>\n\t\t\t<string>NO</string>\n\t\t\t<key>Name</key>\n\t\t\t<string>Layer 1</string>\n\t\t\t<key>Print</key>\n\t\t\t<string>YES</string>\n\t\t\t<key>View</key>\n\t\t\t<string>YES</string>\n\t\t</dict>\n\t</array>\n\t<key>LayoutInfo</key>\n\t<dict>\n\t\t<key>Animate</key>\n\t\t<string>NO</string>\n\t\t<key>circoMinDist</key>\n\t\t<real>18</real>\n\t\t<key>circoSeparation</key>\n\t\t<real>0.0</real>\n\t\t<key>layoutEngine</key>\n\t\t<string>dot</string>\n\t\t<key>neatoSeparation</key>\n\t\t<real>0.0</real>\n\t\t<key>twopiSeparation</key>\n\t\t<real>0.0</real>\n\t</dict>\n\t<key>LinksVisible</key>\n\t<string>NO</string>\n\t<key>MagnetsVisible</key>\n\t<string>NO</string>\n\t<key>MasterSheets</key>\n\t<array/>\n\t<key>ModificationDate</key>\n\t<string>2014-05-27 22:28:18 +0000</string>\n\t<key>Modifier</key>\n\t<string>bgranger</string>\n\t<key>NotesVisible</key>\n\t<string>NO</string>\n\t<key>Orientation</key>\n\t<integer>2</integer>\n\t<key>OriginVisible</key>\n\t<string>NO</string>\n\t<key>PageBreaks</key>\n\t<string>YES</string>\n\t<key>PrintInfo</key>\n\t<dict>\n\t\t<key>NSBottomMargin</key>\n\t\t<array>\n\t\t\t<string>float</string>\n\t\t\t<string>41</string>\n\t\t</array>\n\t\t<key>NSHorizonalPagination</key>\n\t\t<array>\n\t\t\t<string>coded</string>\n\t\t\t<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>\n\t\t</array>\n\t\t<key>NSLeftMargin</key>\n\t\t<array>\n\t\t\t<string>float</string>\n\t\t\t<string>18</string>\n\t\t</array>\n\t\t<key>NSPaperSize</key>\n\t\t<array>\n\t\t\t<string>size</string>\n\t\t\t<string>{612, 792}</string>\n\t\t</array>\n\t\t<key>NSPrintReverseOrientation</key>\n\t\t<array>\n\t\t\t<string>int</string>\n\t\t\t<string>0</string>\n\t\t</array>\n\t\t<key>NSRightMargin</key>\n\t\t<array>\n\t\t\t<string>float</string>\n\t\t\t<string>18</string>\n\t\t</array>\n\t\t<key>NSTopMargin</key>\n\t\t<array>\n\t\t\t<string>float</string>\n\t\t\t<string>18</string>\n\t\t</array>\n\t</dict>\n\t<key>PrintOnePage</key>\n\t<false/>\n\t<key>ReadOnly</key>\n\t<string>NO</string>\n\t<key>RowAlign</key>\n\t<integer>1</integer>\n\t<key>RowSpacing</key>\n\t<real>36</real>\n\t<key>SheetTitle</key>\n\t<string>Canvas 1</string>\n\t<key>SmartAlignmentGuidesActive</key>\n\t<string>YES</string>\n\t<key>SmartDistanceGuidesActive</key>\n\t<string>YES</string>\n\t<key>UniqueID</key>\n\t<integer>1</integer>\n\t<key>UseEntirePage</key>\n\t<false/>\n\t<key>VPages</key>\n\t<integer>1</integer>\n\t<key>WindowInfo</key>\n\t<dict>\n\t\t<key>CurrentSheet</key>\n\t\t<integer>0</integer>\n\t\t<key>ExpandedCanvases</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>Canvas 1</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>Frame</key>\n\t\t<string>{{277, 7}, {832, 871}}</string>\n\t\t<key>ListView</key>\n\t\t<true/>\n\t\t<key>OutlineWidth</key>\n\t\t<integer>142</integer>\n\t\t<key>RightSidebar</key>\n\t\t<false/>\n\t\t<key>ShowRuler</key>\n\t\t<true/>\n\t\t<key>Sidebar</key>\n\t\t<true/>\n\t\t<key>SidebarWidth</key>\n\t\t<integer>120</integer>\n\t\t<key>VisibleRegion</key>\n\t\t<string>{{96.5, 197.5}, {348.5, 366}}</string>\n\t\t<key>Zoom</key>\n\t\t<real>2</real>\n\t\t<key>ZoomValues</key>\n\t\t<array>\n\t\t\t<array>\n\t\t\t\t<string>Canvas 1</string>\n\t\t\t\t<real>2</real>\n\t\t\t\t<real>1</real>\n\t\t\t</array>\n\t\t</array>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "docs/source/examples/utils/list_pyfiles.ipy",
    "content": "# A simple IPython script that provides Notebook links to .py files in the cwd\n\nfrom IPython.display import FileLink, display\nfiles =!ls *.py\nfor f in files:\n    display(FileLink(f))\n"
  },
  {
    "path": "docs/source/examples/utils/list_subdirs.ipy",
    "content": "# A simple IPython script that lists files in all subdirs\n\nfrom IPython.display import FileLinks, display\ndirs =!ls -d */\nfor d in dirs:\n    if d != '__pycache__/':\n        display(FileLinks(d))\n"
  },
  {
    "path": "docs/source/extending/frontend_extensions.md",
    "content": "(frontend-extensions)=\n\n# Custom front-end extensions\n\nThis describes the basic steps to write a TypeScript extension for the Jupyter\nnotebook front-end. This allows you to customize the behaviour of the various\npages like the dashboard, the notebook, or the text editor.\n\nStarting with Notebook 7, front-end extensions for the notebook can be developed\nas prebuilt JupyterLab extensions.\n\nThis means Notebook 7 is able to reuse many of the existing extensions from the JupyterLab ecosystem as is.\n\nIf you would like to develop a prebuilt extension for Notebook 7, check out:\n\n- [JupyterLab Extension Tutorial](https://jupyterlab.readthedocs.io/en/latest/extension/extension_tutorial.html): A tutorial to learn how to make a simple JupyterLab extension.\n- The [JupyterLab Extension Examples Repository](https://github.com/jupyterlab/extension-examples): A repository containing many examples of JupyterLab extensions for performing various tasks: adding commands, adding a new widget, handling user settings, etc.\n"
  },
  {
    "path": "docs/source/extending/index.md",
    "content": "# Extending the Notebook\n\n```{warning}\nPlease note that the extension system for Notebook 7 is radically different\nfrom the one used in Notebook 6.5.x and earlier. If you are looking for\ninformation on how to extend the classic Notebook, please refer to the\n[documentation for NbClassic](https://nbclassic.readthedocs.io/en/latest/extending/index.html).\n```\n\n```{note}\nWith Notebook 7 being developed on top of JupyterLab and Jupyter Server, the\nfrontend extension system is now based on the same extension system used by JupyterLab.\n\nServer extensions are also now based on the same system used by Jupyter Server.\nYou will find below a link to the relevant documentations.\n```\n\nCertain subsystems of the notebook server are designed to be extended or\noverridden by users. These documents explain these systems, and show how to\noverride the notebook's defaults with your own custom behavior.\n\n```{toctree}\n:maxdepth: 2\n\nExtending the Jupyter Server <https://jupyter-server.readthedocs.io/en/stable/developers/index.html>\nfrontend_extensions\n```\n"
  },
  {
    "path": "docs/source/index.md",
    "content": "# Jupyter Notebook Documentation\n\nWelcome to the **Jupyter Notebook** documentation site. **Jupyter Notebook**\nis a simplified notebook authoring application, and is a part of [Project\nJupyter](https://docs.jupyter.org/en/latest/), a large umbrella project\ncentered around the goal of providing tools (and [standards](https://docs.jupyter.org/en/latest/#sub-project-documentation))\nfor interactive computing with [computational notebooks](https://docs.jupyter.org/en/latest/#what-is-a-notebook).\n\nA [computational notebook](https://docs.jupyter.org/en/latest/#what-is-a-notebook)\nis a shareable document that combines computer\ncode, plain language descriptions, data, rich visualizations like 3D models,\ncharts, graphs and figures, and interactive controls. A notebook, along with\nan editor like **Jupyter Notebook**, provides a fast interactive environment for\nprototyping and explaining code, exploring and visualizing data, and sharing\nideas with others.\n\n**Jupyter Notebook** is a sibling to other notebook authoring applications under\nthe Project Jupyter umbrella, like [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/)\nand [Jupyter Desktop](https://github.com/jupyterlab/jupyterlab-desktop).\nJupyter Notebook offers a lightweight, simplified experience compared to JupyterLab.\n\nRead more about how to use **Jupyter Notebook** on this site, in the [User\nDocumentation](notebook.md).\n\n```{image} ./_static/images/notebook-running-code.png\n\n```\n\n- [Installation](https://jupyter.readthedocs.io/en/latest/install.html)\n- [Starting the Notebook](https://jupyter.readthedocs.io/en/latest/running.html)\n\n```{toctree}\n:maxdepth: 2\n\nuser-documentation\nconfiguration\nmigrate_to_notebook7\ncontributor\nchangelog\n```\n"
  },
  {
    "path": "docs/source/ipython_security.asc",
    "content": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: GnuPG v2.0.22 (GNU/Linux)\n\n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\n5vmLc+Ibz+eT+rM=\n=XVDe\n-----END PGP PUBLIC KEY BLOCK-----\n"
  },
  {
    "path": "docs/source/links.txt",
    "content": ".. This (-*- rst -*-) format file contains commonly used link targets\n   and name substitutions.  It may be included in many files,\n   therefore it should only contain link targets and name\n   substitutions.  Try grepping for \"^\\.\\. _\" to find plausible\n   candidates for this list.\n\n   NOTE: this file must have an extension *opposite* to that of the main reST\n   files in the manuals, so that we can include it with \".. include::\"\n   directives, but without triggering warnings from Sphinx for not being listed\n   in any toctree.  Since IPython uses .txt for the main files, this one will\n   use .rst.\n\n   NOTE: reST targets are\n   __not_case_sensitive__, so only one target definition is needed for\n   ipython, IPython, etc.\n\n   NOTE: Some of these were taken from the nipy links compendium.\n\n.. Main Jupyter notebook links\n\n.. _Notebook Basics: notebook_p2_\n.. _notebook_p2: https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/source/examples/Notebook/Notebook%20Basics.ipynb\n\n.. _Running Code in the Jupyter Notebook: notebook_p1_\n.. _notebook_p1: https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/source/examples/Notebook/Running%20Code.ipynb\n\n.. Other python projects\n.. _matplotlib: https://matplotlib.org\n.. _nbviewer: https://nbviewer.jupyter.org\n.. _nbconvert: https://nbconvert.readthedocs.io/en/latest/\n\n.. Other tools and projects\n.. _Markdown: https://daringfireball.net/projects/markdown/syntax\n\n.. _Rich Output: notebook_p5_\n.. _notebook_p5: https://nbviewer.jupyter.org/github/ipython/ipython/blob/main/examples/IPython%20Kernel/Rich%20Output.ipynb\n\n.. _Plotting with Matplotlib: notebook_p3_\n.. _notebook_p3: https://nbviewer.jupyter.org/github/ipython/ipython/blob/main/examples/IPython%20Kernel/Plotting%20in%20the%20Notebook.ipynb\n\n.. _Working with Markdown Cells: https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/source/examples/Notebook/Working%20With%20Markdown%20Cells.ipynb\n"
  },
  {
    "path": "docs/source/migrate_to_notebook7.md",
    "content": "# Migrating\n\n_Updated 2023-05-17_\n\n```{warning}\nVersion 7 of the Jupyter Notebook application might break your\nextensions or other customizations. Please read this page to find out if you\nneed to take any actions to ensure a smooth, uninterrupted experience.\n```\n\nA major upgrade to the Jupyter Notebook interface is coming with Notebook 7! This\nupgrade will bring a heap of new features, but will also break backwards\ncompatibility with many classic Notebook features and customizations.\n\nThis set of guides is here to help you migrate your Classic Notebook setup and\nextensions to the new Notebook 7.\n\n## What you need to do\n\nFor users who don't use extensions or other customizations, you will seamlessly\nreceive the new Notebook 7 when you `pip install notebook` once version 7 is\nreleased out of beta, along with all its new features, like realtime\ncollaboration, debugger, and theming.\n\nFor users who need to use extensions or other customizations, you have a couple\nof options:\n\n- Look for Notebook 7 compatible versions of the extensions you already use,\n  and [find replacements for those that are not available]\n\n- If you need to maintain compatibility with the Classic Notebook for extensions\n  or other customizations that are critical to your workflows, you can switch to\n  [nbclassic], which will provide compatibility with the old notebook interface\n  and support during an intermediate transition period to Notebook 7\n\n## Why a new version?\n\nFor the past few years, the Classic Jupyter Notebook has been in maintenance\nmode.\n\nDevelopment has mostly moved to alternative user interfaces like JupyterLab,\nwhich is a more modern and extensible web application. This has resulted in\na lot of new features and improvements in JupyterLab, but also in a lot of\nnew features and improvements that were not possible to integrate to the\nClassic Notebook.\n\nFor a while, the plan was to progressively _sunset_ the Classic Notebook and\nnot maintain it anymore. However, the Classic Notebook is still widely used\nand it is still the default user interface for Jupyter in many scenarios.\nMany users and organizations have not been able to switch to JupyterLab yet.\nFor some users, JupyterLab can also be a more complex environment to use,\nespecially for beginners.\n\nFollowing the feedback from the community, it was decided in late 2021 to\ncontinue developing the Jupyter Notebook application and _sunrise_ it as\nNotebook 7.\n\nYou can find more details about the changes currently taking place in the\nJupyter Ecosystem in the [JEP 79][jep 79] and [team-compass note].\n\n## New features in Notebook 7\n\n```{toctree}\n:maxdepth: 2\n\nnotebook_7_features.md\n```\n\n## Migration Guides\n\n```{toctree}\n:maxdepth: 2\n\nmigrating/frontend-extensions.md\nmigrating/server-extensions.md\nmigrating/server-imports.md\nmigrating/custom-themes.md\nmigrating/multiple-interfaces.md\n```\n\n[jep 79]: https://jupyter.org/enhancement-proposals/79-notebook-v7/notebook-v7.html\n[team-compass note]: https://github.com/jupyter/notebook-team-compass/issues/5#issuecomment-1085254000\n[find replacements for those that are not available]: https://jupyter-notebook.readthedocs.io/en/latest/migrating/frontend-extensions.html#jupyterlab-equivalent-extensions-to-the-classic-notebook\n[nbclassic]: https://github.com/jupyter/nbclassic\n"
  },
  {
    "path": "docs/source/migrating/custom-themes.md",
    "content": "# Custom themes in Notebook 7\n\nIn Notebook 7, the way to create custom themes has changed. This means that custom themes developed for Notebook 6 or earlier will not work with Notebook 7 and upwards.\n\nThis is for example the case for community contributed themes such as [jupyter-themes](https://github.com/dunovank/jupyter-themes).\n\n## Using a custom theme\n\nFortunately installing a custom theme for Notebook 7 is very easy. It is the same process as installing a regular extension.\n\nFor example let's say you want to install the [JupyterLab Night](https://github.com/jupyterlab-contrib/jupyterlab-night) theme. You can do so by running the following command:\n\n```bash\npip install jupyterlab-night\n```\n\nThen refresh the page and you should see the new theme available in the settings menu:\n\n![a screencast showing how to install a custom theme](https://user-images.githubusercontent.com/591645/229583076-de3c0541-246f-4781-8941-fcbec2204038.gif)\n\nThere are already many themes available on [PyPI](https://pypi.org/search/?q=jupyterlab-theme).\n\nYou can also find other themes using the `jupyterlab-theme` topic on GitHub: https://github.com/topics/jupyterlab-theme\n\nFor example:\n\n- [https://github.com/johnnybarrels/jupyterlab_onedarkpro](https://github.com/johnnybarrels/jupyterlab_onedarkpro)\n- [https://github.com/dunovank/jupyterlab_legos_ui](https://github.com/dunovank/jupyterlab_legos_ui)\n- [https://github.com/timkpaine/jupyterlab_miami_nights](https://github.com/timkpaine/jupyterlab_miami_nights)\n\n## Creating a custom theme\n\nCreating a custom theme for Notebook 7 follows the same process as creating a custom theme for JupyterLab 4.\n\nSee the {ref}`Frontend Extension Guide <frontend-extensions>` to get you started. When creating the extension, select the `Theme` option in the cookiecutter prompt.\n"
  },
  {
    "path": "docs/source/migrating/frontend-extensions.md",
    "content": "# Frontend Extensions in Notebook 7\n\n```{warning}\nAny extension developed for Notebook \\< 7 or NbClassic will not be\ncompatible with Notebook 7 and upwards.\n\nSome extensions like nbgrader have already been ported. We invite you to\ncheck if the extensions you are using have already been ported.\n```\n\nYou can check the following resources to see if your extension is available for Notebook 7:\n\n## List of available Notebook 7 extensions\n\nTo get an idea of the extensions available for Notebook 7, you can check the following resources:\n\n- [List of JupyterLab extensions][list of jupyterlab extensions]\n- [Awesome Jupyter][awesome jupyter]\n\nThese resources are for JupyterLab, but many of them are compatible with Notebook 7 since Notebook 7 is based on JupyterLab.\n\n[list of jupyterlab extensions]: https://jupyterlab-contrib.github.io/extensions.html\n[awesome jupyter]: https://github.com/markusschanta/awesome-jupyter#jupyterlab-extensions\n\n## JupyterLab equivalent extensions to the Classic Notebook\n\nThe `jupyterlab-contrib` organization maintains a list of extensions to ease the transition from the Classic Notebook to Notebook 7 and / or JupyterLab.\n\nThe list is available at the following URL: [Migrating from the Classic Notebook][migrate from classic]\n\n![a screenshot showing extensions in classic and lab](https://user-images.githubusercontent.com/591645/229616855-94d34762-6666-4edd-a969-e85b285d7094.png)\n\n[migrate from classic]: https://jupyterlab-contrib.github.io/migrate_from_classical.html\n"
  },
  {
    "path": "docs/source/migrating/multiple-interfaces.md",
    "content": "# Simultaneous usage of different versions of Notebook 7 and the Classic Notebook UI\n\nWith the release of Notebook 7, the classic Notebook UI is now\navailable as a Jupyter Server extension, NbClassic. This means that\nNbClassic can be installed independently of Notebook 7, and can be also\ninstalled alongside Notebook 7.\n\nBelow are different scenarios that you might consider when updating to Notebook 7.\n\n## Try it on Binder\n\nYou can try JupyterLab, Notebook 7 and NBClassic installed together using [this gist][lab-nb-nbclassic] on Binder:\n\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gist/jtpio/35a72862c8be13dee31b61ebac2d9786/master?urlpath=/tree)\n\n[lab-nb-nbclassic]: https://gist.github.com/jtpio/35a72862c8be13dee31b61ebac2d9786\n\n## Using the `Interface` dropdown\n\nNotebook 7 provides a dropdown menu to switch between the different user interfaces available on the same server.\n\nIt is available in the Notebook toolbar:\n\n![image](https://user-images.githubusercontent.com/591645/229729077-a91bc9dd-9bb9-4510-a266-599bf2f97745.png)\n\n```{note}\nThis dropdown is only available when using Notebook 7 or JupyterLab.\nIt is not displayed when using NbClassic.\n```\n\n## NbClassic and Notebook 7\n\nYou can install NbClassic, Notebook 7 and JupyterLab, all three of\nwhich will provide different user interfaces\non the same server. When Notebook 7 is available, the NbClassic UI, will\nbe served at the `/nbclassic/tree` base path rather than the\nbase path `/tree` used otherwise. If you are using Notebook 7 along\nwith NbClassic, you will also have JupyterLab installed as it is a\ndependency of Notebook 7, and these front ends will be available\nthrough the following base paths: JupyterLab at `/lab`, Notebook 7 at\n`/tree`, and NbClassic at `/nbclassic/tree`.\n\n## NbClassic and Notebook 6.5.x\n\nAs NbClassic provides the static assets for Notebook 6.5.x, while\nhaving both installed should cause no issues, the user interface provided\nby these two packages will be the same. These UIs will be served by\ndifferent back end servers. An NbClassic instance will be at a server with the\n`/tree` path and opening a Notebook 6.5.x instance will open on a\ndifferent server with the `/tree` path as well, presenting the same\nstatic assets. When starting an instance of JupyterLab you will be able\nto access the classic view of Notebook with NbClassic served on the same\nserver at `/tree`.\n\n## NbClassic and Notebook \\<= 6.4.x\n\nWhen using NbClassic and Notebook \\<= 6.4.x you can expect that these UIs\nwill not be only presented at different servers, meaning they will both\nbe available at their respective server under `/tree` but they\nmay also differ as potential changes to the NbClassic UI will not be\nreflected in Notebook versions \\<= 6.4.x. In this case as well, you would\nbe able to access the classic view of Notebook with NbClassic served on\nthe same server, at `/tree`.\n\n## NbClassic and JupyterLab 3.x\n\nWhen only JupyterLab 3.x is installed, then NbClassic does not have to be\nexplicitly installed as JupyterLab 3.x depends on it. They will run on\nthe same server, and are reachable via `/tree` for NbClassic and\n`/lab` for JupyterLab.\n\n## NbClassic and JupyterLab 4.x\n\nWhen only JupyterLab 4.x is installed, then NbClassic has to be installed\nexplicitly. They will run on the same server, and are reachable via\n`/tree` for NbClassic, and `/lab` for JupyterLab.\n\n## NbClassic Independently\n\nWhen you choose to install only NbClassic via `pip install nbclassic`,\nthe classic Notebook UI will be presented at the `/tree` path. As the\nother frontends are not installed, attempting to access the other paths\nwill return errors. Note that NbClassic being a Jupyter Server extension,\nindicated Jupyter Server will be available. This provides an additional\nway to view the NbClassic frontend. You would be able to manually\nenable the extension when running an instance of Jupyter Server,\n`> jupyter server --ServerApp.jpserver_extensions=\"nbclassic=True\"`,\nwhich will provide the NbClassic frontend at `/tree` path when visited.\n"
  },
  {
    "path": "docs/source/migrating/server-extensions.md",
    "content": "# Server Extensions in Notebook 7\n\nNotebook 7 is now based on Jupyter Server, which is a new server application that allows to run multiple Jupyter applications (e.g. Notebook, JupyterLab, NBClassic, etc.) on the same server.\n\nThis means that Notebook 7 is able to reuse many of the existing server extensions from the Jupyter ecosystem as is.\n\n## Migration from the Notebook Server\n\nThe Jupyter Server documentation provides a [guide for migrating from the classic notebook server to Jupyter Server](https://jupyter-server.readthedocs.io/en/latest/operators/migrate-from-nbserver.html)\n\n## Authoring Server Extensions\n\nThe Jupyter Server documentation provides a [guide for authoring server extensions](https://jupyter-server.readthedocs.io/en/latest/developers/extensions.html)\n"
  },
  {
    "path": "docs/source/migrating/server-imports.md",
    "content": "# Server Imports in Notebook 7\n\nNotebook 7 is now based on Jupyter Server, which lets users run multiple Jupyter frontends (e.g. Notebook, JupyterLab, NBClassic, etc.) on the same server.\n\nPrior to Notebook 7, the Classic Notebook server included the server modules in the `notebook` package. This means it was possible to import the server modules from the `notebook` package, for example:\n\n```python\nfrom notebook.auth import passwd\npasswd(\"foo\")\n```\n\nOr:\n\n```python\nfrom notebook import notebookapp\nnotebookapp.list_running_servers()\n```\n\nIn Notebook 7, these server modules are now exposed by the `jupyter_server` package. The code snippets above should be updated to:\n\n```python\nfrom jupyter_server.auth import passwd\npasswd(\"foo\")\n```\n\nAnd:\n\n```python\nfrom jupyter_server import serverapp\nserverapp.list_running_servers()\n```\n\nThese are just examples, so you may have to adjust your use of `notebook` imports based on the specific server modules you were using.\n"
  },
  {
    "path": "docs/source/notebook.md",
    "content": "(htmlnotebook)=\n\n# The Jupyter Notebook\n\n## Introduction\n\n**Jupyter Notebook** is a notebook authoring application, under the [Project\nJupyter](https://docs.jupyter.org/en/latest/) umbrella. Built on the power of\nthe [computational notebook format](https://docs.jupyter.org/en/latest/#what-is-a-notebook),\n**Jupyter Notebook** offers fast, interactive new ways to prototype and explain\nyour code, explore and visualize your data, and share your ideas with others.\n\nNotebooks extend the console-based approach to interactive computing in a\nqualitatively new direction, providing a web-based application suitable for\ncapturing the whole computation process: developing, documenting, and executing\ncode, as well as communicating the results. The Jupyter notebook combines two\ncomponents:\n\n**A web application:** A browser-based editing program for interactive authoring\nof computational notebooks which provides a fast interactive environment for prototyping and\nexplaining code, exploring and visualizing data, and sharing ideas with others\n\n**Computational Notebook documents**: A shareable document that combines computer\ncode, plain language descriptions, data, rich visualizations like 3D models, charts,\nmathematics, graphs and figures, and interactive controls\n\n```{seealso}\nSee the {ref}`installation guide <jupyter:install>` on how to install the\nnotebook and its dependencies.\n```\n\n### Main features of the web application\n\n- In-browser editing for code, with automatic syntax highlighting,\n  indentation, and tab completion/introspection.\n- The ability to execute code from the browser, with the results of\n  computations attached to the code which generated them.\n- Displaying the result of computation using rich media representations, such\n  as HTML, LaTeX, PNG, SVG, etc. For example, publication-quality figures\n  rendered by the [matplotlib] library, can be included inline.\n- In-browser editing for rich text using the [Markdown] markup language, which\n  can provide commentary for the code, is not limited to plain text.\n- The ability to easily include mathematical notation within markdown cells\n  using LaTeX, and rendered natively by [MathJax].\n\n### Notebook documents\n\nNotebook documents contain the inputs and outputs of an interactive session as\nwell as additional text that accompanies the code but is not meant for\nexecution. In this way, notebook files can serve as a complete computational\nrecord of a session, interleaving executable code with explanatory text,\nmathematics, and rich representations of resulting objects. These documents\nare internally [JSON] files and are saved with the `.ipynb` extension. Since\nJSON is a plain text format, they can be version-controlled and shared with\ncolleagues.\n\nNotebooks may be exported to a range of static formats, including HTML (for\nexample, for blog posts), reStructuredText, LaTeX, PDF, and slide shows, via\nthe [nbconvert] command.\n\nFurthermore, any `.ipynb` notebook document available from a public\nURL can be shared via the Jupyter Notebook Viewer \\<nbviewer>.\nThis service loads the notebook document from the URL and renders it as a\nstatic web page. The results may thus be shared with a colleague, or as a\npublic blog post, without other users needing to install the Jupyter notebook\nthemselves. In effect, nbviewer is simply [nbconvert] as\na web service, so you can do your own static conversions with nbconvert,\nwithout relying on nbviewer.\n\n```{seealso}\n{ref}`Details on the notebook JSON file format <nbformat:notebook_file_format>`\n```\n\n### Notebooks and privacy\n\nBecause you use Jupyter in a web browser, some people are understandably\nconcerned about using it with sensitive data.\nHowever, if you followed the standard\n[install instructions](https://jupyter.readthedocs.io/en/latest/install.html),\nJupyter is actually running on your own computer.\nIf the URL in the address bar starts with `http://localhost:` or\n`http://127.0.0.1:`, it's your computer acting as the server.\nJupyter doesn't send your data anywhere else—and as it's open source,\nother people can check that we're being honest about this.\n\nYou can also use Jupyter remotely:\nyour company or university might run the server for you, for instance.\nIf you want to work with sensitive data in those cases,\ntalk to your IT or data protection staff about it.\n\nWe aim to ensure that other pages in your browser or other users on the same\ncomputer can't access your notebook server. See the [security documentation](https://jupyter-server.readthedocs.io/en/stable/operators/security.html) for\nmore about this.\n\n## Starting the notebook server\n\nYou can start running a notebook server from the command line using the\nfollowing command:\n\n```\njupyter notebook\n```\n\nThis will print some information about the notebook server in your console,\nand open a web browser to the URL of the web application (by default,\n`http://127.0.0.1:8888`).\n\nThe landing page of the Jupyter notebook web application, the **dashboard**,\nshows the notebooks currently available in the notebook directory (by default,\nthe directory from which the notebook server was started).\n\nYou can create new notebooks from the dashboard with the `New Notebook`\nbutton, or open existing ones by clicking on their name. You can also drag\nand drop `.ipynb` notebooks and standard `.py` Python source code files\ninto the notebook list area.\n\nWhen starting a notebook server from the command line, you can also open a\nparticular notebook directly, bypassing the dashboard, with `jupyter notebook my_notebook.ipynb`. The `.ipynb` extension is assumed if no extension is\ngiven.\n\nWhen you are inside an open notebook, the `File | Open...` menu option will\nopen the dashboard in a new browser tab, to allow you to open another notebook\nfrom the notebook directory or to create a new notebook.\n\n```{note}\nYou can start more than one notebook server at the same time, if you want\nto work on notebooks in different directories. By default the first\nnotebook server starts on port 8888, and later notebook servers search for\nports near that one. You can also manually specify the port with the\n`--port` option.\n```\n\n### Creating a new notebook document\n\nA new notebook may be created at any time, either from the dashboard, or using\nthe {menuselection}`File --> New` menu option from within an active notebook.\nThe new notebook is created within the same directory and will open in a new\nbrowser tab. It will also be reflected as a new entry in the notebook list on\nthe dashboard.\n\n![a screencast showing how to create new notebooks from the user interface](https://user-images.githubusercontent.com/591645/229563554-2776b489-a831-44a0-a7a2-2f211e38b78b.gif)\n\n### Opening notebooks\n\nAn open notebook has **exactly one** interactive session connected to a\nkernel, which will execute code sent by the user\nand communicate back results. This kernel remains active if the web browser\nwindow is closed, and reopening the same notebook from the dashboard will\nreconnect the web application to the same kernel. In the dashboard, notebooks\nwith an active kernel have a `Shutdown` button next to them, whereas\nnotebooks without an active kernel have a `Delete` button in its place.\n\nOther clients may connect to the same kernel.\nWhen each kernel is started, the notebook server prints to the terminal a\nmessage like this:\n\n```\n[JupyterNotebookApp] Kernel started: 87f7d2c0-13e3-43df-8bb8-1bd37aaf3373\n```\n\nThis long string is the kernel's ID which is sufficient for getting the\ninformation necessary to connect to the kernel. If the notebook uses the IPython\nkernel, you can also see this\nconnection data by running the `%connect_info` {ref}`magic <magics_explained>`, which will print the same ID information along with other\ndetails.\n\nYou can then, for example, manually start a Qt console connected to the _same_\nkernel from the command line, by passing a portion of the ID:\n\n```\n$ jupyter qtconsole --existing 87f7d2c0\n```\n\nWithout an ID, `--existing` will connect to the most recently\nstarted kernel.\n\nWith the IPython kernel, you can also run the `%qtconsole`\n{ref}`magic <magics_explained>` in the notebook to open a Qt console connected\nto the same kernel.\n\n```{seealso}\n{ref}`ipythonzmq`\n```\n\n## Notebook user interface\n\nWhen you create a new notebook document, you will be presented with the\n**notebook name**, a **menu bar**, a **toolbar** and an empty **code cell**.\n\n![a screenshot showing a blank notebook](https://user-images.githubusercontent.com/591645/229563988-8e3a4d04-6f31-4411-9a6b-9b9b045bc55e.png)\n\n**Notebook name**: The name displayed at the top of the page,\nnext to the Jupyter logo, reflects the name of the `.ipynb` file.\nClicking on the notebook name brings up a dialog which allows you to rename it.\nThus, renaming a notebook\nfrom \"Untitled0\" to \"My first notebook\" in the browser, renames the\n`Untitled0.ipynb` file to `My first notebook.ipynb`.\n\n**Menu bar**: The menu bar presents different options that may be used to\nmanipulate the way the notebook functions.\n\n**Toolbar**: The tool bar gives a quick way of performing the most-used\noperations within the notebook, by clicking on an icon.\n\n**Code cell**: the default type of cell; read on for an explanation of cells.\n\n## Structure of a notebook document\n\nThe notebook consists of a sequence of cells. A cell is a multiline text input\nfield, and its contents can be executed by using {kbd}`Shift-Enter`, or by\nclicking either the \"Play\" button the toolbar, or {guilabel}`Cell`, {guilabel}`Run` in the menu bar.\nThe execution behavior of a cell is determined by the cell's type. There are three\ntypes of cells: **code cells**, **markdown cells**, and **raw cells**. Every\ncell starts off being a **code cell**, but its type can be changed by using a\ndrop-down on the toolbar (which will be \"Code\", initially), or via\n{ref}`keyboard shortcuts <keyboard-shortcuts>`.\n\nFor more information on the different things you can do in a notebook,\nsee the [collection of examples](https://nbviewer.jupyter.org/github/jupyter/notebook/tree/main/docs/source/examples/Notebook/).\n\n### Code cells\n\nA _code cell_ allows you to edit and write new code, with full syntax\nhighlighting and tab completion. The programming language you use depends\non the _kernel_, and the default kernel (IPython) runs Python code.\n\nWhen a code cell is executed, code that it contains is sent to the kernel\nassociated with the notebook. The results that are returned from this\ncomputation are then displayed in the notebook as the cell's _output_. The\noutput is not limited to text, with many other possible forms of output are\nalso possible, including `matplotlib` figures and HTML tables (as used, for\nexample, in the `pandas` data analysis package). This is known as IPython's\n_rich display_ capability.\n\n```{seealso}\n[Rich Output] example notebook\n```\n\n### Markdown cells\n\nYou can document the computational process in a literate way, alternating\ndescriptive text with code, using _rich text_. In IPython this is accomplished\nby marking up text with the Markdown language. The corresponding cells are\ncalled _Markdown cells_. The Markdown language provides a simple way to\nperform this text markup, that is, to specify which parts of the text should\nbe emphasized (italics), bold, form lists, etc.\n\nIf you want to provide structure for your document, you can use markdown\nheadings. Markdown headings consist of 1 to 6 hash # signs `#` followed by a\nspace and the title of your section. The markdown heading will be converted\nto a clickable link for a section of the notebook. It is also used as a hint\nwhen exporting to other document formats, like PDF.\n\nWhen a Markdown cell is executed, the Markdown code is converted into\nthe corresponding formatted rich text. Markdown allows arbitrary HTML code for\nformatting.\n\nWithin Markdown cells, you can also include _mathematics_ in a straightforward\nway, using standard LaTeX notation: `$...$` for inline mathematics and\n`$$...$$` for displayed mathematics. When the Markdown cell is executed,\nthe LaTeX portions are automatically rendered in the HTML output as equations\nwith high quality typography. This is made possible by [MathJax], which\nsupports a [large subset](https://docs.mathjax.org/en/latest/input/tex/index.html) of LaTeX functionality\n\nStandard mathematics environments defined by LaTeX and AMS-LaTeX (the\n`amsmath` package) also work, such as\n`\\begin{equation}...\\end{equation}`, and `\\begin{align}...\\end{align}`.\nNew LaTeX macros may be defined using standard methods,\nsuch as `\\newcommand`, by placing them anywhere _between math delimiters_ in\na Markdown cell. These definitions are then available throughout the rest of\nthe IPython session.\n\n```{seealso}\n[Working with Markdown Cells] example notebook\n```\n\n### Raw cells\n\n_Raw_ cells provide a place in which you can write _output_ directly.\nRaw cells are not evaluated by the notebook.\nWhen passed through [nbconvert], raw cells arrive in the\ndestination format unmodified. For example, you can type full LaTeX\ninto a raw cell, which will only be rendered by LaTeX after conversion by\nnbconvert.\n\n## Basic workflow\n\nThe normal workflow in a notebook is, then, quite similar to a standard\nIPython session, with the difference that you can edit cells in-place multiple\ntimes until you obtain the desired results, rather than having to\nrerun separate scripts with the `%run` magic command.\n\nTypically, you will work on a computational problem in pieces, organizing\nrelated ideas into cells and moving forward once previous parts work\ncorrectly. This is much more convenient for interactive exploration than\nbreaking up a computation into scripts that must be executed together, as was\npreviously necessary, especially if parts of them take a long time to run.\n\nTo interrupt a calculation which is taking too long, use the {guilabel}`Kernel`,\n{guilabel}`Interrupt` menu option, or the {kbd}`i,i` keyboard shortcut.\nSimilarly, to restart the whole computational process,\nuse the {guilabel}`Kernel`, {guilabel}`Restart` menu option or {kbd}`0,0`\nshortcut.\n\nA notebook may be downloaded as a `.ipynb` file or converted to a number of\nother formats using the menu option {guilabel}`File`, {guilabel}`Download as`.\n\n```{seealso}\n[Running Code in the Jupyter Notebook] example notebook\n\n[Notebook Basics] example notebook\n```\n\n(keyboard-shortcuts)=\n\n### Keyboard shortcuts\n\nAll actions in the notebook can be performed with the mouse, but keyboard\nshortcuts are also available for the most common ones. The essential shortcuts\nto remember are the following:\n\n- {kbd}`Shift-Enter`: run cell\n  : Execute the current cell, show any output, and jump to the next cell below.\n  If {kbd}`Shift-Enter` is invoked on the last cell, it makes a new cell below.\n  This is equivalent to clicking the {guilabel}`Cell`, {guilabel}`Run` menu\n  item, or the Play button in the toolbar.\n- {kbd}`Esc`: Command mode\n  : In command mode, you can navigate around the notebook using keyboard shortcuts.\n- {kbd}`Enter`: Edit mode\n  : In edit mode, you can edit text in cells.\n\nFor the full list of available shortcuts, click {guilabel}`Help`,\n{guilabel}`Keyboard Shortcuts` in the notebook menus.\n\n## Searching\n\nJupyter Notebook has an advanced built-in search plugin for finding text within a\nnotebook or other document, which uses the {kbd}`Ctrl-F` ({kbd}`Cmd+F` for macOS) shortcut by default.\n\nYour browser's `find` function will give unexpected results because it doesn't have\naccess to the full content of a document (by default), but you can still use your browser find\nfunction from the browser menu if you want, or you can disable the built-in search\nshortcut using the Advanced Settings Editor.\n\nAlternatively, you can disable windowed notebook rendering to expose the full\ndocument content to the browser at the expense of performance.\n\n## Plotting\n\nOne major feature of the Jupyter notebook is the ability to display plots that\nare the output of running code cells. The IPython kernel is designed to work\nseamlessly with the [matplotlib] plotting library to provide this functionality.\nSpecific plotting library integration is a feature of the kernel.\n\n## Installing kernels\n\nFor information on how to install a Python kernel, refer to the\n[IPython install page](https://ipython.org/install).\n\nThe Jupyter wiki has a long list of [Kernels for other languages](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels).\nThey usually come with instructions on how to make the kernel available\nin the notebook.\n\n(signing-notebooks)=\n\n## Trusting Notebooks\n\nTo prevent untrusted code from executing on users' behalf when notebooks open,\nwe store a signature of each trusted notebook.\nThe notebook server verifies this signature when a notebook is opened.\nIf no matching signature is found,\nJavascript and HTML output will not be displayed\nuntil they are regenerated by re-executing the cells.\n\nAny notebook that you have fully executed yourself will be\nconsidered trusted, and its HTML and Javascript output will be displayed on\nload.\n\nIf you need to see HTML or Javascript output without re-executing,\nand you are sure the notebook is not malicious, you can tell Jupyter to trust it\nat the command-line with:\n\n```\n$ jupyter trust mynotebook.ipynb\n```\n\nSee the [security documentation](https://jupyter-server.readthedocs.io/en/stable/operators/security.html) for more details about the trust mechanism.\n\n## Browser Compatibility\n\nThe Jupyter Notebook aims to support the latest versions of these browsers:\n\n- Chrome\n- Safari\n- Firefox\n\nUp to date versions of Opera and Edge may also work, but if they don't, please\nuse one of the supported browsers.\n\nUsing Safari with HTTPS and an untrusted certificate is known to not work\n(websockets will fail).\n\n```{eval-rst}\n.. include:: links.txt\n```\n\n[json]: https://en.wikipedia.org/wiki/JSON\n[mathjax]: https://www.mathjax.org/\n"
  },
  {
    "path": "docs/source/notebook_7_features.md",
    "content": "# New features in Notebook 7\n\nThis document describes the new features in Notebook 7 as originally mentioned in the related Jupyter Enhancement Proposal [JEP 79][jep 79].\n\n```{contents} Table of Contents\n:depth: 3\n:local:\n```\n\n## Debugger\n\nNotebook 7 includes a new debugger that allows you to step through your code cell by cell. You can also set breakpoints and inspect variables.\n\n![a screenshot of the debugger](https://user-images.githubusercontent.com/591645/195543524-e16647a1-a4e0-4832-929d-73d5a77ef001.png)\n\n## Real Time collaboration\n\nNotebook 7 allows for using the real time collaboration extension so you can share your notebook with other users and edit it in real time.\n\nThe Real Time Collaboration feature is the same as in JupyterLab and is available as a JupyterLab extension. It is not enabled by default, but you can install with `pip`:\n\n```bash\npip install jupyter-collaboration\n```\n\nor with `conda`:\n\n```bash\nconda install -c conda-forge jupyter-collaboration\n```\n\nAfter installing the extension, restart the Jupyter Server so the extension can be loaded.\n\n```{note}\nIt is possible for two users to work on the same notebook using Notebook 7 or JupyterLab.\n```\n\n![a screencast showing how users can collaborate on the same document with both Notebook 7 and JupyterLab](https://user-images.githubusercontent.com/591645/229854102-6eed73f4-587f-406e-8ed1-347b788da9ee.gif)\n\n## Table of Contents\n\nNotebook 7 includes a new table of contents extension that allows you to navigate through your notebook using a sidebar. The Table of Contents is built-in and enabled by default, just like in JupyterLab.\n\n![a screenshot of the table of contents](https://user-images.githubusercontent.com/591645/195544813-22e7dec9-846f-4aaa-913a-36a9ed908036.png)\n\n## Theming and Dark Mode\n\nA Dark Theme is now available in the Jupyter Notebook by default. You can also install other themes as JupyterLab extensions.\n\n![a screenshot of the dark theme](https://user-images.githubusercontent.com/591645/229732821-3ab15024-e6d7-414d-94ca-246619da4b67.png)\n\nYou can also install many other JupyterLab themes. For example to install the [JupyterLab Night](https://github.com/martinRenou/jupyterlab-night) theme:\n\n```shell\npip install jupyterlab-night\n```\n\nThen refresh the page and select the new theme in the settings:\n\n![a screenshot of a custom theme](https://user-images.githubusercontent.com/591645/229733418-db0898b3-7e8c-4db5-98d6-2e9f813ab9e9.png)\n\n## Internationalization\n\nNotebook 7 now provides the ability to set the display language of the user interface.\n\nUsers will need to install the language pack as a separate Python package. Language packs are grouped in the [language packs repository on GitHub](https://github.com/jupyterlab/language-packs/), and can be installed with `pip`. For example, it is possible to install the language pack for French (France) using the following command:\n\n```shell\npip install jupyterlab-language-pack-fr-FR\n```\n\nAfter installing the language pack, reload the page and the new language should be available in the settings.\n\n![a screencast showing how to switch the display language in Notebook 7](https://user-images.githubusercontent.com/591645/229734057-e08a2020-58c1-4aa5-b30e-ebb83fcde12c.gif)\n\n```{note}\nNotebook 7 and JupyterLab share the same language packs, so it is possible to use the same language pack in both applications.\n```\n\n## Accessibility Improvements\n\nThe text editor underlying the Jupyter Notebook (CodeMirror 5) had major accessibility issues. Fortunately, this accessibility bottleneck has been unblocked as JupyterLab has been upgraded to use CodeMirror 6, a complete rewrite of the text editor with a strong focus on accessibility. Although this upgrade required extensive codebase modifications, the changes is available with JupyterLab 4. By being built on top of JupyterLab, Jupyter Notebook 7 directly benefits from the CodeMirror 6 upgrade.\n\n## Support for many JupyterLab extensions\n\nNotebook 7 is based on JupyterLab and therefore supports many of the existing JupyterLab extensions.\n\nYou can install JupyterLab extensions with `pip` or `conda`. For example to install the LSP (Language Server Protocol) extension for enhanced code completion, you can use the following commands:\n\n```bash\npip install jupyter-lsp\n```\n\n```bash\nconda install -c conda-forge jupyter-lsp\n```\n\nPopular extensions like `nbgrader` and `RISE` have already been ported to work with Notebook 7.\n\n### nbgrader\n\n```{note}\nThe nbgrader extension is still under active development and a version compatible with Notebook 7 is not yet available on PyPI.\nHowever a version compatible with Notebook 7 will be available before the final release of Notebook 7.\n```\n\n![a screenshot showing the nbgrader extension in Notebook 7](https://user-images.githubusercontent.com/32258950/196110653-6556c8d7-b169-4586-b1a1-66b3be05c790.png)\n\n![a second screenshot showing the nbgrader extension in Notebook 7](https://user-images.githubusercontent.com/32258950/196110825-7e3b9237-1064-42be-a629-15a5510a3aee.png)\n\n### RISE\n\nThe RISE extension is another popular JupyterLab extension that has been ported to work with Notebook 7. It allows you to turn your Jupyter Notebooks into a slideshow. See the [installation instructions](https://github.com/jupyterlab-contrib/rise#install).\n\n## A document-centric user experience\n\nDespite all the new features and as stated in [JEP 79][jep 79], Notebook 7 keeps the document-centric user experience of the Classic Notebook:\n\n> The Jupyter Notebook application offers a document-centric user experience. That is, in the Notebook application, the landing page that contains a file manager, running tools tab, and a few optional extras, is a launching point into opening standalone, individual documents. This document-centric experience is important for many users, and that is the first key point this proposal aims to preserve. Notebook v7 will be based on a different JavaScript implementation than v6, but it will preserve the document-centric experience, where each individual notebook opens in a separate browser tab and the visible tools and menus are focused on the open document.\n\n[jep 79]: https://jupyter.org/enhancement-proposals/79-notebook-v7/notebook-v7.html\n\n## Compact View on Mobile Devices\n\nNotebook 7 automatically switches to a more compact layout on mobile devices, making it convenient to run code on the go.\n\n![a screenshot of the compact view on mobile devices](https://user-images.githubusercontent.com/591645/101995448-2793f380-3cca-11eb-8971-067dd068ccbe.gif)\n\n## References\n\nThis was just a quick overview of the new features in Notebook 7. For more details, you can check out the following resources:\n\n- The [JupyterLab Documentation](https://jupyterlab.readthedocs.io/en/latest/) is a great resource to learn more about JupyterLab and the extensions available. Since Notebook 7 is based on JupyterLab, many of the features and extensions available for JupyterLab are also available for Notebook 7.\n- [Migration Guide](./migrate_to_notebook7.md) for Notebook 7, which explains how to migrate from the Classic Notebook to Notebook 7.\n"
  },
  {
    "path": "docs/source/spelling_wordlist.txt",
    "content": "AMS\nAPI\napi\nargs\nasync\nauth\nautodetect\nBroullón\nchangelog\nconfig\ncoroutines\ncss\nCSS\ndockerfile\nDockerfile\ndrop-down\nfilenames\nfilesystem\nfront-end\nfront end\nfrontend\ngithub\nGitHub\nIFrame\niframe\nip\nIP\nIPython\njavascript\nJavaScript\njinja\njinja2\nJinja\njs\njupyter\nJupyter\nKamens\nkeepalive\nLaTeX\nlocalhost\nlogin\nlogout\nmathjax\nMathJax\nmatplotlib\nmenubar\nmetadata\nminify\nminified\nmultiline\nnatively\nnbviewer\npre\nprerelease\nQuantopian\nrepo\nreStructuredText\nsubclasses\nsubdirectory\nsubprocesses\nstartup\nsymlink\nuncomment\nunencrypted\nunicode\nUnicode\nuntracked\nuntrusted\nURL\nurl\nusername\nwebserver\nwebsockets\nworkflow\n"
  },
  {
    "path": "docs/source/template.tpl",
    "content": "{%- extends 'rst.tpl' -%}\n\n{% macro notebooklink() -%}\n\n`View the original notebook on nbviewer <https://nbviewer.jupyter.org/github/jupyter/notebook/blob/main/docs/{{ resources['metadata']['path'] }}/{{ resources['metadata']['name'] | replace(' ', '%20') }}.ipynb>`__\n\n\n{%- endmacro %}\n\n{%- block header %}\n{{ notebooklink() }}\n{% endblock header -%}\n\n{%- block footer %}\n{{ notebooklink() }}\n{% endblock footer -%}\n\n{% block markdowncell scoped %}\n{{ cell.source | markdown2rst | replace(\".ipynb>\", \".html>\") }}\n{% endblock markdowncell %}\n"
  },
  {
    "path": "docs/source/troubleshooting.md",
    "content": "# What to do when things go wrong\n\nFirst, have a look at the common problems listed below. If you can figure it out\nfrom these notes, it will be quicker than asking for help.\n\nCheck that you have the latest version of any packages that look relevant.\nUnfortunately it's not always easy to figure out what packages are relevant,\nbut if there was a bug that's already been fixed,\nit's easy to upgrade and get on with what you wanted to do.\n\n## Jupyter fails to start\n\n- Have you [installed it](https://jupyter.org/install.html)? ;-)\n- If you're using a menu shortcut or Anaconda launcher to start it, try\n  opening a terminal or command prompt and running the command `jupyter notebook`.\n- If it can't find `jupyter`,\n  you may need to configure your `PATH` environment variable.\n  If you don't know what that means, and don't want to find out,\n  just (re)install Anaconda with the default settings,\n  and it should set up PATH correctly.\n- If Jupyter gives an error that it can't find `notebook`,\n  check with pip or conda that the `notebook` package is installed.\n- Try running `jupyter-notebook` (with a hyphen). This should normally be the\n  same as `jupyter notebook` (with a space), but if there's any difference,\n  the version with the hyphen is the 'real' launcher, and the other one wraps\n  that.\n\n## Jupyter doesn't load or doesn't work in the browser\n\n- Try in another browser (e.g. if you normally use Firefox, try with Chrome).\n  This helps pin down where the problem is.\n- Try disabling any browser extensions and/or any Jupyter extensions you have\n  installed.\n- Some internet security software can interfere with Jupyter.\n  If you have security software, try turning it off temporarily,\n  and look in the settings for a more long-term solution.\n- In the address bar, try changing between `localhost` and `127.0.0.1`.\n  They should be the same, but in some cases it makes a difference.\n\n## Jupyter can't start a kernel\n\nFiles called _kernel specs_ tell Jupyter how to start different kinds of kernels.\nTo see where these are on your system, run `jupyter kernelspec list`:\n\n```\n$ jupyter kernelspec list\nAvailable kernels:\n  python3      /home/takluyver/.local/lib/python3.6/site-packages/ipykernel/resources\n  bash         /home/takluyver/.local/share/jupyter/kernels/bash\n  ir           /home/takluyver/.local/share/jupyter/kernels/ir\n```\n\nThere's a special fallback for the Python kernel:\nif it doesn't find a real kernelspec, but it can import the `ipykernel` package,\nit provides a kernel which will run in the same Python environment as the notebook server.\nA path ending in `ipykernel/resources`, like in the example above,\nis this default kernel.\nThe default often does what you want,\nso if the `python3` kernelspec points somewhere else\nand you can't start a Python kernel,\ntry deleting or renaming that kernelspec folder to expose the default.\n\nIf your problem is with another kernel, not the Python one we maintain,\nyou may need to look for support about that kernel.\n\n## Python Environments\n\nMultiple python environments, whether based on Anaconda or Python Virtual environments,\nare often the source of reported issues. In many cases, these issues stem from the\nNotebook server running in one environment, while the kernel and/or its resources,\nderive from another environment. Indicators of this scenario include:\n\n- `import` statements within code cells producing `ImportError` or `ModuleNotFound` exceptions.\n- General kernel startup failures exhibited by nothing happening when attempting\n  to execute a cell.\n\nIn these situations, take a close look at your environment structure and ensure all\npackages required by your notebook's code are installed in the correct environment.\nIf you need to run the kernel from different environments than your Notebook\nserver, check out [IPython's documentation](https://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments)\nfor using kernels from different environments as this is the recommended approach.\nAnaconda's [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)\npackage might also be an option for you in these scenarios.\n\nAnother thing to check is the `kernel.json` file that will be located in the\naforementioned _kernel specs_ directory identified by running `jupyter kernelspec list`.\nThis file will contain an `argv` stanza that includes the actual command to run\nwhen launching the kernel. Oftentimes, when reinstalling python environments, a previous\n`kernel.json` will reference an python executable from an old or non-existent location.\nAs a result, it's always a good idea when encountering kernel startup issues to validate\nthe `argv` stanza to ensure all file references exist and are appropriate.\n\n## Windows Systems\n\nAlthough Jupyter Notebook is primarily developed on the various flavors of the Unix\noperating system it also supports Microsoft\nWindows - which introduces its own set of commonly encountered issues,\nparticularly in the areas of security, process management and lower-level libraries.\n\n### pywin32 Issues\n\nThe primary package for interacting with Windows' primitives is `pywin32`.\n\n- Issues surrounding the creation of the kernel's communication file utilize\n  `jupyter_core`'s `secure_write()` function. This function ensures a file is\n  created in which only the owner of the file has access. If libraries like `pywin32`\n  are not properly installed, issues can arise when it's necessary to use the native\n  Windows libraries.\n\n  Here's a portion of such a traceback:\n\n  ```\n  File \"c:\\users\\jovyan\\python\\myenv.venv\\lib\\site-packages\\jupyter_core\\paths.py\", line 424, in secure_write\n  win32_restrict_file_to_user(fname)\n  File \"c:\\users\\jovyan\\python\\myenv.venv\\lib\\site-packages\\jupyter_core\\paths.py\", line 359, in win32_restrict_file_to_user\n  import win32api\n  ImportError: DLL load failed: The specified module could not be found.\n  ```\n\n- As noted earlier, the installation of `pywin32` can be problematic on Windows\n  configurations. When such an issue occurs, you may need to revisit how the environment\n  was setup. Pay careful attention to whether you're running the 32 or 64 bit versions\n  of Windows and be sure to install appropriate packages for that environment.\n\n  Here's a portion of such a traceback:\n\n  ```\n  File \"C:\\Users\\jovyan\\AppData\\Roaming\\Python\\Python37\\site-packages\\jupyter_core\\paths.py\", line 435, in secure_write\n  win32_restrict_file_to_user(fname)\n  File \"C:\\Users\\jovyan\\AppData\\Roaming\\Python\\Python37\\site-packages\\jupyter_core\\paths.py\", line 361, in win32_restrict_file_to_user\n  import win32api\n  ImportError: DLL load failed: %1 is not a valid Win32 application\n  ```\n\n#### Resolving pywin32 Issues\n\n> In this case, your `pywin32` module may not be installed correctly and the following\n> should be attempted:\n>\n> ```\n> pip install --upgrade pywin32\n> ```\n>\n> or:\n>\n> ```\n> conda install --force-reinstall pywin32\n> ```\n>\n> followed by:\n>\n> ```\n> python.exe Scripts/pywin32_postinstall.py -install\n> ```\n>\n> where `Scripts` is located in the active Python's installation location.\n\n- Another common failure specific to Windows environments is the location of various\n  python commands. On `*nix` systems, these typically reside in the `bin` directory\n  of the active Python environment. However, on Windows, these tend to reside in the\n  `Scripts` folder - which is a sibling to `bin`. As a result, when encountering\n  kernel startup issues, again, check the `argv` stanza and verify it's pointing to a\n  valid file. You may find that it's pointing in `bin` when `Scripts` is correct, or\n  the referenced file does not include its `.exe` extension - typically resulting in\n  `FileNotFoundError` exceptions.\n\n## This Worked An Hour Ago\n\nThe Jupyter stack is very complex and rightfully so, there's a lot going on. On occasion\nyou might find the system working perfectly well, then, suddenly, you can't get past a\ncertain cell due to `import` failures. In these situations, it's best to ask yourself\nif any new python files were added to your notebook development area.\n\nThese issues are usually evident by carefully analyzing the traceback produced in\nthe notebook error or the Notebook server's command window. In these cases, you'll typically\nfind the Python kernel code (from `IPython` and `ipykernel`) performing _its_ imports\nand notice a file from your Notebook development error included in that traceback followed\nby an `AttributeError`:\n\n```\nFile \"C:\\Users\\jovyan\\anaconda3\\lib\\site-packages\\ipykernel\\connect.py\", line 13, in\nfrom IPython.core.profiledir import ProfileDir\nFile \"C:\\Users\\jovyan\\anaconda3\\lib\\site-packages\\IPython_init.py\", line 55, in\nfrom .core.application import Application\n...\nFile \"C:\\Users\\jovyan\\anaconda3\\lib\\site-packages\\ipython_genutils\\path.py\", line 13, in\nimport random\nFile \"C:\\Users\\jovyan\\Desktop\\Notebooks\\random.py\", line 4, in\nrand_set = random.sample(english_words_lower_set, 12)\nAttributeError: module 'random' has no attribute 'sample'\n```\n\nWhat has happened is that you have named a file that conflicts with an installed package\nthat is used by the kernel software and now introduces a conflict preventing the\nkernel's startup.\n\n**Resolution**: You'll need to rename your file. A best practice would be to prefix or\n_namespace_ your files so as not to conflict with any python package.\n\n## Asking for help\n\nAs with any problem, try searching to see if someone has already found an answer.\nIf you can't find an existing answer, you can ask questions at:\n\n- The [Jupyter Discourse Forum](https://discourse.jupyter.org/)\n\n- The [jupyter-notebook tag on Stackoverflow](https://stackoverflow.com/questions/tagged/jupyter-notebook)\n\n- Peruse the [jupyter/help repository on Github](https://github.com/jupyter/help) (read-only)\n\n- Or in an issue on another repository, if it's clear which component is\n  responsible. Typical repositories include:\n\n  > - [jupyter_core](https://github.com/jupyter/jupyter_core) - `secure_write()`\n  >   and file path issues\n  > - [jupyter_client](https://github.com/jupyter/jupyter_client) - kernel management\n  >   issues found in Notebook server's command window.\n  > - [IPython](https://github.com/ipython/ipython) and\n  >   [ipykernel](https://github.com/ipython/ipykernel) - kernel runtime issues\n  >   typically found in Notebook server's command window and/or Notebook cell execution.\n\n### Gathering Information\n\nShould you find that your problem warrants that an issue be opened in\n[notebook](https://github.com/jupyter/notebook) please don't forget to provide details\nlike the following:\n\n- What error messages do you see (within your notebook and, more importantly, in\n  the Notebook server's command window)?\n- What platform are you on?\n- How did you install Jupyter?\n- What have you tried already?\n\nThe `jupyter troubleshoot` command collects a lot of information\nabout your installation, which can also be useful.\n\nWhen providing textual information, it's most helpful if you can _scrape_ the contents\ninto the issue rather than providing a screenshot. This enables others to select\npieces of that content so they can search more efficiently and try to help.\n\nRemember that it's not anyone's job to help you.\nWe want Jupyter to work for you,\nbut we can't always help everyone individually.\n"
  },
  {
    "path": "docs/source/ui_components.md",
    "content": "# User interface components\n\nWhen opening bug reports or sending emails to the Jupyter mailing list, it is\nuseful to know the names of different UI components so that other developers\nand users have an easier time helping you diagnose your problems. This section\nwill familiarize you with the names of UI elements within the Notebook and the\ndifferent Notebook modes.\n\n## Notebook Dashboard\n\nWhen you launch `jupyter notebook` the first page that you encounter is the\nNotebook Dashboard.\n\n![a screenshot showing the jupyter notebook dashboard page](https://user-images.githubusercontent.com/591645/229564680-3e9a9031-e925-4008-833c-a478b3e96c97.png)\n\n## Notebook Editor\n\nOnce you've selected a Notebook to edit, the Notebook will open in the Notebook\nEditor.\n\n![a screenshot showing the default notebook interface](https://user-images.githubusercontent.com/591645/229564924-7a76bed6-924a-45ff-9ac7-6ec6d99930b7.png)\n\n## Interactive User Interface Tour of the Notebook\n\nIf you would like to learn more about the specific elements within the Notebook\nEditor, you can go through the user interface tour by selecting _Help_ in the\nmenubar then selecting _User Interface Tour_.\n\n### Edit Mode and Notebook Editor\n\nWhen a cell is in edit mode, the Cell Mode Indicator will change to reflect\nthe cell's state. This state is indicated by a small pencil icon on the\ntop right of the interface. When the cell is in command mode, there is no\nicon in that location.\n\n![a screenshot showing a notebook with some cells in edit mode](https://user-images.githubusercontent.com/591645/229565074-34e61454-3329-4612-b483-7a52663c794b.png)\n\n## File Editor\n\nNow let's say that you've chosen to open a Markdown file instead of a Notebook\nfile whilst in the Notebook Dashboard. If so, the file will be opened in the\nFile Editor.\n\n![a screenshot showing the file editor](https://user-images.githubusercontent.com/591645/229565182-254eef80-edfb-4e2c-b454-1c978fd89f13.png)\n"
  },
  {
    "path": "docs/source/user-documentation.md",
    "content": "# Documentation\n\nUse this page to navigate to different parts of the user documentation.\n\n```{toctree}\n:maxdepth: 2\n\nnotebook\nui_components\nnotebook_7_features\nexamples/Notebook/examples_index.rst\ncustom_css\nconfiguring/plugins\nconfiguring/interface_customization\ntroubleshooting\nchangelog\n```\n"
  },
  {
    "path": "eslint.config.mjs",
    "content": "import js from '@eslint/js';\nimport { defineConfig } from 'eslint/config';\nimport tseslint from 'typescript-eslint';\nimport eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';\nimport jestPlugin from 'eslint-plugin-jest';\nimport reactPlugin from 'eslint-plugin-react';\nimport globals from 'globals';\n\nexport default defineConfig([\n  {\n    ignores: [\n      'node_modules/**',\n      '**/build/**',\n      '**/lib/**',\n      '**/node_modules/**',\n      '**/mock_packages/**',\n      '**/static/**',\n      '**/typings/**',\n      '**/schemas/**',\n      '**/themes/**',\n      'coverage/**',\n      '**/*.map.js',\n      '**/*.bundle.js',\n      'app/index.template.js',\n      '.idea/**',\n      '.history/**',\n      '.vscode/**',\n      '.pixi/**',\n      '.venv/**',\n      'docs/**',\n      '**/*.js',\n    ],\n  },\n  js.configs.recommended,\n  tseslint.configs.recommended,\n  {\n    settings: {\n      react: {\n        version: 'detect',\n      },\n    },\n  },\n  reactPlugin.configs.flat.recommended,\n  jestPlugin.configs['flat/recommended'],\n  {\n    files: ['**/*.{ts,tsx}'],\n    plugins: {\n      jest: jestPlugin,\n      react: reactPlugin,\n    },\n    languageOptions: {\n      globals: {\n        ...globals.browser,\n        ...globals.es2015,\n        ...globals.commonjs,\n        ...globals.node,\n        ...globals.jest,\n      },\n      parserOptions: {\n        project: 'tsconfig.eslint.json',\n      },\n    },\n    rules: {\n      '@typescript-eslint/naming-convention': [\n        'error',\n        {\n          selector: 'interface',\n          format: ['PascalCase'],\n          custom: {\n            regex: '^I[A-Z]',\n            match: true,\n          },\n        },\n      ],\n      '@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }],\n      '@typescript-eslint/no-explicit-any': 'off',\n      '@typescript-eslint/no-namespace': 'off',\n      '@typescript-eslint/no-require-imports': 'off',\n      '@typescript-eslint/no-use-before-define': 'off',\n      '@typescript-eslint/no-empty-object-type': 'off',\n      'jest/no-done-callback': 'off',\n      curly: ['error', 'all'],\n      eqeqeq: 'error',\n      'prefer-arrow-callback': 'error',\n    },\n  },\n  eslintPluginPrettierRecommended,\n]);\n"
  },
  {
    "path": "jupyter-config/jupyter_server_config.d/notebook.json",
    "content": "{\n  \"ServerApp\": {\n    \"jpserver_extensions\": {\n      \"notebook\": true\n    }\n  }\n}\n"
  },
  {
    "path": "jupyter-notebook.desktop",
    "content": "[Desktop Entry]\nName=Jupyter Notebook\nComment=Run Jupyter Notebook\nExec=jupyter-notebook %f\nTerminal=true\nType=Application\nIcon=notebook\nStartupNotify=true\nMimeType=application/x-ipynb+json;\nCategories=Development;Education;\nKeywords=python;\n"
  },
  {
    "path": "jupyter_config.json",
    "content": "{\n  \"LabApp\": { \"expose_app_in_browser\": true },\n  \"JupyterNotebookApp\": { \"expose_app_in_browser\": true }\n}\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"$schema\": \"node_modules/lerna/schemas/lerna-schema.json\",\n  \"version\": \"independent\"\n}\n"
  },
  {
    "path": "notebook/__init__.py",
    "content": "from __future__ import annotations\n\nfrom typing import Any\n\nfrom ._version import __version__, version_info  # noqa: F401\n\n\ndef _jupyter_server_extension_paths() -> list[dict[str, str]]:\n    return [{\"module\": \"notebook\"}]\n\n\ndef _jupyter_server_extension_points() -> list[dict[str, Any]]:\n    from .app import JupyterNotebookApp\n\n    return [{\"module\": \"notebook\", \"app\": JupyterNotebookApp}]\n\n\ndef _jupyter_labextension_paths() -> list[dict[str, str]]:\n    return [{\"src\": \"labextension\", \"dest\": \"@jupyter-notebook/lab-extension\"}]\n"
  },
  {
    "path": "notebook/__main__.py",
    "content": "\"\"\"CLI entry point for notebook.\"\"\"\n\nimport sys\n\nfrom notebook.app import main\n\nsys.exit(main())  # type:ignore[no-untyped-call]\n"
  },
  {
    "path": "notebook/_version.py",
    "content": "\"\"\"Version info for notebook.\"\"\"\n\n# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\nimport re\nfrom collections import namedtuple\n\n# Use \"hatch version xx.yy.zz\" to handle version changes\n__version__ = \"7.6.0a4\"\n\n# PEP440 version parser\n_version_regex = re.compile(\n    r\"\"\"\n  (?P<major>\\d+)\n  \\.\n  (?P<minor>\\d+)\n  \\.\n  (?P<micro>\\d+)\n  (?P<releaselevel>((a|b|rc|\\.dev)))?\n  (?P<serial>\\d+)?\n  \"\"\",\n    re.VERBOSE,\n)\n\n_version_fields = _version_regex.match(__version__).groupdict()  # type:ignore[union-attr]\n\nVersionInfo = namedtuple(\"VersionInfo\", [\"major\", \"minor\", \"micro\", \"releaselevel\", \"serial\"])  # noqa: PYI024\n\nversion_info = VersionInfo(\n    *[\n        field\n        for field in (\n            int(_version_fields[\"major\"]),\n            int(_version_fields[\"minor\"]),\n            int(_version_fields[\"micro\"]),\n            _version_fields[\"releaselevel\"] or \"\",\n            _version_fields[\"serial\"] or \"\",\n        )\n    ]\n)\n"
  },
  {
    "path": "notebook/app.py",
    "content": "\"\"\"Jupyter notebook application.\"\"\"\n\nfrom __future__ import annotations\n\nimport os\nimport re\nimport typing as t\nfrom pathlib import Path\n\nfrom jupyter_client.utils import ensure_async  # type:ignore[attr-defined]\nfrom jupyter_core.application import base_aliases\nfrom jupyter_core.paths import jupyter_config_dir\nfrom jupyter_server.base.handlers import JupyterHandler\nfrom jupyter_server.extension.handler import (\n    ExtensionHandlerJinjaMixin,\n    ExtensionHandlerMixin,\n)\nfrom jupyter_server.serverapp import flags\nfrom jupyter_server.utils import url_escape, url_is_absolute\nfrom jupyter_server.utils import url_path_join as ujoin\nfrom jupyterlab.commands import (  # type:ignore[import-untyped]\n    get_app_dir,\n    get_user_settings_dir,\n    get_workspaces_dir,\n)\nfrom jupyterlab_server import LabServerApp\nfrom jupyterlab_server.config import (  # type:ignore[attr-defined]\n    LabConfig,\n    get_page_config,\n    recursive_update,\n)\nfrom jupyterlab_server.handlers import _camelCase, is_url\nfrom notebook_shim.shim import NotebookConfigShimMixin  # type:ignore[import-untyped]\nfrom tornado import web\nfrom traitlets import Bool, Unicode, default\nfrom traitlets.config.loader import Config\n\nfrom ._version import __version__\n\nHERE = Path(__file__).parent.resolve()\n\nFlags = dict[str | tuple[str, ...], tuple[dict[str, t.Any] | Config, str]]\n\napp_dir = Path(get_app_dir())\nversion = __version__\n\n# mypy: disable-error-code=\"no-untyped-call\"\n\n\nclass NotebookBaseHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHandler):\n    \"\"\"The base notebook API handler.\"\"\"\n\n    @property\n    def custom_css(self) -> t.Any:\n        return self.settings.get(\"custom_css\", True)\n\n    def get_page_config(self) -> dict[str, t.Any]:\n        \"\"\"Get the page config.\"\"\"\n        config = LabConfig()\n        app: JupyterNotebookApp = self.extensionapp  # type:ignore[assignment]\n        base_url = self.settings.get(\"base_url\", \"/\")\n        page_config_data = self.settings.setdefault(\"page_config_data\", {})\n        page_config = {\n            **page_config_data,\n            \"appVersion\": version,\n            \"baseUrl\": self.base_url,\n            \"terminalsAvailable\": self.settings.get(\"terminals_available\", False),\n            \"token\": self.settings[\"token\"],\n            \"fullStaticUrl\": ujoin(self.base_url, \"static\", self.name),\n            \"frontendUrl\": ujoin(self.base_url, \"/\"),\n            \"exposeAppInBrowser\": app.expose_app_in_browser,\n        }\n\n        server_root = self.settings.get(\"server_root_dir\", \"\")\n        server_root = server_root.replace(os.sep, \"/\")\n        server_root = os.path.normpath(Path(server_root).expanduser())\n        try:\n            # Remove the server_root from pref dir\n            if self.serverapp.preferred_dir != server_root:\n                page_config[\"preferredPath\"] = \"/\" + os.path.relpath(\n                    self.serverapp.preferred_dir, server_root\n                )\n            else:\n                page_config[\"preferredPath\"] = \"/\"\n        except Exception:\n            page_config[\"preferredPath\"] = \"/\"\n\n        mathjax_config = self.settings.get(\"mathjax_config\", \"TeX-AMS_HTML-full,Safe\")\n        # TODO Remove CDN usage.\n        mathjax_url = self.settings.get(\n            \"mathjax_url\",\n            \"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js\",\n        )\n        if not url_is_absolute(mathjax_url) and not mathjax_url.startswith(self.base_url):\n            mathjax_url = ujoin(self.base_url, mathjax_url)\n\n        page_config.setdefault(\"mathjaxConfig\", mathjax_config)\n        page_config.setdefault(\"fullMathjaxUrl\", mathjax_url)\n        page_config.setdefault(\"jupyterConfigDir\", jupyter_config_dir())\n\n        # Put all our config in page_config\n        for name in config.trait_names():\n            page_config[_camelCase(name)] = getattr(app, name)\n\n        # Add full versions of all the urls\n        for name in config.trait_names():\n            if not name.endswith(\"_url\"):\n                continue\n            full_name = _camelCase(\"full_\" + name)\n            full_url = getattr(app, name)\n            if not is_url(full_url):\n                # Relative URL will be prefixed with base_url\n                full_url = ujoin(base_url, full_url)\n            page_config[full_name] = full_url\n\n        labextensions_path = app.extra_labextensions_path + app.labextensions_path\n        recursive_update(\n            page_config,\n            get_page_config(\n                labextensions_path,\n                logger=self.log,\n            ),\n        )\n\n        # modify page config with custom hook\n        page_config_hook = self.settings.get(\"page_config_hook\", None)\n        if page_config_hook:\n            page_config = page_config_hook(self, page_config)\n\n        return page_config\n\n\nclass TreeHandler(NotebookBaseHandler):\n    \"\"\"A tree page handler.\"\"\"\n\n    @web.authenticated\n    async def get(self, path: str = \"\") -> None:\n        \"\"\"\n        Display appropriate page for given path.\n\n        - A directory listing is shown if path is a directory\n        - Redirected to notebook page if path is a notebook\n        - Render the raw file if path is any other file\n        \"\"\"\n        path = path.strip(\"/\")\n        cm = self.contents_manager\n\n        if await ensure_async(cm.dir_exists(path=path)):\n            if await ensure_async(cm.is_hidden(path)) and not cm.allow_hidden:\n                self.log.info(\"Refusing to serve hidden directory, via 404 Error\")\n                raise web.HTTPError(404)\n\n            # Set treePath for routing to the directory\n            page_config = self.get_page_config()\n            page_config[\"treePath\"] = path\n\n            tpl = self.render_template(\"tree.html\", page_config=page_config)\n            return self.write(tpl)\n        if await ensure_async(cm.file_exists(path)):\n            # it's not a directory, we have redirecting to do\n            model = await ensure_async(cm.get(path, content=False))\n            if model[\"type\"] == \"notebook\":\n                url = ujoin(self.base_url, \"notebooks\", url_escape(path))\n            else:\n                # Return raw content if file is not a notebook\n                url = ujoin(self.base_url, \"files\", url_escape(path))\n            self.log.debug(\"Redirecting %s to %s\", self.request.path, url)\n            self.redirect(url)\n            return None\n        raise web.HTTPError(404)\n\n\nclass ConsoleHandler(NotebookBaseHandler):\n    \"\"\"A console page handler.\"\"\"\n\n    @web.authenticated\n    def get(self, path: str | None = None) -> t.Any:  # noqa: ARG002\n        \"\"\"Get the console page.\"\"\"\n        tpl = self.render_template(\"consoles.html\", page_config=self.get_page_config())\n        return self.write(tpl)\n\n\nclass TerminalHandler(NotebookBaseHandler):\n    \"\"\"A terminal page handler.\"\"\"\n\n    @web.authenticated\n    def get(self, path: str | None = None) -> t.Any:  # noqa: ARG002\n        \"\"\"Get the terminal page.\"\"\"\n        tpl = self.render_template(\"terminals.html\", page_config=self.get_page_config())\n        return self.write(tpl)\n\n\nclass FileHandler(NotebookBaseHandler):\n    \"\"\"A file page handler.\"\"\"\n\n    @web.authenticated\n    def get(self, path: str | None = None) -> t.Any:  # noqa: ARG002\n        \"\"\"Get the file page.\"\"\"\n        tpl = self.render_template(\"edit.html\", page_config=self.get_page_config())\n        return self.write(tpl)\n\n\nclass NotebookHandler(NotebookBaseHandler):\n    \"\"\"A notebook page handler.\"\"\"\n\n    @web.authenticated\n    async def get(self, path: str = \"\") -> t.Any:\n        \"\"\"Get the notebook page. Redirect if it's a directory.\"\"\"\n        path = path.strip(\"/\")\n        cm = self.contents_manager\n\n        if await ensure_async(cm.dir_exists(path=path)):\n            url = ujoin(self.base_url, \"tree\", url_escape(path))\n            self.log.debug(\"Redirecting %s to %s since path is a directory\", self.request.path, url)\n            self.redirect(url)\n            return None\n        tpl = self.render_template(\"notebooks.html\", page_config=self.get_page_config())\n        return self.write(tpl)\n\n\nclass CustomCssHandler(NotebookBaseHandler):\n    \"\"\"A custom CSS handler.\"\"\"\n\n    @web.authenticated\n    def get(self) -> t.Any:\n        \"\"\"Get the custom css file.\"\"\"\n\n        self.set_header(\"Content-Type\", \"text/css\")\n        page_config = self.get_page_config()\n        custom_css_file = f\"{page_config['jupyterConfigDir']}/custom/custom.css\"\n\n        if not Path(custom_css_file).is_file():\n            static_path_root = re.match(\"^(.*?)static\", page_config[\"staticDir\"])\n            if static_path_root is not None:\n                custom_dir = static_path_root.groups()[0]\n                custom_css_file = f\"{custom_dir}custom/custom.css\"\n\n        with Path(custom_css_file).open() as css_f:\n            return self.write(css_f.read())\n\n\naliases = dict(base_aliases)\n\n\nclass JupyterNotebookApp(NotebookConfigShimMixin, LabServerApp):  # type:ignore[misc]\n    \"\"\"The notebook server extension app.\"\"\"\n\n    name = \"notebook\"\n    app_name = \"Jupyter Notebook\"\n    description = \"Jupyter Notebook - A web-based notebook environment for interactive computing\"\n    version = version\n    app_version = Unicode(version, help=\"The version of the application.\")\n    extension_url = \"/\"\n    default_url = Unicode(\"/tree\", config=True, help=\"The default URL to redirect to from `/`\")\n    file_url_prefix = \"/tree\"\n    load_other_extensions = True\n    app_dir = app_dir\n    subcommands: dict[str, t.Any] = {}\n\n    expose_app_in_browser = Bool(\n        False,\n        config=True,\n        help=\"Whether to expose the global app instance to browser via window.jupyterapp\",\n    )\n\n    custom_css = Bool(\n        True,\n        config=True,\n        help=\"\"\"Whether custom CSS is loaded on the page.\n        Defaults to True and custom CSS is loaded.\n        \"\"\",\n    )\n\n    flags: Flags = flags  # type:ignore[assignment]\n    flags[\"expose-app-in-browser\"] = (\n        {\"JupyterNotebookApp\": {\"expose_app_in_browser\": True}},\n        \"Expose the global app instance to browser via window.jupyterapp.\",\n    )\n\n    flags[\"custom-css\"] = (\n        {\"JupyterNotebookApp\": {\"custom_css\": True}},\n        \"Load custom CSS in template html files. Default is True\",\n    )\n\n    @default(\"static_dir\")\n    def _default_static_dir(self) -> str:\n        return str(HERE / \"static\")\n\n    @default(\"templates_dir\")\n    def _default_templates_dir(self) -> str:\n        return str(HERE / \"templates\")\n\n    @default(\"app_settings_dir\")\n    def _default_app_settings_dir(self) -> str:\n        return str(app_dir / \"settings\")\n\n    @default(\"schemas_dir\")\n    def _default_schemas_dir(self) -> str:\n        return str(app_dir / \"schemas\")\n\n    @default(\"themes_dir\")\n    def _default_themes_dir(self) -> str:\n        return str(app_dir / \"themes\")\n\n    @default(\"user_settings_dir\")\n    def _default_user_settings_dir(self) -> str:\n        return t.cast(str, get_user_settings_dir())\n\n    @default(\"workspaces_dir\")\n    def _default_workspaces_dir(self) -> str:\n        return t.cast(str, get_workspaces_dir())\n\n    def _prepare_templates(self) -> None:\n        super(LabServerApp, self)._prepare_templates()\n        self.jinja2_env.globals.update(custom_css=self.custom_css)  # type:ignore[has-type]\n\n    def server_extension_is_enabled(self, extension: str) -> bool:\n        \"\"\"Check if server extension is enabled.\"\"\"\n        if self.serverapp is None:\n            return False\n        try:\n            extension_enabled = (\n                self.serverapp.extension_manager.extensions[extension].enabled is True\n            )\n        except (AttributeError, KeyError, TypeError):\n            extension_enabled = False\n        return extension_enabled\n\n    def initialize_handlers(self) -> None:\n        \"\"\"Initialize handlers.\"\"\"\n        assert self.serverapp is not None  # noqa: S101\n        page_config = self.serverapp.web_app.settings.setdefault(\"page_config_data\", {})\n        nbclassic_enabled = self.server_extension_is_enabled(\"nbclassic\")\n        page_config[\"nbclassic_enabled\"] = nbclassic_enabled\n\n        # If running under JupyterHub, add more metadata.\n        if \"hub_prefix\" in self.serverapp.tornado_settings:\n            tornado_settings = self.serverapp.tornado_settings\n            hub_prefix = tornado_settings[\"hub_prefix\"]\n            page_config[\"hubPrefix\"] = hub_prefix\n            page_config[\"hubHost\"] = tornado_settings[\"hub_host\"]\n            page_config[\"hubUser\"] = tornado_settings[\"user\"]\n            page_config[\"shareUrl\"] = ujoin(hub_prefix, \"user-redirect\")\n            # Assume the server_name property indicates running JupyterHub 1.0.\n            if hasattr(self.serverapp, \"server_name\"):\n                page_config[\"hubServerName\"] = self.serverapp.server_name\n            # avoid setting API token in page config\n            # $JUPYTERHUB_API_TOKEN identifies the server, not the client\n            # but at least make sure we don't use the token\n            # if the serverapp set one\n            page_config[\"token\"] = \"\"\n\n        self.handlers.append((\"/tree(.*)\", TreeHandler))\n        self.handlers.append((\"/notebooks(.*)\", NotebookHandler))\n        self.handlers.append((\"/edit(.*)\", FileHandler))\n        self.handlers.append((\"/consoles/(.*)\", ConsoleHandler))\n        self.handlers.append((\"/terminals/(.*)\", TerminalHandler))\n        self.handlers.append((\"/custom/custom.css\", CustomCssHandler))\n        super().initialize_handlers()\n\n    def initialize(self, argv: list[str] | None = None) -> None:  # noqa: ARG002\n        \"\"\"Subclass because the ExtensionApp.initialize() method does not take arguments\"\"\"\n        super().initialize()\n\n\nmain = launch_new_instance = JupyterNotebookApp.launch_instance\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "notebook/custom/custom.css",
    "content": "/*\nPlaceholder for custom user CSS\n\nmainly to be overridden in profile/static/custom/custom.css\n\nThis will always be an empty file\n*/\n"
  },
  {
    "path": "nx.json",
    "content": "{\n  \"$schema\": \"./node_modules/nx/schemas/nx-schema.json\",\n  \"tasksRunnerOptions\": {\n    \"default\": {\n      \"runner\": \"nx/tasks-runners/default\",\n      \"options\": {\n        \"cacheableOperations\": [\n          \"build\",\n          \"build:prod\",\n          \"build:lib\",\n          \"build:labextension:dev\",\n          \"build:labextension\"\n        ]\n      }\n    }\n  },\n  \"namedInputs\": {\n    \"default\": [\"{projectRoot}/**/*\"]\n  },\n  \"targetDefaults\": {\n    \"build:lib\": {\n      \"dependsOn\": [\"^build:lib\"],\n      \"inputs\": [\"default\", \"^default\"],\n      \"outputs\": [\"{projectRoot}/lib\"]\n    },\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"inputs\": [\"default\", \"^default\"]\n    },\n    \"build:prod\": {\n      \"dependsOn\": [\"^build:prod\"],\n      \"inputs\": [\"default\", \"^default\"]\n    }\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/root\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"workspaces\": {\n    \"packages\": [\n      \"app\",\n      \"buildutils\",\n      \"packages/*\"\n    ]\n  },\n  \"scripts\": {\n    \"build\": \"lerna run build\",\n    \"build:lib\": \"lerna run build:lib\",\n    \"build:prod\": \"lerna run build:prod --skip-nx-cache\",\n    \"build:test\": \"lerna run build:test\",\n    \"build:utils\": \"cd buildutils && npm run build\",\n    \"clean\": \"lerna run clean\",\n    \"deduplicate\": \"jlpm dlx yarn-berry-deduplicate -s fewerHighest && jlpm install\",\n    \"develop\": \"jupyter labextension develop . --overwrite && node ./buildutils/lib/develop.js --overwrite\",\n    \"eslint\": \"eslint . --fix\",\n    \"eslint:check\": \"eslint .\",\n    \"eslint:files\": \"eslint --fix\",\n    \"get:lab:version\": \"node ./buildutils/lib/get-latest-lab-version.js\",\n    \"integrity\": \"node buildutils/lib/ensure-repo.js\",\n    \"prettier\": \"prettier --write \\\"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\\\"\",\n    \"prettier:check\": \"prettier --list-different \\\"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\\\"\",\n    \"prettier:files\": \"prettier --write\",\n    \"release:bump\": \"node ./buildutils/lib/release-bump.js\",\n    \"release:patch\": \"node ./buildutils/lib/release-patch.js\",\n    \"test\": \"lerna run test\",\n    \"update:dependency\": \"node ./node_modules/@jupyterlab/buildutils/lib/update-dependency.js --lerna\",\n    \"upgrade:lab:dependencies\": \"node ./buildutils/lib/upgrade-lab-dependencies.js\",\n    \"watch\": \"run-p watch:lib watch:app\",\n    \"watch:app\": \"lerna exec --stream --scope \\\"@jupyter-notebook/app\\\" jlpm watch\",\n    \"watch:lib\": \"lerna exec --stream --scope @jupyter-notebook/metapackage jlpm watch\"\n  },\n  \"resolutions\": {\n    \"@types/react\": \"^18.0.26\",\n    \"react\": \"^18.2.0\",\n    \"yjs\": \"^13.5.40\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.26.0\",\n    \"@jupyterlab/buildutils\": \"~4.6.0-alpha.4\",\n    \"eslint\": \"^9.26.0\",\n    \"eslint-config-prettier\": \"^10.0.0\",\n    \"eslint-plugin-jest\": \"^28.0.0\",\n    \"eslint-plugin-prettier\": \"^5.0.0\",\n    \"eslint-plugin-react\": \"^7.37.0\",\n    \"globals\": \"^16.0.0\",\n    \"html-webpack-plugin\": \"^5.6.3\",\n    \"lerna\": \"^7.1.4\",\n    \"npm-run-all\": \"^4.1.5\",\n    \"prettier\": \"^2.8.5\",\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\",\n    \"typescript-eslint\": \"^8.0.0\"\n  },\n  \"nx\": {}\n}\n"
  },
  {
    "path": "packages/_metapackage/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/metapackage\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"private\": true,\n  \"description\": \"Jupyter Notebook - Metapackage\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"watch\": \"tsc -b -w --preserveWatchOutput\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/application-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/console-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/docmanager-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/documentsearch-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/help-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/lab-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/notebook-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/terminal-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree-extension\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/ui-components\": \"^7.6.0-alpha.4\"\n  },\n  \"devDependencies\": {\n    \"typescript\": \"~5.9.3\"\n  }\n}\n"
  },
  {
    "path": "packages/_metapackage/src/index.ts",
    "content": "import '@jupyter-notebook/application';\nimport '@jupyter-notebook/application-extension';\nimport '@jupyter-notebook/console-extension';\nimport '@jupyter-notebook/docmanager-extension';\nimport '@jupyter-notebook/documentsearch-extension';\nimport '@jupyter-notebook/help-extension';\nimport '@jupyter-notebook/lab-extension';\nimport '@jupyter-notebook/notebook-extension';\nimport '@jupyter-notebook/terminal-extension';\nimport '@jupyter-notebook/tree';\nimport '@jupyter-notebook/tree-extension';\nimport '@jupyter-notebook/ui-components';\n"
  },
  {
    "path": "packages/_metapackage/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    { \"path\": \"../application\" },\n    { \"path\": \"../application-extension\" },\n    { \"path\": \"../console-extension\" },\n    { \"path\": \"../docmanager-extension\" },\n    { \"path\": \"../documentsearch-extension\" },\n    { \"path\": \"../help-extension\" },\n    { \"path\": \"../lab-extension\" },\n    { \"path\": \"../notebook-extension\" },\n    { \"path\": \"../terminal-extension\" },\n    { \"path\": \"../tree\" },\n    { \"path\": \"../tree-extension\" },\n    { \"path\": \"../ui-components\" }\n  ]\n}\n"
  },
  {
    "path": "packages/application/babel.config.js",
    "content": "module.exports = require('@jupyterlab/testutils/lib/babel.config');\n"
  },
  {
    "path": "packages/application/jest.config.js",
    "content": "const func = require('@jupyterlab/testutils/lib/jest-config');\nconst upstream = func(__dirname);\n\nconst esModules = ['lib0', 'y-protocols'].join('|');\n\nlet local = {\n  preset: 'ts-jest/presets/js-with-babel',\n  transformIgnorePatterns: [\n    `/node_modules/(?!${esModules}).+\\\\.js/(?!(@jupyterlab/.*)/)`,\n  ],\n  globals: {\n    'ts-jest': {\n      tsconfig: './tsconfig.test.json',\n    },\n  },\n};\n\nObject.keys(local).forEach((option) => {\n  upstream[option] = local[option];\n});\n\nmodule.exports = upstream;\n"
  },
  {
    "path": "packages/application/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/application\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Application\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"style/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"build:test\": \"tsc --build tsconfig.test.json\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"test\": \"jest\",\n    \"test:cov\": \"jest --collect-coverage\",\n    \"test:debug\": \"node --inspect-brk node_modules/.bin/jest --runInBand\",\n    \"test:debug:watch\": \"node --inspect-brk node_modules/.bin/jest --runInBand --watch\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/docregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/rendermime-interfaces\": \"~3.14.0-alpha.4\",\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"^2.0.4\",\n    \"@lumino/coreutils\": \"^2.2.2\",\n    \"@lumino/messaging\": \"^2.0.4\",\n    \"@lumino/polling\": \"^2.1.5\",\n    \"@lumino/signaling\": \"^2.1.5\",\n    \"@lumino/widgets\": \"^2.7.2\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.11.6\",\n    \"@babel/preset-env\": \"^7.12.1\",\n    \"@jupyterlab/testutils\": \"~4.6.0-alpha.0\",\n    \"@types/jest\": \"^29.2.5\",\n    \"jest\": \"^29.3.1\",\n    \"rimraf\": \"^3.0.2\",\n    \"ts-jest\": \"^29.0.3\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"coreDependency\": true\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/application/src/app.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  JupyterLab,\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { Base64ModelFactory } from '@jupyterlab/docregistry';\n\nimport { createRendermimePlugins } from '@jupyterlab/application/lib/mimerenderers';\n\nimport { LabStatus } from '@jupyterlab/application/lib/status';\n\nimport { PageConfig } from '@jupyterlab/coreutils';\n\nimport { IRenderMime } from '@jupyterlab/rendermime-interfaces';\n\nimport { Throttler } from '@lumino/polling';\n\nimport { INotebookShell, NotebookShell } from './shell';\n\n/**\n * App is the main application class. It is instantiated once and shared.\n */\nexport class NotebookApp extends JupyterFrontEnd<INotebookShell> {\n  /**\n   * Construct a new NotebookApp object.\n   *\n   * @param options The instantiation options for an application.\n   */\n  constructor(options: NotebookApp.IOptions = { shell: new NotebookShell() }) {\n    super({ ...options, shell: options.shell ?? new NotebookShell() });\n\n    // Add initial model factory.\n    this.docRegistry.addModelFactory(new Base64ModelFactory());\n    if (options.mimeExtensions) {\n      for (const plugin of createRendermimePlugins(options.mimeExtensions)) {\n        this.registerPlugin(plugin);\n      }\n    }\n\n    // Create an IInfo dictionary from the options to override the defaults.\n    const info = Object.keys(JupyterLab.defaultInfo).reduce((acc, val) => {\n      if (val in options) {\n        (acc as any)[val] = JSON.parse(JSON.stringify((options as any)[val]));\n      }\n      return acc;\n    }, {} as Partial<JupyterLab.IInfo>);\n\n    // Populate application info.\n    this._info = { ...JupyterLab.defaultInfo, ...info };\n\n    this.restored = this.shell.restored;\n\n    this.restored.then(() => this._formatter.invoke());\n  }\n\n  /**\n   * The name of the application.\n   */\n  readonly name = 'Jupyter Notebook';\n\n  /**\n   * A namespace/prefix plugins may use to denote their provenance.\n   */\n  readonly namespace = this.name;\n\n  /**\n   * The application busy and dirty status signals and flags.\n   */\n  readonly status = new LabStatus(this);\n\n  /**\n   * Promise that resolves when the state is first restored\n   */\n  override readonly restored: Promise<void>;\n\n  /**\n   * The version of the application.\n   */\n\n  readonly version = PageConfig.getOption('appVersion') ?? 'unknown';\n\n  /**\n   * The NotebookApp application information dictionary.\n   */\n  get info(): JupyterLab.IInfo {\n    return this._info;\n  }\n\n  /**\n   * The JupyterLab application paths dictionary.\n   */\n  get paths(): JupyterFrontEnd.IPaths {\n    return {\n      urls: {\n        base: PageConfig.getOption('baseUrl'),\n        notFound: PageConfig.getOption('notFoundUrl'),\n        app: PageConfig.getOption('appUrl'),\n        static: PageConfig.getOption('staticUrl'),\n        settings: PageConfig.getOption('settingsUrl'),\n        themes: PageConfig.getOption('themesUrl'),\n        doc: PageConfig.getOption('docUrl'),\n        translations: PageConfig.getOption('translationsApiUrl'),\n        hubHost: PageConfig.getOption('hubHost') || undefined,\n        hubPrefix: PageConfig.getOption('hubPrefix') || undefined,\n        hubUser: PageConfig.getOption('hubUser') || undefined,\n        hubServerName: PageConfig.getOption('hubServerName') || undefined,\n      },\n      directories: {\n        appSettings: PageConfig.getOption('appSettingsDir'),\n        schemas: PageConfig.getOption('schemasDir'),\n        static: PageConfig.getOption('staticDir'),\n        templates: PageConfig.getOption('templatesDir'),\n        themes: PageConfig.getOption('themesDir'),\n        userSettings: PageConfig.getOption('userSettingsDir'),\n        serverRoot: PageConfig.getOption('serverRoot'),\n        workspaces: PageConfig.getOption('workspacesDir'),\n      },\n    };\n  }\n\n  /**\n   * Handle the DOM events for the application.\n   *\n   * @param event - The DOM event sent to the application.\n   */\n  override handleEvent(event: Event): void {\n    super.handleEvent(event);\n    if (event.type === 'resize') {\n      void this._formatter.invoke();\n    }\n  }\n\n  /**\n   * Register plugins from a plugin module.\n   *\n   * @param mod - The plugin module to register.\n   */\n  registerPluginModule(mod: NotebookApp.IPluginModule): void {\n    let data = mod.default;\n    // Handle commonjs exports.\n    if (!Object.prototype.hasOwnProperty.call(mod, '__esModule')) {\n      data = mod as any;\n    }\n    if (!Array.isArray(data)) {\n      data = [data];\n    }\n    data.forEach((item) => {\n      try {\n        this.registerPlugin(item);\n      } catch (error) {\n        console.error(error);\n      }\n    });\n  }\n\n  /**\n   * Register the plugins from multiple plugin modules.\n   *\n   * @param mods - The plugin modules to register.\n   */\n  registerPluginModules(mods: NotebookApp.IPluginModule[]): void {\n    mods.forEach((mod) => {\n      this.registerPluginModule(mod);\n    });\n  }\n\n  private _info: JupyterLab.IInfo = JupyterLab.defaultInfo;\n  private _formatter = new Throttler(() => {\n    Private.setFormat(this);\n  }, 250);\n}\n\n/**\n * A namespace for App static items.\n */\nexport namespace NotebookApp {\n  /**\n   * The instantiation options for an App application.\n   */\n  export interface IOptions\n    extends JupyterFrontEnd.IOptions<INotebookShell>,\n      Partial<IInfo> {}\n\n  /**\n   * The information about a Jupyter Notebook application.\n   */\n  export interface IInfo {\n    /**\n     * The mime renderer extensions.\n     */\n    readonly mimeExtensions: IRenderMime.IExtensionModule[];\n\n    /**\n     * The information about available plugins.\n     */\n    readonly availablePlugins: JupyterLab.IPluginInfo[];\n  }\n\n  /**\n   * The interface for a module that exports a plugin or plugins as\n   * the default value.\n   */\n  export interface IPluginModule {\n    /**\n     * The default export.\n     */\n    default: JupyterFrontEndPlugin<any> | JupyterFrontEndPlugin<any>[];\n  }\n}\n\n/**\n * A namespace for module-private functionality.\n */\nnamespace Private {\n  /**\n   * Media query for mobile devices.\n   */\n  const MOBILE_QUERY = 'only screen and (max-width: 760px)';\n\n  /**\n   * Sets the `format` of a Jupyter front-end application.\n   *\n   * @param app The front-end application whose format is set.\n   */\n  export function setFormat(app: NotebookApp): void {\n    app.format = window.matchMedia(MOBILE_QUERY).matches ? 'mobile' : 'desktop';\n  }\n}\n"
  },
  {
    "path": "packages/application/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nexport * from './app';\nexport * from './shell';\nexport * from './panelhandler';\nexport * from './pathopener';\nexport * from './tokens';\n"
  },
  {
    "path": "packages/application/src/panelhandler.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { ICommandPalette } from '@jupyterlab/apputils';\nimport { closeIcon } from '@jupyterlab/ui-components';\nimport { ArrayExt, find } from '@lumino/algorithm';\nimport { IDisposable } from '@lumino/disposable';\nimport { IMessageHandler, Message, MessageLoop } from '@lumino/messaging';\nimport { ISignal, Signal } from '@lumino/signaling';\nimport { Panel, StackedPanel, Widget } from '@lumino/widgets';\n\n/**\n * A class which manages a panel and sorts its widgets by rank.\n */\nexport class PanelHandler {\n  constructor() {\n    MessageLoop.installMessageHook(this._panel, this._panelChildHook);\n  }\n\n  /**\n   * Get the panel managed by the handler.\n   */\n  get panel(): Panel {\n    return this._panel;\n  }\n\n  /**\n   * Add a widget to the panel.\n   *\n   * If the widget is already added, it will be moved.\n   */\n  addWidget(widget: Widget, rank: number): void {\n    widget.parent = null;\n    const item = { widget, rank };\n    const index = ArrayExt.upperBound(this._items, item, Private.itemCmp);\n    ArrayExt.insert(this._items, index, item);\n    this._panel.insertWidget(index, widget);\n  }\n\n  /**\n   * A message hook for child remove messages on the panel handler.\n   */\n  private _panelChildHook = (\n    handler: IMessageHandler,\n    msg: Message\n  ): boolean => {\n    switch (msg.type) {\n      case 'child-removed':\n        {\n          const widget = (msg as Widget.ChildMessage).child;\n          ArrayExt.removeFirstWhere(this._items, (v) => v.widget === widget);\n        }\n        break;\n      default:\n        break;\n    }\n    return true;\n  };\n\n  protected _items = new Array<Private.IRankItem>();\n  protected _panel = new Panel();\n}\n\n/**\n * A class which manages a side panel that can show at most one widget at a time.\n */\nexport class SidePanelHandler extends PanelHandler {\n  /**\n   * Construct a new side panel handler.\n   */\n  constructor(area: SidePanel.Area) {\n    super();\n    this._area = area;\n    this._panel.hide();\n\n    this._currentWidget = null;\n    this._lastCurrentWidget = null;\n\n    this._widgetPanel = new StackedPanel();\n    this._widgetPanel.widgetRemoved.connect(this._onWidgetRemoved, this);\n\n    this._closeButton = document.createElement('button');\n    closeIcon.element({\n      container: this._closeButton,\n      height: '16px',\n      width: 'auto',\n    });\n    this._closeButton.onclick = () => {\n      this.collapse();\n      this.hide();\n    };\n    this._closeButton.className = 'jp-Button jp-SidePanel-collapse';\n    this._closeButton.title = 'Collapse side panel';\n\n    const icon = new Widget({ node: this._closeButton });\n    this._panel.addWidget(icon);\n    this._panel.addWidget(this._widgetPanel);\n  }\n\n  /**\n   * Get the current widget in the sidebar panel.\n   */\n  get currentWidget(): Widget | null {\n    return (\n      this._currentWidget ||\n      this._lastCurrentWidget ||\n      (this._items.length > 0 ? this._items[0].widget : null)\n    );\n  }\n\n  /**\n   * Get the area of the side panel\n   */\n  get area(): SidePanel.Area {\n    return this._area;\n  }\n\n  /**\n   * Whether the panel is visible\n   */\n  get isVisible(): boolean {\n    return this._panel.isVisible;\n  }\n\n  /**\n   * Get the stacked panel managed by the handler\n   */\n  override get panel(): Panel {\n    return this._panel;\n  }\n\n  /**\n   * Get the widgets list.\n   */\n  get widgets(): Readonly<Widget[]> {\n    return this._items.map((obj) => obj.widget);\n  }\n\n  /**\n   * Signal fired when a widget is added to the panel\n   */\n  get widgetAdded(): ISignal<SidePanelHandler, Widget> {\n    return this._widgetAdded;\n  }\n\n  /**\n   * Signal fired when a widget is removed from the panel\n   */\n  get widgetRemoved(): ISignal<SidePanelHandler, Widget> {\n    return this._widgetRemoved;\n  }\n\n  /**\n   * Get the close button element.\n   */\n  get closeButton(): HTMLButtonElement {\n    return this._closeButton;\n  }\n\n  /**\n   * Expand the sidebar.\n   *\n   * #### Notes\n   * This will open the most recently used widget, or the first widget\n   * if there is no most recently used.\n   */\n  expand(id?: string): void {\n    if (this._currentWidget) {\n      this.collapse();\n    }\n    if (id) {\n      this.activate(id);\n    } else {\n      const visibleWidget = this.currentWidget;\n      if (visibleWidget) {\n        this._currentWidget = visibleWidget;\n        this.activate(visibleWidget.id);\n      }\n    }\n  }\n\n  /**\n   * Activate a widget residing in the stacked panel by ID.\n   *\n   * @param id - The widget's unique ID.\n   */\n  activate(id: string): void {\n    const widget = this._findWidgetByID(id);\n    if (widget) {\n      this._currentWidget = widget;\n      widget.show();\n      widget.activate();\n    }\n  }\n\n  /**\n   * Test whether the sidebar has the given widget by id.\n   */\n  has(id: string): boolean {\n    return this._findWidgetByID(id) !== null;\n  }\n\n  /**\n   * Collapse the sidebar so no items are expanded.\n   */\n  collapse(): void {\n    this._currentWidget?.hide();\n    this._currentWidget = null;\n  }\n\n  /**\n   * Add a widget and its title to the stacked panel.\n   *\n   * If the widget is already added, it will be moved.\n   */\n  override addWidget(widget: Widget, rank: number): void {\n    widget.parent = null;\n    widget.hide();\n    const item = { widget, rank };\n    const index = this._findInsertIndex(item);\n    ArrayExt.insert(this._items, index, item);\n    this._widgetPanel.insertWidget(index, widget);\n\n    this._refreshVisibility();\n\n    this._widgetAdded.emit(widget);\n  }\n\n  /**\n   * Hide the side panel\n   */\n  hide(): void {\n    this._isHiddenByUser = true;\n    this._refreshVisibility();\n  }\n\n  /**\n   * Show the side panel\n   */\n  show(): void {\n    this._isHiddenByUser = false;\n    this._refreshVisibility();\n  }\n\n  /**\n   * Find the insertion index for a rank item.\n   */\n  private _findInsertIndex(item: Private.IRankItem): number {\n    return ArrayExt.upperBound(this._items, item, Private.itemCmp);\n  }\n\n  /**\n   * Find the index of the item with the given widget, or `-1`.\n   */\n  private _findWidgetIndex(widget: Widget): number {\n    return ArrayExt.findFirstIndex(this._items, (i) => i.widget === widget);\n  }\n\n  /**\n   * Find the widget with the given id, or `null`.\n   */\n  private _findWidgetByID(id: string): Widget | null {\n    return find(this._items, (value) => value.widget.id === id)?.widget ?? null;\n  }\n\n  /**\n   * Refresh the visibility of the stacked panel.\n   */\n  private _refreshVisibility(): void {\n    this._panel.setHidden(this._isHiddenByUser);\n  }\n\n  /*\n   * Handle the `widgetRemoved` signal from the panel.\n   */\n  private _onWidgetRemoved(sender: StackedPanel, widget: Widget): void {\n    if (widget === this._lastCurrentWidget) {\n      this._lastCurrentWidget = null;\n    }\n    ArrayExt.removeAt(this._items, this._findWidgetIndex(widget));\n\n    this._refreshVisibility();\n\n    this._widgetRemoved.emit(widget);\n  }\n\n  private _area: SidePanel.Area;\n  private _isHiddenByUser = false;\n  private _widgetPanel: StackedPanel;\n  private _currentWidget: Widget | null;\n  private _lastCurrentWidget: Widget | null;\n  private _closeButton: HTMLButtonElement;\n  private _widgetAdded: Signal<SidePanelHandler, Widget> = new Signal(this);\n  private _widgetRemoved: Signal<SidePanelHandler, Widget> = new Signal(this);\n}\n\n/**\n * A name space for SideBarPanel functions.\n */\nexport namespace SidePanel {\n  /**\n   * The areas of the sidebar panel\n   */\n  export type Area = 'left' | 'right';\n}\n\n/**\n * A class to manages the palette entries associated to the side panels.\n */\nexport class SidePanelPalette {\n  /**\n   * Construct a new side panel palette.\n   */\n  constructor(options: SidePanelPaletteOption) {\n    this._commandPalette = options.commandPalette;\n    this._command = options.command;\n  }\n\n  /**\n   * Get a command palette item from the widget id and the area.\n   */\n  getItem(\n    widget: Readonly<Widget>,\n    area: 'left' | 'right'\n  ): SidePanelPaletteItem | null {\n    return (\n      this._items.find(\n        (item) => item.widgetId === widget.id && item.area === area\n      ) ?? null\n    );\n  }\n\n  /**\n   * Add an item to the command palette.\n   */\n  addItem(widget: Readonly<Widget>, area: 'left' | 'right'): void {\n    // Check if the item does not already exist.\n    if (this.getItem(widget, area)) {\n      return;\n    }\n\n    // Add a new item in command palette.\n    const disposableDelegate = this._commandPalette.addItem({\n      command: this._command,\n      category: 'View',\n      args: {\n        side: area,\n        title: `Show ${widget.title.caption}`,\n        id: widget.id,\n      },\n    });\n\n    // Keep the disposableDelegate object to be able to dispose of the item if the widget\n    // is remove from the side panel.\n    this._items.push({\n      widgetId: widget.id,\n      area: area,\n      disposable: disposableDelegate,\n    });\n  }\n\n  /**\n   * Remove an item from the command palette.\n   */\n  removeItem(widget: Readonly<Widget>, area: 'left' | 'right'): void {\n    const item = this.getItem(widget, area);\n    if (item) {\n      item.disposable.dispose();\n    }\n  }\n\n  private _command: string;\n  private _commandPalette: ICommandPalette;\n  private _items: SidePanelPaletteItem[] = [];\n}\n\ntype SidePanelPaletteItem = {\n  /**\n   * The ID of the widget associated to the command palette.\n   */\n  widgetId: string;\n\n  /**\n   * The area of the panel associated to the command palette.\n   */\n  area: 'left' | 'right';\n\n  /**\n   * The disposable object to remove the item from command palette.\n   */\n  disposable: IDisposable;\n};\n\n/**\n * An interface for the options to include in SideBarPalette constructor.\n */\ntype SidePanelPaletteOption = {\n  /**\n   * The commands palette.\n   */\n  commandPalette: ICommandPalette;\n\n  /**\n   * The command to call from each side panel menu entry.\n   *\n   * ### Notes\n   * That command required 3 args :\n   *      side: 'left' | 'right', the area to toggle\n   *      title: string, label of the command\n   *      id: string, id of the widget to activate\n   */\n  command: string;\n};\n\n/**\n * A namespace for private module data.\n */\nnamespace Private {\n  /**\n   * An object which holds a widget and its sort rank.\n   */\n  export interface IRankItem {\n    /**\n     * The widget for the item.\n     */\n    widget: Widget;\n\n    /**\n     * The sort rank of the widget.\n     */\n    rank: number;\n  }\n  /**\n   * A less-than comparison function for side bar rank items.\n   */\n  export function itemCmp(first: IRankItem, second: IRankItem): number {\n    return first.rank - second.rank;\n  }\n}\n"
  },
  {
    "path": "packages/application/src/pathopener.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { URLExt } from '@jupyterlab/coreutils';\n\nimport { INotebookPathOpener } from './tokens';\n\n/**\n * A class to open paths in new browser tabs in the Notebook application.\n */\nclass DefaultNotebookPathOpener implements INotebookPathOpener {\n  /**\n   * Open a path in a new browser tab.\n   */\n  open(options: INotebookPathOpener.IOpenOptions): WindowProxy | null {\n    const { prefix, path, searchParams, target, features } = options;\n    const url = new URL(\n      URLExt.join(prefix, URLExt.encodeParts(path ?? '')),\n      window.location.origin\n    );\n    if (searchParams) {\n      url.search = searchParams.toString();\n    }\n    return window.open(url, target, features);\n  }\n}\n\nexport const defaultNotebookPathOpener = new DefaultNotebookPathOpener();\n"
  },
  {
    "path": "packages/application/src/shell.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { JupyterFrontEnd } from '@jupyterlab/application';\nimport { DocumentRegistry } from '@jupyterlab/docregistry';\nimport { ITranslator, nullTranslator } from '@jupyterlab/translation';\n\nimport { find } from '@lumino/algorithm';\nimport { JSONExt, PromiseDelegate, Token } from '@lumino/coreutils';\nimport { ISignal, Signal } from '@lumino/signaling';\n\nimport {\n  BoxLayout,\n  FocusTracker,\n  Panel,\n  SplitPanel,\n  TabPanel,\n  Widget,\n} from '@lumino/widgets';\nimport { PanelHandler, SidePanelHandler } from './panelhandler';\nimport { TabPanelSvg } from '@jupyterlab/ui-components';\n\n/**\n * The Jupyter Notebook application shell token.\n */\nexport const INotebookShell = new Token<INotebookShell>(\n  '@jupyter-notebook/application:INotebookShell'\n);\n\n/**\n * The Jupyter Notebook application shell interface.\n */\nexport interface INotebookShell extends NotebookShell {}\n\n/**\n * The namespace for INotebookShell type information.\n */\nexport namespace INotebookShell {\n  /**\n   * The areas of the application shell where widgets can reside.\n   */\n  export type Area = 'main' | 'top' | 'menu' | 'left' | 'right' | 'down';\n\n  /**\n   * Widget position\n   */\n  export interface IWidgetPosition {\n    /**\n     * Widget area\n     */\n    area?: Area;\n    /**\n     * Widget opening options\n     */\n    options?: DocumentRegistry.IOpenOptions;\n  }\n\n  /**\n   * Mapping of widget type identifier and their user customized position\n   */\n  export interface IUserLayout {\n    /**\n     * Widget customized position\n     */\n    [k: string]: IWidgetPosition;\n  }\n}\n\n/**\n * The default rank for ranked panels.\n */\nconst DEFAULT_RANK = 900;\n\n/**\n * The application shell.\n */\nexport class NotebookShell extends Widget implements JupyterFrontEnd.IShell {\n  constructor() {\n    super();\n    this.id = 'main';\n    this._userLayout = {};\n\n    this._topHandler = new PanelHandler();\n    this._menuHandler = new PanelHandler();\n    this._leftHandler = new SidePanelHandler('left');\n    this._rightHandler = new SidePanelHandler('right');\n    this._main = new Panel();\n    const topWrapper = (this._topWrapper = new Panel());\n    const menuWrapper = (this._menuWrapper = new Panel());\n\n    this._topHandler.panel.id = 'top-panel';\n    this._topHandler.panel.node.setAttribute('role', 'banner');\n    this._menuHandler.panel.id = 'menu-panel';\n    this._menuHandler.panel.node.setAttribute('role', 'navigation');\n    this._main.id = 'main-panel';\n    this._main.node.setAttribute('role', 'main');\n\n    this._spacer_top = new Widget();\n    this._spacer_top.id = 'spacer-widget-top';\n    this._spacer_bottom = new Widget();\n    this._spacer_bottom.id = 'spacer-widget-bottom';\n\n    // create wrappers around the top and menu areas\n    topWrapper.id = 'top-panel-wrapper';\n    topWrapper.addWidget(this._topHandler.panel);\n\n    menuWrapper.id = 'menu-panel-wrapper';\n    menuWrapper.addWidget(this._menuHandler.panel);\n\n    const rootLayout = new BoxLayout();\n    const leftHandler = this._leftHandler;\n    const rightHandler = this._rightHandler;\n\n    leftHandler.panel.id = 'jp-left-stack';\n    leftHandler.panel.node.setAttribute('role', 'complementary');\n    rightHandler.panel.id = 'jp-right-stack';\n    rightHandler.panel.node.setAttribute('role', 'complementary');\n\n    // Hide the side panels by default.\n    leftHandler.hide();\n    rightHandler.hide();\n\n    const middleLayout = new BoxLayout({\n      spacing: 0,\n      direction: 'top-to-bottom',\n    });\n    BoxLayout.setStretch(this._topWrapper, 0);\n    BoxLayout.setStretch(this._menuWrapper, 0);\n    BoxLayout.setStretch(this._main, 1);\n\n    const middlePanel = new Panel({ layout: middleLayout });\n    middlePanel.addWidget(this._topWrapper);\n    middlePanel.addWidget(this._menuWrapper);\n    middlePanel.addWidget(this._spacer_top);\n    middlePanel.addWidget(this._main);\n    middlePanel.addWidget(this._spacer_bottom);\n    middlePanel.layout = middleLayout;\n\n    const vsplitPanel = new SplitPanel();\n    vsplitPanel.id = 'jp-main-vsplit-panel';\n    vsplitPanel.spacing = 1;\n    vsplitPanel.orientation = 'vertical';\n    SplitPanel.setStretch(vsplitPanel, 1);\n\n    const downPanel = new TabPanelSvg({\n      tabsMovable: true,\n    });\n    this._downPanel = downPanel;\n    this._downPanel.id = 'jp-down-stack';\n\n    // TODO: Consider storing this as an attribute this._hsplitPanel if saving/restoring layout needed\n    const hsplitPanel = new SplitPanel();\n    hsplitPanel.id = 'main-split-panel';\n    hsplitPanel.spacing = 1;\n    BoxLayout.setStretch(hsplitPanel, 1);\n\n    SplitPanel.setStretch(leftHandler.panel, 0);\n    SplitPanel.setStretch(rightHandler.panel, 0);\n    SplitPanel.setStretch(middlePanel, 1);\n\n    hsplitPanel.addWidget(leftHandler.panel);\n    hsplitPanel.addWidget(middlePanel);\n    hsplitPanel.addWidget(rightHandler.panel);\n\n    // Use relative sizing to set the width of the side panels.\n    // This will still respect the min-size of children widget in the stacked\n    // panel.\n    hsplitPanel.setRelativeSizes([1, 2.5, 1]);\n\n    vsplitPanel.addWidget(hsplitPanel);\n    vsplitPanel.addWidget(downPanel);\n\n    rootLayout.spacing = 0;\n    rootLayout.addWidget(vsplitPanel);\n\n    // initially hiding the down panel\n    this._downPanel.hide();\n\n    // Connect down panel change listeners\n    this._downPanel.tabBar.tabMoved.connect(this._onTabPanelChanged, this);\n    this._downPanel.stackedPanel.widgetRemoved.connect(\n      this._onTabPanelChanged,\n      this\n    );\n\n    this.layout = rootLayout;\n\n    // Added Skip to Main Link\n    const skipLinkWidgetHandler = (this._skipLinkWidgetHandler =\n      new Private.SkipLinkWidgetHandler(this));\n\n    this.add(skipLinkWidgetHandler.skipLinkWidget, 'top', { rank: 0 });\n    this._skipLinkWidgetHandler.show();\n  }\n\n  /**\n   * A signal emitted when the current widget changes.\n   */\n  get currentChanged(): ISignal<\n    JupyterFrontEnd.IShell,\n    FocusTracker.IChangedArgs<Widget>\n  > {\n    return this._currentChanged;\n  }\n\n  /**\n   * The current widget in the shell's main area.\n   */\n  get currentWidget(): Widget | null {\n    return this._main.widgets[0] ?? null;\n  }\n\n  /**\n   * Get the top area wrapper panel\n   */\n  get top(): Widget {\n    return this._topWrapper;\n  }\n\n  /**\n   * Get the menu area wrapper panel\n   */\n  get menu(): Widget {\n    return this._menuWrapper;\n  }\n\n  /**\n   * Get the left area handler\n   */\n  get leftHandler(): SidePanelHandler {\n    return this._leftHandler;\n  }\n\n  /**\n   * Get the right area handler\n   */\n  get rightHandler(): SidePanelHandler {\n    return this._rightHandler;\n  }\n\n  /**\n   * Is the left sidebar visible?\n   */\n  get leftCollapsed(): boolean {\n    return !(this._leftHandler.isVisible && this._leftHandler.panel.isVisible);\n  }\n\n  /**\n   * Is the right sidebar visible?\n   */\n  get rightCollapsed(): boolean {\n    return !(\n      this._rightHandler.isVisible && this._rightHandler.panel.isVisible\n    );\n  }\n\n  /**\n   * Promise that resolves when the main widget is loaded\n   */\n  get restored(): Promise<void> {\n    return this._mainWidgetLoaded.promise;\n  }\n\n  /**\n   * Getter and setter for the translator.\n   */\n  get translator(): ITranslator {\n    return this._translator ?? nullTranslator;\n  }\n  set translator(value: ITranslator) {\n    if (value !== this._translator) {\n      this._translator = value;\n      const trans = value.load('notebook');\n      this._leftHandler.closeButton.title = trans.__(\n        'Collapse %1 side panel',\n        this._leftHandler.area\n      );\n      this._rightHandler.closeButton.title = trans.__(\n        'Collapse %1 side panel',\n        this._rightHandler.area\n      );\n    }\n  }\n\n  /**\n   * User custom shell layout.\n   */\n  get userLayout() {\n    return JSONExt.deepCopy(this._userLayout as any);\n  }\n\n  /**\n   * Activate a widget in its area.\n   */\n  activateById(id: string): void {\n    // Search all areas that can have widgets for this widget, starting with main.\n    for (const area of ['main', 'top', 'left', 'right', 'menu', 'down']) {\n      const widget = find(\n        this.widgets(area as INotebookShell.Area),\n        (w) => w.id === id\n      );\n      if (widget) {\n        if (area === 'left') {\n          this.expandLeft(id);\n        } else if (area === 'right') {\n          this.expandRight(id);\n        } else if (area === 'down') {\n          this._downPanel.show();\n          widget.activate();\n        } else {\n          widget.activate();\n        }\n      }\n    }\n  }\n\n  /**\n   * Add a widget to the application shell.\n   *\n   * @param widget - The widget being added.\n   *\n   * @param area - Optional region in the shell into which the widget should\n   * be added.\n   *\n   * @param options - Optional open options.\n   *\n   */\n  add(\n    widget: Widget,\n    area?: INotebookShell.Area,\n    options?: DocumentRegistry.IOpenOptions\n  ): void {\n    let userPosition: INotebookShell.IWidgetPosition | undefined;\n    if (options?.type && this._userLayout[options.type]) {\n      userPosition = this._userLayout[options.type];\n    } else {\n      userPosition = this._userLayout[widget.id];\n    }\n\n    area = userPosition?.area ?? area;\n    options =\n      options || userPosition?.options\n        ? {\n            ...options,\n            ...userPosition?.options,\n          }\n        : undefined;\n\n    const rank = options?.rank ?? DEFAULT_RANK;\n    switch (area) {\n      case 'top':\n        return this._topHandler.addWidget(widget, rank);\n      case 'menu':\n        return this._menuHandler.addWidget(widget, rank);\n      case 'main':\n      case undefined: {\n        if (this._main.widgets.length > 0) {\n          // do not add the widget if there is already one\n          return;\n        }\n        const previousWidget = this.currentWidget;\n        this._main.addWidget(widget);\n        this._main.update();\n        this._currentChanged.emit({\n          newValue: widget,\n          oldValue: previousWidget,\n        });\n        this._mainWidgetLoaded.resolve();\n        break;\n      }\n      case 'left':\n        return this._leftHandler.addWidget(widget, rank);\n      case 'right':\n        return this._rightHandler.addWidget(widget, rank);\n      case 'down':\n        return this._downPanel.addWidget(widget);\n      default:\n        console.warn(`Cannot add widget to area: ${area}`);\n    }\n  }\n\n  /**\n   * Return a boolean whether the side panel is visible.\n   */\n  isSidePanelVisible(area: string): boolean {\n    if (area === 'left') {\n      return this._leftHandler.isVisible;\n    } else if (area === 'right') {\n      return this._rightHandler.isVisible;\n    }\n    return false;\n  }\n\n  /**\n   * Get the area of a widget, given its id.\n   *\n   * @param id - the widget id\n   * @returns the area where the widget belongs, or null.\n   */\n  getWidgetArea(id: string): string | null {\n    for (const area of ['main', 'top', 'left', 'right', 'menu', 'down']) {\n      const widget = find(\n        this.widgets(area as INotebookShell.Area),\n        (w) => w.id === id\n      );\n      if (widget) {\n        return area;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Expand an area.\n   */\n  expand(area: string): void {\n    if (!['top', 'left', 'right'].includes(area)) {\n      return;\n    }\n    if (area === 'top') {\n      this.expandTop();\n    } else if (area === 'left') {\n      this.expandLeft();\n    } else if (area === 'right') {\n      this.expandRight();\n    }\n  }\n\n  /**\n   * Collapse an area.\n   */\n  collapse(area: string): void {\n    if (!['top', 'left', 'right'].includes(area)) {\n      return;\n    }\n    if (area === 'top') {\n      this.collapseTop();\n    } else if (area === 'left') {\n      this.collapseLeft();\n    } else if (area === 'right') {\n      this.collapseRight();\n    }\n  }\n\n  /**\n   * Collapse the top area and the spacer to make the view more compact.\n   */\n  collapseTop(): void {\n    this._topWrapper.setHidden(true);\n    this._spacer_top.setHidden(true);\n  }\n\n  /**\n   * Expand the top area to show the header and the spacer.\n   */\n  expandTop(): void {\n    this._topWrapper.setHidden(false);\n    this._spacer_top.setHidden(false);\n  }\n\n  /**\n   * Return the list of widgets for the given area.\n   *\n   * @param area The area\n   */\n  *widgets(area: INotebookShell.Area): IterableIterator<Widget> {\n    switch (area ?? 'main') {\n      case 'top':\n        yield* this._topHandler.panel.widgets;\n        return;\n      case 'menu':\n        yield* this._menuHandler.panel.widgets;\n        return;\n      case 'main':\n        yield* this._main.widgets;\n        return;\n      case 'left':\n        yield* this._leftHandler.widgets;\n        return;\n      case 'right':\n        yield* this._rightHandler.widgets;\n        return;\n      case 'down':\n        yield* this._downPanel.widgets;\n        return;\n      default:\n        console.error(`This shell has no area called \"${area}\"`);\n        return;\n    }\n  }\n\n  /**\n   * Expand the left panel to show the sidebar with its widget.\n   */\n  expandLeft(id?: string): void {\n    this._leftHandler.panel.show();\n    this._leftHandler.expand(id); // Show the current widget, if any\n  }\n\n  /**\n   * Collapse the left panel\n   */\n  collapseLeft(): void {\n    this._leftHandler.collapse();\n    this._leftHandler.panel.hide();\n  }\n\n  /**\n   * Expand the right panel to show the sidebar with its widget.\n   */\n  expandRight(id?: string): void {\n    this._rightHandler.panel.show();\n    this._rightHandler.expand(id); // Show the current widget, if any\n  }\n\n  /**\n   * Collapse the right panel\n   */\n  collapseRight(): void {\n    this._rightHandler.collapse();\n    this._rightHandler.panel.hide();\n  }\n\n  /**\n   * Restore the layout state and configuration for the application shell.\n   */\n  async restoreLayout(\n    configuration: INotebookShell.IUserLayout\n  ): Promise<void> {\n    this._userLayout = configuration;\n  }\n\n  /**\n   * Handle a change on the down panel widgets\n   */\n  private _onTabPanelChanged(): void {\n    if (this._downPanel.stackedPanel.widgets.length === 0) {\n      this._downPanel.hide();\n    }\n  }\n\n  private _topWrapper: Panel;\n  private _topHandler: PanelHandler;\n  private _menuWrapper: Panel;\n  private _menuHandler: PanelHandler;\n  private _leftHandler: SidePanelHandler;\n  private _rightHandler: SidePanelHandler;\n  private _spacer_top: Widget;\n  private _spacer_bottom: Widget;\n  private _skipLinkWidgetHandler: Private.SkipLinkWidgetHandler;\n  private _main: Panel;\n  private _downPanel: TabPanel;\n  private _translator: ITranslator = nullTranslator;\n  private _currentChanged = new Signal<this, FocusTracker.IChangedArgs<Widget>>(\n    this\n  );\n  private _mainWidgetLoaded = new PromiseDelegate<void>();\n  private _userLayout: INotebookShell.IUserLayout;\n}\n\nexport namespace Private {\n  export class SkipLinkWidgetHandler {\n    /**\n     * Construct a new skipLink widget handler.\n     */\n    constructor(shell: INotebookShell) {\n      const skipLinkWidget = (this._skipLinkWidget = new Widget());\n      const skipToMain = document.createElement('a');\n      skipToMain.href = '#first-cell';\n      skipToMain.tabIndex = 1;\n      skipToMain.text = 'Skip to Main';\n      skipToMain.className = 'skip-link';\n      skipToMain.addEventListener('click', this);\n      skipLinkWidget.addClass('jp-skiplink');\n      skipLinkWidget.id = 'jp-skiplink';\n      skipLinkWidget.node.appendChild(skipToMain);\n    }\n\n    handleEvent(event: Event): void {\n      switch (event.type) {\n        case 'click':\n          this._focusMain();\n          break;\n      }\n    }\n\n    private _focusMain() {\n      const input = document.querySelector(\n        '#main-panel .jp-InputArea-editor'\n      ) as HTMLInputElement;\n      input.tabIndex = 1;\n      input.focus();\n    }\n\n    /**\n     * Get the input element managed by the handler.\n     */\n    get skipLinkWidget(): Widget {\n      return this._skipLinkWidget;\n    }\n\n    /**\n     * Dispose of the handler and the resources it holds.\n     */\n    dispose(): void {\n      if (this.isDisposed) {\n        return;\n      }\n      this._isDisposed = true;\n      this._skipLinkWidget.node.removeEventListener('click', this);\n      this._skipLinkWidget.dispose();\n    }\n\n    /**\n     * Hide the skipLink widget.\n     */\n    hide(): void {\n      this._skipLinkWidget.hide();\n    }\n\n    /**\n     * Show the skipLink widget.\n     */\n    show(): void {\n      this._skipLinkWidget.show();\n    }\n\n    /**\n     * Test whether the handler has been disposed.\n     */\n    get isDisposed(): boolean {\n      return this._isDisposed;\n    }\n\n    private _skipLinkWidget: Widget;\n    private _isDisposed = false;\n  }\n}\n"
  },
  {
    "path": "packages/application/src/tokens.ts",
    "content": "import { Token } from '@lumino/coreutils';\n\n/**\n * The INotebookPathOpener interface.\n */\nexport interface INotebookPathOpener {\n  /**\n   * Open a path in the application.\n   *\n   * @param options - The options used to open the path.\n   */\n  open: (options: INotebookPathOpener.IOpenOptions) => WindowProxy | null;\n}\n\nexport namespace INotebookPathOpener {\n  /**\n   * The options used to open a path in the application.\n   */\n  export interface IOpenOptions {\n    /**\n     * The URL prefix, which should include the base URL\n     */\n    prefix: string;\n\n    /**\n     * The path to open in the application, e.g `setup.py`, or `notebooks/example.ipynb`\n     */\n    path?: string;\n\n    /**\n     * The extra search params to use in the URL.\n     */\n    searchParams?: URLSearchParams;\n\n    /**\n     * Name of the browsing context the resource is being loaded into.\n     * See https://developer.mozilla.org/en-US/docs/Web/API/Window/open for more details.\n     */\n    target?: string;\n\n    /**\n     *\n     * See https://developer.mozilla.org/en-US/docs/Web/API/Window/open for more details.\n     */\n    features?: string;\n  }\n}\n\n/**\n * The INotebookPathOpener token.\n * The main purpose of this token is to allow other extensions or downstream applications\n * to override the default behavior of opening a notebook in a new tab.\n * It also allows passing the path as a URL search parameter, or other options to the window.open call.\n */\nexport const INotebookPathOpener = new Token<INotebookPathOpener>(\n  '@jupyter-notebook/application:INotebookPathOpener'\n);\n"
  },
  {
    "path": "packages/application/style/base.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n:root {\n  --jp-private-topbar-height: 28px;\n  /* Override the layout-2 color for the dark theme */\n  --md-grey-800: #323232;\n  --jp-notebook-max-width: 1200px;\n}\n\n/*\n  Override the default background\n  See https://github.com/jupyterlab/jupyterlab/pull/16519 for more information\n*/\nbody.jp-ThemedContainer {\n  margin: 0;\n  padding: 0;\n  background: var(--jp-layout-color2);\n}\n\n#main.jp-ThemedContainer {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background: var(--jp-layout-color2);\n}\n\n#top-panel-wrapper {\n  min-height: calc(1.5 * var(--jp-private-topbar-height));\n  border-bottom: var(--jp-border-width) solid var(--jp-border-color0);\n  background: var(--jp-layout-color1);\n}\n\n#top-panel {\n  display: flex;\n  min-height: calc(1.5 * var(--jp-private-topbar-height));\n  padding-left: 5px;\n  padding-right: 5px;\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 1200px;\n}\n\n#menu-panel-wrapper {\n  min-height: var(--jp-private-topbar-height);\n  background: var(--jp-layout-color1);\n  border-bottom: var(--jp-border-width) solid var(--jp-border-color0);\n  box-shadow: var(--jp-elevation-z1);\n}\n\n#menu-panel {\n  display: flex;\n  min-height: var(--jp-private-topbar-height);\n  background: var(--jp-layout-color1);\n  padding-left: 5px;\n  padding-right: 5px;\n  margin-left: auto;\n  margin-right: auto;\n  max-width: var(--jp-notebook-max-width);\n}\n\n#main-panel {\n  margin-left: auto;\n  margin-right: auto;\n  max-width: var(--jp-notebook-max-width);\n}\n\n#spacer-widget-top {\n  min-height: 16px;\n}\n\n/* Only edit pages should have a bottom space */\n\nbody[data-notebook='edit'] #spacer-widget-bottom {\n  min-height: 16px;\n}\n\n/* Special case notebooks as document oriented pages */\n\n[data-notebook]:not(body[data-notebook='notebooks']) #main-panel {\n  box-shadow: var(--jp-elevation-z4);\n}\n\n.jp-TreePanel > .lm-TabPanel-stackedPanel {\n  box-shadow: var(--jp-elevation-z4);\n}\n\nbody[data-notebook='notebooks'] #main-panel {\n  margin-left: unset;\n  margin-right: unset;\n  max-width: unset;\n}\n\nbody[data-notebook='notebooks'] #spacer-widget-top {\n  min-height: unset;\n}\n\n#main-panel > .jp-TreePanel {\n  padding: 0px 5px;\n}\n\n@media only screen and (max-width: 760px) {\n  #main-panel > .jp-TreePanel {\n    margin: 0px -5px;\n  }\n}\n"
  },
  {
    "path": "packages/application/style/index.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n@import url('~@jupyterlab/application/style/index.css');\n@import url('~@jupyterlab/mainmenu/style/index.css');\n@import url('~@jupyterlab/ui-components/style/index.css');\n\n@import url('./base.css');\n@import url('./sidepanel.css');\n"
  },
  {
    "path": "packages/application/style/index.js",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\nimport '@jupyterlab/application/style/index.js';\nimport '@jupyterlab/mainmenu/style/index.js';\nimport '@jupyterlab/ui-components/style/index.js';\n\nimport './base.css';\nimport './sidepanel.css';\n"
  },
  {
    "path": "packages/application/style/sidepanel.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|\n| Adapted from JupyterLab's packages/application/style/sidepanel.css.\n|----------------------------------------------------------------------------*/\n\n/*-----------------------------------------------------------------------------\n| Variables\n|----------------------------------------------------------------------------*/\n\n:root {\n  --jp-private-sidebar-tab-width: 32px;\n}\n\n/*-----------------------------------------------------------------------------\n| SideBar\n|----------------------------------------------------------------------------*/\n\n/* Stack panels */\n\n#jp-right-stack,\n#jp-left-stack {\n  display: flex;\n  flex-direction: column;\n  min-width: var(--jp-sidebar-min-width);\n}\n\n#jp-left-stack .jp-SidePanel-collapse,\n#jp-right-stack .jp-SidePanel-collapse {\n  display: flex;\n  flex: 0 0 auto;\n  min-height: 0;\n  padding: 0;\n}\n\n#jp-left-stack .jp-SidePanel-collapse {\n  justify-content: right;\n}\n\n#jp-right-stack .jp-SidePanel-collapse {\n  justify-content: left;\n}\n\n#jp-left-stack .lm-StackedPanel,\n#jp-right-stack .lm-StackedPanel {\n  flex: 1 1 auto;\n}\n"
  },
  {
    "path": "packages/application/test/shell.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { INotebookShell, NotebookShell } from '@jupyter-notebook/application';\n\nimport { JupyterFrontEnd } from '@jupyterlab/application';\n\nimport { Widget } from '@lumino/widgets';\n\ndescribe('Shell for notebooks', () => {\n  let shell: INotebookShell;\n\n  beforeEach(() => {\n    shell = new NotebookShell();\n    Widget.attach(shell, document.body);\n  });\n\n  afterEach(() => {\n    shell.dispose();\n  });\n\n  describe('#constructor()', () => {\n    it('should create a LabShell instance', () => {\n      expect(shell).toBeInstanceOf(NotebookShell);\n    });\n\n    it('should make some areas empty initially', () => {\n      ['main', 'left', 'right', 'menu'].forEach((area) => {\n        const widgets = Array.from(shell.widgets(area as INotebookShell.Area));\n        expect(widgets.length).toEqual(0);\n      });\n    });\n\n    it('should have the skip link widget in the top area initially', () => {\n      const widgets = Array.from(shell.widgets('top'));\n      expect(widgets.length).toEqual(1);\n    });\n  });\n\n  describe('#widgets()', () => {\n    it('should add widgets to main area', () => {\n      const widget = new Widget();\n      shell.add(widget, 'main');\n      const widgets = Array.from(shell.widgets('main'));\n      expect(widgets).toEqual([widget]);\n    });\n\n    it('should be empty and console.error if area does not exist', () => {\n      const spy = jest.spyOn(console, 'error');\n      const jupyterFrontEndShell = shell as JupyterFrontEnd.IShell;\n      expect(Array.from(jupyterFrontEndShell.widgets('fake'))).toHaveLength(0);\n      expect(spy).toHaveBeenCalled();\n    });\n  });\n\n  describe('#currentWidget', () => {\n    it('should be the current widget in the shell main area', () => {\n      expect(shell.currentWidget).toBe(null);\n      const widget = new Widget();\n      widget.node.tabIndex = -1;\n      widget.id = 'foo';\n      expect(shell.currentWidget).toBe(null);\n      shell.add(widget, 'main');\n      expect(shell.currentWidget).toBe(widget);\n      widget.parent = null;\n      expect(shell.currentWidget).toBe(null);\n    });\n  });\n\n  describe('#add(widget, \"top\")', () => {\n    it('should add a widget to the top area', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'top');\n      const widgets = Array.from(shell.widgets('top'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n\n    it('should accept options', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'top', { rank: 10 });\n      const widgets = Array.from(shell.widgets('top'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n  });\n\n  describe('#add(widget, \"main\")', () => {\n    it('should add a widget to the main area', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'main');\n      const widgets = Array.from(shell.widgets('main'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n  });\n\n  describe('#add(widget, \"left\")', () => {\n    it('should add a widget to the left area', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'left');\n      const widgets = Array.from(shell.widgets('left'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n  });\n\n  describe('#add(widget, \"right\")', () => {\n    it('should add a widget to the right area', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'right');\n      const widgets = Array.from(shell.widgets('right'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n  });\n});\n\ndescribe('Shell for tree view', () => {\n  let shell: INotebookShell;\n\n  beforeEach(() => {\n    shell = new NotebookShell();\n    Widget.attach(shell, document.body);\n  });\n\n  afterEach(() => {\n    shell.dispose();\n  });\n\n  describe('#constructor()', () => {\n    it('should create a LabShell instance', () => {\n      expect(shell).toBeInstanceOf(NotebookShell);\n    });\n\n    it('should make some areas empty initially', () => {\n      ['main', 'left', 'right', 'menu'].forEach((area) => {\n        const widgets = Array.from(shell.widgets(area as INotebookShell.Area));\n        expect(widgets.length).toEqual(0);\n      });\n    });\n\n    it('should have the skip link widget in the top area initially', () => {\n      const widgets = Array.from(shell.widgets('top'));\n      expect(widgets.length).toEqual(1);\n    });\n  });\n\n  describe('#widgets()', () => {\n    it('should add widgets to existing areas', () => {\n      const widget = new Widget();\n      shell.add(widget, 'main');\n      const widgets = Array.from(shell.widgets('main'));\n      expect(widgets).toEqual([widget]);\n    });\n\n    it('should throw an exception if a fake area does not exist', () => {\n      const spy = jest.spyOn(console, 'error');\n      const jupyterFrontEndShell = shell as JupyterFrontEnd.IShell;\n      expect(Array.from(jupyterFrontEndShell.widgets('fake'))).toHaveLength(0);\n      expect(spy).toHaveBeenCalled();\n    });\n  });\n\n  describe('#add(widget, \"left\")', () => {\n    it('should add a widget to the left area', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'left');\n      const widgets = Array.from(shell.widgets('left'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n  });\n\n  describe('#add(widget, \"right\")', () => {\n    it('should add a widget to the right area', () => {\n      const widget = new Widget();\n      widget.id = 'foo';\n      shell.add(widget, 'right');\n      const widgets = Array.from(shell.widgets('right'));\n      expect(widgets.length).toBeGreaterThan(0);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/application/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "packages/application/tsconfig.test.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase.test\",\n  \"include\": [\"src/**/*\", \"test/**/*\"],\n  \"references\": [\n    {\n      \"path\": \".\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/application-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/application-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Application Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/ui-components\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/codeeditor\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/console\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/docmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/docregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mainmenu\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/rendermime\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@lumino/coreutils\": \"^2.2.2\",\n    \"@lumino/disposable\": \"^2.1.5\",\n    \"@lumino/widgets\": \"^2.7.2\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"schemaDir\": \"schema\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/application-extension/schema/menus.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Menu Entries\",\n  \"description\": \"Jupyter Notebook Menu Entries\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-file\",\n        \"items\": [\n          {\n            \"command\": \"application:rename\",\n            \"rank\": 4.5\n          },\n          {\n            \"command\": \"application:duplicate\",\n            \"rank\": 4.8\n          },\n          {\n            \"command\": \"notebook:trust\",\n            \"rank\": 20\n          },\n          {\n            \"type\": \"separator\",\n            \"rank\": 30\n          },\n          {\n            \"command\": \"filemenu:close-and-cleanup\",\n            \"rank\": 40\n          },\n          {\n            \"command\": \"application:close\",\n            \"disabled\": true\n          }\n        ]\n      },\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"type\": \"submenu\",\n            \"disabled\": true,\n            \"submenu\": {\n              \"id\": \"jp-mainmenu-view-appearance\"\n            }\n          }\n        ]\n      },\n      {\n        \"id\": \"jp-mainmenu-run\",\n        \"items\": [\n          {\n            \"type\": \"separator\",\n            \"rank\": 1000\n          },\n          {\n            \"type\": \"submenu\",\n            \"rank\": 1010,\n            \"submenu\": {\n              \"id\": \"jp-runmenu-change-cell-type\",\n              \"label\": \"Cell Type\",\n              \"items\": [\n                {\n                  \"command\": \"notebook:change-cell-to-code\",\n                  \"rank\": 0\n                },\n                {\n                  \"command\": \"notebook:change-cell-to-markdown\",\n                  \"rank\": 0\n                },\n                {\n                  \"command\": \"notebook:change-cell-to-raw\",\n                  \"rank\": 0\n                }\n              ]\n            }\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/application-extension/schema/pages.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Pages\",\n  \"description\": \"Jupyter Notebook Pages\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"command\": \"application:open-lab\",\n            \"rank\": 2\n          },\n          {\n            \"command\": \"application:open-tree\",\n            \"rank\": 2\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/application-extension/schema/shell.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/draft-07/schema\",\n  \"title\": \"Notebook Shell\",\n  \"description\": \"Notebook Shell layout settings.\",\n  \"properties\": {\n    \"layout\": {\n      \"$ref\": \"#/definitions/layout\",\n      \"type\": \"object\",\n      \"title\": \"Customize shell widget positioning\",\n      \"description\": \"Overrides default widget position in the application layout\",\n      \"default\": {\n        \"Debugger Console\": { \"area\": \"down\" },\n        \"Markdown Preview\": { \"area\": \"right\" },\n        \"Plugins\": { \"area\": \"left\" }\n      }\n    }\n  },\n  \"additionalProperties\": false,\n  \"type\": \"object\",\n  \"definitions\": {\n    \"layout\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"[\\\\w-]+\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"area\": {\n              \"enum\": [\"left\", \"right\"]\n            }\n          },\n          \"additionalProperties\": false\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/application-extension/schema/shortcuts.json",
    "content": "{\n  \"jupyter.lab.setting-icon\": \"notebook-ui-components:jupyter\",\n  \"jupyter.lab.setting-icon-label\": \"Jupyter Notebook shortcuts\",\n  \"title\": \"Jupyter Notebook Shortcuts\",\n  \"description\": \"Keyboard shortcuts for Jupyter Notebook\",\n  \"jupyter.lab.shortcuts\": [\n    {\n      \"args\": {},\n      \"command\": \"notebook:toggle-cell-outputs\",\n      \"keys\": [\"O\"],\n      \"selector\": \".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus\"\n    }\n  ],\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/application-extension/schema/title.json",
    "content": "{\n  \"title\": \"Title widget\",\n  \"description\": \"Title widget\",\n  \"jupyter.lab.toolbars\": {\n    \"TopBar\": [{ \"name\": \"widgetTitle\", \"rank\": 10 }]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/application-extension/schema/top.json",
    "content": "{\n  \"jupyter.lab.setting-icon\": \"notebook-ui-components:jupyter\",\n  \"jupyter.lab.setting-icon-label\": \"Jupyter Notebook Top Area\",\n  \"title\": \"Jupyter Notebook Top Area\",\n  \"description\": \"Jupyter Notebook Top Area settings\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"command\": \"application:toggle-top\",\n            \"rank\": 2\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {\n    \"visible\": {\n      \"type\": \"string\",\n      \"enum\": [\"yes\", \"no\", \"automatic\"],\n      \"title\": \"Top Bar Visibility\",\n      \"description\": \"Whether to show the top bar or not, yes for always showing, no for always not showing, automatic for adjusting to screen size\",\n      \"default\": \"automatic\"\n    }\n  },\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/application-extension/schema/zen.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Zen Mode\",\n  \"description\": \"Jupyter Notebook Zen Mode\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"command\": \"application:toggle-zen\",\n            \"rank\": 3\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/application-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  ILabStatus,\n  IRouter,\n  ITreePathUpdater,\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n  JupyterLab,\n} from '@jupyterlab/application';\n\nimport {\n  DOMUtils,\n  ICommandPalette,\n  ISanitizer,\n  ISplashScreen,\n  IToolbarWidgetRegistry,\n  showErrorMessage,\n} from '@jupyterlab/apputils';\n\nimport { ConsolePanel } from '@jupyterlab/console';\n\nimport { PageConfig, PathExt, URLExt } from '@jupyterlab/coreutils';\n\nimport { IDocumentManager, renameDialog } from '@jupyterlab/docmanager';\n\nimport { DocumentWidget } from '@jupyterlab/docregistry';\n\nimport { IMainMenu } from '@jupyterlab/mainmenu';\n\nimport {\n  ILatexTypesetter,\n  IMarkdownParser,\n  IRenderMime,\n  IRenderMimeRegistry,\n  RenderMimeRegistry,\n  standardRendererFactories,\n} from '@jupyterlab/rendermime';\n\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\n\nimport { ITranslator, nullTranslator } from '@jupyterlab/translation';\n\nimport {\n  NotebookApp,\n  NotebookShell,\n  INotebookShell,\n  SidePanel,\n  SidePanelHandler,\n  SidePanelPalette,\n  INotebookPathOpener,\n  defaultNotebookPathOpener,\n} from '@jupyter-notebook/application';\n\nimport { jupyterIcon } from '@jupyter-notebook/ui-components';\n\nimport { PromiseDelegate } from '@lumino/coreutils';\n\nimport {\n  DisposableDelegate,\n  DisposableSet,\n  IDisposable,\n} from '@lumino/disposable';\n\nimport { Menu, Widget } from '@lumino/widgets';\n\n/**\n * A regular expression to match path to notebooks and documents\n */\nconst TREE_PATTERN = new RegExp('/(notebooks|edit)/(.*)');\n\n/**\n * A regular expression to suppress the file extension from display for .ipynb files.\n */\nconst STRIP_IPYNB = /\\.ipynb$/;\n\n/**\n * The JupyterLab document manager plugin id.\n */\nconst JUPYTERLAB_DOCMANAGER_PLUGIN_ID =\n  '@jupyterlab/docmanager-extension:plugin';\n\n/**\n * The command IDs used by the application plugin.\n */\nnamespace CommandIDs {\n  /**\n   * Duplicate the current document and open the new document\n   */\n  export const duplicate = 'application:duplicate';\n\n  /**\n   * Handle local links\n   */\n  export const handleLink = 'application:handle-local-link';\n\n  /**\n   * Toggle Top Bar visibility\n   */\n  export const toggleTop = 'application:toggle-top';\n\n  /**\n   * Toggle side panel visibility\n   */\n  export const togglePanel = 'application:toggle-panel';\n\n  /**\n   * Toggle the Zen mode\n   */\n  export const toggleZen = 'application:toggle-zen';\n\n  /**\n   * Open JupyterLab\n   */\n  export const openLab = 'application:open-lab';\n\n  /**\n   * Open the tree page.\n   */\n  export const openTree = 'application:open-tree';\n\n  /**\n   * Rename the current document\n   */\n  export const rename = 'application:rename';\n\n  /**\n   * Resolve tree path\n   */\n  export const resolveTree = 'application:resolve-tree';\n}\n\n/**\n * Check if the application is dirty before closing the browser tab.\n */\nconst dirty: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:dirty',\n  description:\n    'Check if the application is dirty before closing the browser tab.',\n  autoStart: true,\n  requires: [ILabStatus, ITranslator],\n  activate: (\n    app: JupyterFrontEnd,\n    status: ILabStatus,\n    translator: ITranslator\n  ): void => {\n    if (!(app instanceof NotebookApp)) {\n      throw new Error(`${dirty.id} must be activated in Jupyter Notebook.`);\n    }\n    const trans = translator.load('notebook');\n    const message = trans.__(\n      'Are you sure you want to exit Jupyter Notebook?\\n\\nAny unsaved changes will be lost.'\n    );\n\n    window.addEventListener('beforeunload', (event) => {\n      if (app.status.isDirty) {\n        return ((event as any).returnValue = message);\n      }\n    });\n  },\n};\n\n/**\n * The application info.\n */\nconst info: JupyterFrontEndPlugin<JupyterLab.IInfo> = {\n  id: '@jupyter-notebook/application-extension:info',\n  autoStart: true,\n  provides: JupyterLab.IInfo,\n  activate: (app: JupyterFrontEnd): JupyterLab.IInfo => {\n    if (!(app instanceof NotebookApp)) {\n      throw new Error(`${info.id} must be activated in Jupyter Notebook.`);\n    }\n    return app.info;\n  },\n};\n\n/**\n * The logo plugin.\n */\nconst logo: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:logo',\n  description: 'The logo plugin.',\n  autoStart: true,\n  activate: (app: JupyterFrontEnd) => {\n    const baseUrl = PageConfig.getBaseUrl();\n    const node = document.createElement('a');\n    node.href = `${baseUrl}tree`;\n    node.target = '_blank';\n    node.rel = 'noopener noreferrer';\n    const logo = new Widget({ node });\n\n    jupyterIcon.element({\n      container: node,\n      elementPosition: 'center',\n      padding: '2px 2px 2px 8px',\n      height: '28px',\n      width: 'auto',\n      cursor: 'pointer',\n      margin: 'auto',\n    });\n    logo.id = 'jp-NotebookLogo';\n    app.shell.add(logo, 'top', { rank: 0 });\n  },\n};\n\n/**\n * A plugin to open documents in the main area.\n */\nconst opener: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:opener',\n  description: 'A plugin to open documents in the main area.',\n  autoStart: true,\n  requires: [IRouter, IDocumentManager],\n  optional: [ISettingRegistry],\n  activate: (\n    app: JupyterFrontEnd,\n    router: IRouter,\n    docManager: IDocumentManager,\n    settingRegistry: ISettingRegistry | null\n  ): void => {\n    const { commands, docRegistry } = app;\n\n    const command = 'router:tree';\n    commands.addCommand(command, {\n      execute: (args: any) => {\n        const parsed = args as IRouter.ILocation;\n        const matches = parsed.path.match(TREE_PATTERN) ?? [];\n        const [, , path] = matches;\n        if (!path) {\n          return;\n        }\n\n        app.started.then(async () => {\n          const file = decodeURIComponent(path);\n          const urlParams = new URLSearchParams(parsed.search);\n          let defaultFactory = docRegistry.defaultWidgetFactory(path).name;\n\n          // Explicitly get the default viewers from the settings because\n          // JupyterLab might not have had the time to load the settings yet (race condition)\n          // Relevant code: https://github.com/jupyterlab/jupyterlab/blob/d56ff811f39b3c10c6d8b6eb27a94624b753eb53/packages/docmanager-extension/src/index.tsx#L265-L293\n          if (settingRegistry) {\n            const settings = await settingRegistry.load(\n              JUPYTERLAB_DOCMANAGER_PLUGIN_ID\n            );\n            const defaultViewers = settings.get('defaultViewers').composite as {\n              [ft: string]: string;\n            };\n            // get the file types for the path\n            const types = docRegistry.getFileTypesForPath(path);\n            // for each file type, check if there is a default viewer and if it\n            // is available in the docRegistry. If it is the case, use it as the\n            // default factory\n            types.forEach((ft) => {\n              if (\n                defaultViewers[ft.name] !== undefined &&\n                docRegistry.getWidgetFactory(defaultViewers[ft.name])\n              ) {\n                defaultFactory = defaultViewers[ft.name];\n              }\n            });\n          }\n\n          const factory = urlParams.get('factory') ?? defaultFactory;\n          docManager.open(file, factory, undefined, {\n            ref: '_noref',\n          });\n        });\n      },\n    });\n\n    router.register({ command, pattern: TREE_PATTERN });\n  },\n};\n\n/**\n * A plugin to customize menus\n */\nconst menus: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:menus',\n  description: 'A plugin to customize menus.',\n  requires: [IMainMenu],\n  autoStart: true,\n  activate: (app: JupyterFrontEnd, menu: IMainMenu) => {\n    // always disable the Tabs menu\n    menu.tabsMenu.dispose();\n\n    const page = PageConfig.getOption('notebookPage');\n    switch (page) {\n      case 'consoles':\n      case 'terminals':\n      case 'tree':\n        menu.editMenu.dispose();\n        menu.kernelMenu.dispose();\n        menu.runMenu.dispose();\n        break;\n      case 'edit':\n        menu.kernelMenu.dispose();\n        menu.runMenu.dispose();\n        break;\n      default:\n        break;\n    }\n  },\n};\n\n/**\n * A plugin to provide a spacer at rank 900 in the menu area\n */\nconst menuSpacer: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:menu-spacer',\n  description: 'A plugin to provide a spacer at rank 900 in the menu area.',\n  autoStart: true,\n  activate: (app: JupyterFrontEnd) => {\n    const menu = new Widget();\n    menu.id = DOMUtils.createDomID();\n    menu.addClass('jp-NotebookSpacer');\n    app.shell.add(menu, 'menu', { rank: 900 });\n  },\n};\n\n/**\n * Add commands to open the tree and running pages.\n */\nconst pages: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:pages',\n  description: 'Add commands to open the tree and running pages.',\n  autoStart: true,\n  requires: [ITranslator],\n  optional: [ICommandPalette],\n  activate: (\n    app: JupyterFrontEnd,\n    translator: ITranslator,\n    palette: ICommandPalette | null\n  ): void => {\n    const trans = translator.load('notebook');\n    const baseUrl = PageConfig.getBaseUrl();\n\n    app.commands.addCommand(CommandIDs.openLab, {\n      label: trans.__('Open JupyterLab'),\n      execute: () => {\n        window.open(URLExt.join(baseUrl, 'lab'));\n      },\n    });\n    const page = PageConfig.getOption('notebookPage');\n\n    app.commands.addCommand(CommandIDs.openTree, {\n      label: trans.__('File Browser'),\n      execute: () => {\n        if (page === 'tree') {\n          app.commands.execute('filebrowser:activate');\n        } else {\n          window.open(URLExt.join(baseUrl, 'tree'));\n        }\n      },\n    });\n\n    if (palette) {\n      palette.addItem({ command: CommandIDs.openLab, category: 'View' });\n      palette.addItem({ command: CommandIDs.openTree, category: 'View' });\n    }\n  },\n};\n\n/**\n * A plugin to open paths in new browser tabs.\n */\nconst pathOpener: JupyterFrontEndPlugin<INotebookPathOpener> = {\n  id: '@jupyter-notebook/application-extension:path-opener',\n  description: 'A plugin to open paths in new browser tabs.',\n  autoStart: true,\n  provides: INotebookPathOpener,\n  activate: (app: JupyterFrontEnd): INotebookPathOpener => {\n    return defaultNotebookPathOpener;\n  },\n};\n\n/**\n * The default paths for a Jupyter Notebook app.\n */\nconst paths: JupyterFrontEndPlugin<JupyterFrontEnd.IPaths> = {\n  id: '@jupyter-notebook/application-extension:paths',\n  description: 'The default paths for a Jupyter Notebook app.',\n  autoStart: true,\n  provides: JupyterFrontEnd.IPaths,\n  activate: (app: JupyterFrontEnd): JupyterFrontEnd.IPaths => {\n    if (!(app instanceof NotebookApp)) {\n      throw new Error(`${paths.id} must be activated in Jupyter Notebook.`);\n    }\n    return app.paths;\n  },\n};\n\n/**\n * A plugin providing a rendermime registry.\n */\nconst rendermime: JupyterFrontEndPlugin<IRenderMimeRegistry> = {\n  id: '@jupyter-notebook/application-extension:rendermime',\n  description: 'A plugin providing a rendermime registry.',\n  autoStart: true,\n  provides: IRenderMimeRegistry,\n  optional: [\n    IDocumentManager,\n    ILatexTypesetter,\n    ISanitizer,\n    IMarkdownParser,\n    ITranslator,\n    INotebookPathOpener,\n  ],\n  activate: (\n    app: JupyterFrontEnd,\n    docManager: IDocumentManager | null,\n    latexTypesetter: ILatexTypesetter | null,\n    sanitizer: IRenderMime.ISanitizer | null,\n    markdownParser: IMarkdownParser | null,\n    translator: ITranslator | null,\n    notebookPathOpener: INotebookPathOpener | null\n  ) => {\n    const trans = (translator ?? nullTranslator).load('jupyterlab');\n    const opener = notebookPathOpener ?? defaultNotebookPathOpener;\n    if (docManager) {\n      app.commands.addCommand(CommandIDs.handleLink, {\n        label: trans.__('Handle Local Link'),\n        execute: (args) => {\n          const path = args['path'] as string | undefined | null;\n          if (path === undefined || path === null) {\n            return;\n          }\n          return docManager.services.contents\n            .get(path, { content: false })\n            .then((model) => {\n              const baseUrl = PageConfig.getBaseUrl();\n              opener.open({\n                prefix: URLExt.join(baseUrl, 'tree'),\n                path: model.path,\n                target: '_blank',\n              });\n            });\n        },\n      });\n    }\n    return new RenderMimeRegistry({\n      initialFactories: standardRendererFactories,\n      linkHandler: !docManager\n        ? undefined\n        : {\n            handleLink: (node: HTMLElement, path: string, id?: string) => {\n              // If node has the download attribute explicitly set, use the\n              // default browser downloading behavior.\n              if (node.tagName === 'A' && node.hasAttribute('download')) {\n                return;\n              }\n              app.commandLinker.connectNode(node, CommandIDs.handleLink, {\n                path,\n                id,\n              });\n            },\n          },\n      latexTypesetter: latexTypesetter ?? undefined,\n      markdownParser: markdownParser ?? undefined,\n      translator: translator ?? undefined,\n      sanitizer: sanitizer ?? undefined,\n    });\n  },\n};\n\n/**\n * The default Jupyter Notebook application shell.\n */\nconst shell: JupyterFrontEndPlugin<INotebookShell> = {\n  id: '@jupyter-notebook/application-extension:shell',\n  description: 'The default Jupyter Notebook application shell.',\n  autoStart: true,\n  provides: INotebookShell,\n  optional: [ISettingRegistry],\n  activate: (\n    app: JupyterFrontEnd,\n    settingRegistry: ISettingRegistry | null\n  ) => {\n    if (!(app.shell instanceof NotebookShell)) {\n      throw new Error(`${shell.id} did not find a NotebookShell instance.`);\n    }\n    const notebookShell = app.shell;\n\n    if (settingRegistry) {\n      settingRegistry\n        .load(shell.id)\n        .then((settings) => {\n          // Add a layer of customization to support app shell mode\n          const customLayout = settings.composite['layout'] as any;\n\n          // Restore the layout.\n          void notebookShell.restoreLayout(customLayout);\n        })\n        .catch((reason) => {\n          console.error('Fail to load settings for the layout restorer.');\n          console.error(reason);\n        });\n    }\n\n    return notebookShell;\n  },\n};\n\n/**\n * The default splash screen provider.\n */\nconst splash: JupyterFrontEndPlugin<ISplashScreen> = {\n  id: '@jupyter-notebook/application-extension:splash',\n  description: 'Provides an empty splash screen.',\n  autoStart: true,\n  provides: ISplashScreen,\n  activate: (app: JupyterFrontEnd) => {\n    const { restored } = app;\n    const splash = document.createElement('div');\n    splash.style.position = 'absolute';\n    splash.style.width = '100%';\n    splash.style.height = '100%';\n    splash.style.zIndex = '10';\n\n    return {\n      show: (light = true) => {\n        splash.style.backgroundColor = light ? 'white' : '#111111';\n        document.body.appendChild(splash);\n        return new DisposableDelegate(async () => {\n          await restored;\n          document.body.removeChild(splash);\n        });\n      },\n    };\n  },\n};\n\n/**\n * The default JupyterLab application status provider.\n */\nconst status: JupyterFrontEndPlugin<ILabStatus> = {\n  id: '@jupyter-notebook/application-extension:status',\n  description: 'The default JupyterLab application status provider.',\n  autoStart: true,\n  provides: ILabStatus,\n  activate: (app: JupyterFrontEnd) => {\n    if (!(app instanceof NotebookApp)) {\n      throw new Error(`${status.id} must be activated in Jupyter Notebook.`);\n    }\n    return app.status;\n  },\n};\n\n/**\n * A plugin to display the document title in the browser tab title\n */\nconst tabTitle: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:tab-title',\n  description:\n    'A plugin to display the document title in the browser tab title.',\n  autoStart: true,\n  requires: [INotebookShell],\n  activate: (app: JupyterFrontEnd, shell: INotebookShell) => {\n    const setTabTitle = () => {\n      const current = shell.currentWidget;\n      if (current instanceof ConsolePanel) {\n        const update = () => {\n          const title =\n            current.sessionContext.path || current.sessionContext.name;\n          const basename = PathExt.basename(title);\n          // Strip the \".ipynb\" suffix from filenames for display in tab titles.\n          document.title = basename.replace(STRIP_IPYNB, '');\n        };\n        current.sessionContext.sessionChanged.connect(update);\n        update();\n        return;\n      } else if (current instanceof DocumentWidget) {\n        const update = () => {\n          const basename = PathExt.basename(current.context.path);\n          document.title = basename.replace(STRIP_IPYNB, '');\n        };\n        current.context.pathChanged.connect(update);\n        update();\n      }\n    };\n\n    shell.currentChanged.connect(setTabTitle);\n    setTabTitle();\n  },\n};\n\n/**\n * A plugin to display and rename the title of a file\n */\nconst title: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:title',\n  description: 'A plugin to display and rename the title of a file.',\n  autoStart: true,\n  requires: [INotebookShell, ITranslator],\n  optional: [IDocumentManager, IRouter, IToolbarWidgetRegistry],\n  activate: (\n    app: JupyterFrontEnd,\n    shell: INotebookShell,\n    translator: ITranslator,\n    docManager: IDocumentManager | null,\n    router: IRouter | null,\n    toolbarRegistry: IToolbarWidgetRegistry | null\n  ) => {\n    const { commands } = app;\n    const trans = translator.load('notebook');\n\n    const node = document.createElement('div');\n    if (toolbarRegistry) {\n      toolbarRegistry.addFactory('TopBar', 'widgetTitle', (toolbar) => {\n        const widget = new Widget({ node });\n        widget.id = 'jp-title';\n        return widget;\n      });\n    }\n\n    const addTitle = async (): Promise<void> => {\n      const current = shell.currentWidget;\n      if (!current || !(current instanceof DocumentWidget)) {\n        return;\n      }\n      if (node.children.length > 0) {\n        return;\n      }\n\n      const h = document.createElement('h1');\n      h.textContent = current.title.label.replace(STRIP_IPYNB, '');\n      node.appendChild(h);\n      node.style.marginLeft = '10px';\n      if (!docManager) {\n        return;\n      }\n\n      const isEnabled = () => {\n        const { currentWidget } = shell;\n        return !!(currentWidget && docManager.contextForWidget(currentWidget));\n      };\n\n      commands.addCommand(CommandIDs.duplicate, {\n        label: () => trans.__('Duplicate'),\n        isEnabled,\n        execute: async () => {\n          if (!isEnabled()) {\n            return;\n          }\n\n          // Duplicate the file, and open the new file.\n          const result = await docManager.duplicate(current.context.path);\n          await commands.execute('docmanager:open', { path: result.path });\n        },\n      });\n\n      commands.addCommand(CommandIDs.rename, {\n        label: () => trans.__('Rename…'),\n        isEnabled,\n        execute: async () => {\n          if (!isEnabled()) {\n            return;\n          }\n\n          try {\n            const result = await renameDialog(docManager, current.context);\n\n            // activate the current widget to bring the focus\n            if (current) {\n              current.activate();\n            }\n\n            if (result === null) {\n              return;\n            }\n          } catch (error) {\n            showErrorMessage(\n              trans.__('Rename Error'),\n              (error as Error).message ||\n                trans.__('An error occurred while renaming the file.')\n            );\n            return;\n          }\n\n          const newPath = current.context.path;\n          const basename = PathExt.basename(newPath);\n\n          h.textContent = basename.replace(STRIP_IPYNB, '');\n          if (!router) {\n            return;\n          }\n          const matches = router.current.path.match(TREE_PATTERN) ?? [];\n          const [, route, path] = matches;\n          if (!route || !path) {\n            return;\n          }\n          const encoded = encodeURIComponent(newPath);\n          router.navigate(`/${route}/${encoded}`, {\n            skipRouting: true,\n          });\n        },\n      });\n\n      node.onclick = async () => {\n        void commands.execute(CommandIDs.rename);\n      };\n    };\n\n    shell.currentChanged.connect(addTitle);\n    void addTitle();\n  },\n};\n\n/**\n * Plugin to toggle the top header visibility.\n */\nconst topVisibility: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:top',\n  description: 'Plugin to toggle the top header visibility.',\n  requires: [INotebookShell, ITranslator],\n  optional: [ISettingRegistry, ICommandPalette],\n  activate: (\n    app: JupyterFrontEnd<JupyterFrontEnd.IShell>,\n    notebookShell: INotebookShell,\n    translator: ITranslator,\n    settingRegistry: ISettingRegistry | null,\n    palette: ICommandPalette | null\n  ) => {\n    const trans = translator.load('notebook');\n    const top = notebookShell.top;\n    const pluginId = topVisibility.id;\n\n    app.commands.addCommand(CommandIDs.toggleTop, {\n      label: trans.__('Show Header'),\n      execute: () => {\n        top.setHidden(top.isVisible);\n        if (settingRegistry) {\n          void settingRegistry.set(\n            pluginId,\n            'visible',\n            top.isVisible ? 'yes' : 'no'\n          );\n        }\n      },\n      isToggled: () => top.isVisible,\n    });\n\n    let adjustToScreen = false;\n\n    if (settingRegistry) {\n      const loadSettings = settingRegistry.load(pluginId);\n      const updateSettings = (settings: ISettingRegistry.ISettings): void => {\n        // 'visible' property from user preferences or default settings\n        let visible = settings.get('visible').composite;\n        if (settings.user.visible !== undefined) {\n          visible = settings.user.visible;\n        }\n        top.setHidden(visible === 'no');\n        // adjust to screen from user preferences or default settings\n        adjustToScreen = visible === 'automatic';\n      };\n\n      Promise.all([loadSettings, app.restored])\n        .then(([settings]) => {\n          updateSettings(settings);\n          settings.changed.connect((settings) => {\n            updateSettings(settings);\n          });\n        })\n        .catch((reason: Error) => {\n          console.error(reason.message);\n        });\n    }\n\n    if (palette) {\n      palette.addItem({ command: CommandIDs.toggleTop, category: 'View' });\n    }\n\n    const onChanged = (): void => {\n      if (!adjustToScreen) {\n        return;\n      }\n      if (app.format === 'desktop') {\n        notebookShell.expandTop();\n      } else {\n        notebookShell.collapseTop();\n      }\n    };\n\n    // listen on format change (mobile and desktop) to make the view more compact\n    app.formatChanged.connect(onChanged);\n  },\n  autoStart: true,\n};\n\n/**\n * Plugin to toggle the left or right side panel's visibility.\n */\nconst sidePanelVisibility: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:sidepanel',\n  description: 'Plugin to toggle the visibility of left or right side panel.',\n  requires: [INotebookShell, ITranslator],\n  optional: [IMainMenu, ICommandPalette],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd<JupyterFrontEnd.IShell>,\n    notebookShell: INotebookShell,\n    translator: ITranslator,\n    menu: IMainMenu | null,\n    palette: ICommandPalette | null\n  ) => {\n    const trans = translator.load('notebook');\n\n    /* Arguments for togglePanel command:\n     * side, left or right area\n     * title, widget title to show in the menu\n     * id, widget ID to activate in the side panel\n     */\n    app.commands.addCommand(CommandIDs.togglePanel, {\n      label: (args) => args['title'] as string,\n      caption: (args) => {\n        // We do not substitute the parameter into the string because the parameter is not\n        // localized (e.g., it is always 'left') even though the string is localized.\n        if (args['side'] === 'left') {\n          return trans.__(\n            'Show %1 in the left sidebar',\n            args['title'] as string\n          );\n        } else if (args['side'] === 'right') {\n          return trans.__(\n            'Show %1 in the right sidebar',\n            args['title'] as string\n          );\n        }\n        return trans.__('Show %1 in the sidebar', args['title'] as string);\n      },\n      execute: (args) => {\n        switch (args['side'] as string) {\n          case 'left':\n            if (notebookShell.leftCollapsed) {\n              notebookShell.expandLeft(args.id as string);\n            } else if (\n              notebookShell.leftHandler.currentWidget?.id !== args.id\n            ) {\n              notebookShell.expandLeft(args.id as string);\n            } else {\n              notebookShell.collapseLeft();\n              if (notebookShell.currentWidget) {\n                notebookShell.activateById(notebookShell.currentWidget.id);\n              }\n            }\n            break;\n          case 'right':\n            if (notebookShell.rightCollapsed) {\n              notebookShell.expandRight(args.id as string);\n            } else if (\n              notebookShell.rightHandler.currentWidget?.id !== args.id\n            ) {\n              notebookShell.expandRight(args.id as string);\n            } else {\n              notebookShell.collapseRight();\n              if (notebookShell.currentWidget) {\n                notebookShell.activateById(notebookShell.currentWidget.id);\n              }\n            }\n            break;\n        }\n      },\n      isToggled: (args) => {\n        switch (args['side'] as string) {\n          case 'left': {\n            if (notebookShell.leftCollapsed) {\n              return false;\n            }\n            const currentWidget = notebookShell.leftHandler.currentWidget;\n            if (!currentWidget) {\n              return false;\n            }\n\n            return currentWidget.id === (args['id'] as string);\n          }\n          case 'right': {\n            if (notebookShell.rightCollapsed) {\n              return false;\n            }\n            const currentWidget = notebookShell.rightHandler.currentWidget;\n            if (!currentWidget) {\n              return false;\n            }\n\n            return currentWidget.id === (args['id'] as string);\n          }\n        }\n        return false;\n      },\n    });\n\n    const sidePanelMenu: { [area in SidePanel.Area]: IDisposable | null } = {\n      left: null,\n      right: null,\n    };\n\n    /**\n     * The function which adds entries to the View menu for each widget of a side panel.\n     *\n     * @param area - 'left' or 'right', the area of the side panel.\n     * @param entryLabel - the name of the main entry in the View menu for that side panel.\n     * @returns - The disposable menu added to the View menu or null.\n     */\n    const updateMenu = (area: SidePanel.Area, entryLabel: string) => {\n      if (menu === null) {\n        return null;\n      }\n\n      // Remove the previous menu entry for this side panel.\n      sidePanelMenu[area]?.dispose();\n\n      // Creates a new menu entry and populates it with side panel widgets.\n      const newMenu = new Menu({ commands: app.commands });\n      newMenu.title.label = entryLabel;\n      const widgets = notebookShell.widgets(area);\n      let menuToAdd = false;\n\n      for (const widget of widgets) {\n        newMenu.addItem({\n          command: CommandIDs.togglePanel,\n          args: {\n            side: area,\n            title: `Show ${widget.title.caption}`,\n            id: widget.id,\n          },\n        });\n        menuToAdd = true;\n      }\n\n      // If there are widgets, add the menu to the main menu entry.\n      if (menuToAdd) {\n        sidePanelMenu[area] = menu.viewMenu.addItem({\n          type: 'submenu',\n          submenu: newMenu,\n        });\n      }\n    };\n\n    app.restored.then(() => {\n      // Create menu entries for the left and right panel.\n      if (menu) {\n        const getSidePanelLabel = (area: SidePanel.Area): string => {\n          if (area === 'left') {\n            return trans.__('Left Sidebar');\n          } else {\n            return trans.__('Right Sidebar');\n          }\n        };\n        const leftArea = notebookShell.leftHandler.area;\n        const leftLabel = getSidePanelLabel(leftArea);\n        updateMenu(leftArea, leftLabel);\n\n        const rightArea = notebookShell.rightHandler.area;\n        const rightLabel = getSidePanelLabel(rightArea);\n        updateMenu(rightArea, rightLabel);\n\n        const handleSidePanelChange = (\n          sidePanel: SidePanelHandler,\n          widget: Widget\n        ) => {\n          const label = getSidePanelLabel(sidePanel.area);\n          updateMenu(sidePanel.area, label);\n        };\n\n        notebookShell.leftHandler.widgetAdded.connect(handleSidePanelChange);\n        notebookShell.leftHandler.widgetRemoved.connect(handleSidePanelChange);\n        notebookShell.rightHandler.widgetAdded.connect(handleSidePanelChange);\n        notebookShell.rightHandler.widgetRemoved.connect(handleSidePanelChange);\n      }\n\n      // Add palette entries for side panels.\n      if (palette) {\n        const sidePanelPalette = new SidePanelPalette({\n          commandPalette: palette as ICommandPalette,\n          command: CommandIDs.togglePanel,\n        });\n\n        notebookShell.leftHandler.widgets.forEach((widget) => {\n          sidePanelPalette.addItem(widget, notebookShell.leftHandler.area);\n        });\n\n        notebookShell.rightHandler.widgets.forEach((widget) => {\n          sidePanelPalette.addItem(widget, notebookShell.rightHandler.area);\n        });\n\n        // Update menu and palette when widgets are added or removed from side panels.\n        notebookShell.leftHandler.widgetAdded.connect((sidePanel, widget) => {\n          sidePanelPalette.addItem(widget, sidePanel.area);\n        });\n        notebookShell.leftHandler.widgetRemoved.connect((sidePanel, widget) => {\n          sidePanelPalette.removeItem(widget, sidePanel.area);\n        });\n        notebookShell.rightHandler.widgetAdded.connect((sidePanel, widget) => {\n          sidePanelPalette.addItem(widget, sidePanel.area);\n        });\n        notebookShell.rightHandler.widgetRemoved.connect(\n          (sidePanel, widget) => {\n            sidePanelPalette.removeItem(widget, sidePanel.area);\n          }\n        );\n      }\n    });\n  },\n};\n\n/**\n * A plugin for defining keyboard shortcuts specific to the notebook application.\n */\nconst shortcuts: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:shortcuts',\n  description:\n    'A plugin for defining keyboard shortcuts specific to the notebook application.',\n  autoStart: true,\n  activate: (app: JupyterFrontEnd) => {\n    // for now this plugin is mostly useful for defining keyboard shortcuts\n    // specific to the notebook application\n  },\n};\n\n/**\n * The default tree route resolver plugin.\n */\nconst tree: JupyterFrontEndPlugin<JupyterFrontEnd.ITreeResolver> = {\n  id: '@jupyter-notebook/application-extension:tree-resolver',\n  description: 'The default tree route resolver plugin.',\n  autoStart: true,\n  requires: [IRouter],\n  provides: JupyterFrontEnd.ITreeResolver,\n  activate: (\n    app: JupyterFrontEnd,\n    router: IRouter\n  ): JupyterFrontEnd.ITreeResolver => {\n    const { commands } = app;\n    const set = new DisposableSet();\n    const delegate = new PromiseDelegate<JupyterFrontEnd.ITreeResolver.Paths>();\n\n    const treePattern = new RegExp('/(/tree/.*)?');\n\n    set.add(\n      commands.addCommand(CommandIDs.resolveTree, {\n        execute: (async (args: IRouter.ILocation) => {\n          if (set.isDisposed) {\n            return;\n          }\n\n          const query = URLExt.queryStringToObject(args.search ?? '');\n          const browser = query['file-browser-path'] || '';\n\n          // Remove the file browser path from the query string.\n          delete query['file-browser-path'];\n\n          // Clean up artifacts immediately upon routing.\n          set.dispose();\n\n          delegate.resolve({ browser, file: PageConfig.getOption('treePath') });\n        }) as (args: any) => Promise<void>,\n      })\n    );\n    set.add(\n      router.register({ command: CommandIDs.resolveTree, pattern: treePattern })\n    );\n\n    // If a route is handled by the router without the tree command being\n    // invoked, resolve to `null` and clean up artifacts.\n    const listener = () => {\n      if (set.isDisposed) {\n        return;\n      }\n      set.dispose();\n      delegate.resolve(null);\n    };\n    router.routed.connect(listener);\n    set.add(\n      new DisposableDelegate(() => {\n        router.routed.disconnect(listener);\n      })\n    );\n\n    return { paths: delegate.promise };\n  },\n};\n\n/**\n * Plugin to update tree path.\n */\nconst treePathUpdater: JupyterFrontEndPlugin<ITreePathUpdater> = {\n  id: '@jupyter-notebook/application-extension:tree-updater',\n  description: 'Plugin to update tree path.',\n  requires: [IRouter],\n  provides: ITreePathUpdater,\n  activate: (app: JupyterFrontEnd, router: IRouter) => {\n    function updateTreePath(treePath: string) {\n      if (treePath !== PageConfig.getOption('treePath')) {\n        const path = URLExt.join(\n          PageConfig.getOption('baseUrl') || '/',\n          'tree',\n          URLExt.encodeParts(treePath)\n        );\n        router.navigate(path, { skipRouting: true });\n        // Persist the new tree path to PageConfig as it is used elsewhere at runtime.\n        PageConfig.setOption('treePath', treePath);\n      }\n    }\n    return updateTreePath;\n  },\n  autoStart: true,\n};\n\n/**\n * Translator plugin\n */\nconst translator: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:translator',\n  description: 'Translator plugin',\n  requires: [INotebookShell, ITranslator],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd,\n    notebookShell: INotebookShell,\n    translator: ITranslator\n  ) => {\n    notebookShell.translator = translator;\n  },\n};\n\n/**\n * Zen mode plugin\n */\nconst zen: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/application-extension:zen',\n  description: 'Zen mode plugin.',\n  autoStart: true,\n  requires: [ITranslator],\n  optional: [ICommandPalette, INotebookShell],\n  activate: (\n    app: JupyterFrontEnd,\n    translator: ITranslator,\n    palette: ICommandPalette | null,\n    notebookShell: INotebookShell | null\n  ): void => {\n    const { commands } = app;\n    const elem = document.documentElement;\n    const trans = translator.load('notebook');\n\n    const toggleOn = () => {\n      notebookShell?.collapseTop();\n      notebookShell?.menu.setHidden(true);\n      zenModeEnabled = true;\n    };\n\n    const toggleOff = () => {\n      notebookShell?.expandTop();\n      notebookShell?.menu.setHidden(false);\n      zenModeEnabled = false;\n    };\n\n    let zenModeEnabled = false;\n    commands.addCommand(CommandIDs.toggleZen, {\n      label: trans.__('Toggle Zen Mode'),\n      execute: () => {\n        if (!zenModeEnabled) {\n          elem.requestFullscreen();\n          toggleOn();\n        } else {\n          document.exitFullscreen();\n          toggleOff();\n        }\n      },\n    });\n\n    document.addEventListener('fullscreenchange', () => {\n      if (!document.fullscreenElement) {\n        toggleOff();\n      }\n    });\n\n    if (palette) {\n      palette.addItem({ command: CommandIDs.toggleZen, category: 'Mode' });\n    }\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [\n  dirty,\n  info,\n  logo,\n  menus,\n  menuSpacer,\n  opener,\n  pages,\n  pathOpener,\n  paths,\n  rendermime,\n  shell,\n  sidePanelVisibility,\n  shortcuts,\n  splash,\n  status,\n  tabTitle,\n  title,\n  topVisibility,\n  tree,\n  treePathUpdater,\n  translator,\n  zen,\n];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/application-extension/style/base.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n|\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n.jp-NotebookSpacer {\n  flex-grow: 1;\n  flex-shrink: 1;\n}\n\n.jp-MainAreaWidget {\n  height: 100%;\n}\n\n.jp-Toolbar > .jp-Toolbar-item {\n  height: unset;\n}\n\n#jp-UserMenu {\n  flex: 0 0 auto;\n  display: flex;\n  text-align: center;\n  margin-top: 8px;\n}\n\n.jp-MimeDocument .jp-RenderedJSON {\n  background: var(--jp-layout-color0);\n}\n\n/* Hide the stub toolbar that appears above terminals and documents */\n\n.jp-MainAreaWidget > .jp-Toolbar-micro {\n  display: none;\n}\n\n#jp-NotebookLogo {\n  /* bring logo to the front so it is selectable by tab*/\n  z-index: 10;\n}\n\n/* Hide the notification status item */\n.jp-Notification-Status {\n  display: none;\n}\n"
  },
  {
    "path": "packages/application-extension/style/index.css",
    "content": "@import url('~@jupyter-notebook/application/style/index.css');\n@import url('~@lumino/widgets/style/index.css');\n\n@import url('./base.css');\n"
  },
  {
    "path": "packages/application-extension/style/index.js",
    "content": "import '@jupyter-notebook/application/style/index.js';\nimport '@lumino/widgets/style/index.js';\n\nimport './base.css';\n"
  },
  {
    "path": "packages/application-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    },\n    {\n      \"path\": \"../ui-components\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/console-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/console-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Console Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/console\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/notebook\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"^2.0.4\",\n    \"@lumino/coreutils\": \"^2.2.2\",\n    \"@lumino/widgets\": \"^2.7.2\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"schemaDir\": \"schema\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/console-extension/schema/scratchpad-console.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Scratchpad Console\",\n  \"description\": \"Jupyter Notebook Scratchpad Console\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-file\",\n        \"items\": [\n          {\n            \"type\": \"submenu\",\n            \"submenu\": {\n              \"id\": \"jp-mainmenu-file-new\",\n              \"items\": [\n                {\n                  \"command\": \"scratchpad-console:open\",\n                  \"rank\": 2,\n                  \"args\": {\n                    \"isMenu\": true\n                  }\n                }\n              ]\n            }\n          }\n        ]\n      }\n    ]\n  },\n  \"jupyter.lab.shortcuts\": [\n    {\n      \"command\": \"scratchpad-console:open\",\n      \"keys\": [\"Accel B\"],\n      \"selector\": \"body\"\n    }\n  ],\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/console-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  IRouter,\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { ICommandPalette } from '@jupyterlab/apputils';\n\nimport { IConsoleTracker } from '@jupyterlab/console';\n\nimport { PageConfig, URLExt } from '@jupyterlab/coreutils';\n\nimport { INotebookTracker } from '@jupyterlab/notebook';\n\nimport { ITranslator, nullTranslator } from '@jupyterlab/translation';\n\nimport { consoleIcon } from '@jupyterlab/ui-components';\n\nimport {\n  INotebookPathOpener,\n  INotebookShell,\n  defaultNotebookPathOpener,\n} from '@jupyter-notebook/application';\n\nimport { find } from '@lumino/algorithm';\n\nimport { ReadonlyJSONObject } from '@lumino/coreutils';\n\nimport { Widget } from '@lumino/widgets';\n\n/**\n * A plugin to open consoles in a new tab\n */\nconst opener: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/console-extension:opener',\n  requires: [IRouter],\n  autoStart: true,\n  description: 'A plugin to open consoles in a new tab',\n  activate: (app: JupyterFrontEnd, router: IRouter) => {\n    const { commands } = app;\n    const consolePattern = new RegExp('/consoles/(.*)');\n\n    const command = 'router:console';\n    commands.addCommand(command, {\n      execute: (args: any) => {\n        const parsed = args as IRouter.ILocation;\n        const matches = parsed.path.match(consolePattern);\n        if (!matches) {\n          return;\n        }\n        const [, match] = matches;\n        if (!match) {\n          return;\n        }\n\n        const path = decodeURIComponent(match);\n        commands.execute('console:create', { path });\n      },\n    });\n\n    router.register({ command, pattern: consolePattern });\n  },\n};\n\n/**\n * Open consoles in a new tab or in the side panel (scratchpad like).\n */\nconst redirect: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/console-extension:redirect',\n  requires: [IConsoleTracker],\n  optional: [INotebookPathOpener, INotebookShell, INotebookTracker],\n  autoStart: true,\n  description: 'Open consoles in a new tab',\n  activate: (\n    app: JupyterFrontEnd,\n    tracker: IConsoleTracker,\n    notebookPathOpener: INotebookPathOpener | null,\n    notebookShell: INotebookShell | null,\n    notebookTracker: INotebookTracker | null\n  ) => {\n    const baseUrl = PageConfig.getBaseUrl();\n    const opener = notebookPathOpener ?? defaultNotebookPathOpener;\n\n    tracker.widgetAdded.connect(async (send, console) => {\n      // Check if we should open the console in side panel:\n      //  - this is a notebook view\n      //  - the notebook and the console share the same kernel\n      // Otherwise, the console opens in a new tab.\n      if (notebookShell && notebookTracker) {\n        const notebook = notebookTracker.currentWidget;\n\n        // Wait for the notebook and console to be ready.\n        await Promise.all([\n          notebook?.sessionContext.ready,\n          console.sessionContext.ready,\n        ]);\n        const notebookKernelId = notebook?.sessionContext.session?.kernel?.id;\n        const consoleKernelId = console.sessionContext.session?.kernel?.id;\n\n        if (notebookKernelId === consoleKernelId) {\n          notebookShell.add(console, 'right');\n          notebookShell.expandRight(console.id);\n          return;\n        }\n      }\n\n      const { sessionContext } = console;\n      await sessionContext.ready;\n      const widget = find(\n        app.shell.widgets('main'),\n        (w) => w.id === console.id\n      );\n      if (widget) {\n        // bail if the console is already added to the main area\n        return;\n      }\n      opener.open({\n        prefix: URLExt.join(baseUrl, 'consoles'),\n        path: sessionContext.path,\n        target: '_blank',\n      });\n\n      // the widget is not needed anymore\n      console.dispose();\n    });\n  },\n};\n\n/**\n * Open consoles in the side panel.\n */\nconst scratchpadConsole: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/console-extension:scratchpad-console',\n  requires: [INotebookTracker],\n  optional: [INotebookShell, ICommandPalette, ITranslator],\n  autoStart: true,\n  description: 'Open scratchpad console in side panel',\n  activate: (\n    app: JupyterFrontEnd,\n    tracker: INotebookTracker,\n    notebookShell: INotebookShell | null,\n    palette: ICommandPalette | null,\n    translator: ITranslator | null\n  ) => {\n    const { commands } = app;\n    const manager = app.serviceManager;\n\n    const trans = (translator ?? nullTranslator).load('notebook');\n\n    const command = 'scratchpad-console:open';\n    commands.addCommand(command, {\n      label: (args) =>\n        args['isPalette']\n          ? trans.__('Open a scratchpad console')\n          : trans.__('Scratchpad console'),\n      isVisible: () => !!tracker.currentWidget,\n      icon: (args) => (args['isPalette'] ? undefined : consoleIcon),\n      execute: async (args) => {\n        if (!notebookShell) {\n          return;\n        }\n        const consoleId = scratchpadConsole.id;\n        const sidebar = notebookShell.rightHandler;\n\n        // Close the console if it is already opened (shortcut only).\n        if (sidebar.isVisible && sidebar.currentWidget?.id === consoleId) {\n          if (!args.isPalette && !args.isMenu) {\n            notebookShell.collapseRight();\n            notebookShell.currentWidget?.activate();\n          }\n          return;\n        }\n\n        let panel: Widget | undefined = sidebar.widgets.find(\n          (w) => w.id === consoleId\n        );\n\n        // Create the widget if it is not already in the right area.\n        if (!panel) {\n          const notebook = tracker.currentWidget;\n          if (!notebook) {\n            return;\n          }\n          const notebookSessionContext = notebook.sessionContext;\n\n          await Promise.all([notebookSessionContext.ready, manager.ready]);\n\n          const id = notebookSessionContext.session?.kernel?.id;\n          const kernelPref = notebookSessionContext.kernelPreference;\n\n          panel = await commands.execute('console:create', {\n            kernelPreference: { ...kernelPref, id } as ReadonlyJSONObject,\n            preventTitleUpdate: true,\n          });\n\n          if (!panel) {\n            console.error(\n              'An error occurred during scratchpad console creation'\n            );\n            return;\n          }\n\n          panel.title.caption = trans.__('Console');\n          panel.id = consoleId;\n        } else {\n          notebookShell.expandRight(consoleId);\n        }\n      },\n      describedBy: {\n        args: {\n          type: 'object',\n          properties: {\n            isPalette: {\n              type: 'boolean',\n              description: trans.__(\n                'Whether the command is executed from the palette'\n              ),\n            },\n            isMenu: {\n              type: 'boolean',\n              description: trans.__(\n                'Whether the command is executed from the menu'\n              ),\n            },\n          },\n        },\n      },\n    });\n\n    if (palette) {\n      palette.addItem({\n        category: 'Notebook Console',\n        command,\n        args: { isPalette: true },\n      });\n    }\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [\n  opener,\n  redirect,\n  scratchpadConsole,\n];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/console-extension/style/base.css",
    "content": ""
  },
  {
    "path": "packages/console-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/console-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/console-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/docmanager-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/docmanager-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Document Manager Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/docmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/docregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/services\": \"~7.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"^2.0.4\",\n    \"@lumino/signaling\": \"^2.1.5\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/docmanager-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { PageConfig, PathExt, URLExt } from '@jupyterlab/coreutils';\n\nimport { IDocumentWidgetOpener } from '@jupyterlab/docmanager';\n\nimport { IDocumentWidget, DocumentRegistry } from '@jupyterlab/docregistry';\n\nimport {\n  INotebookPathOpener,\n  INotebookShell,\n  defaultNotebookPathOpener,\n} from '@jupyter-notebook/application';\n\nimport { Signal } from '@lumino/signaling';\n\n/**\n * A plugin to open documents in a new browser tab.\n *\n */\nconst opener: JupyterFrontEndPlugin<IDocumentWidgetOpener> = {\n  id: '@jupyter-notebook/docmanager-extension:opener',\n  autoStart: true,\n  optional: [INotebookPathOpener, INotebookShell],\n  provides: IDocumentWidgetOpener,\n  description: 'Open documents in a new browser tab',\n  activate: (\n    app: JupyterFrontEnd,\n    notebookPathOpener: INotebookPathOpener,\n    notebookShell: INotebookShell | null\n  ) => {\n    const baseUrl = PageConfig.getBaseUrl();\n    const docRegistry = app.docRegistry;\n    const pathOpener = notebookPathOpener ?? defaultNotebookPathOpener;\n    let id = 0;\n    return new (class {\n      async open(\n        widget: IDocumentWidget,\n        options?: DocumentRegistry.IOpenOptions\n      ) {\n        const widgetName = options?.type ?? '';\n        const ref = options?.ref;\n        // check if there is an setting override and if it would add the widget in the main area\n        const userLayoutArea = notebookShell?.userLayout?.[widgetName]?.area;\n\n        if (ref !== '_noref' && userLayoutArea === undefined) {\n          const path = widget.context.path;\n          const ext = PathExt.extname(path);\n          let route = 'edit';\n          if (\n            (widgetName === 'default' && ext === '.ipynb') ||\n            widgetName.includes('Notebook')\n          ) {\n            // make sure to save the notebook before opening it in a new tab\n            // so the kernel info is saved (if created from the New dropdown)\n            if (widget.context.sessionContext.kernelPreference.name) {\n              await widget.context.save();\n            }\n            route = 'notebooks';\n          }\n          // append ?factory only if it's not the default\n          const defaultFactory = docRegistry.defaultWidgetFactory(path);\n          let searchParams = undefined;\n          if (widgetName !== defaultFactory.name) {\n            searchParams = new URLSearchParams({\n              factory: widgetName,\n            });\n          }\n\n          pathOpener.open({\n            prefix: URLExt.join(baseUrl, route),\n            path,\n            searchParams,\n          });\n\n          // dispose the widget since it is not used on this page\n          widget.dispose();\n          return;\n        }\n\n        // otherwise open the document on the current page\n\n        if (!widget.id) {\n          widget.id = `document-manager-${++id}`;\n        }\n        widget.title.dataset = {\n          type: 'document-title',\n          ...widget.title.dataset,\n        };\n        if (!widget.isAttached) {\n          app.shell.add(widget, 'main', options || {});\n        }\n        app.shell.activateById(widget.id);\n        this._opened.emit(widget);\n      }\n\n      get opened() {\n        return this._opened;\n      }\n\n      private _opened = new Signal<this, IDocumentWidget>(this);\n    })();\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [opener];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/docmanager-extension/style/base.css",
    "content": ".jp-Document {\n  height: 100%;\n}\n"
  },
  {
    "path": "packages/docmanager-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/docmanager-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/docmanager-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/documentsearch-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/documentsearch-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Document Search Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/documentsearch\": \"~4.6.0-alpha.4\",\n    \"@lumino/widgets\": \"^2.7.2\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"schemaDir\": \"schema\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/documentsearch-extension/src/index.ts",
    "content": "import {\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { ISearchProviderRegistry } from '@jupyterlab/documentsearch';\n\nimport { Widget } from '@lumino/widgets';\n\nimport { INotebookShell } from '@jupyter-notebook/application';\n\nconst SEARCHABLE_CLASS = 'jp-mod-searchable';\n\n/**\n * A plugin to add document search functionalities.\n */\nconst notebookShellWidgetListener: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/documentsearch-extension:notebookShellWidgetListener',\n  requires: [INotebookShell, ISearchProviderRegistry],\n  autoStart: true,\n  description: 'A plugin to add document search functionalities',\n  activate: (\n    app: JupyterFrontEnd,\n    notebookShell: INotebookShell,\n    registry: ISearchProviderRegistry\n  ) => {\n    // If a given widget is searchable, apply the searchable class.\n    // If it's not searchable, remove the class.\n    const transformWidgetSearchability = (widget: Widget | null) => {\n      if (!widget) {\n        return;\n      }\n      if (registry.hasProvider(widget)) {\n        widget.addClass(SEARCHABLE_CLASS);\n      } else {\n        widget.removeClass(SEARCHABLE_CLASS);\n      }\n    };\n\n    // Update searchability of the active widget when the registry\n    // changes, in case a provider for the current widget was added\n    // or removed\n    registry.changed.connect(() =>\n      transformWidgetSearchability(notebookShell.currentWidget)\n    );\n\n    // Apply the searchable class only to the active widget if it is actually\n    // searchable. Remove the searchable class from a widget when it's\n    // no longer active.\n    notebookShell.currentChanged.connect((_, args) => {\n      if (notebookShell.currentWidget) {\n        transformWidgetSearchability(notebookShell.currentWidget);\n      }\n    });\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [notebookShellWidgetListener];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/documentsearch-extension/style/base.css",
    "content": ""
  },
  {
    "path": "packages/documentsearch-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/documentsearch-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/documentsearch-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "packages/help-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/help-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Help Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/ui-components\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/mainmenu\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"schemaDir\": \"schema\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/help-extension/schema/open.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Help Menu Entries\",\n  \"description\": \"Jupyter Notebook Help Menu Entries\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-help\",\n        \"items\": [\n          {\n            \"command\": \"help:about\",\n            \"rank\": 0\n          },\n          {\n            \"type\": \"separator\",\n            \"rank\": 1\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/help-extension/src/index.tsx",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { Dialog, ICommandPalette } from '@jupyterlab/apputils';\n\nimport { IMainMenu } from '@jupyterlab/mainmenu';\n\nimport { ITranslator } from '@jupyterlab/translation';\n\nimport { jupyterIcon } from '@jupyter-notebook/ui-components';\n\nimport * as React from 'react';\n\n/**\n * A list of resources to show in the help menu.\n */\nconst RESOURCES = [\n  {\n    text: 'About Jupyter',\n    url: 'https://jupyter.org',\n  },\n  {\n    text: 'Markdown Reference',\n    url: 'https://commonmark.org/help/',\n  },\n  {\n    text: 'Documentation',\n    url: 'https://jupyter-notebook.readthedocs.io/en/stable/',\n  },\n];\n\n/**\n * The command IDs used by the help plugin.\n */\nnamespace CommandIDs {\n  export const open = 'help:open';\n\n  export const about = 'help:about';\n}\n\n/**\n * A plugin to open the about section with resources.\n */\nconst open: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/help-extension:open',\n  autoStart: true,\n  description: 'A plugin to open the about section with resources',\n  activate: (app: JupyterFrontEnd): void => {\n    const { commands } = app;\n\n    commands.addCommand(CommandIDs.open, {\n      label: (args) => args['text'] as string,\n      execute: (args) => {\n        const url = args['url'] as string;\n        window.open(url);\n      },\n    });\n  },\n};\n\n/**\n * Plugin to add a command to show an About Jupyter Notebook and Markdown Reference.\n */\nconst about: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/help-extension:about',\n  autoStart: true,\n  requires: [ITranslator],\n  optional: [IMainMenu, ICommandPalette],\n  description:\n    'Plugin to add a command to show an About Jupyter Notebook and Markdown Reference',\n  activate: (\n    app: JupyterFrontEnd,\n    translator: ITranslator,\n    menu: IMainMenu | null,\n    palette: ICommandPalette | null\n  ): void => {\n    const { commands } = app;\n    const trans = translator.load('notebook');\n    const category = trans.__('Help');\n\n    commands.addCommand(CommandIDs.about, {\n      label: trans.__('About %1', app.name),\n      execute: () => {\n        const title = (\n          <>\n            <span className=\"jp-AboutNotebook-header\">\n              <jupyterIcon.react width=\"196px\" height=\"auto\" />\n            </span>\n          </>\n        );\n\n        const notebookURL = 'https://github.com/jupyter/notebook';\n        const contributorURL = 'https://github.com/jupyter/notebook/pulse';\n        const aboutJupyter = trans.__('JUPYTER NOTEBOOK ON GITHUB');\n        const contributorList = trans.__('CONTRIBUTOR LIST');\n        const externalLinks = (\n          <span>\n            <a\n              href={notebookURL}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"jp-Button-flat jp-AboutNotebook-about-externalLinks\"\n            >\n              {aboutJupyter}\n            </a>\n            <a\n              href={contributorURL}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"jp-Button-flat jp-AboutNotebook-about-externalLinks\"\n            >\n              {contributorList}\n            </a>\n          </span>\n        );\n        const version = trans.__('Version: %1', app.version);\n        const copyright = trans.__('© 2021-2025 Jupyter Notebook Contributors');\n        const body = (\n          <>\n            <span className=\"jp-AboutNotebook-version\">{version}</span>\n            <div>{externalLinks}</div>\n            <span className=\"jp-AboutNotebook-about-copyright\">\n              {copyright}\n            </span>\n          </>\n        );\n\n        const dialog = new Dialog({\n          title,\n          body,\n          buttons: [\n            Dialog.createButton({\n              label: trans.__('Dismiss'),\n              className:\n                'jp-AboutNotebook-about-button jp-mod-reject jp-mod-styled',\n            }),\n          ],\n        });\n        dialog.addClass('jp-AboutNotebook');\n        void dialog.launch();\n      },\n    });\n\n    if (palette) {\n      palette.addItem({ command: CommandIDs.about, category });\n    }\n\n    const resourcesGroup = RESOURCES.map((args) => ({\n      args,\n      command: CommandIDs.open,\n    }));\n\n    if (menu) {\n      menu.helpMenu.addGroup(resourcesGroup, 30);\n    }\n  },\n};\n\nconst plugins: JupyterFrontEndPlugin<any>[] = [open, about];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/help-extension/style/base.css",
    "content": ".jp-AboutNotebook .jp-Dialog-header {\n  justify-content: center;\n  padding: 0;\n}\n\n.jp-AboutNotebook-header {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  padding: var(--jp-flat-button-padding);\n}\n\n.jp-AboutNotebook-header-text {\n  margin-left: 16px;\n}\n\n.jp-AboutNotebook-version {\n  color: var(--jp-ui-font-color1);\n  font-size: var(--jp-ui-font-size1);\n  padding-bottom: 30px;\n  font-weight: 400;\n  letter-spacing: 0.4px;\n  line-height: 1.12;\n  min-width: 360px;\n  text-align: center;\n}\n\n.jp-AboutNotebook-body {\n  display: flex;\n  font-size: var(--jp-ui-font-size2);\n  padding: var(--jp-flat-button-padding);\n  color: var(--jp-ui-font-color1);\n  text-align: center;\n  flex-direction: column;\n  min-width: 360px;\n  overflow: hidden;\n}\n\n.jp-AboutNotebook-about-body pre {\n  white-space: pre-wrap;\n}\n\n.jp-AboutNotebook-about-externalLinks {\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-start;\n  align-items: flex-start;\n  color: var(--jp-warn-color0);\n}\n\n.jp-AboutNotebook-about-copyright {\n  padding-top: 25px;\n}\n"
  },
  {
    "path": "packages/help-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/help-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/help-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../ui-components\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/lab-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/lab-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Lab Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"jlpm run build:labextension:dev\",\n    \"build:labextension\": \"jupyter labextension build .\",\n    \"build:labextension:dev\": \"jupyter labextension build --development True .\",\n    \"build:lib\": \"tsc -b\",\n    \"build:prod\": \"jlpm run build:labextension\",\n    \"clean\": \"jlpm run clean:lib && jlpm run clean:labextension\",\n    \"clean:labextension\": \"rimraf ../../notebook/labextension\",\n    \"clean:lib\": \"rimraf lib tsconfig.tsbuildinfo\",\n    \"watch\": \"run-p watch:src watch:labextension\",\n    \"watch:labextension\": \"jupyter labextension watch .\",\n    \"watch:src\": \"tsc -w\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/docregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/notebook\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"@lumino/commands\": \"^2.3.3\",\n    \"@lumino/disposable\": \"^2.1.5\"\n  },\n  \"devDependencies\": {\n    \"@jupyterlab/builder\": \"~4.6.0-alpha.4\",\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"outputDir\": \"../../notebook/labextension\",\n    \"schemaDir\": \"schema\"\n  },\n  \"nx\": {\n    \"targets\": {\n      \"build:labextension:dev\": {\n        \"dependsOn\": [\n          \"^build:lib\",\n          \"build:lib\"\n        ],\n        \"outputs\": [\n          \"{workspaceRoot}/notebook/labextension\",\n          \"{workspaceRoot}/notebook/labextension/build_log.json\"\n        ]\n      },\n      \"build:labextension\": {\n        \"dependsOn\": [\n          \"^build:lib\",\n          \"build:lib\"\n        ],\n        \"outputs\": [\n          \"{workspaceRoot}/notebook/labextension\"\n        ]\n      },\n      \"build\": {\n        \"dependsOn\": [\n          \"build:labextension:dev\"\n        ]\n      },\n      \"build:prod\": {\n        \"dependsOn\": [\n          \"build:labextension\"\n        ]\n      }\n    }\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/lab-extension/schema/interface-switcher.json",
    "content": "{\n  \"title\": \"Interface Switcher\",\n  \"description\": \"Interface Switcher settings.\",\n  \"jupyter.lab.toolbars\": {\n    \"Notebook\": [{ \"name\": \"interfaceSwitcher\", \"rank\": 990 }]\n  },\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"command\": \"jupyter-notebook:open-notebook\",\n            \"rank\": 10,\n            \"args\": {\n              \"isMenu\": true\n            }\n          },\n          {\n            \"command\": \"jupyter-notebook:open-lab\",\n            \"rank\": 10,\n            \"args\": {\n              \"isMenu\": true\n            }\n          },\n          {\n            \"command\": \"jupyter-notebook:open-nbclassic\",\n            \"rank\": 10,\n            \"args\": {\n              \"isMenu\": true\n            }\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/lab-extension/schema/launch-tree.json",
    "content": "{\n  \"title\": \"Launch Shortcuts\",\n  \"description\": \"Launch Shortcuts.\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-help\",\n        \"items\": [\n          {\n            \"command\": \"jupyter-notebook:launch-tree\",\n            \"rank\": 1\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/lab-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  ILabShell,\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { ICommandPalette, IToolbarWidgetRegistry } from '@jupyterlab/apputils';\n\nimport { PageConfig, URLExt } from '@jupyterlab/coreutils';\n\nimport { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook';\n\nimport { ITranslator } from '@jupyterlab/translation';\n\nimport { Menu, MenuBar, Widget } from '@lumino/widgets';\n\nimport {\n  defaultNotebookPathOpener,\n  INotebookPathOpener,\n  INotebookShell,\n} from '@jupyter-notebook/application';\n\nimport {\n  caretDownIcon,\n  CommandToolbarButton,\n  launchIcon,\n} from '@jupyterlab/ui-components';\n\n/**\n * The command IDs used by the application plugin.\n */\nnamespace CommandIDs {\n  /**\n   * Launch Jupyter Notebook Tree\n   */\n  export const launchNotebookTree = 'jupyter-notebook:launch-tree';\n\n  /**\n   * Open Jupyter Notebook\n   */\n  export const openNotebook = 'jupyter-notebook:open-notebook';\n\n  /**\n   * Open in JupyterLab\n   */\n  export const openLab = 'jupyter-notebook:open-lab';\n\n  /**\n   * Open in NbClassic\n   */\n  export const openNbClassic = 'jupyter-notebook:open-nbclassic';\n}\n\ninterface ISwitcherChoice {\n  command: string;\n  commandLabel: string;\n  commandDescription: string;\n  buttonLabel: string;\n  urlPrefix: string;\n}\n\n/**\n * A plugin to add custom toolbar items to the notebook page\n */\nconst interfaceSwitcher: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/lab-extension:interface-switcher',\n  description: 'A plugin to add custom toolbar items to the notebook page.',\n  autoStart: true,\n  requires: [ITranslator],\n  optional: [\n    INotebookTracker,\n    ICommandPalette,\n    INotebookPathOpener,\n    INotebookShell,\n    ILabShell,\n    IToolbarWidgetRegistry,\n  ],\n  activate: (\n    app: JupyterFrontEnd,\n    translator: ITranslator,\n    notebookTracker: INotebookTracker | null,\n    palette: ICommandPalette | null,\n    notebookPathOpener: INotebookPathOpener | null,\n    notebookShell: INotebookShell | null,\n    labShell: ILabShell | null,\n    toolbarRegistry: IToolbarWidgetRegistry | null\n  ) => {\n    if (!notebookTracker) {\n      // bail if trying to use this plugin without a notebook tracker\n      return;\n    }\n\n    const { commands, shell } = app;\n    const baseUrl = PageConfig.getBaseUrl();\n    const trans = translator.load('notebook');\n    const nbClassicEnabled =\n      PageConfig.getOption('nbclassic_enabled') === 'true';\n    const switcher = new Menu({ commands });\n    const switcherOptions: ISwitcherChoice[] = [];\n    const opener = notebookPathOpener ?? defaultNotebookPathOpener;\n\n    if (!notebookShell) {\n      switcherOptions.push({\n        command: CommandIDs.openNotebook,\n        commandLabel: trans.__('Notebook'),\n        commandDescription: trans.__('Open in %1', 'Jupyter Notebook'),\n        buttonLabel: 'openNotebook',\n        urlPrefix: `${baseUrl}tree`,\n      });\n    }\n\n    if (!labShell) {\n      switcherOptions.push({\n        command: CommandIDs.openLab,\n        commandLabel: trans.__('JupyterLab'),\n        commandDescription: trans.__('Open in %1', 'JupyterLab'),\n        buttonLabel: 'openLab',\n        urlPrefix: `${baseUrl}doc/tree`,\n      });\n    }\n\n    if (nbClassicEnabled) {\n      switcherOptions.push({\n        command: CommandIDs.openNbClassic,\n        commandLabel: trans.__('NbClassic'),\n        commandDescription: trans.__('Open in %1', 'NbClassic'),\n        buttonLabel: 'openNbClassic',\n        urlPrefix: `${baseUrl}nbclassic/notebooks`,\n      });\n    }\n\n    const isEnabled = () => {\n      return (\n        notebookTracker.currentWidget !== null &&\n        notebookTracker.currentWidget === shell.currentWidget\n      );\n    };\n\n    const addSwitcherCommand = (option: ISwitcherChoice) => {\n      const { command, commandLabel, commandDescription, urlPrefix } = option;\n\n      const execute = () => {\n        const current = notebookTracker.currentWidget;\n        if (!current) {\n          return;\n        }\n        opener.open({\n          prefix: urlPrefix,\n          path: current.context.path,\n        });\n      };\n\n      commands.addCommand(command, {\n        label: (args) => {\n          if (args.noLabel) {\n            return '';\n          }\n          if (args.isMenu || args.isPalette) {\n            return commandDescription;\n          }\n          return commandLabel;\n        },\n        caption: commandLabel,\n        execute,\n        isEnabled,\n      });\n\n      if (palette) {\n        palette.addItem({\n          command,\n          category: 'Other',\n          args: { isPalette: true },\n        });\n      }\n    };\n\n    switcherOptions.forEach((option) => {\n      const { command } = option;\n      addSwitcherCommand(option);\n      switcher.addItem({ command });\n    });\n\n    let toolbarFactory: (panel: NotebookPanel) => Widget;\n    if (switcherOptions.length === 1) {\n      toolbarFactory = (panel: NotebookPanel) => {\n        const toolbarButton = new CommandToolbarButton({\n          commands,\n          id: switcherOptions[0].command,\n          label: switcherOptions[0].commandLabel,\n          icon: launchIcon,\n        });\n        toolbarButton.addClass('jp-nb-interface-switcher-button');\n        return toolbarButton;\n      };\n    } else {\n      const overflowOptions = {\n        overflowMenuOptions: { isVisible: false },\n      };\n      const menubar = new MenuBar(overflowOptions);\n      switcher.title.label = trans.__('Open in...');\n      switcher.title.icon = caretDownIcon;\n      menubar.addMenu(switcher);\n\n      toolbarFactory = (panel: NotebookPanel) => {\n        const menubar = new MenuBar(overflowOptions);\n        menubar.addMenu(switcher);\n        menubar.addClass('jp-InterfaceSwitcher');\n        return menubar;\n      };\n    }\n\n    if (toolbarRegistry) {\n      toolbarRegistry.addFactory<NotebookPanel>(\n        'Notebook',\n        'interfaceSwitcher',\n        toolbarFactory\n      );\n    }\n  },\n};\n\n/**\n * A plugin to add a command to open the Jupyter Notebook Tree.\n */\nconst launchNotebookTree: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/lab-extension:launch-tree',\n  description: 'A plugin to add a command to open the Jupyter Notebook Tree.',\n  autoStart: true,\n  requires: [ITranslator],\n  optional: [ICommandPalette],\n  activate: (\n    app: JupyterFrontEnd,\n    translator: ITranslator,\n    palette: ICommandPalette | null\n  ): void => {\n    const { commands } = app;\n    const trans = translator.load('notebook');\n    const category = trans.__('Help');\n\n    commands.addCommand(CommandIDs.launchNotebookTree, {\n      label: trans.__('Launch Jupyter Notebook File Browser'),\n      execute: () => {\n        const url = URLExt.join(PageConfig.getBaseUrl(), 'tree');\n        window.open(url);\n      },\n    });\n\n    if (palette) {\n      palette.addItem({ command: CommandIDs.launchNotebookTree, category });\n    }\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [\n  launchNotebookTree,\n  interfaceSwitcher,\n];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/lab-extension/style/base.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n.jp-InterfaceSwitcher {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.jp-InterfaceSwitcher .lm-MenuBar-itemIcon svg {\n  vertical-align: sub;\n}\n\n.jp-nb-interface-switcher-button > .jp-ToolbarButtonComponent::part(content) {\n  flex-direction: row-reverse;\n}\n\n.jp-nb-interface-switcher-button > .jp-ToolbarButtonComponent > svg {\n  padding-left: 3px;\n}\n"
  },
  {
    "path": "packages/lab-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/lab-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/lab-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/notebook-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/notebook-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Notebook Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/cells\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/debugger\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/docmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/notebook\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/toc\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"2.0.4\",\n    \"@lumino/polling\": \"^2.1.5\",\n    \"@lumino/widgets\": \"^2.7.2\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"schemaDir\": \"schema\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/schema/checkpoints.json",
    "content": "{\n  \"title\": \"Notebook checkpoint indicator\",\n  \"description\": \"Notebook checkpoint indicator\",\n  \"jupyter.lab.toolbars\": {\n    \"TopBar\": [{ \"name\": \"checkpoint\", \"rank\": 20 }]\n  },\n  \"properties\": {\n    \"checkpointPollingInterval\": {\n      \"type\": \"number\",\n      \"title\": \"Checkpoint Polling Interval (seconds)\",\n      \"description\": \"How often to check for checkpoints (in seconds). Set to 0 to disable polling.\",\n      \"default\": 30,\n      \"minimum\": 0\n    }\n  },\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/schema/edit-notebook-metadata.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Menu Entries\",\n  \"description\": \"Jupyter Notebook Menu Entries\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-file\",\n        \"items\": [\n          {\n            \"command\": \"notebook:open-tree-tab\",\n            \"rank\": 1\n          }\n        ]\n      },\n      {\n        \"id\": \"jp-mainmenu-edit\",\n        \"items\": [\n          {\n            \"type\": \"separator\",\n            \"rank\": 8.5\n          },\n          {\n            \"command\": \"notebook:edit-metadata\",\n            \"rank\": 8.5\n          },\n          {\n            \"type\": \"separator\",\n            \"rank\": 8.5\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/schema/full-width-notebook.json",
    "content": "{\n  \"title\": \"Jupyter Notebook Full Width Notebook\",\n  \"description\": \"Jupyter Notebook Notebook With settings\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"command\": \"notebook:toggle-full-width\",\n            \"rank\": 4\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {\n    \"fullWidthNotebook\": {\n      \"type\": \"boolean\",\n      \"title\": \"Full Width Notebook\",\n      \"description\": \"Whether to the notebook should take up the full width of the application\",\n      \"default\": false\n    }\n  },\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/schema/kernel-logo.json",
    "content": "{\n  \"title\": \"Kernel logo\",\n  \"description\": \"Kernel logo in the top area\",\n  \"jupyter.lab.toolbars\": {\n    \"TopBar\": [{ \"name\": \"kernelLogo\", \"rank\": 110 }]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/schema/menu-override.json",
    "content": "{\n  \"title\": \"Menu override\",\n  \"description\": \"Override some menu items\",\n  \"jupyter.lab.menus\": {\n    \"main\": [\n      {\n        \"id\": \"jp-mainmenu-view\",\n        \"items\": [\n          {\n            \"command\": \"toc:show-panel\",\n            \"disabled\": true\n          },\n          {\n            \"command\": \"toc:toggle-panel\",\n            \"rank\": 4\n          },\n          {\n            \"command\": \"debugger:show-panel\",\n            \"disabled\": true\n          },\n          {\n            \"command\": \"debugger:toggle-panel\",\n            \"rank\": 5\n          }\n        ]\n      }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/schema/scroll-output.json",
    "content": "{\n  \"jupyter.lab.setting-icon\": \"notebook-ui-components:jupyter\",\n  \"jupyter.lab.setting-icon-label\": \"Jupyter Notebook Notebook\",\n  \"title\": \"Jupyter Notebook Notebook\",\n  \"description\": \"Jupyter Notebook Notebook settings\",\n  \"properties\": {\n    \"autoScrollOutputs\": {\n      \"type\": \"boolean\",\n      \"title\": \"Auto Scroll Outputs\",\n      \"description\": \"Whether to auto scroll the output area when the outputs become too long\",\n      \"default\": true\n    }\n  },\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/notebook-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport {\n  ISessionContext,\n  DOMUtils,\n  IToolbarWidgetRegistry,\n  ICommandPalette,\n} from '@jupyterlab/apputils';\n\nimport { Cell, CodeCell } from '@jupyterlab/cells';\n\nimport { PageConfig, Text, Time, URLExt } from '@jupyterlab/coreutils';\n\nimport { IDebugger, IDebuggerSidebar } from '@jupyterlab/debugger';\n\nimport { IDocumentManager } from '@jupyterlab/docmanager';\n\nimport { DocumentRegistry } from '@jupyterlab/docregistry';\n\nimport { IMainMenu } from '@jupyterlab/mainmenu';\n\nimport {\n  NotebookPanel,\n  INotebookTracker,\n  INotebookTools,\n} from '@jupyterlab/notebook';\n\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\n\nimport { ITableOfContentsTracker } from '@jupyterlab/toc';\n\nimport { ITranslator, nullTranslator } from '@jupyterlab/translation';\n\nimport { INotebookShell } from '@jupyter-notebook/application';\n\nimport { find } from '@lumino/algorithm';\n\nimport { Poll } from '@lumino/polling';\n\nimport { Widget } from '@lumino/widgets';\n\nimport { TrustedComponent } from './trusted';\n\n/**\n * The class for kernel status errors.\n */\nconst KERNEL_STATUS_ERROR_CLASS = 'jp-NotebookKernelStatus-error';\n\n/**\n * The class for kernel status warnings.\n */\nconst KERNEL_STATUS_WARN_CLASS = 'jp-NotebookKernelStatus-warn';\n\n/**\n * The class for kernel status infos.\n */\nconst KERNEL_STATUS_INFO_CLASS = 'jp-NotebookKernelStatus-info';\n\n/**\n * The class to fade out the kernel status.\n */\nconst KERNEL_STATUS_FADE_OUT_CLASS = 'jp-NotebookKernelStatus-fade';\n\n/**\n * The class for scrolled outputs\n */\nconst SCROLLED_OUTPUTS_CLASS = 'jp-mod-outputsScrolled';\n\n/**\n * The class for the full width notebook\n */\nconst FULL_WIDTH_NOTEBOOK_CLASS = 'jp-mod-fullwidth';\n\n/**\n * The command IDs used by the notebook plugins.\n */\nnamespace CommandIDs {\n  /**\n   * A command to open right sidebar for Editing Notebook Metadata\n   */\n  export const openEditNotebookMetadata = 'notebook:edit-metadata';\n\n  /**\n   * A command to toggle full width of the notebook\n   */\n  export const toggleFullWidth = 'notebook:toggle-full-width';\n}\n\n/**\n * A plugin for the checkpoint indicator\n */\nconst checkpoints: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:checkpoints',\n  description: 'A plugin for the checkpoint indicator.',\n  autoStart: true,\n  requires: [IDocumentManager, ITranslator],\n  optional: [INotebookShell, IToolbarWidgetRegistry, ISettingRegistry],\n  activate: (\n    app: JupyterFrontEnd,\n    docManager: IDocumentManager,\n    translator: ITranslator,\n    notebookShell: INotebookShell | null,\n    toolbarRegistry: IToolbarWidgetRegistry | null,\n    settingRegistry: ISettingRegistry | null\n  ) => {\n    const { shell } = app;\n    const trans = translator.load('notebook');\n    const node = document.createElement('div');\n\n    if (toolbarRegistry) {\n      toolbarRegistry.addFactory('TopBar', 'checkpoint', (toolbar) => {\n        const widget = new Widget({ node });\n        widget.id = DOMUtils.createDomID();\n        widget.addClass('jp-NotebookCheckpoint');\n        return widget;\n      });\n    }\n\n    const getCurrent = () => {\n      const current = shell.currentWidget;\n      if (!current) {\n        return null;\n      }\n      const context = docManager.contextForWidget(current);\n      if (!context) {\n        return null;\n      }\n      return context;\n    };\n\n    const updateCheckpointDisplay = async () => {\n      const current = getCurrent();\n      if (!current) {\n        return;\n      }\n      const checkpoints = await current.listCheckpoints();\n      if (!checkpoints || !checkpoints.length) {\n        node.textContent = '';\n        return;\n      }\n      const checkpoint = checkpoints[checkpoints.length - 1];\n      node.textContent = trans.__(\n        'Last Checkpoint: %1',\n        Time.formatHuman(new Date(checkpoint.last_modified))\n      );\n    };\n\n    const onSaveState = async (\n      sender: DocumentRegistry.IContext<DocumentRegistry.IModel>,\n      state: DocumentRegistry.SaveState\n    ) => {\n      if (state !== 'completed') {\n        return;\n      }\n      // Add a small artificial delay so that the UI can pick up the newly created checkpoint.\n      // Since the save state signal is emitted after a file save, but not after a checkpoint has been created.\n      setTimeout(() => {\n        void updateCheckpointDisplay();\n      }, 500);\n    };\n\n    const onChange = async () => {\n      const context = getCurrent();\n      if (!context) {\n        return;\n      }\n\n      context.saveState.disconnect(onSaveState);\n      context.saveState.connect(onSaveState);\n\n      await updateCheckpointDisplay();\n    };\n\n    if (notebookShell) {\n      notebookShell.currentChanged.connect(onChange);\n    }\n\n    let checkpointPollingInterval = 30; // Default 30 seconds\n    let poll: Poll | null = null;\n\n    const createPoll = () => {\n      if (poll) {\n        poll.dispose();\n      }\n      if (checkpointPollingInterval > 0) {\n        poll = new Poll({\n          auto: true,\n          factory: () => updateCheckpointDisplay(),\n          frequency: {\n            interval: checkpointPollingInterval * 1000,\n            backoff: false,\n          },\n          standby: 'when-hidden',\n        });\n      }\n    };\n\n    const updateSettings = (settings: ISettingRegistry.ISettings): void => {\n      checkpointPollingInterval = settings.get('checkpointPollingInterval')\n        .composite as number;\n      createPoll();\n    };\n\n    if (settingRegistry) {\n      const loadSettings = settingRegistry.load(checkpoints.id);\n      Promise.all([loadSettings, app.restored])\n        .then(([settings]) => {\n          updateSettings(settings);\n          settings.changed.connect(updateSettings);\n        })\n        .catch((reason: Error) => {\n          console.error(\n            `Failed to load settings for ${checkpoints.id}: ${reason.message}`\n          );\n          // Fall back to creating poll with default settings\n          createPoll();\n        });\n    } else {\n      // Create poll with default settings\n      createPoll();\n    }\n  },\n};\n\n/**\n * Add a command to close the browser tab when clicking on \"Close and Shut Down\"\n */\nconst closeTab: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:close-tab',\n  description:\n    'Add a command to close the browser tab when clicking on \"Close and Shut Down\".',\n  autoStart: true,\n  requires: [IMainMenu],\n  optional: [ITranslator],\n  activate: (\n    app: JupyterFrontEnd,\n    menu: IMainMenu,\n    translator: ITranslator | null\n  ) => {\n    const { commands } = app;\n    translator = translator ?? nullTranslator;\n    const trans = translator.load('notebook');\n\n    const id = 'notebook:close-and-halt';\n    commands.addCommand(id, {\n      label: trans.__('Close and Shut Down Notebook'),\n      execute: async () => {\n        // Shut the kernel down, without confirmation\n        await commands.execute('notebook:shutdown-kernel', { activate: false });\n        window.close();\n      },\n    });\n    menu.fileMenu.closeAndCleaners.add({\n      id,\n      // use a small rank to it takes precedence over the default\n      // shut down action for the notebook\n      rank: 0,\n    });\n  },\n};\n\n/**\n * Add a command to open the tree view from the notebook view\n */\nconst openTreeTab: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:open-tree-tab',\n  description:\n    'Add a command to open a browser tab on the tree view when clicking \"Open...\".',\n  autoStart: true,\n  optional: [ITranslator],\n  activate: (app: JupyterFrontEnd, translator: ITranslator | null) => {\n    const { commands } = app;\n    translator = translator ?? nullTranslator;\n    const trans = translator.load('notebook');\n\n    const id = 'notebook:open-tree-tab';\n    commands.addCommand(id, {\n      label: trans.__('Open…'),\n      execute: async () => {\n        const url = URLExt.join(PageConfig.getBaseUrl(), 'tree');\n        window.open(url);\n      },\n    });\n  },\n};\n\n/**\n * A plugin to set the notebook to full width.\n */\nconst fullWidthNotebook: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:full-width-notebook',\n  description: 'A plugin to set the notebook to full width.',\n  autoStart: true,\n  requires: [INotebookTracker],\n  optional: [ICommandPalette, ISettingRegistry, ITranslator],\n  activate: (\n    app: JupyterFrontEnd,\n    tracker: INotebookTracker,\n    palette: ICommandPalette | null,\n    settingRegistry: ISettingRegistry | null,\n    translator: ITranslator | null\n  ) => {\n    const trans = (translator ?? nullTranslator).load('notebook');\n\n    let fullWidth = false;\n\n    const toggleFullWidth = () => {\n      const current = tracker.currentWidget;\n      fullWidth = !fullWidth;\n      if (!current) {\n        return;\n      }\n      const content = current;\n      content.toggleClass(FULL_WIDTH_NOTEBOOK_CLASS, fullWidth);\n    };\n\n    let notebookSettings: ISettingRegistry.ISettings;\n\n    if (settingRegistry) {\n      const loadSettings = settingRegistry.load(fullWidthNotebook.id);\n\n      const updateSettings = (settings: ISettingRegistry.ISettings): void => {\n        const newFullWidth = settings.get('fullWidthNotebook')\n          .composite as boolean;\n        if (newFullWidth !== fullWidth) {\n          toggleFullWidth();\n        }\n      };\n\n      Promise.all([loadSettings, app.restored])\n        .then(([settings]) => {\n          notebookSettings = settings;\n          updateSettings(settings);\n          settings.changed.connect((settings) => {\n            updateSettings(settings);\n          });\n        })\n        .catch((reason: Error) => {\n          console.error(reason.message);\n        });\n    }\n\n    app.commands.addCommand(CommandIDs.toggleFullWidth, {\n      label: trans.__('Enable Full Width Notebook'),\n      execute: () => {\n        toggleFullWidth();\n        if (notebookSettings) {\n          notebookSettings.set('fullWidthNotebook', fullWidth);\n        }\n      },\n      isEnabled: () => tracker.currentWidget !== null,\n      isToggled: () => fullWidth,\n    });\n\n    if (palette) {\n      palette.addItem({\n        command: CommandIDs.toggleFullWidth,\n        category: 'Notebook Operations',\n      });\n    }\n  },\n};\n\n/**\n * The kernel logo plugin.\n */\nconst kernelLogo: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:kernel-logo',\n  description: 'The kernel logo plugin.',\n  autoStart: true,\n  requires: [INotebookShell],\n  optional: [IToolbarWidgetRegistry],\n  activate: (\n    app: JupyterFrontEnd,\n    shell: INotebookShell,\n    toolbarRegistry: IToolbarWidgetRegistry | null\n  ) => {\n    const { serviceManager } = app;\n\n    const node = document.createElement('div');\n    const img = document.createElement('img');\n\n    const onChange = async () => {\n      const current = shell.currentWidget;\n      if (!(current instanceof NotebookPanel)) {\n        return;\n      }\n\n      if (!node.hasChildNodes()) {\n        node.appendChild(img);\n      }\n\n      await current.sessionContext.ready;\n      current.sessionContext.kernelChanged.disconnect(onChange);\n      current.sessionContext.kernelChanged.connect(onChange);\n\n      const name = current.sessionContext.session?.kernel?.name ?? '';\n      const spec = serviceManager.kernelspecs?.specs?.kernelspecs[name];\n      if (!spec) {\n        node.childNodes[0].remove();\n        return;\n      }\n\n      const kernelIconUrl = spec.resources['logo-64x64'];\n      if (!kernelIconUrl) {\n        node.childNodes[0].remove();\n        return;\n      }\n\n      img.src = kernelIconUrl;\n      img.title = spec.display_name;\n    };\n\n    if (toolbarRegistry) {\n      toolbarRegistry.addFactory('TopBar', 'kernelLogo', (toolbar) => {\n        const widget = new Widget({ node });\n        widget.addClass('jp-NotebookKernelLogo');\n        return widget;\n      });\n    }\n\n    app.started.then(() => {\n      shell.currentChanged.connect(onChange);\n    });\n  },\n};\n\n/**\n * A plugin to display the kernel status;\n */\nconst kernelStatus: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:kernel-status',\n  description: 'A plugin to display the kernel status.',\n  autoStart: true,\n  requires: [INotebookShell, ITranslator],\n  activate: (\n    app: JupyterFrontEnd,\n    shell: INotebookShell,\n    translator: ITranslator\n  ) => {\n    const trans = translator.load('notebook');\n    const widget = new Widget();\n    widget.addClass('jp-NotebookKernelStatus');\n    app.shell.add(widget, 'menu', { rank: 10_010 });\n\n    const removeClasses = () => {\n      widget.removeClass(KERNEL_STATUS_ERROR_CLASS);\n      widget.removeClass(KERNEL_STATUS_WARN_CLASS);\n      widget.removeClass(KERNEL_STATUS_INFO_CLASS);\n      widget.removeClass(KERNEL_STATUS_FADE_OUT_CLASS);\n    };\n\n    const onStatusChanged = (sessionContext: ISessionContext) => {\n      const status = sessionContext.kernelDisplayStatus;\n      let text = `Kernel ${Text.titleCase(status)}`;\n      removeClasses();\n      switch (status) {\n        case 'busy':\n        case 'idle':\n          text = '';\n          widget.addClass(KERNEL_STATUS_FADE_OUT_CLASS);\n          break;\n        case 'dead':\n        case 'terminating':\n          widget.addClass(KERNEL_STATUS_ERROR_CLASS);\n          break;\n        case 'unknown':\n          widget.addClass(KERNEL_STATUS_WARN_CLASS);\n          break;\n        default:\n          widget.addClass(KERNEL_STATUS_INFO_CLASS);\n          widget.addClass(KERNEL_STATUS_FADE_OUT_CLASS);\n          break;\n      }\n      widget.node.textContent = trans.__(text);\n    };\n\n    const onChange = async () => {\n      const current = shell.currentWidget;\n      if (!(current instanceof NotebookPanel)) {\n        return;\n      }\n      const sessionContext = current.sessionContext;\n      sessionContext.statusChanged.connect(onStatusChanged);\n    };\n\n    shell.currentChanged.connect(onChange);\n  },\n};\n\n/**\n * A plugin to enable scrolling for outputs by default.\n * Mimic the logic from the classic notebook, as found here:\n * https://github.com/jupyter/notebook/blob/a9a31c096eeffe1bff4e9164c6a0442e0e13cdb3/notebook/static/notebook/js/outputarea.js#L96-L120\n */\nconst scrollOutput: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:scroll-output',\n  description: 'A plugin to enable scrolling for outputs by default.',\n  autoStart: true,\n  requires: [INotebookTracker],\n  optional: [ISettingRegistry],\n  activate: async (\n    app: JupyterFrontEnd,\n    tracker: INotebookTracker,\n    settingRegistry: ISettingRegistry | null\n  ) => {\n    const autoScrollThreshold = 100;\n    let autoScrollOutputs = true;\n\n    // decide whether to scroll the output of the cell based on some heuristics\n    const autoScroll = (cell: CodeCell) => {\n      if (!autoScrollOutputs) {\n        // bail if disabled via the settings\n        cell.removeClass(SCROLLED_OUTPUTS_CLASS);\n        return;\n      }\n      const { outputArea } = cell;\n      // respect cells with an explicit scrolled state\n      const scrolled = cell.model.getMetadata('scrolled');\n      if (scrolled !== undefined) {\n        return;\n      }\n      const { node } = outputArea;\n      const height = node.scrollHeight;\n      const fontSize = parseFloat(node.style.fontSize.replace('px', ''));\n      const lineHeight = (fontSize || 14) * 1.3;\n      // do not set via cell.outputScrolled = true, as this would\n      // otherwise synchronize the scrolled state to the notebook metadata\n      const scroll = height > lineHeight * autoScrollThreshold;\n      cell.toggleClass(SCROLLED_OUTPUTS_CLASS, scroll);\n    };\n\n    const handlers: { [id: string]: () => void } = {};\n\n    const setAutoScroll = (cell: Cell) => {\n      if (cell.model.type === 'code') {\n        const codeCell = cell as CodeCell;\n        const id = codeCell.model.id;\n        autoScroll(codeCell);\n        if (handlers[id]) {\n          codeCell.outputArea.model.changed.disconnect(handlers[id]);\n        }\n        handlers[id] = () => autoScroll(codeCell);\n        codeCell.outputArea.model.changed.connect(handlers[id]);\n      }\n    };\n\n    tracker.widgetAdded.connect((sender, notebook) => {\n      // when the notebook widget is created, process all the cells\n      notebook.sessionContext.ready.then(() => {\n        notebook.content.widgets.forEach(setAutoScroll);\n      });\n\n      notebook.model?.cells.changed.connect((sender, args) => {\n        notebook.content.widgets.forEach(setAutoScroll);\n      });\n    });\n\n    if (settingRegistry) {\n      const loadSettings = settingRegistry.load(scrollOutput.id);\n      const updateSettings = (settings: ISettingRegistry.ISettings): void => {\n        autoScrollOutputs = settings.get('autoScrollOutputs')\n          .composite as boolean;\n      };\n\n      Promise.all([loadSettings, app.restored])\n        .then(([settings]) => {\n          updateSettings(settings);\n          settings.changed.connect((settings) => {\n            updateSettings(settings);\n          });\n        })\n        .catch((reason: Error) => {\n          console.error(reason.message);\n        });\n    }\n  },\n};\n\n/**\n * A plugin to add the NotebookTools to the side panel;\n */\nconst notebookToolsWidget: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:notebook-tools',\n  description: 'A plugin to add the NotebookTools to the side panel.',\n  autoStart: true,\n  requires: [INotebookShell],\n  optional: [INotebookTools],\n  activate: (\n    app: JupyterFrontEnd,\n    shell: INotebookShell,\n    notebookTools: INotebookTools | null\n  ) => {\n    const onChange = async () => {\n      const current = shell.currentWidget;\n      if (!(current instanceof NotebookPanel)) {\n        return;\n      }\n\n      // Add the notebook tools in right area.\n      if (notebookTools) {\n        shell.add(notebookTools, 'right', { type: 'Property Inspector' });\n      }\n    };\n    shell.currentChanged.connect(onChange);\n  },\n};\n\n/**\n * A plugin to update the tab icon based on the kernel status.\n */\nconst tabIcon: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:tab-icon',\n  description: 'A plugin to update the tab icon based on the kernel status.',\n  autoStart: true,\n  requires: [INotebookTracker],\n  activate: (app: JupyterFrontEnd, tracker: INotebookTracker) => {\n    // the favicons are provided by Jupyter Server\n    const baseURL = PageConfig.getBaseUrl();\n    const notebookIcon = URLExt.join(\n      baseURL,\n      'static/favicons/favicon-notebook.ico'\n    );\n    const busyIcon = URLExt.join(baseURL, 'static/favicons/favicon-busy-1.ico');\n\n    const updateBrowserFavicon = (\n      status: ISessionContext.KernelDisplayStatus\n    ) => {\n      const link = document.querySelector(\n        \"link[rel*='icon']\"\n      ) as HTMLLinkElement;\n      switch (status) {\n        case 'busy':\n          link.href = busyIcon;\n          break;\n        case 'idle':\n          link.href = notebookIcon;\n          break;\n      }\n    };\n\n    const onChange = async () => {\n      const current = tracker.currentWidget;\n      const sessionContext = current?.sessionContext;\n      if (!sessionContext) {\n        return;\n      }\n\n      sessionContext.statusChanged.connect(() => {\n        const status = sessionContext.kernelDisplayStatus;\n        updateBrowserFavicon(status);\n      });\n    };\n\n    tracker.currentChanged.connect(onChange);\n  },\n};\n\n/**\n * A plugin that adds a Trusted indicator to the menu area\n */\nconst trusted: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:trusted',\n  description: 'A plugin that adds a Trusted indicator to the menu area.',\n  autoStart: true,\n  requires: [INotebookShell, ITranslator],\n  activate: (\n    app: JupyterFrontEnd,\n    notebookShell: INotebookShell,\n    translator: ITranslator\n  ): void => {\n    const onChange = async () => {\n      const current = notebookShell.currentWidget;\n      if (!(current instanceof NotebookPanel)) {\n        return;\n      }\n\n      const notebook = current.content;\n      await current.context.ready;\n\n      const widget = TrustedComponent.create({ notebook, translator });\n      notebookShell.add(widget, 'menu', {\n        rank: 11_000,\n      });\n    };\n\n    notebookShell.currentChanged.connect(onChange);\n  },\n};\n\n/**\n * Add a command to open right sidebar for Editing Notebook Metadata when clicking on \"Edit Notebook Metadata\" under Edit menu\n */\nconst editNotebookMetadata: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:edit-notebook-metadata',\n  description:\n    'Add a command to open right sidebar for Editing Notebook Metadata when clicking on \"Edit Notebook Metadata\" under Edit menu',\n  autoStart: true,\n  optional: [ICommandPalette, ITranslator, INotebookTools],\n  activate: (\n    app: JupyterFrontEnd,\n    palette: ICommandPalette | null,\n    translator: ITranslator | null,\n    notebookTools: INotebookTools | null\n  ) => {\n    const { commands, shell } = app;\n    translator = translator ?? nullTranslator;\n    const trans = translator.load('notebook');\n\n    commands.addCommand(CommandIDs.openEditNotebookMetadata, {\n      label: trans.__('Edit Notebook Metadata'),\n      execute: async () => {\n        const command = 'application:toggle-panel';\n        const args = {\n          side: 'right',\n          title: 'Show Notebook Tools',\n          id: 'notebook-tools',\n        };\n\n        // Check if Show Notebook Tools (Right Sidebar) is open (expanded)\n        if (!commands.isToggled(command, args)) {\n          await commands.execute(command, args).then((_) => {\n            // For expanding the 'Advanced Tools' section (default: collapsed)\n            if (notebookTools) {\n              const tools = (notebookTools?.layout as any).widgets;\n              tools.forEach((tool: any) => {\n                if (\n                  tool.widget.title.label === trans.__('Advanced Tools') &&\n                  tool.collapsed\n                ) {\n                  tool.toggle();\n                }\n              });\n            }\n          });\n        }\n      },\n      isVisible: () =>\n        shell.currentWidget !== null &&\n        shell.currentWidget instanceof NotebookPanel,\n    });\n\n    if (palette) {\n      palette.addItem({\n        command: CommandIDs.openEditNotebookMetadata,\n        category: 'Notebook Operations',\n      });\n    }\n  },\n};\n\n/**\n * A plugin to replace the menu item activating the TOC panel, to allow toggling it.\n */\nconst overrideMenuItems: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/notebook-extension:menu-override',\n  description: 'A plugin to override some menu items',\n  autoStart: true,\n  optional: [\n    IDebuggerSidebar,\n    IMainMenu,\n    INotebookShell,\n    ITableOfContentsTracker,\n    ITranslator,\n  ],\n  activate: (\n    app: JupyterFrontEnd,\n    debuggerSidebar: IDebugger.ISidebar | null,\n    mainMenu: IMainMenu | null,\n    shell: INotebookShell | null,\n    tocTracker: ITableOfContentsTracker | null,\n    translator: ITranslator | null\n  ) => {\n    if (!mainMenu || !shell) {\n      return;\n    }\n    const trans = (translator ?? nullTranslator).load('notebook');\n    const { commands } = app;\n\n    if (tocTracker) {\n      const TOC_PANEL_ID = 'table-of-contents';\n      commands.addCommand('toc:toggle-panel', {\n        label: trans.__('Table of Contents'),\n        isToggleable: true,\n        isToggled: () => {\n          const area = shell.getWidgetArea(TOC_PANEL_ID);\n          if (!area) {\n            return false;\n          }\n          const widget = find(\n            shell.widgets(area as INotebookShell.Area),\n            (w) => w.id === TOC_PANEL_ID\n          );\n          if (!widget) {\n            return false;\n          }\n          return shell.isSidePanelVisible(area) && widget.isVisible;\n        },\n        execute: () => {\n          const area = shell.getWidgetArea(TOC_PANEL_ID);\n          if (!area) {\n            return;\n          }\n          const widget = find(\n            shell.widgets(area as INotebookShell.Area),\n            (w) => w.id === TOC_PANEL_ID\n          );\n          if (shell.isSidePanelVisible(area) && widget?.isVisible) {\n            shell.collapse(area);\n          } else {\n            shell.activateById(TOC_PANEL_ID);\n          }\n        },\n        describedBy: {\n          args: {\n            type: 'object',\n            properties: {},\n          },\n        },\n      });\n    }\n\n    if (debuggerSidebar) {\n      const DEBUGGER_PANEL_ID = 'jp-debugger-sidebar';\n      commands.addCommand('debugger:toggle-panel', {\n        label: trans.__('Debugger Panel'),\n        isToggleable: true,\n        isToggled: () => {\n          const area = shell.getWidgetArea(DEBUGGER_PANEL_ID);\n          if (!area) {\n            return false;\n          }\n          const widget = find(\n            shell.widgets(area as INotebookShell.Area),\n            (w) => w.id === DEBUGGER_PANEL_ID\n          );\n          if (!widget) {\n            return false;\n          }\n          return shell.isSidePanelVisible(area) && widget.isVisible;\n        },\n        execute: () => {\n          const area = shell.getWidgetArea(DEBUGGER_PANEL_ID);\n          if (!area) {\n            return;\n          }\n          const widget = find(\n            shell.widgets(area as INotebookShell.Area),\n            (w) => w.id === DEBUGGER_PANEL_ID\n          );\n          if (shell.isSidePanelVisible(area) && widget?.isVisible) {\n            shell.collapse(area);\n          } else {\n            shell.activateById(DEBUGGER_PANEL_ID);\n          }\n        },\n        describedBy: {\n          args: {\n            type: 'object',\n            properties: {},\n          },\n        },\n      });\n    }\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [\n  checkpoints,\n  closeTab,\n  openTreeTab,\n  editNotebookMetadata,\n  fullWidthNotebook,\n  kernelLogo,\n  kernelStatus,\n  notebookToolsWidget,\n  overrideMenuItems,\n  scrollOutput,\n  tabIcon,\n  trusted,\n];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/notebook-extension/src/trusted.tsx",
    "content": "import { ReactWidget } from '@jupyterlab/apputils';\n\nimport { Notebook, NotebookActions } from '@jupyterlab/notebook';\n\nimport { ITranslator } from '@jupyterlab/translation';\n\nimport React, { useEffect, useState } from 'react';\n\n/**\n * Check if a notebook is trusted\n * @param notebook The notebook to check\n * @returns true if the notebook is trusted, false otherwise\n */\nconst isTrusted = (notebook: Notebook): boolean => {\n  const model = notebook.model;\n  if (!model) {\n    return false;\n  }\n  const cells = Array.from(model.cells);\n  let total = 0;\n  let trusted = 0;\n\n  for (const currentCell of cells) {\n    if (currentCell.type !== 'code') {\n      continue;\n    }\n    total++;\n    if (currentCell.trusted) {\n      trusted++;\n    }\n  }\n\n  return trusted === total;\n};\n\n/**\n * A React component to display the Trusted badge in the menu bar.\n * @param notebook The Notebook\n * @param translator The Translation service\n */\nconst TrustedButton = ({\n  notebook,\n  translator,\n}: {\n  notebook: Notebook;\n  translator: ITranslator;\n}): JSX.Element => {\n  const trans = translator.load('notebook');\n  const [trusted, setTrusted] = useState(isTrusted(notebook));\n\n  const checkTrust = () => {\n    const v = isTrusted(notebook);\n    setTrusted(v);\n  };\n\n  const trust = async () => {\n    await NotebookActions.trust(notebook, translator);\n    checkTrust();\n  };\n\n  useEffect(() => {\n    notebook.modelContentChanged.connect(checkTrust);\n    notebook.activeCellChanged.connect(checkTrust);\n    checkTrust();\n    return () => {\n      notebook.modelContentChanged.disconnect(checkTrust);\n      notebook.activeCellChanged.disconnect(checkTrust);\n    };\n  });\n\n  return (\n    <button\n      className={'jp-NotebookTrustedStatus'}\n      style={!trusted ? { cursor: 'pointer' } : { cursor: 'help' }}\n      onClick={() => !trusted && trust()}\n      title={\n        trusted\n          ? trans.__('JavaScript enabled for notebook display')\n          : trans.__('JavaScript disabled for notebook display')\n      }\n    >\n      {trusted ? trans.__('Trusted') : trans.__('Not Trusted')}\n    </button>\n  );\n};\n\n/**\n * A namespace for TrustedComponent static methods.\n */\nexport namespace TrustedComponent {\n  /**\n   * Create a new TrustedComponent\n   *\n   * @param notebook The notebook\n   * @param translator The translator\n   */\n  export const create = ({\n    notebook,\n    translator,\n  }: {\n    notebook: Notebook;\n    translator: ITranslator;\n  }): ReactWidget => {\n    return ReactWidget.create(\n      <TrustedButton notebook={notebook} translator={translator} />\n    );\n  };\n}\n"
  },
  {
    "path": "packages/notebook-extension/style/base.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n|\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n@import './variables.css';\n\n/**\n  Document oriented look for the notebook.\n  This includes changes to the look and feel of the JupyterLab Notebook\n  component like:\n  - scrollbar to the right of the page\n  - drop shadow on the notebook\n  - smaller empty space at the bottom of the notebook\n  - compact view on mobile\n*/\n\n/* Make the notebook take up the full width of the page when jp-mod-fullwidth is set */\n\nbody[data-notebook='notebooks']\n  .jp-NotebookPanel.jp-mod-fullwidth\n  .jp-WindowedPanel-outer {\n  padding-left: unset;\n  padding-right: unset !important;\n  width: unset;\n}\n\n/* Keep the notebook centered on the page */\n\nbody[data-notebook='notebooks'] .jp-NotebookPanel-toolbar {\n  padding-left: calc(calc(100% - var(--jp-notebook-max-width)) * 0.5);\n  padding-right: calc(calc(100% - var(--jp-notebook-max-width)) * 0.5);\n}\n\nbody[data-notebook='notebooks'] .jp-WindowedPanel-outer {\n  width: unset !important;\n  padding-top: unset;\n  padding-left: calc(calc(100% - var(--jp-notebook-max-width)) * 0.5);\n  padding-right: calc(\n    calc(\n        100% - var(--jp-notebook-max-width) - var(--jp-notebook-padding-offset)\n      ) * 0.5\n  ) !important;\n  background: var(--jp-layout-color2);\n}\n\nbody[data-notebook='notebooks'] .jp-WindowedPanel-inner {\n  margin-top: var(--jp-notebook-toolbar-margin-bottom);\n  /* Adjustments for the extra top and bottom notebook padding */\n  margin-bottom: calc(4 * var(--jp-notebook-padding));\n}\n\nbody[data-notebook='notebooks'] .jp-Notebook-cell {\n  background: var(--jp-layout-color0);\n}\n\n/* Empty space at the bottom of the notebook (similar to classic) */\nbody[data-notebook='notebooks']\n  .jp-Notebook.jp-mod-scrollPastEnd\n  .jp-WindowedPanel-outer::after {\n  min-height: 100px;\n}\n\n/* Fix background colors */\n\nbody[data-notebook='notebooks'] .jp-WindowedPanel-outer > * {\n  background: var(--jp-layout-color0);\n}\n\nbody[data-notebook='notebooks']\n  .jp-Notebook.jp-mod-commandMode\n  .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {\n  background: var(--jp-layout-color0) !important;\n}\n\nbody[data-notebook='notebooks']\n  .jp-Notebook\n  .jp-Notebook-cell:not(:first-child)::before {\n  content: ' ';\n  height: 100%;\n  position: absolute;\n  top: 0;\n  width: 11px;\n}\n\n/* Cell toolbar adjustments */\n\nbody[data-notebook='notebooks'] .jp-cell-toolbar {\n  background: unset;\n  box-shadow: unset;\n}\n\n/** first code cell on mobile\n    (keep the selector above the media query)\n*/\nbody[data-notebook='notebooks']\n  .jp-CodeCell[data-windowed-list-index='0']\n  .jp-cell-toolbar {\n  top: unset;\n}\n\n@media only screen and (max-width: 760px) {\n  /* first code cell on mobile */\n  body[data-notebook='notebooks']\n    .jp-CodeCell[data-windowed-list-index='0']\n    .jp-cell-toolbar {\n    top: var(--jp-notebook-padding);\n  }\n\n  body[data-notebook='notebooks'] .jp-MarkdownCell .jp-cell-toolbar,\n  body[data-notebook='notebooks'] .jp-RawCell .jp-cell-toolbar {\n    top: calc(0.5 * var(--jp-notebook-padding));\n  }\n}\n\n/* Tweak the notebook footer (to add a new cell) */\nbody[data-notebook='notebooks'] .jp-Notebook-footer {\n  background: unset;\n  width: 100%;\n  margin-left: unset;\n}\n\n/* Mobile View */\n\nbody[data-format='mobile'] .jp-NotebookCheckpoint {\n  display: none;\n}\n\nbody[data-format='mobile'] .jp-WindowedPanel-outer > *:first-child {\n  margin-top: 0;\n}\n\nbody[data-format='mobile'] .jp-ToolbarButton .jp-DebuggerBugButton {\n  display: none;\n}\n\nbody[data-notebook='notebooks'] .jp-WindowedPanel-viewport {\n  background: var(--jp-layout-color0);\n  box-shadow: var(--jp-elevation-z4);\n\n  /* Extra padding at the top and bottom so the notebook looks nicer */\n  padding-top: calc(2 * var(--jp-notebook-padding));\n  padding-bottom: calc(2 * var(--jp-notebook-padding));\n}\n\n/* Notebook box shadow */\n\nbody[data-notebook='notebooks']\n  .jp-Notebook\n  > *:first-child:last-child::before {\n  content: '';\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  box-shadow: 0px 0px 12px 1px var(--jp-shadow-umbra-color);\n}\n\n/* Additional customizations of the components on the notebook page */\n\n.jp-NotebookKernelLogo {\n  flex: 0 0 auto;\n  display: flex;\n  align-items: center;\n  text-align: center;\n  margin-right: 8px;\n}\n\n.jp-NotebookKernelLogo img {\n  max-width: 28px;\n  max-height: 28px;\n  display: flex;\n}\n\n.jp-NotebookKernelStatus {\n  margin: 0;\n  font-weight: normal;\n  font-size: var(--jp-ui-font-size1);\n  color: var(--jp-ui-font-color0);\n  font-family: var(--jp-ui-font-family);\n  line-height: var(--jp-private-title-panel-height);\n  padding-left: var(--jp-kernel-status-padding);\n  padding-right: var(--jp-kernel-status-padding);\n}\n\n.jp-NotebookKernelStatus-error {\n  background-color: var(--jp-error-color0);\n}\n\n.jp-NotebookKernelStatus-warn {\n  background-color: var(--jp-warn-color0);\n}\n\n.jp-NotebookKernelStatus-info {\n  background-color: var(--jp-info-color0);\n}\n\n.jp-NotebookKernelStatus-fade {\n  animation: 0.5s fade-out forwards;\n}\n\n.jp-NotebookTrustedStatus {\n  background: var(--jp-layout-color1);\n  color: var(--jp-ui-font-color1);\n  margin-top: 4px;\n  margin-bottom: 4px;\n  border: solid 1px var(--jp-border-color2);\n  cursor: help;\n}\n\n.jp-NotebookTrustedStatus-not-trusted {\n  cursor: pointer;\n}\n\n@keyframes fade-out {\n  0% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0;\n  }\n}\n\n#jp-title h1 {\n  cursor: pointer;\n  font-size: 18px;\n  margin: 0;\n  font-weight: normal;\n  color: var(--jp-ui-font-color0);\n  font-family: var(--jp-ui-font-family);\n  line-height: calc(1.5 * var(--jp-private-title-panel-height));\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n#jp-title h1:hover {\n  background: var(--jp-layout-color2);\n}\n\n.jp-NotebookCheckpoint {\n  font-size: 14px;\n  margin-left: 5px;\n  margin-right: 5px;\n  font-weight: normal;\n  color: var(--jp-ui-font-color0);\n  font-family: var(--jp-ui-font-family);\n  line-height: calc(1.5 * var(--jp-private-title-panel-height));\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n}\n\n.jp-skiplink {\n  position: absolute;\n  top: -100em;\n}\n\n.jp-skiplink:focus-within {\n  position: absolute;\n  z-index: 10000;\n  top: 0;\n  left: 46%;\n  margin: 0 auto;\n  padding: 1em;\n  width: 15%;\n  box-shadow: var(--jp-elevation-z4);\n  border-radius: 4px;\n  background: var(--jp-layout-color0);\n  text-align: center;\n}\n\n.jp-skiplink:focus-within a {\n  text-decoration: underline;\n  color: var(--jp-content-link-color);\n}\n"
  },
  {
    "path": "packages/notebook-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/notebook-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/notebook-extension/style/variables.css",
    "content": ":root {\n  --jp-notebook-toolbar-margin-bottom: 20px;\n  --jp-notebook-padding-offset: 20px;\n\n  --jp-kernel-status-padding: 5px;\n}\n"
  },
  {
    "path": "packages/notebook-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "packages/terminal-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/terminal-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Terminal Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/terminal\": \"~4.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"^2.0.4\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/terminal-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  IRouter,\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport { PageConfig, URLExt } from '@jupyterlab/coreutils';\n\nimport { ITerminalTracker } from '@jupyterlab/terminal';\n\nimport {\n  INotebookPathOpener,\n  defaultNotebookPathOpener,\n} from '@jupyter-notebook/application';\n\nimport { find } from '@lumino/algorithm';\n\n/**\n * A plugin to open terminals in a new tab\n */\nconst opener: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/terminal-extension:opener',\n  description: 'A plugin to open terminals in a new tab.',\n  requires: [IRouter, ITerminalTracker],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd,\n    router: IRouter,\n    tracker: ITerminalTracker\n  ) => {\n    const { commands } = app;\n    const terminalPattern = new RegExp('/terminals/(.*)');\n\n    const command = 'router:terminal';\n    commands.addCommand(command, {\n      execute: (args: any) => {\n        const parsed = args as IRouter.ILocation;\n        const matches = parsed.path.match(terminalPattern);\n        if (!matches) {\n          return;\n        }\n        const [, name] = matches;\n        if (!name) {\n          return;\n        }\n\n        tracker.widgetAdded.connect((send, terminal) => {\n          terminal.content.setOption('closeOnExit', false);\n        });\n        commands.execute('terminal:open', { name });\n      },\n    });\n\n    router.register({ command, pattern: terminalPattern });\n  },\n};\n\n/**\n * Open terminals in a new tab.\n */\nconst redirect: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/terminal-extension:redirect',\n  description: 'Open terminals in a new tab.',\n  requires: [ITerminalTracker],\n  optional: [INotebookPathOpener],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd,\n    tracker: ITerminalTracker,\n    notebookPathOpener: INotebookPathOpener | null\n  ) => {\n    const baseUrl = PageConfig.getBaseUrl();\n    const opener = notebookPathOpener ?? defaultNotebookPathOpener;\n\n    tracker.widgetAdded.connect((send, terminal) => {\n      const widget = find(\n        app.shell.widgets('main'),\n        (w) => w.id === terminal.id\n      );\n      if (widget) {\n        // bail if the terminal is already added to the main area\n        return;\n      }\n      const name = terminal.content.session.name;\n      opener.open({\n        prefix: URLExt.join(baseUrl, 'terminals'),\n        path: name,\n        target: '_blank',\n      });\n\n      // dispose the widget since it is not used on this page\n      terminal.dispose();\n    });\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [opener, redirect];\n\nexport default plugins;\n"
  },
  {
    "path": "packages/terminal-extension/style/base.css",
    "content": ""
  },
  {
    "path": "packages/terminal-extension/style/index.css",
    "content": "@import url('./base.css');\n"
  },
  {
    "path": "packages/terminal-extension/style/index.js",
    "content": "import './base.css';\n"
  },
  {
    "path": "packages/terminal-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/tree/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/tree\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Tree\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/docmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/filebrowser\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mainmenu\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/services\": \"~7.6.0-alpha.4\",\n    \"@jupyterlab/settingregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/statedb\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"^2.0.4\",\n    \"@lumino/commands\": \"^2.3.3\",\n    \"@lumino/coreutils\": \"^2.2.2\",\n    \"@lumino/widgets\": \"^2.7.2\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/tree/src/index.ts",
    "content": "export * from './notebook-tree';\nexport * from './token';\n"
  },
  {
    "path": "packages/tree/src/notebook-tree.ts",
    "content": "import { TabBarSvg } from '@jupyterlab/ui-components';\n\nimport { TabPanel } from '@lumino/widgets';\n\nimport { INotebookTree } from './token';\n\n/**\n * The widget added in main area of the tree view.\n */\nexport class NotebookTreeWidget extends TabPanel implements INotebookTree {\n  /**\n   * Constructor of the NotebookTreeWidget.\n   */\n  constructor() {\n    super({\n      tabPlacement: 'top',\n      tabsMovable: true,\n      renderer: TabBarSvg.defaultRenderer,\n    });\n    this.addClass('jp-TreePanel');\n  }\n}\n"
  },
  {
    "path": "packages/tree/src/token.ts",
    "content": "import { Token } from '@lumino/coreutils';\nimport { TabPanel } from '@lumino/widgets';\n\n/**\n * The INotebookTree interface.\n */\nexport interface INotebookTree extends TabPanel {}\n\n/**\n * The INotebookTree token.\n */\nexport const INotebookTree = new Token<INotebookTree>(\n  '@jupyter-notebook/tree:INotebookTree'\n);\n"
  },
  {
    "path": "packages/tree/style/base.css",
    "content": ".jp-FileBrowser {\n  height: 100%;\n}\n\n.lm-TabPanel {\n  height: 100%;\n}\n\n.jp-TreePanel .lm-TabPanel-tabBar {\n  overflow: visible;\n  min-height: 32px;\n  border-bottom: unset;\n  height: var(--jp-private-toolbar-height);\n}\n\n.jp-TreePanel .lm-TabBar-content {\n  height: 100%;\n}\n\n.jp-TreePanel .lm-TabBar-tab {\n  flex: 0 1 auto;\n  color: var(--jp-ui-font-color0);\n  font-size: var(--jp-ui-font-size1);\n  height: 100%;\n}\n\n.jp-TreePanel .lm-TabBar-tabLabel {\n  padding-left: 5px;\n  padding-right: 5px;\n}\n\n.jp-FileBrowser-toolbar.jp-Toolbar .jp-ToolbarButtonComponent {\n  width: unset;\n}\n\n.jp-FileBrowser-toolbar > .jp-Toolbar-item {\n  flex-direction: column;\n  justify-content: center;\n}\n\n.jp-DropdownMenu .lm-MenuBar-itemIcon svg {\n  vertical-align: sub;\n}\n\njp-button[data-command='filebrowser:refresh'] .jp-ToolbarButtonComponent-label {\n  display: none;\n}\n\n.jp-TreePanel .lm-TabBar-tabIcon svg {\n  vertical-align: sub;\n}\n"
  },
  {
    "path": "packages/tree/style/index.css",
    "content": "@import url('~@jupyterlab/filebrowser/style/index.css');\n\n@import url('./base.css');\n"
  },
  {
    "path": "packages/tree/style/index.js",
    "content": "import '@jupyterlab/filebrowser/style/index.js';\n\nimport './base.css';\n"
  },
  {
    "path": "packages/tree/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/tree-extension/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/tree-extension\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - Tree Extension\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/*.d.ts\",\n    \"lib/*.js.map\",\n    \"lib/*.js\",\n    \"schema/*.json\",\n    \"style/**/*.css\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"docs\": \"typedoc src\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyter-notebook/application\": \"^7.6.0-alpha.4\",\n    \"@jupyter-notebook/tree\": \"^7.6.0-alpha.4\",\n    \"@jupyterlab/application\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/apputils\": \"~4.7.0-alpha.4\",\n    \"@jupyterlab/coreutils\": \"~6.6.0-alpha.4\",\n    \"@jupyterlab/docmanager\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/filebrowser\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/mainmenu\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/services\": \"~7.6.0-alpha.4\",\n    \"@jupyterlab/settingeditor\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/settingregistry\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/statedb\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/translation\": \"~4.6.0-alpha.4\",\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"@lumino/algorithm\": \"^2.0.4\",\n    \"@lumino/commands\": \"^2.3.3\",\n    \"@lumino/widgets\": \"^2.7.2\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"extension\": true,\n    \"schemaDir\": \"schema\"\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/tree-extension/schema/file-actions.json",
    "content": "{\n  \"title\": \"File Browser Widget - File Actions\",\n  \"description\": \"File Browser widget - File Actions settings.\",\n  \"jupyter.lab.toolbars\": {\n    \"FileBrowser\": [\n      { \"name\": \"fileAction-placeholder\", \"rank\": 0 },\n      { \"name\": \"fileAction-open\", \"rank\": 1 },\n      { \"name\": \"fileAction-download\", \"rank\": 2 },\n      { \"name\": \"fileAction-rename\", \"rank\": 3 },\n      { \"name\": \"fileAction-duplicate\", \"rank\": 4 },\n      { \"name\": \"fileAction-delete\", \"rank\": 5 }\n    ]\n  },\n  \"properties\": {},\n  \"additionalProperties\": false,\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "packages/tree-extension/schema/widget.json",
    "content": "{\n  \"title\": \"File Browser Widget\",\n  \"description\": \"File Browser widget settings.\",\n  \"jupyter.lab.toolbars\": {\n    \"FileBrowser\": [\n      { \"name\": \"spacer\", \"type\": \"spacer\", \"rank\": 900 },\n      {\n        \"name\": \"toggle-file-filter\",\n        \"label\": \"\",\n        \"command\": \"filebrowser:toggle-file-filter\",\n        \"rank\": 990\n      },\n      { \"name\": \"new-dropdown\", \"rank\": 1000 },\n      { \"name\": \"uploader\", \"rank\": 1010 },\n      { \"name\": \"refresh\", \"command\": \"filebrowser:refresh\", \"rank\": 1020 }\n    ]\n  },\n  \"jupyter.lab.transform\": true,\n  \"properties\": {\n    \"toolbar\": {\n      \"title\": \"File browser toolbar items\",\n      \"description\": \"Note: To disable a toolbar item,\\ncopy it to User Preferences and add the\\n\\\"disabled\\\" key. The following example will disable the uploader button:\\n{\\n  \\\"toolbar\\\": [\\n    {\\n      \\\"name\\\": \\\"uploader\\\",\\n      \\\"disabled\\\": true\\n    }\\n  ]\\n}\\n\\nToolbar description:\",\n      \"items\": {\n        \"$ref\": \"#/definitions/toolbarItem\"\n      },\n      \"type\": \"array\",\n      \"default\": []\n    }\n  },\n  \"additionalProperties\": false,\n  \"type\": \"object\",\n  \"definitions\": {\n    \"toolbarItem\": {\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Unique name\",\n          \"type\": \"string\"\n        },\n        \"args\": {\n          \"title\": \"Command arguments\",\n          \"type\": \"object\"\n        },\n        \"command\": {\n          \"title\": \"Command id\",\n          \"type\": \"string\",\n          \"default\": \"\"\n        },\n        \"disabled\": {\n          \"title\": \"Whether the item is ignored or not\",\n          \"type\": \"boolean\",\n          \"default\": false\n        },\n        \"icon\": {\n          \"title\": \"Item icon id\",\n          \"description\": \"If defined, it will override the command icon\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"title\": \"Item label\",\n          \"description\": \"If defined, it will override the command label\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"title\": \"Item type\",\n          \"type\": \"string\",\n          \"enum\": [\"command\", \"spacer\"]\n        },\n        \"rank\": {\n          \"title\": \"Item rank\",\n          \"type\": \"number\",\n          \"minimum\": 0,\n          \"default\": 50\n        }\n      },\n      \"required\": [\"name\"],\n      \"additionalProperties\": false,\n      \"type\": \"object\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/tree-extension/src/fileactions.tsx",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  CommandToolbarButtonComponent,\n  ReactWidget,\n} from '@jupyterlab/apputils';\n\nimport { FileBrowser } from '@jupyterlab/filebrowser';\n\nimport { ITranslator } from '@jupyterlab/translation';\n\nimport { CommandRegistry } from '@lumino/commands';\n\nimport { ISignal } from '@lumino/signaling';\n\nimport React from 'react';\n\nexport class FilesActionButtons {\n  /**\n   * The constructor of FilesActionButtons.\n   * @param options\n   */\n  constructor(options: {\n    commands: CommandRegistry;\n    browser: FileBrowser;\n    selectionChanged: ISignal<FileBrowser, void>;\n    translator: ITranslator;\n  }) {\n    this._browser = options.browser;\n    const { commands, selectionChanged, translator } = options;\n    const trans = translator.load('notebook');\n\n    // Placeholder, when no file is selected.\n    const placeholder = ReactWidget.create(\n      <div key={'placeholder'}>\n        {trans.__('Select items to perform actions on them.')}\n      </div>\n    );\n    placeholder.id = 'fileAction-placeholder';\n    this._widgets.set('placeholder', placeholder);\n\n    // The action buttons.\n    const actions = ['open', 'download', 'rename', 'duplicate', 'delete'];\n    actions.forEach((action) => {\n      const widget = ReactWidget.create(\n        <CommandToolbarButtonComponent\n          key={action}\n          commands={commands}\n          id={`filebrowser:${action}`}\n          args={{ toolbar: true }}\n          icon={undefined}\n        />\n      );\n      widget.id = `fileAction-${action}`;\n      widget.addClass('jp-ToolbarButton');\n      widget.addClass('jp-FileAction');\n      this._widgets.set(action, widget);\n    });\n\n    selectionChanged.connect(this._onSelectionChanged, this);\n    this._onSelectionChanged();\n  }\n\n  /**\n   * Return an iterator with all the action widgets.\n   */\n  get widgets(): IterableIterator<ReactWidget> {\n    return this._widgets.values();\n  }\n\n  /**\n   * Triggered when the selection change in file browser.\n   */\n  private _onSelectionChanged = () => {\n    const selectedItems = Array.from(this._browser.selectedItems());\n    const selection = selectedItems.length > 0;\n    const oneFolder = selectedItems.some((item) => item.type === 'directory');\n\n    this._widgets.get('placeholder')?.setHidden(selection);\n    this._widgets.get('delete')?.setHidden(!selection);\n    this._widgets.get('duplicate')?.setHidden(!selection || oneFolder);\n    this._widgets.get('download')?.setHidden(!selection || oneFolder);\n    this._widgets.get('open')?.setHidden(!selection || oneFolder);\n    this._widgets.get('rename')?.setHidden(selectedItems.length !== 1);\n  };\n\n  private _browser: FileBrowser;\n  private _widgets = new Map<string, ReactWidget>();\n}\n"
  },
  {
    "path": "packages/tree-extension/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  JupyterFrontEnd,\n  JupyterFrontEndPlugin,\n} from '@jupyterlab/application';\n\nimport {\n  ICommandPalette,\n  IToolbarWidgetRegistry,\n  createToolbarFactory,\n  setToolbar,\n} from '@jupyterlab/apputils';\n\nimport { PageConfig } from '@jupyterlab/coreutils';\n\nimport {\n  FileBrowser,\n  Uploader,\n  IDefaultFileBrowser,\n  IFileBrowserFactory,\n} from '@jupyterlab/filebrowser';\n\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\n\nimport { IRunningSessionManagers, RunningSessions } from '@jupyterlab/running';\n\nimport {\n  IJSONSettingEditorTracker,\n  ISettingEditorTracker,\n} from '@jupyterlab/settingeditor';\n\nimport { ITranslator } from '@jupyterlab/translation';\n\nimport {\n  caretDownIcon,\n  folderIcon,\n  runningIcon,\n} from '@jupyterlab/ui-components';\n\nimport { Menu, MenuBar } from '@lumino/widgets';\n\nimport { NotebookTreeWidget, INotebookTree } from '@jupyter-notebook/tree';\n\nimport { FilesActionButtons } from './fileactions';\n\n/**\n * The file browser factory.\n */\nconst FILE_BROWSER_FACTORY = 'FileBrowser';\n\n/**\n * The file browser plugin id.\n */\nconst FILE_BROWSER_PLUGIN_ID = '@jupyterlab/filebrowser-extension:browser';\n\n/**\n * The namespace for command IDs.\n */\nnamespace CommandIDs {\n  // The command to activate the filebrowser widget in tree view.\n  export const activate = 'filebrowser:activate';\n\n  // Activate the file filter in the file browser\n  export const toggleFileFilter = 'filebrowser:toggle-file-filter';\n}\n\n/**\n * Plugin to add extra commands to the file browser to create\n * new notebooks, files, consoles and terminals\n */\nconst createNew: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/tree-extension:new',\n  description:\n    'Plugin to add extra commands to the file browser to create new notebooks, files, consoles and terminals.',\n  requires: [ITranslator],\n  optional: [IToolbarWidgetRegistry],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd,\n    translator: ITranslator,\n    toolbarRegistry: IToolbarWidgetRegistry | null\n  ) => {\n    const { commands, serviceManager } = app;\n    const trans = translator.load('notebook');\n\n    const overflowOptions = {\n      overflowMenuOptions: { isVisible: false },\n    };\n    const menubar = new MenuBar(overflowOptions);\n    const newMenu = new Menu({ commands });\n    newMenu.title.label = trans.__('New');\n    newMenu.title.icon = caretDownIcon;\n    menubar.addMenu(newMenu);\n\n    const populateNewMenu = () => {\n      // create an entry per kernel spec for creating a new notebook\n      const specs = serviceManager.kernelspecs?.specs?.kernelspecs;\n      for (const name in specs) {\n        newMenu.addItem({\n          args: { kernelName: name, isLauncher: true },\n          command: 'notebook:create-new',\n        });\n      }\n\n      const baseCommands = [\n        'terminal:create-new',\n        'console:create',\n        'filebrowser:create-new-file',\n        'filebrowser:create-new-directory',\n      ];\n\n      baseCommands.forEach((command) => {\n        newMenu.addItem({ command });\n      });\n    };\n\n    serviceManager.kernelspecs?.specsChanged.connect(() => {\n      newMenu.clearItems();\n      populateNewMenu();\n    });\n\n    populateNewMenu();\n\n    if (toolbarRegistry) {\n      toolbarRegistry.addFactory(\n        FILE_BROWSER_FACTORY,\n        'new-dropdown',\n        (browser: FileBrowser) => {\n          const menubar = new MenuBar(overflowOptions);\n          menubar.addMenu(newMenu);\n          menubar.addClass('jp-DropdownMenu');\n          return menubar;\n        }\n      );\n    }\n  },\n};\n\n/**\n * A plugin to add file browser actions to the file browser toolbar.\n */\nconst fileActions: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/tree-extension:file-actions',\n  description:\n    'A plugin to add file browser actions to the file browser toolbar.',\n  autoStart: true,\n  requires: [IDefaultFileBrowser, IToolbarWidgetRegistry, ITranslator],\n  activate: (\n    app: JupyterFrontEnd,\n    browser: IDefaultFileBrowser,\n    toolbarRegistry: IToolbarWidgetRegistry,\n    translator: ITranslator\n  ) => {\n    // Create a toolbar item that adds buttons to the file browser toolbar\n    // to perform actions on the files\n    const { commands } = app;\n    const { selectionChanged } = browser;\n    const fileActions = new FilesActionButtons({\n      commands,\n      browser,\n      selectionChanged,\n      translator,\n    });\n    for (const widget of fileActions.widgets) {\n      toolbarRegistry.addFactory(FILE_BROWSER_FACTORY, widget.id, () => widget);\n    }\n  },\n};\n\n/**\n * A plugin to set the default file browser settings.\n */\nconst fileBrowserSettings: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/tree-extension:settings',\n  description: 'Set up the default file browser settings',\n  requires: [IDefaultFileBrowser],\n  optional: [ISettingRegistry],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd,\n    browser: IDefaultFileBrowser,\n    settingRegistry: ISettingRegistry | null\n  ) => {\n    // Default config for notebook.\n    // This is a different set of defaults than JupyterLab.\n    const defaultFileBrowserConfig = {\n      navigateToCurrentDirectory: false,\n      singleClickNavigation: true,\n      showLastModifiedColumn: true,\n      showFileSizeColumn: true,\n      showHiddenFiles: false,\n      showFileCheckboxes: true,\n      sortNotebooksFirst: true,\n      showFullPath: false,\n    };\n\n    // Apply defaults on plugin activation\n    let key: keyof typeof defaultFileBrowserConfig;\n    for (key in defaultFileBrowserConfig) {\n      browser[key] = defaultFileBrowserConfig[key];\n    }\n\n    if (settingRegistry) {\n      void settingRegistry.load(FILE_BROWSER_PLUGIN_ID).then((settings) => {\n        function onSettingsChanged(settings: ISettingRegistry.ISettings): void {\n          let key: keyof typeof defaultFileBrowserConfig;\n          for (key in defaultFileBrowserConfig) {\n            const value = settings.get(key).user as boolean;\n            // only set the setting if it is defined by the user\n            if (value !== undefined) {\n              browser[key] = value;\n            }\n          }\n        }\n        settings.changed.connect(onSettingsChanged);\n        onSettingsChanged(settings);\n      });\n    }\n  },\n};\n\n/**\n * A plugin to add the file filter toggle command to the palette\n */\nconst fileFilterCommand: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/tree-extension:file-filter-command',\n  description: 'A plugin to add file filter command to the palette.',\n  autoStart: true,\n  optional: [ICommandPalette],\n  activate: (app: JupyterFrontEnd, palette: ICommandPalette | null) => {\n    if (palette) {\n      palette.addItem({\n        command: CommandIDs.toggleFileFilter,\n        category: 'File Browser',\n      });\n    }\n  },\n};\n\n/**\n * Plugin to load the default plugins that are loaded on all the Notebook pages\n * (tree, edit, view, etc.) so they are visible in the settings editor.\n */\nconst loadPlugins: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/tree-extension:load-plugins',\n  description:\n    'Plugin to load the default plugins that are loaded on all the Notebook pages (tree, edit, view, etc.) so they are visible in the settings editor.',\n  autoStart: true,\n  requires: [ISettingRegistry],\n  activate(app: JupyterFrontEnd, settingRegistry: ISettingRegistry) {\n    const { isDisabled } = PageConfig.Extension;\n    const connector = settingRegistry.connector;\n\n    const allPluginsOption = PageConfig.getOption('allPlugins');\n    if (!allPluginsOption) {\n      return;\n    }\n\n    // build the list of plugins shipped by default on the all the notebook pages\n    // this avoid explicitly loading `'all'` plugins such as the ones used\n    // in JupyterLab only\n    const allPlugins = JSON.parse(allPluginsOption);\n    const pluginsSet = new Set<string>();\n    Object.keys(allPlugins).forEach((key: string) => {\n      const extensionsAndPlugins: { [key: string]: boolean | [string] } =\n        allPlugins[key];\n      Object.keys(extensionsAndPlugins).forEach((plugin) => {\n        const value = extensionsAndPlugins[plugin];\n        if (typeof value === 'boolean' && value) {\n          pluginsSet.add(plugin);\n        } else if (Array.isArray(value)) {\n          value.forEach((v: string) => {\n            pluginsSet.add(v);\n          });\n        }\n      });\n    });\n\n    app.restored.then(async () => {\n      const plugins = await connector.list('all');\n      await Promise.all(\n        plugins.ids.map(async (id: string) => {\n          const [extension] = id.split(':');\n          // load the plugin if it is built-in the notebook application explicitly\n          // either included as an extension or as a plugin directly\n          const hasPlugin = pluginsSet.has(extension) || pluginsSet.has(id);\n          if (!hasPlugin || isDisabled(id) || id in settingRegistry.plugins) {\n            return;\n          }\n          try {\n            await settingRegistry.load(id);\n          } catch (error) {\n            console.warn(`Settings failed to load for (${id})`, error);\n          }\n        })\n      );\n    });\n  },\n};\n\n/**\n * A plugin to add file browser commands for the tree view.\n */\nconst openFileBrowser: JupyterFrontEndPlugin<void> = {\n  id: '@jupyter-notebook/tree-extension:open-file-browser',\n  description: 'A plugin to add file browser commands for the tree view.',\n  requires: [INotebookTree, IDefaultFileBrowser],\n  autoStart: true,\n  activate: (\n    app: JupyterFrontEnd,\n    notebookTree: INotebookTree,\n    browser: IDefaultFileBrowser\n  ) => {\n    const { commands } = app;\n    commands.addCommand(CommandIDs.activate, {\n      execute: () => {\n        notebookTree.currentWidget = browser;\n      },\n    });\n  },\n};\n\n/**\n * A plugin to add the file browser widget to an INotebookShell\n */\nconst notebookTreeWidget: JupyterFrontEndPlugin<INotebookTree> = {\n  id: '@jupyter-notebook/tree-extension:widget',\n  description: 'A plugin to add the file browser widget to an INotebookShell.',\n  requires: [\n    IDefaultFileBrowser,\n    ITranslator,\n    ISettingRegistry,\n    IToolbarWidgetRegistry,\n    IFileBrowserFactory,\n  ],\n  optional: [\n    IRunningSessionManagers,\n    ISettingEditorTracker,\n    IJSONSettingEditorTracker,\n  ],\n  autoStart: true,\n  provides: INotebookTree,\n  activate: (\n    app: JupyterFrontEnd,\n    browser: IDefaultFileBrowser,\n    translator: ITranslator,\n    settingRegistry: ISettingRegistry,\n    toolbarRegistry: IToolbarWidgetRegistry,\n    factory: IFileBrowserFactory,\n    manager: IRunningSessionManagers | null,\n    settingEditorTracker: ISettingEditorTracker | null,\n    jsonSettingEditorTracker: IJSONSettingEditorTracker | null\n  ): INotebookTree => {\n    const nbTreeWidget = new NotebookTreeWidget();\n\n    const trans = translator.load('notebook');\n\n    browser.title.label = trans.__('Files');\n    browser.node.setAttribute('role', 'region');\n    browser.node.setAttribute('aria-label', trans.__('File Browser Section'));\n    browser.title.icon = folderIcon;\n\n    nbTreeWidget.addWidget(browser);\n    nbTreeWidget.tabBar.addTab(browser.title);\n    nbTreeWidget.tabsMovable = false;\n\n    toolbarRegistry.addFactory(\n      FILE_BROWSER_FACTORY,\n      'uploader',\n      (browser: FileBrowser) =>\n        new Uploader({\n          model: browser.model,\n          translator,\n          label: trans.__('Upload'),\n        })\n    );\n\n    setToolbar(\n      browser,\n      createToolbarFactory(\n        toolbarRegistry,\n        settingRegistry,\n        FILE_BROWSER_FACTORY,\n        notebookTreeWidget.id,\n        translator\n      )\n    );\n\n    if (manager) {\n      const running = new RunningSessions(manager, translator);\n      running.id = 'jp-running-sessions-tree';\n      running.title.label = trans.__('Running');\n      running.title.icon = runningIcon;\n      nbTreeWidget.addWidget(running);\n      nbTreeWidget.tabBar.addTab(running.title);\n    }\n\n    app.shell.add(nbTreeWidget, 'main', { rank: 100 });\n\n    // add a separate tab for each setting editor\n    [settingEditorTracker, jsonSettingEditorTracker].forEach(\n      (editorTracker) => {\n        if (editorTracker) {\n          editorTracker.widgetAdded.connect((_, editor) => {\n            nbTreeWidget.addWidget(editor);\n            nbTreeWidget.tabBar.addTab(editor.title);\n            nbTreeWidget.currentWidget = editor;\n          });\n        }\n      }\n    );\n\n    const { tracker } = factory;\n\n    // TODO: remove\n    // Workaround to force the focus on the default file browser\n    // See https://github.com/jupyterlab/jupyterlab/issues/15629 for more info\n    const setCurrentToDefaultBrower = () => {\n      tracker['_pool'].current = browser;\n    };\n\n    tracker.widgetAdded.connect((sender, widget) => {\n      setCurrentToDefaultBrower();\n    });\n\n    setCurrentToDefaultBrower();\n\n    return nbTreeWidget;\n  },\n};\n\n/**\n * Export the plugins as default.\n */\nconst plugins: JupyterFrontEndPlugin<any>[] = [\n  createNew,\n  fileActions,\n  fileBrowserSettings,\n  fileFilterCommand,\n  loadPlugins,\n  openFileBrowser,\n  notebookTreeWidget,\n];\nexport default plugins;\n"
  },
  {
    "path": "packages/tree-extension/style/base.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n|\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n.jp-FileBrowser-toolbar .jp-Toolbar-item.jp-DropdownMenu,\n.jp-FileBrowser-toolbar .jp-Toolbar-item.jp-ToolbarButton,\n.jp-FileBrowser-toolbar .jp-Toolbar-item.jp-CommandToolbarButton {\n  border: solid 1px var(--jp-border-color2);\n  margin: 1px;\n  padding: 0px;\n}\n\n.jp-FileBrowser-toolbar > .jp-Toolbar-item.jp-ToolbarButton:hover,\n.jp-FileBrowser-toolbar > .jp-Toolbar-item.jp-CommandToolbarButton:hover,\n.jp-FileBrowser-toolbar > .jp-Toolbar-item.jp-DropdownMenu:hover {\n  background: var(--neutral-fill-stealth-hover);\n}\n\n.jp-FileBrowser-toolbar .lm-MenuBar-item {\n  height: var(--jp-private-toolbar-height);\n  display: inline-flex;\n  align-items: center;\n}\n\n.jp-FileBrowser-toolbar .jp-ToolbarButtonComponent {\n  height: var(--jp-flat-button-height);\n}\n\n.jp-FileBrowser-toolbar jp-button.jp-ToolbarButtonComponent:hover {\n  background: inherit;\n}\n\n.jp-DirListing-content .jp-DirListing-checkboxWrapper {\n  visibility: visible;\n}\n\n/* Action buttons */\n\n.jp-FileBrowser-toolbar > .jp-FileAction > .jp-ToolbarButtonComponent > svg {\n  display: none;\n}\n\n.jp-FileBrowser-toolbar > #fileAction-delete {\n  background-color: var(--jp-error-color1);\n}\n\n.jp-FileBrowser-toolbar\n  .jp-ToolbarButtonComponent[data-command='filebrowser:delete']\n  .jp-ToolbarButtonComponent-label {\n  color: var(--jp-ui-inverse-font-color1);\n}\n\n.jp-FileBrowser-toolbar .jp-FileAction {\n  border: solid 1px var(--jp-border-color2);\n  margin: 1px;\n  min-height: var(--jp-private-toolbar-height);\n}\n\nbody[data-format='mobile'] #fileAction-placeholder {\n  display: none;\n}\n"
  },
  {
    "path": "packages/tree-extension/style/index.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n|\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n@import url('~@jupyterlab/filebrowser/style/index.css');\n\n@import url('~@jupyter-notebook/tree/style/index.css');\n\n@import './base.css';\n"
  },
  {
    "path": "packages/tree-extension/style/index.js",
    "content": "import '@jupyterlab/filebrowser/style/index.js';\n\nimport '@jupyter-notebook/tree/style/index.js';\n\nimport './base.css';\n"
  },
  {
    "path": "packages/tree-extension/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"],\n  \"references\": [\n    {\n      \"path\": \"../application\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/ui-components/babel.config.js",
    "content": "module.exports = require('@jupyterlab/testutils/lib/babel.config');\n"
  },
  {
    "path": "packages/ui-components/jest.config.js",
    "content": "const func = require('@jupyterlab/testutils/lib/jest-config');\nmodule.exports = func(__dirname);\n"
  },
  {
    "path": "packages/ui-components/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/ui-components\",\n  \"version\": \"7.6.0-alpha.4\",\n  \"description\": \"Jupyter Notebook - UI components\",\n  \"homepage\": \"https://github.com/jupyter/notebook\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jupyter/notebook/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jupyter/notebook.git\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"author\": \"Project Jupyter\",\n  \"sideEffects\": [\n    \"style/**/*\",\n    \"style/index.js\"\n  ],\n  \"main\": \"lib/index.js\",\n  \"types\": \"lib/index.d.ts\",\n  \"style\": \"style/index.css\",\n  \"directories\": {\n    \"lib\": \"lib/\"\n  },\n  \"files\": [\n    \"lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}\",\n    \"style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}\",\n    \"style/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc -b\",\n    \"build:prod\": \"tsc -b\",\n    \"build:test\": \"tsc --build tsconfig.test.json\",\n    \"clean\": \"rimraf lib && rimraf tsconfig.tsbuildinfo\",\n    \"cleansvg\": \"svgo --config svgo.yaml\",\n    \"docs\": \"typedoc src\",\n    \"docs:init\": \"bash docs/build.sh\",\n    \"test\": \"jest\",\n    \"test:cov\": \"jest --collect-coverage\",\n    \"test:debug\": \"node --inspect-brk node_modules/.bin/jest --runInBand\",\n    \"test:debug:watch\": \"node --inspect-brk node_modules/.bin/jest --runInBand --watch\",\n    \"watch\": \"tsc -b --watch\"\n  },\n  \"dependencies\": {\n    \"@jupyterlab/ui-components\": \"~4.6.0-alpha.4\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.10.2\",\n    \"@babel/preset-env\": \"^7.10.2\",\n    \"@jupyterlab/testutils\": \"~4.6.0-alpha.0\",\n    \"@types/jest\": \"^29.2.5\",\n    \"babel-loader\": \"^8.0.6\",\n    \"jest\": \"^29.3.1\",\n    \"rimraf\": \"^3.0.2\",\n    \"ts-jest\": \"^29.0.3\",\n    \"typescript\": \"~5.9.3\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"jupyterlab\": {\n    \"coreDependency\": true\n  },\n  \"styleModule\": \"style/index.js\"\n}\n"
  },
  {
    "path": "packages/ui-components/src/icon/iconimports.ts",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\nimport { LabIcon } from '@jupyterlab/ui-components';\n\nimport jupyterSvgstr from '../../style/icons/jupyter.svg';\n\nexport const jupyterIcon = new LabIcon({\n  name: 'notebook-ui-components:jupyter',\n  svgstr: jupyterSvgstr,\n});\n"
  },
  {
    "path": "packages/ui-components/src/icon/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nexport * from './iconimports';\n"
  },
  {
    "path": "packages/ui-components/src/index.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nexport * from './icon';\n"
  },
  {
    "path": "packages/ui-components/src/svg.d.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\ndeclare module '*.svg' {\n  const value: string;\n  export default value;\n}\n"
  },
  {
    "path": "packages/ui-components/style/base.css",
    "content": ""
  },
  {
    "path": "packages/ui-components/style/index.css",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n@import url('./base.css');\n"
  },
  {
    "path": "packages/ui-components/style/index.js",
    "content": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\nimport './base.css';\n"
  },
  {
    "path": "packages/ui-components/test/foo.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\ndescribe('foo', () => {\n  describe('bar', () => {\n    it('should pass', () => {\n      expect(true).toBe(true);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/ui-components/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "packages/ui-components/tsconfig.test.json",
    "content": "{\n  \"extends\": \"../../tsconfigbase.test\",\n  \"include\": [\"src/**/*\", \"test/**/*\"],\n  \"references\": [\n    {\n      \"path\": \".\"\n    }\n  ]\n}\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\n    \"hatchling>=1.11\",\n    \"hatch-jupyter-builder>=0.5\",\n    \"jupyterlab>=4.6.0a4,<4.7\",\n]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"notebook\"\ndescription = \"Jupyter Notebook - A web-based notebook environment for interactive computing\"\nreadme = \"README.md\"\nlicense = { file = \"LICENSE\" }\nrequires-python = \">=3.10\"\nauthors = [\n    { name = \"Jupyter Development Team\", email = \"jupyter@googlegroups.com\" },\n]\nkeywords = [\n    \"Jupyter\",\n    \"JupyterLab\",\n    \"Notebook\",\n]\nclassifiers = [\n    \"Framework :: Jupyter\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Science/Research\",\n    \"Intended Audience :: System Administrators\",\n    \"License :: OSI Approved :: BSD License\",\n    \"Programming Language :: Python\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Programming Language :: Python :: 3.14\",\n    \"Typing :: Typed\",\n]\ndependencies = [\n    \"jupyter_server>=2.4.0,<3\",\n    \"jupyterlab>=4.6.0a4,<4.7\",\n    \"jupyterlab_server>=2.28.0,<3\",\n    \"notebook_shim>=0.2,<0.3\",\n    \"tornado>=6.2.0\",\n]\ndynamic = [\"version\"]\n\n[project.scripts]\njupyter-notebook = \"notebook.app:main\"\n\n[project.urls]\nDocumentation = \"https://jupyter-notebook.readthedocs.io/\"\nHomepage = \"https://github.com/jupyter/notebook\"\nSource = \"https://github.com/jupyter/notebook\"\nTracker = \"https://github.com/jupyter/notebook/issues\"\n\n[project.optional-dependencies]\ntest = [\n    \"nbval\",\n    \"pytest>=7.0\",\n    \"requests\",\n    \"pytest-tornasync\",\n    \"pytest-timeout\",\n    \"pytest-console-scripts\",\n    \"ipykernel\",\n    \"jupyter_server[test]>=2.4.0,<3\",\n    \"jupyterlab_server[test]>=2.28.0,<3\",\n]\ndocs = [\n    \"myst_parser\",\n    \"nbsphinx\",\n    \"pydata-sphinx-theme\",\n    \"sphinx>=1.3.6\",\n    \"sphinxcontrib_github_alt\",\n    \"sphinxcontrib_spelling\"\n]\ndev = [\n    \"pre-commit\",\n    \"hatch\"\n]\n\n[tool.hatch.version]\npath = \"notebook/_version.py\"\nvalidate-bump = false\n\n[tool.hatch.build.targets.wheel.shared-data]\n\"notebook/labextension\" = \"share/jupyter/labextensions/@jupyter-notebook/lab-extension\"\n\"notebook/schemas/@jupyter-notebook\" = \"share/jupyter/lab/schemas/@jupyter-notebook\"\n\"jupyter-config/jupyter_server_config.d\" = \"etc/jupyter/jupyter_server_config.d\"\n\"notebook.svg\" = \"share/icons/hicolor/scalable/apps/notebook.svg\"\n\"jupyter-notebook.desktop\" = \"share/applications/jupyter-notebook.desktop\"\n\n[tool.hatch.build.targets.sdist]\nartifacts = [\n    \"notebook/labextension\",\n    \"notebook/static\",\n    \"notebook/schemas/@jupyter-notebook\",\n    \"notebook/templates\",\n    \"notebook.svg\",\n    \"jupyter-notebook.desktop\",\n]\ninclude = [\n    \"/jupyter-config\",\n    \"/notebook\",\n    \"/tests\",\n    \"/package.json\",\n    \"/install.json\",\n    \"/ts*.json\",\n    \"/*.md\"\n]\n\n[tool.hatch.build.targets.wheel]\nartifacts = [\n    \"notebook/static\",\n    \"notebook/templates\",\n]\ninclude = [\"/notebook\"]\nexclude = [\n    \"notebook/labextension\",\n    \"notebook/schemas/@jupyter-notebook\",\n]\n\n[tool.hatch.envs.docs]\nfeatures = [\"docs\"]\n[tool.hatch.envs.docs.scripts]\nbuild = \"make -C docs html SPHINXOPTS='-W'\"\nserve = \"cd docs/build/html && python -m http.server\"\n\n[tool.hatch.envs.default.scripts]\nnpm_pack = \"jlpm lerna exec -- npm pack\"\njs_test = \"jlpm run build:test && jlpm run test\"\n\n[tool.hatch.envs.test]\nfeatures = [\"test\"]\n[tool.hatch.envs.test.scripts]\ntest = \"python -m pytest -vv {args}\"\nnowarn = \"test -W default {args}\"\n\n[tool.hatch.envs.cov]\nfeatures = [\"test\"]\ndependencies = [\"coverage[toml]\", \"pytest-cov\"]\n[tool.hatch.envs.cov.scripts]\ntest = \"python -m pytest -vv --cov notebook --cov-branch --cov-report term-missing:skip-covered {args}\"\nnowarn = \"test -W default {args}\"\n\n[tool.hatch.envs.lint]\ndetached = true\ndependencies = [\"pre-commit\"]\n[tool.hatch.envs.lint.scripts]\nbuild = [\n    \"pre-commit run --all-files ruff\",\n    \"pre-commit run --all-files ruff-format\"\n]\n\n[tool.hatch.envs.typing]\ndependencies = [ \"pre-commit\"]\ndetached = true\n[tool.hatch.envs.typing.scripts]\ntest = \"pre-commit run --all-files --hook-stage manual mypy\"\n\n[tool.hatch.build.hooks.jupyter-builder]\ndependencies = [\"hatch-jupyter-builder>=0.5\"]\nbuild-function = \"hatch_jupyter_builder.npm_builder\"\nensured-targets = [\n    \"notebook/labextension/static/style.js\",\n]\ninstall-pre-commit-hook = true\n\n[tool.hatch.build.hooks.jupyter-builder.build-kwargs]\nbuild_cmd = \"build:prod\"\nsource_dir = \"packages\"\nbuild_dir = \"notebook/static\"\nnpm = [\"jlpm\"]\n\n[tool.hatch.build.hooks.jupyter-builder.editable-build-kwargs]\nbuild_cmd = \"build\"\nsource_dir = \"packages\"\nbuild_dir = \"notebook/static\"\nnpm = [\"jlpm\"]\n\n[tool.jupyter-releaser.options]\nversion-cmd = \"jlpm run release:bump --force --skip-commit\"\n\n[tool.jupyter-releaser.hooks]\nbefore-bump-version = [\n    \"python -m pip install -U \\\"jupyterlab>=4.6.0a4,<4.7\\\"\",\n    \"jlpm\",\n    \"jlpm run build:utils\",\n    \"python -m pip install hatch\"\n]\nbefore-build-npm = [\n    \"jlpm clean\",\n    \"jlpm build:prod\"\n]\nbefore-build-python = [\n    \"jlpm clean\"\n]\n\n[tool.pytest.ini_options]\nminversion = \"6.0\"\nxfail_strict = true\nlog_cli_level = \"info\"\naddopts = [\n  \"-ra\", \"--durations=10\", \"--color=yes\", \"--doctest-modules\",\n   \"--showlocals\", \"--strict-markers\", \"--strict-config\"\n]\ntestpaths = [\n    \"tests/\",\n]\ntimeout = 300\nfilterwarnings = [\n    \"error\",\n    \"ignore:There is no current event loop:DeprecationWarning\",\n    \"ignore:make_current is deprecated; start the event loop first\",\n    \"ignore:clear_current is deprecated\",\n    \"ignore:datetime.utc.* is deprecated\",\n    \"ignore:datetime.datetime.* is deprecated\",\n]\n\n[tool.coverage.report]\nexclude_lines = [\n  \"pragma: no cover\",\n  \"def __repr__\",\n  \"if self.debug:\",\n  \"if settings.DEBUG\",\n  \"raise AssertionError\",\n  \"raise NotImplementedError\",\n  \"if 0:\",\n  \"if __name__ == .__main__.:\",\n  \"class .*\\bProtocol\\\\):\",\n\"@(abc\\\\.)?abstractmethod\",\n]\n\n[tool.coverage.run]\nrelative_files = true\nsource = [\"notebook\"]\n\n[tool.mypy]\nfiles = \"notebook\"\npython_version = \"3.10\"\nstrict = true\nenable_error_code = [\"ignore-without-code\", \"redundant-expr\", \"truthy-bool\"]\nwarn_unreachable = true\n\n[tool.ruff]\nline-length = 100\n\n[tool.ruff.format]\ndocstring-code-format = true\n\n[tool.ruff.lint]\nextend-select = [\n  \"B\",           # flake8-bugbear\n  \"I\",           # isort\n  \"ARG\",         # flake8-unused-arguments\n  \"C4\",          # flake8-comprehensions\n  \"EM\",          # flake8-errmsg\n  \"ICN\",         # flake8-import-conventions\n  \"G\",           # flake8-logging-format\n  \"PGH\",         # pygrep-hooks\n  \"PIE\",         # flake8-pie\n  \"PL\",          # pylint\n  \"PTH\",         # flake8-use-pathlib\n  \"PT\",          # flake8-pytest-style\n  \"RET\",         # flake8-return\n  \"RUF\",         # Ruff-specific\n  \"SIM\",         # flake8-simplify\n  \"T20\",         # flake8-print\n  \"UP\",          # pyupgrade\n  \"YTT\",         # flake8-2020\n  \"EXE\",         # flake8-executable\n  \"PYI\",         # flake8-pyi\n  \"S\",           # flake8-bandit\n]\nignore = [\n  \"PLR\",    # Design related pylint codes\n  \"C408\", \"C416\",  # Unnecessary `dict` call (rewrite as a literal)\n  \"RUF012\",   # Mutable class attributes should be annotated with `typing.ClassVar`\n]\n\n[tool.ruff.lint.per-file-ignores]\n# S101 Use of `assert` detected\n# F841 Local variable `foo` is assigned to but never used\n\"tests/*\" = [\"S101\", \"F841\", \"ARG\", \"PTH\"]\n\"docs/source/conf.py\" = [\"PTH\"]\n\"ui-tests/test/jupyter_server_config.py\" = [\"F821\"]\n\"*.ipynb\" = [\"E402\", \"B018\", \"E501\", \"T201\", \"RET\"]\n\n[tool.interrogate]\nignore-init-module=true\nignore-private=true\nignore-semiprivate=true\nignore-property-decorators=true\nignore-nested-functions=true\nignore-nested-classes=true\nfail-under=100\nexclude = [\"tests\", \"ui-tests\", \"docs\", \"node_modules\", \"setup.py\"]\n\n[tool.repo-review]\nignore = [\"GH102\", \"PC180\", \"PC111\"]\n\n[tool.pixi.project]\nchannels = [\"conda-forge\"]\nplatforms = [\"linux-64\"]\n\n[tool.pixi.pypi-dependencies]\nnotebook = { path = \".\", editable = true, extras = [\"dev\", \"docs\"] }\n\n[tool.pixi.environments]\ndefault = { solve-group = \"default\" }\ndev = { features = [\"dev\"], solve-group = \"default\" }\ndocs = { features = [\"docs\"], solve-group = \"default\" }\ntest = { features = [\"test\"], solve-group = \"default\" }\n\n[tool.pixi.tasks]\ndevelop = \"jlpm develop\"\nstart = \"jupyter notebook --no-browser --ServerApp.token='' --ServerApp.allow_remote_access=True\"\n\n[tool.pixi.dependencies]\npip = \">=25.0.1,<26\"\nnodejs = \"22.*\"\npython = \">=3.12.0,<3.15\"\n"
  },
  {
    "path": "setup.py",
    "content": "# setup.py shim for use with versions of JupyterLab that require\n# it for extensions.\n__import__(\"setuptools\").setup()\n"
  },
  {
    "path": "tests/conftest.py",
    "content": "import glob\nimport json\nimport os\nimport os.path as osp\nimport pathlib\nimport shutil\nfrom importlib.resources import files\n\nimport pytest\n\nfrom notebook.app import JupyterNotebookApp\n\npytest_plugins = [\"jupyter_server.pytest_plugin\"]\n\n\ndef mkdir(tmp_path, *parts):\n    path = tmp_path.joinpath(*parts)\n    if not path.exists():\n        path.mkdir(parents=True)\n    return path\n\n\napp_settings_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, \"app_settings\"))\nuser_settings_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, \"user_settings\"))\nschemas_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, \"schemas\"))\nworkspaces_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, \"workspaces\"))\nlabextensions_dir = pytest.fixture(lambda tmp_path: mkdir(tmp_path, \"labextensions_dir\"))\n\n\n@pytest.fixture\ndef make_notebook_app(  # PLR0913\n    jp_root_dir,\n    jp_template_dir,\n    app_settings_dir,\n    user_settings_dir,\n    schemas_dir,\n    workspaces_dir,\n    labextensions_dir,\n):\n    def _make_notebook_app(**kwargs):\n        return JupyterNotebookApp(\n            static_dir=str(jp_root_dir),\n            templates_dir=str(jp_template_dir),\n            app_url=\"/\",\n            app_settings_dir=str(app_settings_dir),\n            user_settings_dir=str(user_settings_dir),\n            schemas_dir=str(schemas_dir),\n            workspaces_dir=str(workspaces_dir),\n            extra_labextensions_path=[str(labextensions_dir)],\n        )\n\n    # Copy the template files.\n    for html_path in glob.glob(str(files(\"notebook.templates\").joinpath(\"*.html\"))):\n        shutil.copy(html_path, jp_template_dir)\n\n    # Create the index file.\n    index = jp_template_dir.joinpath(\"index.html\")\n    index.write_text(\n        \"\"\"\n<!DOCTYPE html>\n<html>\n<head>\n  <title>{{page_config['appName'] | e}}</title>\n</head>\n<body>\n    {# Copy so we do not modify the page_config with updates. #}\n    {% set page_config_full = page_config.copy() %}\n    {# Set a dummy variable - we just want the side effect of the update. #}\n    {% set _ = page_config_full.update(baseUrl=base_url, wsUrl=ws_url) %}\n      <script id=\"jupyter-config-data\" type=\"application/json\">\n        {{ page_config_full | tojson }}\n      </script>\n  <script src=\"{{page_config['fullStaticUrl'] | e}}/bundle.js\" main=\"index\"></script>\n  <script type=\"text/javascript\">\n    /* Remove token from URL. */\n    (function () {\n      var parsedUrl = new URL(window.location.href);\n      if (parsedUrl.searchParams.get('token')) {\n        parsedUrl.searchParams.delete('token');\n        window.history.replaceState({ }, '', parsedUrl.href);\n      }\n    })();\n  </script>\n</body>\n</html>\n\"\"\"\n    )\n\n    # Copy the schema files.\n    test_data = str(files(\"jupyterlab_server.test_data\")._paths[0])\n    src = pathlib.PurePath(test_data, \"schemas\", \"@jupyterlab\")\n    dst = pathlib.PurePath(str(schemas_dir), \"@jupyterlab\")\n    if os.path.exists(dst):\n        shutil.rmtree(dst)\n    shutil.copytree(src, dst)\n\n    # Create the federated extensions\n    for name in [\"apputils-extension\", \"codemirror-extension\"]:\n        target_name = name + \"-federated\"\n        target = pathlib.PurePath(str(labextensions_dir), \"@jupyterlab\", target_name)\n        src = pathlib.PurePath(test_data, \"schemas\", \"@jupyterlab\", name)\n        dst = target / \"schemas\" / \"@jupyterlab\" / target_name\n        if osp.exists(dst):\n            shutil.rmtree(dst)\n        shutil.copytree(src, dst)\n        with open(target / \"package.orig.json\", \"w\") as fid:\n            data = dict(name=target_name, jupyterlab=dict(extension=True))\n            json.dump(data, fid)\n\n    # Copy the overrides file.\n    src = pathlib.PurePath(test_data, \"app-settings\", \"overrides.json\")\n    dst = pathlib.PurePath(str(app_settings_dir), \"overrides.json\")\n    if os.path.exists(dst):\n        os.remove(dst)\n    shutil.copyfile(src, dst)\n\n    # Copy workspaces.\n    ws_path = pathlib.PurePath(test_data, \"workspaces\")\n    for item in os.listdir(ws_path):\n        src = ws_path / item\n        dst = pathlib.PurePath(str(workspaces_dir), item)\n        if os.path.exists(dst):\n            os.remove(dst)\n        shutil.copy(src, str(workspaces_dir))\n\n    return _make_notebook_app\n\n\n@pytest.fixture\ndef notebookapp(jp_serverapp, make_notebook_app):\n    app = make_notebook_app()\n    app._link_jupyter_server_extension(jp_serverapp)\n    app.initialize()\n    return app\n"
  },
  {
    "path": "tests/test_app.py",
    "content": "import os\n\nimport pytest\nfrom tornado.httpclient import HTTPClientError\n\nfrom notebook.app import JupyterNotebookApp, NotebookHandler, TreeHandler\n\n\n@pytest.fixture\ndef notebooks(jp_create_notebook, notebookapp):\n    nbpaths = (\n        \"notebook1.ipynb\",\n        \"jlab_test_notebooks/notebook2.ipynb\",\n        \"jlab_test_notebooks/level2/notebook3.ipynb\",\n    )\n    for nb in nbpaths:\n        jp_create_notebook(nb)\n    return nbpaths\n\n\nasync def test_notebook_handler(notebooks, jp_fetch):\n    for nbpath in notebooks:\n        r = await jp_fetch(\"/\", nbpath)\n        assert r.code == 200\n        # Check that the lab template is loaded\n        html = r.body.decode()\n        assert \"Jupyter Notebook\" in html\n\n        r = await jp_fetch(\"/notebooks\", nbpath)\n        assert r.code == 200\n        # Check that the lab template is loaded\n        html = r.body.decode()\n        assert \"Jupyter Notebook\" in html\n\n    redirected_url = None\n\n    def redirect(self, url):\n        nonlocal redirected_url\n        redirected_url = url\n\n    NotebookHandler.redirect = redirect\n    await jp_fetch(\"notebooks\", \"jlab_test_notebooks\")\n    assert redirected_url == \"/a%40b/tree/jlab_test_notebooks\"\n\n\nasync def test_tree_handler(notebooks, notebookapp, jp_fetch):\n    app: JupyterNotebookApp = notebookapp\n    r = await jp_fetch(\"tree\", \"jlab_test_notebooks\")\n    assert r.code == 200\n\n    # Check that the tree template is loaded\n    html = r.body.decode()\n    assert \"<title>Home</title>\" in html\n\n    redirected_url = None\n\n    def redirect(self, url):\n        nonlocal redirected_url\n        redirected_url = url\n\n    TreeHandler.redirect = redirect\n    await jp_fetch(\"tree\", \"notebook1.ipynb\")\n    assert redirected_url == \"/a%40b/notebooks/notebook1.ipynb\"\n\n    with open(os.path.join(app.serverapp.root_dir, \"foo.txt\"), \"w\") as fid:\n        fid.write(\"hello\")\n\n    await jp_fetch(\"tree\", \"foo.txt\")\n    assert redirected_url == \"/a%40b/files/foo.txt\"\n\n    with pytest.raises(HTTPClientError):\n        await jp_fetch(\"tree\", \"does_not_exist.ipynb\")\n\n\nasync def test_console_handler(notebookapp, jp_fetch):\n    r = await jp_fetch(\"consoles\", \"foo\")\n    assert r.code == 200\n    html = r.body.decode()\n    assert \"- Console</title>\" in html\n\n\nasync def test_terminals_handler(notebookapp, jp_fetch):\n    r = await jp_fetch(\"terminals\", \"foo\")\n    assert r.code == 200\n    html = r.body.decode()\n    assert \"- Terminal</title>\" in html\n\n\nasync def test_edit_handler(notebooks, jp_fetch):\n    r = await jp_fetch(\"edit\", \"notebook1.ipynb\")\n    assert r.code == 200\n    html = r.body.decode()\n    assert \"- Edit</title>\" in html\n\n\nasync def test_app(notebookapp):\n    app: JupyterNotebookApp = notebookapp\n    assert app.static_dir\n    assert app.templates_dir\n    assert app.app_settings_dir\n    assert app.schemas_dir\n    assert app.user_settings_dir\n    assert app.workspaces_dir\n"
  },
  {
    "path": "tsconfig.eslint.json",
    "content": "{\n  \"extends\": \"./tsconfigbase\",\n  \"include\": [\n    \"packages/**/*\",\n    \"app/**/*\",\n    \"buildutils/**/*\",\n    \"ui-tests/**/*\",\n    \"docs/**/*\",\n    \"eslint.config.mjs\"\n  ],\n  \"compilerOptions\": {\n    \"types\": [\"jest\"]\n  }\n}\n"
  },
  {
    "path": "tsconfigbase.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowSyntheticDefaultImports\": true,\n    \"composite\": true,\n    \"declaration\": true,\n    \"esModuleInterop\": true,\n    \"incremental\": true,\n    \"jsx\": \"react\",\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"noEmitOnError\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noImplicitOverride\": true,\n    \"noUnusedLocals\": true,\n    \"preserveWatchOutput\": true,\n    \"resolveJsonModule\": true,\n    \"strict\": true,\n    \"target\": \"ES2018\",\n    \"types\": [],\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ES2018\", \"ES2020.Intl\"]\n  }\n}\n"
  },
  {
    "path": "tsconfigbase.test.json",
    "content": "{\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"noEmitOnError\": true,\n    \"noImplicitAny\": true,\n    \"noUnusedLocals\": true,\n    \"module\": \"commonjs\",\n    \"moduleResolution\": \"node\",\n    \"target\": \"ES2018\",\n    \"lib\": [\"DOM\", \"DOM.iterable\"],\n    \"types\": [\"jest\", \"node\"],\n    \"jsx\": \"react\",\n    \"resolveJsonModule\": true,\n    \"esModuleInterop\": true,\n    \"strictNullChecks\": true\n  }\n}\n"
  },
  {
    "path": "ui-tests/package.json",
    "content": "{\n  \"name\": \"@jupyter-notebook/ui-tests\",\n  \"private\": true,\n  \"version\": \"0.1.0\",\n  \"author\": \"Project Jupyter\",\n  \"license\": \"BSD-3-Clause\",\n  \"description\": \"Jupyter Notebook UI Tests\",\n  \"scripts\": {\n    \"deduplicate\": \"jlpm dlx yarn-berry-deduplicate -s fewerHighest && jlpm install\",\n    \"rimraf\": \"rimraf\",\n    \"start\": \"jupyter notebook --config test/jupyter_server_config.py\",\n    \"test\": \"playwright test\",\n    \"test:debug\": \"PWDEBUG=1 playwright test\",\n    \"test:report\": \"http-server ./playwright-report -a localhost -o\",\n    \"test:update\": \"playwright test --update-snapshots\"\n  },\n  \"dependencies\": {\n    \"@jupyterlab/galata\": \"~5.6.0-alpha.4\",\n    \"@playwright/test\": \"~1.58.0\",\n    \"rimraf\": \"^3.0.2\"\n  }\n}\n"
  },
  {
    "path": "ui-tests/playwright.config.ts",
    "content": "import baseConfig from '@jupyterlab/galata/lib/playwright-config';\n\nmodule.exports = {\n  ...baseConfig,\n  use: {\n    appPath: '',\n    trace: 'on-first-retry',\n    video: 'retain-on-failure',\n  },\n  retries: 1,\n  webServer: [\n    {\n      command: 'jlpm start',\n      port: 8888,\n      timeout: 120 * 1000,\n      reuseExistingServer: true,\n      stdout: 'pipe',\n    },\n  ],\n};\n"
  },
  {
    "path": "ui-tests/test/console.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { expect } from '@jupyterlab/galata';\n\nimport { Locator } from '@playwright/test';\n\nimport path from 'path';\n\nimport { test } from './fixtures';\n\nimport { waitForNotebook } from './utils';\n\nconst NOTEBOOK = 'empty.ipynb';\n\ntest.use({ autoGoto: false });\n\ntest.describe('ScratchPad', () => {\n  test.beforeEach(async ({ page, tmpPath }) => {\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${NOTEBOOK}`),\n      `${tmpPath}/${NOTEBOOK}`\n    );\n  });\n\n  test('Should not have a menu entry in tree', async ({ page }) => {\n    await page.goto('tree');\n    const menu = (await page.menu.openLocator('File>New')) as Locator;\n    const entry = menu.getByText('Scratchpad console');\n    expect(entry).not.toBeVisible();\n  });\n\n  test('Should have a menu entry in Notebook', async ({ page, tmpPath }) => {\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n    const menu = (await page.menu.openLocator('File>New')) as Locator;\n    const entry = menu.getByText('Scratchpad console');\n    expect(entry).toBeVisible();\n  });\n\n  test('Should open scratchpad console with menu', async ({\n    page,\n    tmpPath,\n  }) => {\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n    const menu = (await page.menu.openLocator('File>New')) as Locator;\n    await menu.getByText('Scratchpad console').click();\n\n    const rightStack = page.locator('#jp-right-stack');\n    await expect(rightStack).toBeVisible();\n    await expect(rightStack.locator('.jp-ConsolePanel')).toBeVisible();\n  });\n\n  test('Should open scratchpad console with shortcut', async ({\n    page,\n    tmpPath,\n  }) => {\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n    await page.locator('body').press('Control+B');\n\n    const rightStack = page.locator('#jp-right-stack');\n    await expect(rightStack).toBeVisible();\n    await expect(rightStack.locator('.jp-ConsolePanel')).toBeVisible();\n  });\n\n  test('Scratch pad console should use the notebook kernel', async ({\n    page,\n    tmpPath,\n    browserName,\n  }) => {\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n    await waitForNotebook(page, browserName);\n    const cellInput = page\n      .locator(\n        '.jp-Notebook-cell >> .jp-Cell-inputArea >> .cm-editor >> .cm-content[contenteditable=\"true\"]'\n      )\n      .first();\n    await cellInput.fill('a = 1');\n    await cellInput.press('Shift+Enter');\n\n    await page.locator('body').press('Control+B');\n\n    const console = page.locator('#jp-right-stack .jp-ConsolePanel');\n\n    const input = console.locator(\n      '.jp-CodeConsole-input >> .cm-editor >> .cm-content[contenteditable=\"true\"]'\n    );\n    await input.fill('print(a)');\n    await input.press('Shift+Enter');\n\n    const output = console.locator('.jp-OutputArea-output').first();\n    await expect(output).toHaveText('1');\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/editor.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { test } from './fixtures';\n\nimport { expect } from '@jupyterlab/galata';\n\nconst FILE = 'environment.yml';\n\ntest.use({ autoGoto: false });\n\nconst processRenameDialog = async (page, prevName: string, newName: string) => {\n  // Rename in the input dialog\n  await page\n    .locator(`text=File Path${prevName}New Name >> input`)\n    .fill(newName);\n\n  await Promise.all([\n    await page.click('text=\"Rename\"'),\n    // wait until the URL is updated\n    await page.waitForNavigation(),\n  ]);\n};\n\ntest.describe('Editor', () => {\n  test.beforeEach(async ({ page, tmpPath }) => {\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `../../binder/${FILE}`),\n      `${tmpPath}/${FILE}`\n    );\n  });\n\n  test('Renaming the file by clicking on the title', async ({\n    page,\n    tmpPath,\n  }) => {\n    const file = `${tmpPath}/${FILE}`;\n    await page.goto(`edit/${file}`);\n\n    // Click on the title\n    await page.click(`text=\"${FILE}\"`);\n\n    const newName = 'test.yml';\n    await processRenameDialog(page, FILE, newName);\n\n    // Check the URL contains the new name\n    const url = page.url();\n    expect(url).toContain(newName);\n  });\n\n  test('Renaming the file via the menu entry', async ({ page, tmpPath }) => {\n    const file = `${tmpPath}/${FILE}`;\n    await page.goto(`edit/${file}`);\n\n    // Click on the title\n    await page.menu.clickMenuItem('File>Rename…');\n\n    // Rename in the input dialog\n    const newName = 'test.yml';\n\n    await processRenameDialog(page, FILE, newName);\n\n    // Check the URL contains the new name\n    const url = page.url();\n    expect(url).toContain(newName);\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/filebrowser.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { expect } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\ntest.describe('File Browser', () => {\n  test.beforeEach(async ({ page, tmpPath }) => {\n    await page.contents.uploadFile(\n      path.resolve(__dirname, './notebooks/empty.ipynb'),\n      `${tmpPath}/empty.ipynb`\n    );\n    await page.contents.createDirectory(`${tmpPath}/folder1`);\n    await page.contents.createDirectory(`${tmpPath}/folder2`);\n  });\n\n  test('Select one folder', async ({ page, tmpPath }) => {\n    await page.filebrowser.refresh();\n\n    await page.keyboard.down('Control');\n    await page.getByText('folder1').last().click();\n\n    const toolbar = page.getByRole('toolbar');\n\n    expect(toolbar.getByText('Rename')).toBeVisible();\n    expect(toolbar.getByText('Move to Trash')).toBeVisible();\n  });\n\n  test('Select one file', async ({ page, tmpPath }) => {\n    await page.filebrowser.refresh();\n\n    await page.keyboard.down('Control');\n    await page.getByText('empty.ipynb').last().click();\n\n    const toolbar = page.getByRole('toolbar');\n\n    ['Rename', 'Open', 'Download', 'Move to Trash'].forEach(async (text) => {\n      expect(toolbar.getByText(text)).toBeVisible();\n    });\n  });\n\n  test('Select files and folders', async ({ page, tmpPath }) => {\n    await page.filebrowser.refresh();\n\n    await page.keyboard.down('Control');\n    await page.getByText('folder1').last().click();\n    await page.getByText('folder2').last().click();\n    await page.getByText('empty.ipynb').last().click();\n\n    const toolbar = page.getByRole('toolbar');\n\n    expect(toolbar.getByText('Rename')).toBeHidden();\n    expect(toolbar.getByText('Open')).toBeHidden();\n    expect(toolbar.getByText('Move to Trash')).toBeVisible();\n  });\n\n  test('Select files and open', async ({ page, tmpPath }) => {\n    // upload an additional notebook\n    await page.contents.uploadFile(\n      path.resolve(__dirname, './notebooks/simple.ipynb'),\n      `${tmpPath}/simple.ipynb`\n    );\n    await page.filebrowser.refresh();\n\n    await page.keyboard.down('Control');\n    await page.getByText('simple.ipynb').last().click();\n    await page.getByText('empty.ipynb').last().click();\n\n    const toolbar = page.getByRole('toolbar');\n\n    const [nb1, nb2] = await Promise.all([\n      page.waitForEvent('popup'),\n      page.waitForEvent('popup'),\n      toolbar.getByText('Open').last().click(),\n    ]);\n\n    await nb1.waitForLoadState();\n    await nb1.close();\n\n    await nb2.waitForLoadState();\n    await nb2.close();\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/fixtures.ts",
    "content": "import { test as base } from '@jupyterlab/galata';\n\nexport const test = base.extend({\n  waitForApplication: async ({ baseURL }, use, testInfo) => {\n    const waitIsReady = async (page): Promise<void> => {\n      await page.waitForSelector('#main-panel');\n    };\n    await use(waitIsReady);\n  },\n});\n"
  },
  {
    "path": "ui-tests/test/general.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { expect } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\nimport { waitForNotebook } from './utils';\n\ntest.describe('General', () => {\n  test('The notebook should render', async ({ page, tmpPath, browserName }) => {\n    const notebook = 'simple.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    // check the notebook footer shows up on hover\n    const notebookFooter = '.jp-Notebook-footer';\n    await page.hover(notebookFooter);\n    await page.waitForSelector(notebookFooter);\n\n    // hover somewhere else to make the add cell disappear\n    await page.hover('#jp-top-bar');\n\n    // click to make the blue border around the cell disappear\n    await page.click('.jp-WindowedPanel-outer');\n\n    // wait for the notebook to be ready\n    await waitForNotebook(page, browserName);\n\n    expect(await page.screenshot()).toMatchSnapshot('notebook.png');\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/jupyter_server_config.py",
    "content": "from typing import Any\n\nfrom jupyterlab.galata import configure_jupyter_server\n\nc: Any\nc.JupyterNotebookApp.expose_app_in_browser = True\n\nconfigure_jupyter_server(c)\n"
  },
  {
    "path": "ui-tests/test/layout.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { expect } from '@jupyterlab/galata';\n\nimport { galata } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\ntest.use({\n  mockSettings: {\n    ...galata.DEFAULT_SETTINGS,\n    '@jupyter-notebook/application-extension:shell': {\n      layout: {\n        Debugger: { area: 'left' },\n      },\n    },\n  },\n});\n\ntest.describe('Layout Customization', () => {\n  test('The Debugger panel should respect the settings and open in the left area', async ({\n    page,\n    tmpPath,\n  }) => {\n    const notebook = 'simple.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    const menuPath = 'View>Left Sidebar>Show Debugger';\n\n    await page.menu.clickMenuItem(menuPath);\n\n    const panel = page.locator('#jp-left-stack');\n    expect(await panel.isVisible()).toBe(true);\n\n    expect(await panel.screenshot()).toMatchSnapshot('debugger.png');\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/links.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { expect } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\nconst NOTEBOOK = 'local_links.ipynb';\nconst SUBFOLDER = 'test';\n\ntest.describe('Local Links', () => {\n  test.beforeEach(async ({ page, tmpPath }) => {\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${NOTEBOOK}`),\n      `${tmpPath}/${NOTEBOOK}`\n    );\n  });\n\n  test('Open the current directory', async ({ page, tmpPath }) => {\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n\n    const [current] = await Promise.all([\n      page.waitForEvent('popup'),\n      page.getByText('Current Directory').last().click(),\n    ]);\n\n    await current.waitForLoadState();\n    await current.waitForSelector('.jp-DirListing-content');\n\n    // Check that the link opened in a new tab\n    expect(current.url()).toContain(`tree/${tmpPath}`);\n    await current.close();\n  });\n\n  test('Open a folder', async ({ page, tmpPath }) => {\n    // Create a test folder\n    await page.contents.createDirectory(`${tmpPath}/${SUBFOLDER}`);\n\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n\n    const [folder] = await Promise.all([\n      page.waitForEvent('popup'),\n      page.getByText('Open Test Folder').last().click(),\n    ]);\n\n    await folder.waitForLoadState();\n    await folder.waitForSelector('.jp-DirListing-content');\n\n    await folder.close();\n\n    // Check that the link opened in a new tab\n    expect(folder.url()).toContain(`tree/${tmpPath}/${SUBFOLDER}`);\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/menus.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { test } from './fixtures';\n\nimport { expect } from '@jupyterlab/galata';\nimport { waitForKernelReady } from './utils';\n\nconst NOTEBOOK = 'empty.ipynb';\n\nconst MENU_PATHS = [\n  'File',\n  'File>New',\n  'File>Save and Export Notebook As',\n  'Edit',\n  'View',\n  'Run',\n  'Kernel',\n  'Settings',\n  'Settings>Theme',\n  'Help',\n];\n\ntest.use({ autoGoto: false });\n\ntest.describe('Notebook Menus', () => {\n  test.beforeEach(async ({ page, tmpPath }) => {\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${NOTEBOOK}`),\n      `${tmpPath}/${NOTEBOOK}`\n    );\n  });\n\n  MENU_PATHS.forEach((menuPath) => {\n    test(`Open menu item ${menuPath}`, async ({ page, tmpPath }) => {\n      await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n      await waitForKernelReady(page);\n\n      await page.menu.open(menuPath);\n      expect(await page.menu.isOpen(menuPath)).toBeTruthy();\n\n      const imageName = `opened-menu-${menuPath.replace(/>/g, '-')}.png`;\n      const menu = await page.menu.getOpenMenu();\n      expect(menu).toBeDefined();\n      expect(await menu?.screenshot()).toMatchSnapshot(imageName.toLowerCase());\n    });\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/mobile.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { expect, galata } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\nimport { hideAddCellButton, waitForKernelReady } from './utils';\n\ntest.use({\n  autoGoto: false,\n  viewport: { width: 524, height: 800 },\n  // Set a fixed string as Playwright is preventing the unique test name to be too long\n  // and replaces part of the path with a hash\n  tmpPath: 'mobile-layout',\n});\n\ntest.describe('Mobile', () => {\n  // manually create the test directory since tmpPath is set to a fixed value\n  test.beforeAll(async ({ request, tmpPath }) => {\n    const contents = galata.newContentsHelper(request);\n    await contents.createDirectory(tmpPath);\n  });\n\n  test.afterAll(async ({ request, tmpPath }) => {\n    const contents = galata.newContentsHelper(request);\n    await contents.deleteDirectory(tmpPath);\n  });\n\n  test('The layout should be more compact on the file browser page', async ({\n    page,\n    tmpPath,\n  }) => {\n    await page.goto(`tree/${tmpPath}`);\n\n    await page.waitForSelector('#top-panel-wrapper', { state: 'hidden' });\n\n    expect(await page.screenshot()).toMatchSnapshot('tree.png', {\n      maxDiffPixels: 300,\n    });\n  });\n\n  test('The layout should be more compact on the notebook page', async ({\n    page,\n    tmpPath,\n    browserName,\n  }) => {\n    await page.goto(`tree/${tmpPath}`);\n\n    // Create a new notebook\n    const notebookPromise = page.waitForEvent('popup');\n    await page.click('text=\"New\"');\n    await page\n      .locator(\n        '[data-command=\"notebook:create-new\"] >> text=\"Python 3 (ipykernel)\"'\n      )\n      .click();\n    const notebook = await notebookPromise;\n\n    // wait for the kernel status animations to be finished\n    await waitForKernelReady(notebook);\n\n    // force switching back to command mode to avoid capturing the cursor in the screenshot\n    await notebook.evaluate(async () => {\n      await window.jupyterapp.commands.execute('notebook:enter-command-mode');\n    });\n\n    // TODO: remove\n    if (browserName === 'firefox') {\n      await hideAddCellButton(notebook);\n    }\n\n    expect(await notebook.screenshot()).toMatchSnapshot('notebook.png');\n    await notebook.close();\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/notebook.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport path from 'path';\n\nimport { expect } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\nimport { waitForNotebook, runAndAdvance, waitForKernelReady } from './utils';\n\nconst NOTEBOOK = 'example.ipynb';\n\ntest.use({ autoGoto: false });\n\ntest.describe('Notebook', () => {\n  test.beforeEach(async ({ page, tmpPath }) => {\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `../../binder/${NOTEBOOK}`),\n      `${tmpPath}/${NOTEBOOK}`\n    );\n  });\n\n  test('Title should be rendered', async ({ page, tmpPath }) => {\n    await page.goto(`notebooks/${tmpPath}/${NOTEBOOK}`);\n    const href = await page.evaluate(() => {\n      return document.querySelector('#jp-NotebookLogo')?.getAttribute('href');\n    });\n    expect(href).toContain('/tree');\n  });\n\n  test('Renaming the notebook should be possible', async ({\n    page,\n    tmpPath,\n  }) => {\n    const notebook = `${tmpPath}/${NOTEBOOK}`;\n    await page.goto(`notebooks/${notebook}`);\n\n    // Click on the title (with .ipynb extension stripped)\n    await page.click('text=\"example\"');\n\n    // Rename in the input dialog\n    const newName = 'test.ipynb';\n    const newNameStripped = 'test';\n    await page\n      .locator(`text=File Path${NOTEBOOK}New Name >> input`)\n      .fill(newName);\n\n    await Promise.all([\n      await page.click('text=\"Rename\"'),\n      // wait until the URL is updated\n      await page.waitForNavigation(),\n    ]);\n\n    // Check the URL contains the new name\n    const url = page.url();\n    expect(url).toContain(newNameStripped);\n  });\n\n  // TODO: rewrite with page.notebook when fixed upstream in Galata\n  // and usable in Jupyter Notebook without active tabs\n  test('Outputs should be scrolled automatically', async ({\n    page,\n    tmpPath,\n  }) => {\n    const notebook = 'autoscroll.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    // wait for the checkpoint indicator to be displayed before executing the cells\n    await page.waitForSelector('.jp-NotebookCheckpoint');\n    await page.click('.jp-Notebook');\n\n    // execute the first cell\n    await runAndAdvance(page);\n    await page\n      .locator('.jp-mod-outputsScrolled')\n      .nth(0)\n      .waitFor({ state: 'visible' });\n\n    // execute the second cell\n    await runAndAdvance(page);\n    // the second cell should not be auto scrolled\n    expect(page.locator('.jp-mod-outputsScrolled').nth(1)).toHaveCount(0);\n\n    const checkCell = async (n: number): Promise<boolean> => {\n      const scrolled = await page.$eval(`.jp-Notebook-cell >> nth=${n}`, (el) =>\n        el.classList.contains('jp-mod-outputsScrolled')\n      );\n      return scrolled;\n    };\n\n    // check the long output area is auto scrolled\n    expect(await checkCell(0)).toBe(true);\n\n    // check the short output area is not auto scrolled\n    expect(await checkCell(1)).toBe(false);\n  });\n\n  test('Open table of content left panel', async ({ page, tmpPath }) => {\n    const notebook = 'simple_toc.ipynb';\n    const menuPath = 'View>Left Sidebar>Show Table of Contents';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    await waitForKernelReady(page);\n\n    await page.menu.clickMenuItem(menuPath);\n\n    const panel = page.locator('#jp-left-stack');\n    expect(await panel.isVisible()).toBe(true);\n\n    await expect(\n      panel.locator(\n        '.jp-SidePanel-content > .jp-TableOfContents-tree > .jp-TableOfContents-content'\n      )\n    ).toHaveCount(1);\n    await expect(\n      panel.locator(\n        '.jp-SidePanel-content > .jp-TableOfContents-tree > .jp-TableOfContents-content > .jp-tocItem'\n      )\n    ).toHaveCount(3);\n\n    const imageName = 'toc-left-panel.png';\n\n    expect(await panel.screenshot()).toMatchSnapshot(imageName);\n  });\n\n  test('Open notebook tools right panel', async ({ page, tmpPath }) => {\n    const notebook = 'simple.ipynb';\n    const menuPath = 'View>Right Sidebar>Show Notebook Tools';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    await waitForKernelReady(page);\n\n    await page.menu.clickMenuItem(menuPath);\n\n    const panel = page.locator('#jp-right-stack');\n    expect(await panel.isVisible()).toBe(true);\n\n    await page.isVisible('#notebook-tools.jp-NotebookTools');\n\n    await page.isVisible('#notebook-tools.jp-NotebookTools > #add-tag.tag');\n\n    const imageName = 'notebooktools-right-panel.png';\n    expect(await panel.screenshot()).toMatchSnapshot(imageName);\n  });\n\n  test('Clicking on \"Close and Shut Down Notebook\" should close the browser tab', async ({\n    page,\n    tmpPath,\n  }) => {\n    const notebook = 'simple.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    const menuPath = 'File>Close and Halt';\n    await page.menu.clickMenuItem(menuPath);\n\n    // Press Enter to confirm the dialog\n    await page.keyboard.press('Enter');\n\n    expect(page.isClosed());\n  });\n\n  test('Toggle the full width of the notebook', async ({\n    page,\n    browserName,\n    tmpPath,\n  }) => {\n    const notebook = 'simple.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    const menuPath = 'View>Enable Full Width Notebook';\n    await page.menu.clickMenuItem(menuPath);\n\n    const notebookPanel = page.locator('.jp-NotebookPanel').first();\n    await expect(notebookPanel).toHaveClass(/jp-mod-fullwidth/);\n\n    // click to make the blue border around the cell disappear\n    await page.click('.jp-WindowedPanel-outer');\n\n    // wait for the notebook to be ready\n    await waitForNotebook(page, browserName);\n\n    expect(await page.screenshot()).toMatchSnapshot('notebook-full-width.png');\n\n    // undo the full width\n    await page.menu.clickMenuItem(menuPath);\n    await expect(notebookPanel).not.toHaveClass(/jp-mod-fullwidth/);\n  });\n\n  test('Open the log console widget in the down area', async ({\n    page,\n    tmpPath,\n  }) => {\n    const notebook = 'simple.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    const menuPath = 'View>Show Log Console';\n    await page.menu.clickMenuItem(menuPath);\n\n    await expect(page.locator('.jp-LogConsole')).toBeVisible();\n  });\n\n  test('Toggle cell outputs with the O keyboard shortcut', async ({\n    page,\n    tmpPath,\n  }) => {\n    const notebook = 'autoscroll.ipynb';\n    await page.contents.uploadFile(\n      path.resolve(__dirname, `./notebooks/${notebook}`),\n      `${tmpPath}/${notebook}`\n    );\n    await page.goto(`notebooks/${tmpPath}/${notebook}`);\n\n    await waitForKernelReady(page);\n\n    // Wait for the first cell to be active\n    const firstCell = page.locator('.jp-Cell').first();\n    await expect(firstCell).toHaveClass(/jp-mod-active/);\n\n    // run the two cells\n    await page.keyboard.press('Shift+Enter');\n    await page.keyboard.press('ControlOrMeta+Enter');\n\n    await page.keyboard.press('Escape');\n    await page.keyboard.press('O');\n\n    await page.waitForSelector('.jp-OutputPlaceholder', { state: 'visible' });\n\n    await page.keyboard.press('O');\n\n    await page.waitForSelector('.jp-OutputPlaceholder', { state: 'hidden' });\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/notebooks/autoscroll.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"6f7028b9-4d2c-4fa2-96ee-bfa77bbee434\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"print(\\\"1\\\\n\\\" * 200)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"6f7028b9-4d2c-4fa2-96ee-bfa77bbee434\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"print(\\\"1\\\\n\\\" * 20)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.7\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "ui-tests/test/notebooks/empty.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"6f7028b9-4d2c-4fa2-96ee-bfa77bbee434\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.7\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "ui-tests/test/notebooks/local_links.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Handle Local Links\"\n   ]\n  },\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"[Current Directory](./)\"\n   ]\n  },\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"[Open Test Folder](./test)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.11.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "ui-tests/test/notebooks/simple.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Test Notebook\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n    \"display_name\": \"Python 3 (ipykernel)\",\n    \"language\": \"python\",\n    \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\"\n  },\n  \"orig_nbformat\": 4\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "ui-tests/test/notebooks/simple_toc.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# part 1\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## subpart 1\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## subpart 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# part 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# part 3\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.5\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"0508733a7f73e6ddc798c911e704189485d436785f398d29dd8c20885fc63cb3\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "ui-tests/test/settings.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { test } from './fixtures';\n\nimport { expect, galata } from '@jupyterlab/galata';\n\n// Set a fixed string as Playwright is preventing the unique test name to be too long\n// and replaces part of the path with a hash\ntest.use({ autoGoto: false, tmpPath: 'settings' });\n\ntest.describe('Settings', () => {\n  test.beforeAll(async ({ request, tmpPath }) => {\n    const contents = galata.newContentsHelper(request);\n    await contents.createDirectory(tmpPath);\n  });\n\n  test.afterAll(async ({ request, tmpPath }) => {\n    const contents = galata.newContentsHelper(request);\n    await contents.deleteDirectory(tmpPath);\n  });\n\n  test('Should be persisted after reloading the page', async ({\n    page,\n    tmpPath,\n  }) => {\n    const showHeaderPath = 'View>Show Header';\n\n    await page.goto(`tree/${tmpPath}`);\n\n    await page.waitForSelector('#top-panel', { state: 'visible' });\n    await page.menu.clickMenuItem(showHeaderPath);\n    await page.waitForSelector('#top-panel', { state: 'hidden' });\n    await page.reload({ waitUntil: 'networkidle' });\n    await page.menu.getMenuItem(showHeaderPath);\n    expect(await page.screenshot()).toMatchSnapshot('top-hidden.png', {\n      maxDiffPixels: 300,\n    });\n\n    await page.waitForSelector('#top-panel', { state: 'hidden' });\n    await page.menu.clickMenuItem(showHeaderPath);\n    await page.waitForSelector('#top-panel', { state: 'visible' });\n    await page.reload({ waitUntil: 'networkidle' });\n    await page.menu.getMenuItem(showHeaderPath);\n    expect(await page.screenshot()).toMatchSnapshot('top-visible.png', {\n      maxDiffPixels: 300,\n    });\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/smoke.spec.ts",
    "content": "import { expect } from '@jupyterlab/galata';\n\nimport { test } from './fixtures';\n\nimport { runAndAdvance } from './utils';\n\ntest.use({ autoGoto: false });\n\ntest.describe('Smoke', () => {\n  test('Tour', async ({ page, tmpPath }) => {\n    // Open the tree page\n    await page.goto(`tree/${tmpPath}`);\n    await page.locator('.jp-TreePanel >> text=\"Running\"').click();\n    await page.locator('.jp-TreePanel >> text=\"Files\"').click();\n\n    // Create a new console\n    await page.menu.clickMenuItem('New>Console');\n    // Choose the kernel\n    const [console] = await Promise.all([\n      page.waitForEvent('popup'),\n      page.click('text=\"Select\"'),\n    ]);\n    await console.waitForLoadState();\n    await console.waitForSelector('.jp-CodeConsole');\n\n    // Create a new notebook\n    const notebookPromise = page.waitForEvent('popup');\n    await page.click('text=\"New\"');\n    await page\n      .locator(\n        '[data-command=\"notebook:create-new\"] >> text=\"Python 3 (ipykernel)\"'\n      )\n      .click();\n    const notebook = await notebookPromise;\n\n    try {\n      // we may have to select the kernel first\n      await notebook.click('text=\"Select\"', { timeout: 5000 });\n    } catch {\n      // The kernel is already selected\n    }\n\n    // Enter code in the first cell\n    await notebook.locator(\n      '.jp-Cell-inputArea >> .cm-editor >> .cm-content[contenteditable=\"true\"]'\n    ).type(`import math\n\nmath.pi`);\n\n    // Run the cell\n    runAndAdvance(notebook);\n\n    // Enter code in the next cell\n    await notebook\n      .locator(\n        '.jp-Cell-inputArea >> .cm-editor >> .cm-content[contenteditable=\"true\"]'\n      )\n      .nth(1)\n      .type('import this');\n\n    // Run the cell\n    runAndAdvance(notebook);\n\n    // Save the notebook\n    // TODO: re-enable after fixing the name on save dialog?\n    // await notebook.click('//span/*[local-name()=\"svg\"]');\n\n    // Click on the Jupyter logo to open the tree page\n    const [tree2] = await Promise.all([\n      notebook.waitForEvent('popup'),\n      notebook.click(\n        '//*[local-name()=\"svg\" and normalize-space(.)=\\'Jupyter\\']'\n      ),\n    ]);\n\n    // Shut down the kernels\n    await tree2.locator('.jp-TreePanel >> text=\"Running\"').click();\n    await tree2.click('#main-panel jp-button :text(\"Shut Down All\")');\n    await tree2.press('.jp-Dialog', 'Enter');\n\n    // Close the pages\n    await tree2.close();\n    await notebook.close();\n    await console.close();\n    await page.close();\n\n    expect(true).toBe(true);\n  });\n\n  test('JupyterLab', async ({ page, tmpPath }) => {\n    // Open the tree page\n    await page.goto(`tree/${tmpPath}`);\n\n    // Open JupyterLab\n    const [lab] = await Promise.all([\n      page.waitForEvent('popup'),\n      page.menu.clickMenuItem('View>Open JupyterLab'),\n    ]);\n    await lab.waitForSelector('.jp-Launcher');\n    await lab.close();\n\n    expect(true).toBe(true);\n  });\n});\n"
  },
  {
    "path": "ui-tests/test/tree.spec.ts",
    "content": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { test } from './fixtures';\n\nimport { expect } from '@jupyterlab/galata';\n\nconst SUBFOLDER = 'subfolder';\n\ntest('Tree', async ({ page }) => {\n  await page.goto('tree');\n  const button = await page.$('text=\"New Notebook\"');\n  expect(button).toBeDefined();\n});\n\ntest('should go to subfolder', async ({ page, tmpPath }) => {\n  const dir = `${tmpPath}/${SUBFOLDER}`;\n  await page.contents.createDirectory(dir);\n  await page.goto(`tree/${dir}`);\n\n  expect(\n    await page.waitForSelector(`.jp-FileBrowser-crumbs >> text=/${SUBFOLDER}/`)\n  ).toBeTruthy();\n});\n\ntest('should update url when navigating in filebrowser', async ({\n  page,\n  tmpPath,\n}) => {\n  await page.contents.createDirectory(`${tmpPath}/${SUBFOLDER}`);\n\n  await page.dblclick(`.jp-FileBrowser-listing >> text=${SUBFOLDER}`);\n\n  await page.waitForSelector(`.jp-FileBrowser-crumbs >> text=/${SUBFOLDER}/`);\n\n  const url = new URL(page.url());\n  expect(url.pathname).toEqual(`/tree/${tmpPath}/${SUBFOLDER}`);\n});\n\ntest('Should activate file browser tab', async ({ page, tmpPath }) => {\n  await page.goto(`tree/${tmpPath}`);\n  await page.locator('.jp-TreePanel >> text=\"Running\"').click();\n\n  await expect(\n    page.locator('#main-panel #jp-running-sessions-tree')\n  ).toBeVisible();\n\n  await page.menu.clickMenuItem('View>File Browser');\n  await expect(page.locator('#main-panel #filebrowser')).toBeVisible();\n});\n"
  },
  {
    "path": "ui-tests/test/utils.ts",
    "content": "import { IJupyterLabPageFixture } from '@jupyterlab/galata';\n\nimport { Page } from '@playwright/test';\n\n/**\n * Run the selected cell and advance.\n */\nexport async function runAndAdvance(\n  page: IJupyterLabPageFixture | Page\n): Promise<void> {\n  await page.keyboard.press('Shift+Enter');\n}\n\n/**\n * Wait for the kernel to be ready\n */\nexport async function waitForKernelReady(page: Page): Promise<void> {\n  await page.waitForSelector('.jp-NotebookKernelStatus-fade');\n  await page.waitForFunction(() => {\n    const status = window.document.getElementsByClassName(\n      'jp-NotebookKernelStatus'\n    )[0];\n\n    if (!status) {\n      return false;\n    }\n\n    const finished = status?.getAnimations().reduce((prev, curr) => {\n      return prev && curr.playState === 'finished';\n    }, true);\n    return finished;\n  });\n  const viewport = page.viewportSize();\n  const width = viewport?.width;\n  if (width && width > 600) {\n    await page.waitForSelector('.jp-DebuggerBugButton[aria-disabled=\"false\"]');\n  }\n}\n\n/**\n * Special case for firefox headless issue\n * See https://github.com/jupyter/notebook/pull/6872#issuecomment-1549594166 for more details\n */\nexport async function hideAddCellButton(page: Page): Promise<void> {\n  await page\n    .locator('.jp-Notebook-footer')\n    .evaluate((element) => (element.style.display = 'none'));\n}\n\n/**\n * Wait for the notebook to be ready\n */\nexport async function waitForNotebook(\n  page: Page,\n  browserName = ''\n): Promise<void> {\n  // wait for the kernel status animations to be finished\n  await waitForKernelReady(page);\n  await page.waitForSelector(\n    \".jp-Notebook-ExecutionIndicator[data-status='idle']\"\n  );\n\n  const checkpointLocator = '.jp-NotebookCheckpoint';\n  // wait for the checkpoint indicator to be displayed\n  await page.waitForSelector(checkpointLocator);\n\n  // remove the amount of seconds manually since it might display strings such as \"3 seconds ago\"\n  await page\n    .locator(checkpointLocator)\n    .evaluate(\n      (element) => (element.innerHTML = 'Last Checkpoint: 3 seconds ago')\n    );\n\n  // special case for firefox headless issue\n  // see https://github.com/jupyter/notebook/pull/6872#issuecomment-1549594166 for more details\n  if (browserName === 'firefox') {\n    await hideAddCellButton(page);\n  }\n}\n"
  },
  {
    "path": "ui-tests/tsconfig.test.json",
    "content": "{\n  \"extends\": \"../tsconfigbase.test\",\n  \"include\": [\"test/**/*\"]\n}\n"
  }
]