From 105db7b1c141ef78ac98e83f9c42d37b9b3d6cce Mon Sep 17 00:00:00 2001 From: kaiyaointel Date: Thu, 15 Sep 2022 18:23:12 +0800 Subject: [PATCH] NeuralCoder updates latest JupyterLab ext for Ali-PAI demo usage (#1249) --- .../coders/autoinc/autoinc_harness.py | 1 + neural_coder/extensions/docs/1.png | Bin 0 -> 162644 bytes neural_coder/extensions/docs/2.png | Bin 0 -> 139838 bytes neural_coder/extensions/docs/3.png | Bin 0 -> 108347 bytes neural_coder/extensions/docs/4.png | Bin 0 -> 108391 bytes neural_coder/extensions/docs/5.png | Bin 0 -> 168012 bytes .../neural-compressor-ext-lab/PKG-INFO | 157 - .../neural-compressor-ext-lab/README.md | 128 - .../neural-compressor-ext-lab/babel.config.js | 1 - .../neural-compressor-ext-lab/install.json | 5 - .../neural-compressor-ext-lab/jest.config.js | 42 - .../jupyterlab_neural_coder.json | 7 - .../jupyterlab_neural_coder.json | 7 - .../neural-compressor-ext-lab/lib/client.d.ts | 4 - .../neural-compressor-ext-lab/lib/client.js | 25 - .../lib/deepcoder.d.ts | 26 - .../lib/deepcoder.js | 121 - .../neural-compressor-ext-lab/handlers.py | 108 - .../lib_index_js.c8ce5d6f06928ba82660.js | 343 - .../lib_index_js.c8ce5d6f06928ba82660.js.map | 1 - .../remoteEntry.5902e6831f208a384a8f.js.map | 1 - .../style_index_js.01365bdf92323310e6f2.js | 73 - ...style_index_js.01365bdf92323310e6f2.js.map | 1 - .../requirements.txt | 140 - .../neural-compressor-ext-lab/setup.cfg | 4 - .../src/__tests__/Neural_Coder.spec.ts | 9 - .../neural-compressor-ext-lab/src/client.ts | 39 - .../src/deepcoder.ts | 178 - .../ui-tests/README.md | 148 - .../ui-tests/jupyter_server_test_config.py | 35 - .../ui-tests/package.json | 13 - .../ui-tests/playwright.config.js | 14 - .../ui-tests/tests/Neural_Coder.spec.ts | 21 - .../neural_compressor_ext_lab/.eslintignore | 8 + .../neural_compressor_ext_lab/.eslintrc.js | 44 + .../neural_compressor_ext_lab/.prettierignore | 5 + .../neural_compressor_ext_lab/.prettierrc | 6 + .../neural_compressor_ext_lab/.stylelintrc | 12 + .../CHANGELOG.md | 0 .../neural_compressor_ext_lab/LICENSE | 29 + .../MANIFEST.in | 6 +- .../neural_compressor_ext_lab/README.md | 75 + .../RELEASE.md | 2 +- .../binder/environment.yml | 21 + .../binder/postBuild | 47 + .../neural_compressor_ext_lab/install.json | 5 + .../lib/constants.d.ts | 3 +- .../lib}/constants.js | 3 +- .../lib/deepcoder.d.ts | 26 + .../lib/deepcoder.js | 249 + .../lib/index.d.ts | 2 +- .../lib/index.js | 66 +- .../neural_compressor_ext_lab/lib/test.d.ts | 2 + .../neural_compressor_ext_lab/lib/test.js | 4 + .../neural_compressor_ext_lab/lib/utils.d.ts | 120 + .../neural_compressor_ext_lab/lib/utils.js | 270 + .../neural_compressor_ext_lab}/__init__.py | 32 +- .../neural_compressor_ext_lab}/_version.py | 26 +- .../labextension/build_log.json | 653 + .../labextension/package.json | 131 + .../lib_index_js.f3ace973ac83174a6db0.js | 704 + .../lib_index_js.f3ace973ac83174a6db0.js.map | 1 + .../remoteEntry.6eba177d6998a43bce65.js} | 47 +- .../remoteEntry.6eba177d6998a43bce65.js.map | 1 + .../labextension/static/style.js | 2 +- .../style_index_js.64a99c20bfaa1b52d477.js | 73 + ...style_index_js.64a99c20bfaa1b52d477.js.map | 1 + ...ntime_cssW-72eba1.de03554a230625d91110.js} | 4 +- ...e_cssW-72eba1.de03554a230625d91110.js.map} | 2 +- ...-html_lib_index_js.8b8b15b1484bb29831f7.js | 6344 +++++ ...l_lib_index_js.8b8b15b1484bb29831f7.js.map | 1 + .../package-lock.json | 20273 ++++++++++++++++ .../neural_compressor_ext_lab/package.json | 126 + .../pyproject.toml | 6 +- .../requirements.txt | 219 + .../setup.py | 25 +- .../src/constants.ts | 5 +- .../src/deepcoder.ts | 348 + .../src/index.ts | 97 +- .../neural_compressor_ext_lab/src/utils.tsx | 366 + .../style/base.css | 95 + .../style/base.scss | 0 .../style/index.css | 1 - .../style/index.js | 0 .../tsconfig.json | 2 +- .../tsconfig.tsbuildinfo | 10647 ++++++++ .../.eslintignore | 8 + .../.eslintrc.js | 39 + .../.prettierignore | 5 + .../.prettierrc | 6 + .../.stylelintrc | 12 + .../CHANGELOG.md | 5 + .../LICENSE | 2 +- .../MANIFEST.in | 24 + .../README.md | 75 + .../RELEASE.md | 61 + .../binder/environment.yml | 21 + .../binder/postBuild | 47 + .../install.json | 5 + .../lib/constants.d.ts | 11 + .../lib/constants.js | 3 +- .../lib/deepcoder.d.ts | 26 + .../lib/deepcoder.js | 235 + .../lib/index.d.ts | 6 + .../lib/index.js | 91 + .../lib/utils.d.ts | 120 + .../lib/utils.js | 270 + .../__init__.py | 34 + .../_version.py | 21 + .../labextension/build_log.json | 241 +- .../labextension}/package.json | 60 +- .../lib_index_js.20e3418084629d1b68d4.js | 691 + .../lib_index_js.20e3418084629d1b68d4.js.map | 1 + .../lib_index_js.e11ae6fa812dc8143581.js | 691 + .../lib_index_js.e11ae6fa812dc8143581.js.map | 1 + .../remoteEntry.5518c4f947f62c183fa0.js.map | 1 + .../remoteEntry.f8254f037aa9ae390f8a.js | 567 + .../remoteEntry.f8254f037aa9ae390f8a.js.map | 1 + .../labextension/static/style.js | 4 + .../style_index_js.04c3b1d46277ae7e980a.js | 73 + ...style_index_js.04c3b1d46277ae7e980a.js.map | 1 + ...untime_cssW-72eba1.daae0b705f2592431f3c.js | 403 + ...me_cssW-72eba1.daae0b705f2592431f3c.js.map | 1 + ...-html_lib_index_js.374e3ab739e9143d508d.js | 6344 +++++ ...l_lib_index_js.374e3ab739e9143d508d.js.map | 1 + .../package-lock.json | 19123 +++++++++++++++ .../package.json | 57 +- .../pyproject.toml | 68 + .../neurl_compressor_ext_lab_alibaba/setup.py | 16 + .../src/constants.ts | 14 + .../src/deepcoder.ts | 322 + .../src/index.ts | 132 + .../src/utils.tsx | 366 + .../style/base.css | 636 + .../style/base.scss | 36 + .../style/index.css | 1 + .../style/index.js | 1 + .../tsconfig.json | 24 + .../tsconfig.tsbuildinfo | 8354 +++++++ neural_coder/extensions/readme.md | 54 + 140 files changed, 80278 insertions(+), 2023 deletions(-) create mode 100644 neural_coder/extensions/docs/1.png create mode 100644 neural_coder/extensions/docs/2.png create mode 100644 neural_coder/extensions/docs/3.png create mode 100644 neural_coder/extensions/docs/4.png create mode 100644 neural_coder/extensions/docs/5.png delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/PKG-INFO delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/README.md delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/babel.config.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/install.json delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/jest.config.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_notebook_config.d/jupyterlab_neural_coder.json delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_server_config.d/jupyterlab_neural_coder.json delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/lib/client.d.ts delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/lib/client.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.d.ts delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/handlers.py delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js.map delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js.map delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js.map delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/requirements.txt delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/setup.cfg delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/src/__tests__/Neural_Coder.spec.ts delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/src/client.ts delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/src/deepcoder.ts delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/ui-tests/README.md delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/ui-tests/jupyter_server_test_config.py delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/ui-tests/package.json delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/ui-tests/playwright.config.js delete mode 100644 neural_coder/extensions/neural-compressor-ext-lab/ui-tests/tests/Neural_Coder.spec.ts create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/.eslintignore create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/.eslintrc.js create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/.prettierignore create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/.prettierrc create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/.stylelintrc rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/CHANGELOG.md (100%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/LICENSE rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/MANIFEST.in (71%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/README.md rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/RELEASE.md (97%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/binder/environment.yml create mode 100755 neural_coder/extensions/neural_compressor_ext_lab/binder/postBuild create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/install.json rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/lib/constants.d.ts (97%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab/lib}/constants.js (97%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.d.ts create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.js rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/lib/index.d.ts (68%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/lib/index.js (60%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/lib/test.d.ts create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/lib/test.js create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/lib/utils.d.ts create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/lib/utils.js rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab => neural_compressor_ext_lab/neural_compressor_ext_lab}/__init__.py (50%) rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab => neural_compressor_ext_lab/neural_compressor_ext_lab}/_version.py (60%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/build_log.json create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/package.json create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js.map rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js => neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js} (90%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js.map rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab => neural_compressor_ext_lab/neural_compressor_ext_lab}/labextension/static/style.js (69%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js.map rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js => neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js} (98%) rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js.map => neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js.map} (97%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_react-sanitized-html_lib_index_js.8b8b15b1484bb29831f7.js create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_react-sanitized-html_lib_index_js.8b8b15b1484bb29831f7.js.map create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/package-lock.json create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/package.json rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/pyproject.toml (59%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/requirements.txt rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/setup.py (79%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/src/constants.ts (96%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/src/deepcoder.ts rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/src/index.ts (61%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/src/utils.tsx rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/style/base.css (92%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/style/base.scss (100%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/style/index.css (96%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/style/index.js (100%) rename neural_coder/extensions/{neural-compressor-ext-lab => neural_compressor_ext_lab}/tsconfig.json (96%) create mode 100644 neural_coder/extensions/neural_compressor_ext_lab/tsconfig.tsbuildinfo create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/.eslintignore create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/.eslintrc.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/.prettierignore create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/.prettierrc create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/.stylelintrc create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/CHANGELOG.md rename neural_coder/extensions/{neural-compressor-ext-lab => neurl_compressor_ext_lab_alibaba}/LICENSE (97%) create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/MANIFEST.in create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/README.md create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/RELEASE.md create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/binder/environment.yml create mode 100755 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/binder/postBuild create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/install.json create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/constants.d.ts rename neural_coder/extensions/{neural-compressor-ext-lab => neurl_compressor_ext_lab_alibaba}/lib/constants.js (97%) create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/deepcoder.d.ts create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/deepcoder.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/index.d.ts create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/index.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/utils.d.ts create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/lib/utils.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/__init__.py create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/_version.py rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab => neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba}/labextension/build_log.json (68%) rename neural_coder/extensions/{neural-compressor-ext-lab => neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension}/package.json (67%) create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/lib_index_js.20e3418084629d1b68d4.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/lib_index_js.20e3418084629d1b68d4.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/lib_index_js.e11ae6fa812dc8143581.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/lib_index_js.e11ae6fa812dc8143581.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/remoteEntry.5518c4f947f62c183fa0.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/remoteEntry.f8254f037aa9ae390f8a.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/remoteEntry.f8254f037aa9ae390f8a.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/style.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/style_index_js.04c3b1d46277ae7e980a.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/style_index_js.04c3b1d46277ae7e980a.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.daae0b705f2592431f3c.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.daae0b705f2592431f3c.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/vendors-node_modules_react-sanitized-html_lib_index_js.374e3ab739e9143d508d.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/neural_compressor_ext_lab_alibaba/labextension/static/vendors-node_modules_react-sanitized-html_lib_index_js.374e3ab739e9143d508d.js.map create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/package-lock.json rename neural_coder/extensions/{neural-compressor-ext-lab/neural-compressor-ext-lab/labextension => neurl_compressor_ext_lab_alibaba}/package.json (67%) create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/pyproject.toml create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/setup.py create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/src/constants.ts create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/src/deepcoder.ts create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/src/index.ts create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/src/utils.tsx create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/style/base.css create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/style/base.scss create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/style/index.css create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/style/index.js create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/tsconfig.json create mode 100644 neural_coder/extensions/neurl_compressor_ext_lab_alibaba/tsconfig.tsbuildinfo create mode 100644 neural_coder/extensions/readme.md diff --git a/neural_coder/coders/autoinc/autoinc_harness.py b/neural_coder/coders/autoinc/autoinc_harness.py index e4f56a0393f..3f03e054c1f 100644 --- a/neural_coder/coders/autoinc/autoinc_harness.py +++ b/neural_coder/coders/autoinc/autoinc_harness.py @@ -199,6 +199,7 @@ def register_transformation(self): trans_insert_location = i + i_search trans_insert_location = min(max(trans_insert_location, put_below_idx), put_above_idx) elif file_path_idx == 0 and domain_ == 'torchvision': + trans_insert_location = 1 for i in range(len(lines)): line = lines[i] if "val_loader" in line and "aux_val_loader" not in line \ diff --git a/neural_coder/extensions/docs/1.png b/neural_coder/extensions/docs/1.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4d18b6effe23c8a236422401163d38b3870b9e GIT binary patch literal 162644 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%0Ar(xD`QNQR( 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 UDEzdV$&c$w3LyFX2WBt+58D|P#{d8T literal 0 HcmV?d00001 diff --git a/neural_coder/extensions/docs/2.png b/neural_coder/extensions/docs/2.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfe452976c579ee51b075c5e7a20ca31d0cdf55 GIT binary patch literal 139838 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%0Du~t31yw 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 literal 0 HcmV?d00001 diff --git a/neural_coder/extensions/docs/4.png b/neural_coder/extensions/docs/4.png new file mode 100644 index 0000000000000000000000000000000000000000..540723129acb75ac57cd46a6a7f4f53328b7362a GIT binary patch literal 108391 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 rQBV1v8E*E#3Da_{r~ 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≶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

nc57Wv_{h#3T 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 literal 0 HcmV?d00001 diff --git a/neural_coder/extensions/neural-compressor-ext-lab/PKG-INFO b/neural_coder/extensions/neural-compressor-ext-lab/PKG-INFO deleted file mode 100644 index 91c406d5d52..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/PKG-INFO +++ /dev/null @@ -1,157 +0,0 @@ -Metadata-Version: 2.1 -Name: neural-compressor-ext-lab -Version: 0.1.0 -Summary: jupyterlab extension -Home-page: https://github.com/intel-sandbox/neural-coder/tree/master/neural_coder/extensions/JupyterLab -Author: NeuralCoder -Author-email: xin.long@intel.com -License: BSD-3-Clause -Keywords: Jupyter,JupyterLab,JupyterLab3 -Platform: Linux -Platform: Mac OS X -Platform: Windows -Classifier: License :: OSI Approved :: BSD License -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Framework :: Jupyter -Classifier: Framework :: Jupyter :: JupyterLab -Classifier: Framework :: Jupyter :: JupyterLab :: 3 -Classifier: Framework :: Jupyter :: JupyterLab :: Extensions -Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt -Requires-Python: >=3.7 -Description-Content-Type: text/markdown -License-File: LICENSE - -# Neural-Compressor-EXT-LAB - - -## Requirements - -- JupyterLab >= 3.0 - -## Install -Before install, you should install the NeuralCoder, please refer to https://github.com/intel-sandbox/neural-coder/blob/master/neural_coder/README.md - -### Python Backend -To install the Python source code, execute: -```bash -pip install -e. -``` -Note: After the extension is published to the PyPI or conda-forge repositories, you can easily install the extension using pip or conda, such as: -```bash -pip install neural-compressor-ext-lab -``` -### Javascript/Typescript Front-end -Install source extension from npm with: -```bash -jupyter labextension install --py neural-compressor-ext-lab -``` -Note: After the extension is published to the NPM repositories, you can easily install the extension from jupyter lab extension market and don't need to execute the above command manually. - -## Debugging -Check if the package has been added into the extension list: -```bash -jupyter labextension list -jupyter serverextension list -``` -If the neural-compressor-ext-lab is not in ```serverextionsion``` list, try to enable the package to bacome a server extension: -```bash -jupyter serverextension enable --py neural-compressor-ext-lab -``` -*debugging tip* ļ¼šif the enable fails, try running: -```bash -jupyter lab --ServerAPP.jpserver_extension="{'neural-compressor-ext-lab':True}" --debug -``` - -## Uninstall - -To remove the extension, execute: - -```bash -pip uninstall neural-compressor-ext-lab -``` -## Access jupyter lab remotely using SSH - -Launch the jupyter lab service on the remote server: -```bash -jupyter lab --no-browser --port=8889 -``` -Start SSH in a local terminal: -```bash -ssh -N -f -L localhost:8888:localhost:8889 username@serverIP -``` -## Contributing - -### Development install - -Note: You will need NodeJS to build the extension package. - -The `jlpm` command is JupyterLab's pinned version of -[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use -`yarn` or `npm` in lieu of `jlpm` below. - -```bash -# Clone the repo to your local environment -# Change directory to the Neural_Coder directory -# Install package in development mode -pip install -e . -# Link your development version of the extension with JupyterLab -jupyter labextension develop . --overwrite -# Rebuild extension Typescript source after making changes -jlpm build -``` - -You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. - -```bash -# Watch the source directory in one terminal, automatically rebuilding when needed -jlpm watch -# Run JupyterLab in another terminal -jupyter lab -``` - -With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). - -By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command: - -```bash -jupyter lab build --minimize=False -``` - -### Development uninstall - -```bash -pip uninstall neural-compressor-ext-lab -``` - -In development mode, you will also need to remove the symlink created by `jupyter labextension develop` -command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions` -folder is located. Then you can remove the symlink named `Neural_Coder` within that folder. - -### Testing the extension - -#### Frontend tests - -This extension is using [Jest](https://jestjs.io/) for JavaScript code testing. - -To execute them, execute: - -```sh -jlpm -jlpm test -``` - -#### Integration tests - -This extension uses [Playwright](https://playwright.dev/docs/intro/) for the integration tests (aka user level tests). -More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab. - -More information are provided within the [ui-tests](./ui-tests/README.md) README. - -### Packaging the extension - -See [RELEASE](RELEASE.md) diff --git a/neural_coder/extensions/neural-compressor-ext-lab/README.md b/neural_coder/extensions/neural-compressor-ext-lab/README.md deleted file mode 100644 index 3b09a98a6ae..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# Neural-Compressor-EXT-LAB - - -## Requirements - -- JupyterLab >= 3.0 - -## Install - -### Python Backend -To install the Python source code, execute: -```bash -python setup.py install -``` -Note: After the extension is published to the PyPI or conda-forge repositories, you can easily install the extension using pip or conda, such as: -```bash -pip install neural-compressor-ext-lab -``` -### Javascript/Typescript Front-end -Install lab extension from source code with: -```bash -jupyter labextension install --py neural-compressor-ext-lab -``` -Note: After the extension is published to the NPM repositories, you can easily install the extension from jupyter lab extension market and don't need to execute the above command manually. - -## Debugging -Check if the package has been added into the extension list: -```bash -jupyter labextension list -jupyter serverextension list -``` -If the neural-compressor-ext-lab is not in ```serverextension``` list, try to enable the package to become a server extension: -```bash -jupyter serverextension enable --py neural-compressor-ext-lab -``` -*debugging tip* ļ¼šif the enable fails, try running: -```bash -jupyter lab --ServerAPP.jpserver_extension="{'neural-compressor-ext-lab':True}" --debug -``` - -## Uninstall - -To remove the extension, execute: - -```bash -pip uninstall neural-compressor-ext-lab -``` -## Access jupyter lab remotely using SSH - -Launch the jupyter lab service on the remote server: -```bash -jupyter lab --no-browser --port=8889 -``` -Start SSH in a local terminal: -```bash -ssh -N -f -L localhost:8888:localhost:8889 username@serverIP -``` -## Contributing - -### Development install - -Note: You will need NodeJS to build the extension package. - -The `jlpm` command is JupyterLab's pinned version of -[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use -`yarn` or `npm` in lieu of `jlpm` below. - -```bash -# Clone the repo to your local environment -# Change directory to the Neural_Coder directory -# Install package in development mode -pip install -e . -# Link your development version of the extension with JupyterLab -jupyter labextension develop . --overwrite -# Rebuild extension Typescript source after making changes -jlpm build -``` - -You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. - -```bash -# Watch the source directory in one terminal, automatically rebuilding when needed -jlpm watch -# Run JupyterLab in another terminal -jupyter lab -``` - -With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). - -By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command: - -```bash -jupyter lab build --minimize=False -``` - -### Development uninstall - -```bash -pip uninstall neural-compressor-ext-lab -``` - -In development mode, you will also need to remove the symlink created by `jupyter labextension develop` -command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions` -folder is located. Then you can remove the symlink named `Neural_Coder` within that folder. - -### Testing the extension - -#### Frontend tests - -This extension is using [Jest](https://jestjs.io/) for JavaScript code testing. - -To execute them, execute: - -```sh -jlpm -jlpm test -``` - -#### Integration tests - -This extension uses [Playwright](https://playwright.dev/docs/intro/) for the integration tests (aka user level tests). -More precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab. - -More information are provided within the [ui-tests](./ui-tests/README.md) README. - -### Packaging the extension - -See [RELEASE](RELEASE.md) diff --git a/neural_coder/extensions/neural-compressor-ext-lab/babel.config.js b/neural_coder/extensions/neural-compressor-ext-lab/babel.config.js deleted file mode 100644 index 8b5c76420c6..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/babel.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@jupyterlab/testutils/lib/babel.config'); diff --git a/neural_coder/extensions/neural-compressor-ext-lab/install.json b/neural_coder/extensions/neural-compressor-ext-lab/install.json deleted file mode 100644 index 5b3d3fa21ee..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/install.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "packageManager": "python", - "packageName": "neural-compressor-ext-lab", - "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package Neural_Coder" -} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/jest.config.js b/neural_coder/extensions/neural-compressor-ext-lab/jest.config.js deleted file mode 100644 index 514c3809d53..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/jest.config.js +++ /dev/null @@ -1,42 +0,0 @@ -const jestJupyterLab = require('@jupyterlab/testutils/lib/jest-config'); - -const esModules = [ - '@jupyterlab/', - 'lib0', - 'y\\-protocols', - 'y\\-websocket', - 'yjs' -].join('|'); - -const jlabConfig = jestJupyterLab(__dirname); - -const { - moduleFileExtensions, - moduleNameMapper, - preset, - setupFilesAfterEnv, - setupFiles, - testPathIgnorePatterns, - transform -} = jlabConfig; - -module.exports = { - moduleFileExtensions, - moduleNameMapper, - preset, - setupFilesAfterEnv, - setupFiles, - testPathIgnorePatterns, - transform, - automock: false, - collectCoverageFrom: ['src/**/*.{ts,tsx}', '!src/**/*.d.ts'], - coverageDirectory: 'coverage', - coverageReporters: ['lcov', 'text'], - globals: { - 'ts-jest': { - tsconfig: 'tsconfig.json' - } - }, - testRegex: 'src/.*/.*.spec.ts[x]?$', - transformIgnorePatterns: [`/node_modules/(?!${esModules}).+`] -}; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_notebook_config.d/jupyterlab_neural_coder.json b/neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_notebook_config.d/jupyterlab_neural_coder.json deleted file mode 100644 index e41f45c40ae..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_notebook_config.d/jupyterlab_neural_coder.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "NotebookApp": { - "nbserver_extensions": { - "neural-compressor-ext-lab": true - } - } -} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_server_config.d/jupyterlab_neural_coder.json b/neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_server_config.d/jupyterlab_neural_coder.json deleted file mode 100644 index fdf133c3c92..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/jupyter-config/jupyter_server_config.d/jupyterlab_neural_coder.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ServerApp": { - "jpserver_extensions": { - "neural-compressor-ext-lab": true - } - } -} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/client.d.ts b/neural_coder/extensions/neural-compressor-ext-lab/lib/client.d.ts deleted file mode 100644 index 6bc75416883..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/client.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare class JupyterlabDeepCoderClient { - request(path: string, method: string, body: any): Promise; -} -export default JupyterlabDeepCoderClient; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/client.js b/neural_coder/extensions/neural-compressor-ext-lab/lib/client.js deleted file mode 100644 index dc7ee6f97c9..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/client.js +++ /dev/null @@ -1,25 +0,0 @@ -import { URLExt } from '@jupyterlab/coreutils'; -import { ServerConnection } from '@jupyterlab/services'; -import { Constants } from './constants'; -class JupyterlabDeepCoderClient { - request(path, method, body) { - const settings = ServerConnection.makeSettings(); - const fullUrl = URLExt.join(settings.baseUrl, Constants.SHORT_PLUGIN_NAME, path); - return ServerConnection.makeRequest(fullUrl, { - body, - method, - headers: new Headers({ - 'Plugin-Version': Constants.PLUGIN_VERSION - }) - }, settings).then(response => { - if (response.status !== 200) { - console.log("response:::", response.status); - return response.text().then(() => { - throw new ServerConnection.ResponseError(response, response.statusText); - }); - } - return response.text(); - }); - } -} -export default JupyterlabDeepCoderClient; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.d.ts b/neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.d.ts deleted file mode 100644 index ddcea63adaf..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { INotebookTracker, Notebook } from '@jupyterlab/notebook'; -import { IEditorTracker } from '@jupyterlab/fileeditor'; -import { Widget } from '@lumino/widgets'; -import JupyterlabDeepCoderClient from './client'; -declare class JupyterlabCodeOptimizer { - protected client: JupyterlabDeepCoderClient; - protected working: boolean; - constructor(client: JupyterlabDeepCoderClient); - protected optimizeCode(code: string[], formatter: string, options: any, notebook: boolean): Promise; -} -export declare class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { - protected notebookTracker: INotebookTracker; - constructor(client: JupyterlabDeepCoderClient, notebookTracker: INotebookTracker); - optimizeAction(config: any, formatter?: string): Promise; - optimizeAllCodeCells(config: any, formatter?: string, notebook?: Notebook): Promise; - private getCodeCells; - private optimizeCells; - applicable(formatter: string, currentWidget: Widget): boolean | null; -} -export declare class JupyterlabFileEditorCodeOptimizer extends JupyterlabCodeOptimizer { - protected editorTracker: IEditorTracker; - constructor(client: JupyterlabDeepCoderClient, editorTracker: IEditorTracker); - optimizeAction(config: any, formatter: string): void; - applicable(formatter: string, currentWidget: Widget): boolean | null; -} -export {}; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.js b/neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.js deleted file mode 100644 index 3f1e3d17e63..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/deepcoder.js +++ /dev/null @@ -1,121 +0,0 @@ -import { showErrorMessage } from '@jupyterlab/apputils'; -class JupyterlabCodeOptimizer { - constructor(client) { - this.client = client; - this.working = false; - } - optimizeCode(code, formatter, options, notebook) { - return this.client - .request('optimize', 'POST', JSON.stringify({ - code, - notebook, - formatter, - options - })) - .then(resp => JSON.parse(resp)); - } -} -export class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { - constructor(client, notebookTracker) { - super(client); - this.notebookTracker = notebookTracker; - } - async optimizeAction(config, formatter) { - return this.optimizeCells(true, config, formatter); - } - async optimizeAllCodeCells(config, formatter, notebook) { - return this.optimizeCells(false, config, formatter, notebook); - } - getCodeCells(selectedOnly = true, notebook) { - if (!this.notebookTracker.currentWidget) { - return []; - } - const codeCells = []; - notebook = notebook || this.notebookTracker.currentWidget.content; - notebook.widgets.forEach((cell) => { - if (cell.model.type === 'code') { - codeCells.push(cell); - } - }); - return codeCells; - } - async optimizeCells(selectedOnly, config, formatter, notebook) { - var _a; - if (this.working) { - return; - } - try { - this.working = true; - const selectedCells = this.getCodeCells(selectedOnly, notebook); - if (selectedCells.length === 0) { - this.working = false; - return; - } - const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu'; - const currentTexts = selectedCells.map(cell => cell.model.value.text); - const optimizedTexts = await this.optimizeCode(currentTexts, optimize_type, undefined, true); - for (let i = 0; i < selectedCells.length; ++i) { - const cell = selectedCells[i]; - const currentText = currentTexts[i]; - const optimizedText = optimizedTexts.code[i]; - if (cell.model.value.text === currentText) { - if (optimizedText.error) { - if (!((_a = config.suppressFormatterErrors) !== null && _a !== void 0 ? _a : false)) { - await showErrorMessage('Optimize Code Error', optimizedText.error); - } - } - else { - cell.model.value.text = optimizedText; - ; - } - } - else { - await showErrorMessage('Optimize Code Error', `Cell value changed since format request was sent, formatting for cell ${i} skipped.`); - } - } - } - catch (error) { - await showErrorMessage('Optimize Code Error', error); - } - this.working = false; - } - applicable(formatter, currentWidget) { - const currentNotebookWidget = this.notebookTracker.currentWidget; - return currentNotebookWidget && currentWidget === currentNotebookWidget; - } -} -export class JupyterlabFileEditorCodeOptimizer extends JupyterlabCodeOptimizer { - constructor(client, editorTracker) { - super(client); - this.editorTracker = editorTracker; - } - optimizeAction(config, formatter) { - if (this.working) { - return; - } - const editorWidget = this.editorTracker.currentWidget; - this.working = true; - if (editorWidget == null) { - return; - } - const editor = editorWidget.content.editor; - const code = editor.model.value.text; - this.optimizeCode([code], formatter, config[formatter], false) - .then(data => { - if (data.code[0].error) { - void showErrorMessage('Optimize Code Error', data.code[0].error); - this.working = false; - return; - } - this.working = false; - }) - .catch(error => { - this.working = false; - void showErrorMessage('Optimize Code Error', error); - }); - } - applicable(formatter, currentWidget) { - const currentEditorWidget = this.editorTracker.currentWidget; - return currentEditorWidget && currentWidget === currentEditorWidget; - } -} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/handlers.py b/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/handlers.py deleted file mode 100644 index 3fbde4f197d..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/handlers.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright (c) 2022 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import json - -import pkg_resources -from jupyter_server.base.handlers import APIHandler -from jupyter_server.serverapp import ServerWebApplication -from jupyter_server.utils import url_path_join -from pathlib import Path - - -HERE = Path(__file__).parent.parent.resolve() -TMP_FILE = "tmp.py" - -def setup_handlers(web_app: ServerWebApplication) -> None: - host_pattern = ".*$" - web_app.add_handlers( - host_pattern, - [ - ( - url_path_join( - web_app.settings["base_url"], - "/neural-compressor-ext-lab/optimize", - ), - OptimizeAPIHandler, - ) - ], - ) - web_app.add_handlers( - host_pattern, - [ - ( - url_path_join( - web_app.settings["base_url"], "/neural-compressor-ext-lab/version" - ), - VersionAPIHandler, - ) - ], - ) - - -def check_plugin_version(handler: APIHandler): - server_extension_version = pkg_resources.get_distribution( - "neural-compressor-ext-lab" - ).version - lab_extension_version = handler.request.headers.get("Plugin-Version") - version_matches = server_extension_version == lab_extension_version - if not version_matches: - handler.set_status( - 422, - f"Mismatched versions of server extension ({server_extension_version}) " - f"and lab extension ({lab_extension_version}). " - f"Please ensure they are the same.", - ) - handler.finish() - return version_matches - - -class OptimizeAPIHandler(APIHandler): - def post(self) -> None: - if self.get_query_argument( - "bypassVersionCheck", default=None - ) is not None or check_plugin_version(self): - data = json.loads(self.request.body.decode("utf-8")) - print("Handle optimize request") - notebook = data["notebook"] - options = data.get("options", {}) - optimized_code = [] - with open( HERE/TMP_FILE, 'w+' ) as f: - for code in data["code"]: - f.write("# this is the beginning of a single code snippet\n") - code_list = code.split("\n") - for line in code_list: - f.write(line+"\n") - - from neural_coder import enable - enable(code=str(HERE/TMP_FILE), features=[data['formatter']], overwrite=True) - - with open( HERE/TMP_FILE, 'r' ) as f: - content = f.read() - optimized_code = content.split("# this is the beginning of a single code snippet\n")[1:] - self.finish(json.dumps({"code": optimized_code})) - -class VersionAPIHandler(APIHandler): - def get(self) -> None: - """Show what version is this server plguin on.""" - self.finish( - json.dumps( - { - "version": pkg_resources.get_distribution( - "neural-compressor-ext-lab" - ).version - } - ) - ) diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js b/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js deleted file mode 100644 index a3716caa44c..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js +++ /dev/null @@ -1,343 +0,0 @@ -"use strict"; -(self["webpackChunkneural-compressor-ext-lab"] = self["webpackChunkneural-compressor-ext-lab"] || []).push([["lib_index_js"],{ - -/***/ "./lib/client.js": -/*!***********************!*\ - !*** ./lib/client.js ***! - \***********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ "webpack/sharing/consume/default/@jupyterlab/coreutils"); -/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/services */ "webpack/sharing/consume/default/@jupyterlab/services"); -/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./lib/constants.js"); - - - -class JupyterlabDeepCoderClient { - request(path, method, body) { - const settings = _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.makeSettings(); - const fullUrl = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join(settings.baseUrl, _constants__WEBPACK_IMPORTED_MODULE_2__.Constants.SHORT_PLUGIN_NAME, path); - return _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.makeRequest(fullUrl, { - body, - method, - headers: new Headers({ - 'Plugin-Version': _constants__WEBPACK_IMPORTED_MODULE_2__.Constants.PLUGIN_VERSION - }) - }, settings).then(response => { - if (response.status !== 200) { - console.log("response:::", response.status); - return response.text().then(() => { - throw new _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.ResponseError(response, response.statusText); - }); - } - return response.text(); - }); - } -} -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (JupyterlabDeepCoderClient); - - -/***/ }), - -/***/ "./lib/constants.js": -/*!**************************!*\ - !*** ./lib/constants.js ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "Constants": () => (/* binding */ Constants) -/* harmony export */ }); -var Constants; -(function (Constants) { - Constants.SHORT_PLUGIN_NAME = 'neural-compressor-ext-lab'; - Constants.ICON_FORMAT_ALL_SVG = ''; - Constants.ICON_RUN = ''; - Constants.SVG = ''; - Constants.LONG_PLUGIN_NAME = `@rya/${Constants.SHORT_PLUGIN_NAME}`; - Constants.SETTINGS_SECTION = `${Constants.LONG_PLUGIN_NAME}:settings`; - Constants.COMMAND_SECTION_NAME = 'Jupyterlab Code Optimizer'; - Constants.PLUGIN_VERSION = '0.1.0'; -})(Constants || (Constants = {})); - - -/***/ }), - -/***/ "./lib/deepcoder.js": -/*!**************************!*\ - !*** ./lib/deepcoder.js ***! - \**************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "JupyterlabFileEditorCodeOptimizer": () => (/* binding */ JupyterlabFileEditorCodeOptimizer), -/* harmony export */ "JupyterlabNotebookCodeOptimizer": () => (/* binding */ JupyterlabNotebookCodeOptimizer) -/* harmony export */ }); -/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils"); -/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__); - -class JupyterlabCodeOptimizer { - constructor(client) { - this.client = client; - this.working = false; - } - optimizeCode(code, formatter, options, notebook) { - return this.client - .request('optimize', 'POST', JSON.stringify({ - code, - notebook, - formatter, - options - })) - .then(resp => JSON.parse(resp)); - } -} -class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { - constructor(client, notebookTracker) { - super(client); - this.notebookTracker = notebookTracker; - } - async optimizeAction(config, formatter) { - return this.optimizeCells(true, config, formatter); - } - async optimizeAllCodeCells(config, formatter, notebook) { - return this.optimizeCells(false, config, formatter, notebook); - } - getCodeCells(selectedOnly = true, notebook) { - if (!this.notebookTracker.currentWidget) { - return []; - } - const codeCells = []; - notebook = notebook || this.notebookTracker.currentWidget.content; - notebook.widgets.forEach((cell) => { - if (cell.model.type === 'code') { - codeCells.push(cell); - } - }); - return codeCells; - } - async optimizeCells(selectedOnly, config, formatter, notebook) { - var _a; - if (this.working) { - return; - } - try { - this.working = true; - const selectedCells = this.getCodeCells(selectedOnly, notebook); - if (selectedCells.length === 0) { - this.working = false; - return; - } - const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu'; - const currentTexts = selectedCells.map(cell => cell.model.value.text); - console.log("arrive here 1"); - const optimizedTexts = await this.optimizeCode(currentTexts, optimize_type, undefined, true); - console.log("arrive here 2"); - for (let i = 0; i < selectedCells.length; ++i) { - const cell = selectedCells[i]; - const currentText = currentTexts[i]; - const optimizedText = optimizedTexts.code[i]; - if (cell.model.value.text === currentText) { - if (optimizedText.error) { - if (!((_a = config.suppressFormatterErrors) !== null && _a !== void 0 ? _a : false)) { - console.log("here 1"); - await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showErrorMessage)('Optimize Code Error', optimizedText.error); - } - } - else { - cell.model.value.text = optimizedText; - ; - } - } - else { - console.log("here 2"); - await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showErrorMessage)('Optimize Code Error', `Cell value changed since format request was sent, formatting for cell ${i} skipped.`); - } - } - } - catch (error) { - console.log("here 3"); - await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showErrorMessage)('Optimize Code Error', error); - } - this.working = false; - } - applicable(formatter, currentWidget) { - const currentNotebookWidget = this.notebookTracker.currentWidget; - return currentNotebookWidget && currentWidget === currentNotebookWidget; - } -} -class JupyterlabFileEditorCodeOptimizer extends JupyterlabCodeOptimizer { - constructor(client, editorTracker) { - super(client); - this.editorTracker = editorTracker; - } - optimizeAction(config, formatter) { - if (this.working) { - return; - } - const editorWidget = this.editorTracker.currentWidget; - this.working = true; - if (editorWidget == null) { - return; - } - const editor = editorWidget.content.editor; - const code = editor.model.value.text; - this.optimizeCode([code], formatter, config[formatter], false) - .then(data => { - if (data.code[0].error) { - console.log("here 4"); - void (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showErrorMessage)('Optimize Code Error', data.code[0].error); - this.working = false; - return; - } - this.working = false; - }) - .catch(error => { - this.working = false; - console.log("here 5"); - void (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showErrorMessage)('Optimize Code Error', error); - }); - } - applicable(formatter, currentWidget) { - const currentEditorWidget = this.editorTracker.currentWidget; - return currentEditorWidget && currentWidget === currentEditorWidget; - } -} - - -/***/ }), - -/***/ "./lib/index.js": -/*!**********************!*\ - !*** ./lib/index.js ***! - \**********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/notebook */ "webpack/sharing/consume/default/@jupyterlab/notebook"); -/* harmony import */ var _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils"); -/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/settingregistry */ "webpack/sharing/consume/default/@jupyterlab/settingregistry"); -/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/mainmenu */ "webpack/sharing/consume/default/@jupyterlab/mainmenu"); -/* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/ui-components */ "webpack/sharing/consume/default/@jupyterlab/ui-components"); -/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/widgets */ "webpack/sharing/consume/default/@lumino/widgets"); -/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var _deepcoder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./deepcoder */ "./lib/deepcoder.js"); -/* harmony import */ var _client__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./client */ "./lib/client.js"); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./constants */ "./lib/constants.js"); - - - - -// import { DisposableDelegate, IDisposable } from '@lumino/disposable'; - - - - - -class JupyterLabDeepCoder { - // private panel: NotebookPanel; - constructor(app, tracker) { - this.app = app; - this.tracker = tracker; - // this.panel = panel; - this.client = new _client__WEBPACK_IMPORTED_MODULE_6__["default"](); - this.notebookCodeOptimizer = new _deepcoder__WEBPACK_IMPORTED_MODULE_7__.JupyterlabNotebookCodeOptimizer(this.client, this.tracker); - this.setupWidgetExtension(); - } - createNew(nb) { - // this.panel = nb; - const svg = document.createElement("svg"); - svg.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_8__.Constants.ICON_FORMAT_ALL_SVG; - const run_svg = document.createElement("svg"); - run_svg.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_8__.Constants.ICON_RUN; - const div = document.createElement("div"); - div.setAttribute("class", "wrapper"); - const span = document.createElement("span"); - span.setAttribute("class", "f1ozlkqi"); - span.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_8__.Constants.SVG; - const selector = document.createElement("select"); - selector.setAttribute("class", "aselector"); - selector.id = "NeuralCoder"; - const option1 = document.createElement("option"); - option1.value = "pytorch_inc_static_quant_fx"; - option1.innerText = "Intel INT8 (Static)"; - option1.selected = true; - const option2 = document.createElement("option"); - option2.value = "pytorch_inc_dynamic_quant"; - option2.innerText = "Intel INT8 (Dynamic)"; - const option3 = document.createElement("option"); - option3.value = "pytorch_inc_bf16"; - option3.innerText = "Intel BF16"; - const option4 = document.createElement("option"); - option4.value = "auto-quant"; - option4.innerText = "Auto"; - selector.options.add(option1); - selector.options.add(option2); - selector.options.add(option3); - selector.options.add(option4); - div.appendChild(selector); - div.appendChild(span); - const selector_widget = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__.Widget(); - selector_widget.node.appendChild(div); - selector_widget.addClass("aselector"); - // let panel = this.panel; - let notebookCodeOptimizer = this.notebookCodeOptimizer; - let config = this.config; - const run_button = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ToolbarButton({ - tooltip: 'NeuralCoder', - icon: new _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.LabIcon({ - name: "run", - svgstr: _constants__WEBPACK_IMPORTED_MODULE_8__.Constants.ICON_RUN - }), - onClick: async function () { - var _a, _b, _c, _d, _e, _f, _g, _h; - (_d = (_c = (_b = (_a = run_button.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(svg); - console.log("user's selecting feature"); - console.log(selector.options[selector.selectedIndex].value); - await notebookCodeOptimizer.optimizeAllCodeCells(config, selector.options[selector.selectedIndex].value); - (_h = (_g = (_f = (_e = run_button.node.firstChild) === null || _e === void 0 ? void 0 : _e.firstChild) === null || _f === void 0 ? void 0 : _f.firstChild) === null || _g === void 0 ? void 0 : _g.firstChild) === null || _h === void 0 ? void 0 : _h.replaceWith(run_svg); - } - }); - nb.toolbar.insertItem(11, "nc", run_button); - nb.toolbar.insertItem(12, "selector", selector_widget); - } - setupWidgetExtension() { - this.app.docRegistry.addWidgetExtension('Notebook', this); - } -} -/** - * Initialization data for the deepcoder-jupyterlab extension. - */ -const plugin = { - id: 'deepcoder-jupyterlab:plugin', - autoStart: true, - requires: [_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__.INotebookTracker, _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__.IMainMenu], - optional: [_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2__.ISettingRegistry], - activate: (app, tracker) => { - new JupyterLabDeepCoder(app, tracker); - console.log('JupyterLab extension jupyterlab_neuralcoder is activated!'); - } -}; -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (plugin); - - -/***/ }) - -}]); -//# sourceMappingURL=lib_index_js.c8ce5d6f06928ba82660.js.map \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js.map b/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js.map deleted file mode 100644 index 6239849e710..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/lib_index_js.c8ce5d6f06928ba82660.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lib_index_js.c8ce5d6f06928ba82660.js","mappings":";;;;;;;;;;;;;;;;;;AAA+C;AACS;AAChB;AACxC;AACA;AACA,yBAAyB,+EAA6B;AACtD,wBAAwB,8DAAW,mBAAmB,mEAA2B;AACjF,eAAe,8EAA4B;AAC3C;AACA;AACA;AACA,kCAAkC,gEAAwB;AAC1D,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,8BAA8B,gFAA8B;AAC5D,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,iEAAe,yBAAyB,EAAC;;;;;;;;;;;;;;;ACxBlC;AACP;AACA;AACA,6IAA6I,gCAAgC,gBAAgB,sBAAsB,qVAAqV,mBAAmB,gVAAgV,mBAAmB;AAC95B;AACA;AACA,yCAAyC,4BAA4B;AACrE,oCAAoC,2BAA2B;AAC/D;AACA;AACA,CAAC,8BAA8B;;;;;;;;;;;;;;;;;;ACVyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sEAAgB,iGAAiG,GAAG;AAC9I;AACA;AACA;AACA;AACA;AACA,kBAAkB,sEAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sEAAgB;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB,sEAAgB;AACjC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/HyD;AAGZ;AACkB;AACd;AACjD,YAAY,kCAAkC;AACM;AACX;AACqB;AACb;AACT;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAyB;AACnD,yCAAyC,uEAA+B;AACxE;AACA;AACA;AACA;AACA;AACA,wBAAwB,qEAA6B;AACrD;AACA,4BAA4B,0DAAkB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB,qDAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mDAAM;AAC1C;AACA;AACA;AACA;AACA;AACA,+BAA+B,+DAAa;AAC5C;AACA,sBAAsB,8DAAO;AAC7B;AACA,wBAAwB,0DAAkB;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kEAAgB,EAAE,2DAAS;AAC1C,eAAe,yEAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA,iEAAe,MAAM,EAAC","sources":["webpack://neural-compressor-ext-lab/./lib/client.js","webpack://neural-compressor-ext-lab/./lib/constants.js","webpack://neural-compressor-ext-lab/./lib/deepcoder.js","webpack://neural-compressor-ext-lab/./lib/index.js"],"sourcesContent":["import { URLExt } from '@jupyterlab/coreutils';\nimport { ServerConnection } from '@jupyterlab/services';\nimport { Constants } from './constants';\nclass JupyterlabDeepCoderClient {\n request(path, method, body) {\n const settings = ServerConnection.makeSettings();\n const fullUrl = URLExt.join(settings.baseUrl, Constants.SHORT_PLUGIN_NAME, path);\n return ServerConnection.makeRequest(fullUrl, {\n body,\n method,\n headers: new Headers({\n 'Plugin-Version': Constants.PLUGIN_VERSION\n })\n }, settings).then(response => {\n if (response.status !== 200) {\n console.log(\"response:::\", response.status);\n return response.text().then(() => {\n throw new ServerConnection.ResponseError(response, response.statusText);\n });\n }\n return response.text();\n });\n }\n}\nexport default JupyterlabDeepCoderClient;\n","export var Constants;\n(function (Constants) {\n Constants.SHORT_PLUGIN_NAME = 'neural-compressor-ext-lab';\n Constants.ICON_FORMAT_ALL_SVG = '';\n Constants.ICON_RUN = '';\n Constants.SVG = '';\n Constants.LONG_PLUGIN_NAME = `@rya/${Constants.SHORT_PLUGIN_NAME}`;\n Constants.SETTINGS_SECTION = `${Constants.LONG_PLUGIN_NAME}:settings`;\n Constants.COMMAND_SECTION_NAME = 'Jupyterlab Code Optimizer';\n Constants.PLUGIN_VERSION = '0.1.0';\n})(Constants || (Constants = {}));\n","import { showErrorMessage } from '@jupyterlab/apputils';\nclass JupyterlabCodeOptimizer {\n constructor(client) {\n this.client = client;\n this.working = false;\n }\n optimizeCode(code, formatter, options, notebook) {\n return this.client\n .request('optimize', 'POST', JSON.stringify({\n code,\n notebook,\n formatter,\n options\n }))\n .then(resp => JSON.parse(resp));\n }\n}\nexport class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer {\n constructor(client, notebookTracker) {\n super(client);\n this.notebookTracker = notebookTracker;\n }\n async optimizeAction(config, formatter) {\n return this.optimizeCells(true, config, formatter);\n }\n async optimizeAllCodeCells(config, formatter, notebook) {\n return this.optimizeCells(false, config, formatter, notebook);\n }\n getCodeCells(selectedOnly = true, notebook) {\n if (!this.notebookTracker.currentWidget) {\n return [];\n }\n const codeCells = [];\n notebook = notebook || this.notebookTracker.currentWidget.content;\n notebook.widgets.forEach((cell) => {\n if (cell.model.type === 'code') {\n codeCells.push(cell);\n }\n });\n return codeCells;\n }\n async optimizeCells(selectedOnly, config, formatter, notebook) {\n var _a;\n if (this.working) {\n return;\n }\n try {\n this.working = true;\n const selectedCells = this.getCodeCells(selectedOnly, notebook);\n if (selectedCells.length === 0) {\n this.working = false;\n return;\n }\n const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu';\n const currentTexts = selectedCells.map(cell => cell.model.value.text);\n console.log(\"arrive here 1\");\n const optimizedTexts = await this.optimizeCode(currentTexts, optimize_type, undefined, true);\n console.log(\"arrive here 2\");\n for (let i = 0; i < selectedCells.length; ++i) {\n const cell = selectedCells[i];\n const currentText = currentTexts[i];\n const optimizedText = optimizedTexts.code[i];\n if (cell.model.value.text === currentText) {\n if (optimizedText.error) {\n if (!((_a = config.suppressFormatterErrors) !== null && _a !== void 0 ? _a : false)) {\n console.log(\"here 1\");\n await showErrorMessage('Optimize Code Error', optimizedText.error);\n }\n }\n else {\n cell.model.value.text = optimizedText;\n cell.outputArea.node.innerText = \"tothelighthouse\";\n }\n }\n else {\n console.log(\"here 2\");\n await showErrorMessage('Optimize Code Error', `Cell value changed since format request was sent, formatting for cell ${i} skipped.`);\n }\n }\n }\n catch (error) {\n console.log(\"here 3\");\n await showErrorMessage('Optimize Code Error', error);\n }\n this.working = false;\n }\n applicable(formatter, currentWidget) {\n const currentNotebookWidget = this.notebookTracker.currentWidget;\n return currentNotebookWidget && currentWidget === currentNotebookWidget;\n }\n}\nexport class JupyterlabFileEditorCodeOptimizer extends JupyterlabCodeOptimizer {\n constructor(client, editorTracker) {\n super(client);\n this.editorTracker = editorTracker;\n }\n optimizeAction(config, formatter) {\n if (this.working) {\n return;\n }\n const editorWidget = this.editorTracker.currentWidget;\n this.working = true;\n if (editorWidget == null) {\n return;\n }\n const editor = editorWidget.content.editor;\n const code = editor.model.value.text;\n this.optimizeCode([code], formatter, config[formatter], false)\n .then(data => {\n if (data.code[0].error) {\n console.log(\"here 4\");\n void showErrorMessage('Optimize Code Error', data.code[0].error);\n this.working = false;\n return;\n }\n this.working = false;\n })\n .catch(error => {\n this.working = false;\n console.log(\"here 5\");\n void showErrorMessage('Optimize Code Error', error);\n });\n }\n applicable(formatter, currentWidget) {\n const currentEditorWidget = this.editorTracker.currentWidget;\n return currentEditorWidget && currentWidget === currentEditorWidget;\n }\n}\n","import { INotebookTracker, } from '@jupyterlab/notebook';\nimport { \n// ICommandPalette,\nToolbarButton, } from '@jupyterlab/apputils';\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\nimport { IMainMenu } from '@jupyterlab/mainmenu';\n// import { DisposableDelegate, IDisposable } from '@lumino/disposable';\nimport { LabIcon } from '@jupyterlab/ui-components';\nimport { Widget } from '@lumino/widgets';\nimport { JupyterlabNotebookCodeOptimizer } from './deepcoder';\nimport JupyterlabDeepCoderClient from './client';\nimport { Constants } from './constants';\nclass JupyterLabDeepCoder {\n // private panel: NotebookPanel;\n constructor(app, tracker) {\n this.app = app;\n this.tracker = tracker;\n // this.panel = panel;\n this.client = new JupyterlabDeepCoderClient();\n this.notebookCodeOptimizer = new JupyterlabNotebookCodeOptimizer(this.client, this.tracker);\n this.setupWidgetExtension();\n }\n createNew(nb) {\n // this.panel = nb;\n const svg = document.createElement(\"svg\");\n svg.innerHTML = Constants.ICON_FORMAT_ALL_SVG;\n const run_svg = document.createElement(\"svg\");\n run_svg.innerHTML = Constants.ICON_RUN;\n const div = document.createElement(\"div\");\n div.setAttribute(\"class\", \"wrapper\");\n const span = document.createElement(\"span\");\n span.setAttribute(\"class\", \"f1ozlkqi\");\n span.innerHTML = Constants.SVG;\n const selector = document.createElement(\"select\");\n selector.setAttribute(\"class\", \"aselector\");\n selector.id = \"NeuralCoder\";\n const option1 = document.createElement(\"option\");\n option1.value = \"pytorch_inc_static_quant_fx\";\n option1.innerText = \"Intel INT8 (Static)\";\n option1.selected = true;\n const option2 = document.createElement(\"option\");\n option2.value = \"pytorch_inc_dynamic_quant\";\n option2.innerText = \"Intel INT8 (Dynamic)\";\n const option3 = document.createElement(\"option\");\n option3.value = \"pytorch_inc_bf16\";\n option3.innerText = \"Intel BF16\";\n const option4 = document.createElement(\"option\");\n option4.value = \"auto-quant\";\n option4.innerText = \"Auto\";\n selector.options.add(option1);\n selector.options.add(option2);\n selector.options.add(option3);\n selector.options.add(option4);\n div.appendChild(selector);\n div.appendChild(span);\n const selector_widget = new Widget();\n selector_widget.node.appendChild(div);\n selector_widget.addClass(\"aselector\");\n // let panel = this.panel;\n let notebookCodeOptimizer = this.notebookCodeOptimizer;\n let config = this.config;\n const run_button = new ToolbarButton({\n tooltip: 'NeuralCoder',\n icon: new LabIcon({\n name: \"run\",\n svgstr: Constants.ICON_RUN\n }),\n onClick: async function () {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_d = (_c = (_b = (_a = run_button.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(svg);\n console.log(\"user's selecting feature\");\n console.log(selector.options[selector.selectedIndex].value);\n await notebookCodeOptimizer.optimizeAllCodeCells(config, selector.options[selector.selectedIndex].value);\n (_h = (_g = (_f = (_e = run_button.node.firstChild) === null || _e === void 0 ? void 0 : _e.firstChild) === null || _f === void 0 ? void 0 : _f.firstChild) === null || _g === void 0 ? void 0 : _g.firstChild) === null || _h === void 0 ? void 0 : _h.replaceWith(run_svg);\n }\n });\n nb.toolbar.insertItem(11, \"nc\", run_button);\n nb.toolbar.insertItem(12, \"selector\", selector_widget);\n }\n setupWidgetExtension() {\n this.app.docRegistry.addWidgetExtension('Notebook', this);\n }\n}\n/**\n * Initialization data for the deepcoder-jupyterlab extension.\n */\nconst plugin = {\n id: 'deepcoder-jupyterlab:plugin',\n autoStart: true,\n requires: [INotebookTracker, IMainMenu],\n optional: [ISettingRegistry],\n activate: (app, tracker) => {\n new JupyterLabDeepCoder(app, tracker);\n console.log('JupyterLab extension jupyterlab_neuralcoder is activated!');\n }\n};\nexport default plugin;\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js.map b/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js.map deleted file mode 100644 index 250cf0ecdfc..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remoteEntry.5902e6831f208a384a8f.js","mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;UCpCD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA,8BAA8B,4MAA4M;WAC1O;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,oJAAoJ;WACpJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI,aAAa;WACjB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3CA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WCfA;WACA;WACA,WAAW,6BAA6B,iBAAiB,GAAG,qEAAqE;WACjI;WACA;WACA;WACA,qCAAqC,aAAa,EAAE,wDAAwD,2BAA2B,4BAA4B,2BAA2B,+CAA+C,mCAAmC;WAChR;WACA;WACA;WACA,qBAAqB,8BAA8B,SAAS,sDAAsD,gBAAgB,eAAe,KAAK,6DAA6D,SAAS,SAAS,QAAQ,eAAe,KAAK,eAAe,qGAAqG,WAAW,aAAa;WAC7Y;WACA;WACA;WACA,gBAAgB,8BAA8B,qBAAqB,YAAY,sBAAsB,SAAS,iDAAiD,6FAA6F,WAAW,uBAAuB,2BAA2B,wBAAwB,KAAK,oCAAoC,oBAAoB,wBAAwB,oBAAoB,SAAS,KAAK,yBAAyB,KAAK,gCAAgC,yBAAyB,QAAQ,eAAe,KAAK,eAAe,4DAA4D;WACtoB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;;WAED;WACA;WACA;WACA,CAAC;WACD;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN,KAAK,WAAW;WAChB,GAAG;WACH;WACA;;;;;WCrLA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;WCrFA;;;;;UEAA;UACA;UACA;UACA","sources":["webpack://neural-compressor-ext-lab/webpack/container-entry","webpack://neural-compressor-ext-lab/webpack/bootstrap","webpack://neural-compressor-ext-lab/webpack/runtime/compat get default export","webpack://neural-compressor-ext-lab/webpack/runtime/define property getters","webpack://neural-compressor-ext-lab/webpack/runtime/ensure chunk","webpack://neural-compressor-ext-lab/webpack/runtime/get javascript chunk filename","webpack://neural-compressor-ext-lab/webpack/runtime/global","webpack://neural-compressor-ext-lab/webpack/runtime/hasOwnProperty shorthand","webpack://neural-compressor-ext-lab/webpack/runtime/load script","webpack://neural-compressor-ext-lab/webpack/runtime/make namespace object","webpack://neural-compressor-ext-lab/webpack/runtime/sharing","webpack://neural-compressor-ext-lab/webpack/runtime/publicPath","webpack://neural-compressor-ext-lab/webpack/runtime/consumes","webpack://neural-compressor-ext-lab/webpack/runtime/jsonp chunk loading","webpack://neural-compressor-ext-lab/webpack/runtime/nonce","webpack://neural-compressor-ext-lab/webpack/before-startup","webpack://neural-compressor-ext-lab/webpack/startup","webpack://neural-compressor-ext-lab/webpack/after-startup"],"sourcesContent":["var moduleMap = {\n\t\"./index\": () => {\n\t\treturn __webpack_require__.e(\"lib_index_js\").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./extension\": () => {\n\t\treturn __webpack_require__.e(\"lib_index_js\").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./style\": () => {\n\t\treturn Promise.all([__webpack_require__.e(\"vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1\"), __webpack_require__.e(\"style_index_js\")]).then(() => (() => ((__webpack_require__(/*! ./style/index.js */ \"./style/index.js\")))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"lib_index_js\":\"c8ce5d6f06928ba82660\",\"vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1\":\"e23251bcbb7e84631721\",\"style_index_js\":\"01365bdf92323310e6f2\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"neural-compressor-ext-lab:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => (typeof console !== \"undefined\" && console.warn && console.warn(msg));\n\tvar uniqueName = \"neural-compressor-ext-lab\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"neural-compressor-ext-lab\", \"0.1.0\", () => (__webpack_require__.e(\"lib_index_js\").then(() => (() => (__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\"))))));\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f {\n\tvar scope = __webpack_require__.S[scopeName];\n\tif(!scope || !__webpack_require__.o(scope, key)) throw new Error(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n\treturn scope;\n};\nvar findVersion = (scope, key) => {\n\tvar versions = scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key) => {\n\tvar versions = scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getSingleton = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\treturn get(scope[key][version]);\n};\nvar getSingletonVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\tif (!satisfy(requiredVersion, version)) typeof console !== \"undefined\" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\treturn get(scope[key][version]);\n};\nvar getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\tif (!satisfy(requiredVersion, version)) throw new Error(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\treturn get(scope[key][version]);\n};\nvar findValidVersion = (scope, key, requiredVersion) => {\n\tvar versions = scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \") of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar getValidVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar entry = findValidVersion(scope, key, requiredVersion);\n\tif(entry) return get(entry);\n\tthrow new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));\n};\nvar warnInvalidVersion = (scope, scopeName, key, requiredVersion) => {\n\ttypeof console !== \"undefined\" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));\n};\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar init = (fn) => (function(scopeName, a, b, c) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then) return promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], a, b, c));\n\treturn fn(scopeName, __webpack_require__.S[scopeName], a, b, c);\n});\n\nvar load = /*#__PURE__*/ init((scopeName, scope, key) => {\n\tensureExistence(scopeName, key);\n\treturn get(findVersion(scope, key));\n});\nvar loadFallback = /*#__PURE__*/ init((scopeName, scope, key, fallback) => {\n\treturn scope && __webpack_require__.o(scope, key) ? get(findVersion(scope, key)) : fallback();\n});\nvar loadVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key) => {\n\tensureExistence(scopeName, key);\n\treturn getSingleton(scope, scopeName, key);\n});\nvar loadSingletonVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getSingletonVersion(scope, scopeName, key, version);\n});\nvar loadStrictVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getValidVersion(scope, scopeName, key, version);\n});\nvar loadStrictSingletonVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getStrictSingletonVersion(scope, scopeName, key, version);\n});\nvar loadVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));\n});\nvar loadSingletonFallback = /*#__PURE__*/ init((scopeName, scope, key, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getSingleton(scope, scopeName, key);\n});\nvar loadSingletonVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getSingletonVersion(scope, scopeName, key, version);\n});\nvar loadStrictVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tvar entry = scope && __webpack_require__.o(scope, key) && findValidVersion(scope, key, version);\n\treturn entry ? get(entry) : fallback();\n});\nvar loadStrictSingletonVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getStrictSingletonVersion(scope, scopeName, key, version);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t\"webpack/sharing/consume/default/@jupyterlab/notebook\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/notebook\", [1,3,4,4])),\n\t\"webpack/sharing/consume/default/@jupyterlab/apputils\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/apputils\", [1,3,4,4])),\n\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/settingregistry\", [1,3,4,4])),\n\t\"webpack/sharing/consume/default/@jupyterlab/mainmenu\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/mainmenu\", [1,3,4,4])),\n\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/ui-components\", [1,3,4,4])),\n\t\"webpack/sharing/consume/default/@lumino/widgets\": () => (loadSingletonVersionCheck(\"default\", \"@lumino/widgets\", [1,1,33,0])),\n\t\"webpack/sharing/consume/default/@jupyterlab/coreutils\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/coreutils\", [1,5,4,4])),\n\t\"webpack/sharing/consume/default/@jupyterlab/services\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/services\", [1,6,4,4]))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"lib_index_js\": [\n\t\t\"webpack/sharing/consume/default/@jupyterlab/notebook\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/apputils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/mainmenu\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\",\n\t\t\"webpack/sharing/consume/default/@lumino/widgets\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/coreutils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/services\"\n\t]\n};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"neural-compressor-ext-lab\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkneural-compressor-ext-lab\"] = self[\"webpackChunkneural-compressor-ext-lab\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(\"webpack/container/entry/neural-compressor-ext-lab\");\n",""],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js b/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js deleted file mode 100644 index 0bc3a986a72..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -(self["webpackChunkneural-compressor-jupyter-lab"] = self["webpackChunkneural-compressor-jupyter-lab"] || []).push([["style_index_js"],{ - -/***/ "./node_modules/css-loader/dist/cjs.js!./style/base.css": -/*!**************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./style/base.css ***! - \**************************************************************/ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ "./node_modules/css-loader/dist/runtime/cssWithMappingToString.js"); -/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); -/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); -// Imports - - -var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); -// Module -___CSS_LOADER_EXPORT___.push([module.id, "/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n.lds-ripple {\n display: flex;\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 80px;\n height: 80px;\n}\n.lds-ripple div {\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n border: 4px solid rgb(245, 131, 55);\n opacity: 1;\n border-radius: 50%;\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n.lds-ripple div:nth-child(2) {\n animation-delay: -0.5s;\n}\n@keyframes lds-ripple {\n 0% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 4.9% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 5% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: 0px;\n left: 0px;\n width: 72px;\n height: 72px;\n opacity: 0;\n }\n}\n\n\n/* CSS */\n.button-62 {\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\n border: 0;\n border-radius: 12px;\n color: #FFFFFF;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system,system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n font-size: 16px;\n font-weight: 500;\n line-height: 2.5;\n outline: transparent;\n padding: 0 1rem;\n text-align: center;\n text-decoration: none;\n transition: box-shadow .2s ease-in-out;\n user-select: none;\n -webkit-user-select: none;\n touch-action: manipulation;\n white-space: nowrap;\n}\n\n.button-62:not([disabled]):focus {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.button-62:not([disabled]):hover {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.aselector select {\n background-color: initial;\n border: none;\n border-radius: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color0);\n display: block;\n font-size: var(--jp-ui-font-size1);\n height: 24px;\n line-height: 14px;\n padding: 0 25px 0 10px;\n text-align: left;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n/* Use our own theme for hover and option styles */\n.aselector select:hover,\n.aselector select > option {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\nselect {\n box-sizing: border-box;\n}\n\n.font{\nbackground-color: initial;\nborder: none;\nheight: 21px;\nborder-radius: 0;\nfont-weight:500;\ncolor: var(--jp-ui-font-color0);\ndisplay: block;\nline-height: 22.5px;\npadding: 0 25px 0 10px;\nfont-size: var(--jp-ui-font-size1);\n}\n.wrapper {\n display: flex;\n}\n.f1ozlkqi {\n pointer-events: none;\n}\n\n.palybutton{\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\n}\n.loading{\n \n background-image: url(\"data:image/svg+xml,\");\n background-size: contain; \n}\n\n:root {\n /* Elevation\n *\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\n *\n * https://github.com/material-components/material-components-web\n * https://material-components-web.appspot.com/elevation.html\n */\n\n --jp-shadow-base-lightness: 0;\n --jp-shadow-umbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.2\n );\n --jp-shadow-penumbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.14\n );\n --jp-shadow-ambient-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.12\n );\n --jp-elevation-z0: none;\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\n\n /* Borders\n *\n * The following variables, specify the visual styling of borders in JupyterLab.\n */\n\n --jp-border-width: 1px;\n --jp-border-color0: var(--md-grey-400);\n --jp-border-color1: var(--md-grey-400);\n --jp-border-color2: var(--md-grey-300);\n --jp-border-color3: var(--md-grey-200);\n --jp-inverse-border-color: var(--md-grey-600);\n --jp-border-radius: 2px;\n\n /* UI Fonts\n *\n * The UI font CSS variables are used for the typography all of the JupyterLab\n * user interface elements that are not directly user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-ui-font-scale-factor: 1.2;\n --jp-ui-font-size0: 0.83333em;\n --jp-ui-font-size1: 13px; /* Base font size */\n --jp-ui-font-size2: 1.2em;\n --jp-ui-font-size3: 1.44em;\n\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n\n /*\n * Use these font colors against the corresponding main layout colors.\n * In a light theme, these go from dark to light.\n */\n\n /* Defaults use Material Design specification */\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\n\n /*\n * Use these against the brand/accent/warn/error colors.\n * These will typically go from light to darker, in both a dark and light theme.\n */\n\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\n\n /* Content Fonts\n *\n * Content font variables are used for typography of user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-content-line-height: 1.6;\n --jp-content-font-scale-factor: 1.2;\n --jp-content-font-size0: 0.83333em;\n --jp-content-font-size1: 14px; /* Base font size */\n --jp-content-font-size2: 1.2em;\n --jp-content-font-size3: 1.44em;\n --jp-content-font-size4: 1.728em;\n --jp-content-font-size5: 2.0736em;\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-content-presentation-font-size1: 17px;\n\n --jp-content-heading-line-height: 1;\n --jp-content-heading-margin-top: 1.2em;\n --jp-content-heading-margin-bottom: 0.8em;\n --jp-content-heading-font-weight: 500;\n\n /* Defaults use Material Design specification */\n --jp-content-font-color0: rgba(0, 0, 0, 1);\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\n\n --jp-content-link-color: var(--md-blue-700);\n\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n\n /*\n * Code Fonts\n *\n * Code font variables are used for typography of code and other monospaces content.\n */\n\n --jp-code-font-size: 13px;\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\n --jp-code-font-family: var(--jp-code-font-family-default);\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-code-presentation-font-size: 16px;\n\n /* may need to tweak cursor width if you change font size */\n --jp-code-cursor-width0: 1.4px;\n --jp-code-cursor-width1: 2px;\n --jp-code-cursor-width2: 4px;\n\n /* Layout\n *\n * The following are the main layout colors use in JupyterLab. In a light\n * theme these would go from light to dark.\n */\n\n --jp-layout-color0: white;\n --jp-layout-color1: white;\n --jp-layout-color2: var(--md-grey-200);\n --jp-layout-color3: var(--md-grey-400);\n --jp-layout-color4: var(--md-grey-600);\n\n /* Inverse Layout\n *\n * The following are the inverse layout colors use in JupyterLab. In a light\n * theme these would go from dark to light.\n */\n\n --jp-inverse-layout-color0: #111111;\n --jp-inverse-layout-color1: var(--md-grey-900);\n --jp-inverse-layout-color2: var(--md-grey-800);\n --jp-inverse-layout-color3: var(--md-grey-700);\n --jp-inverse-layout-color4: var(--md-grey-600);\n\n /* Brand/accent */\n\n --jp-brand-color0: var(--md-blue-900);\n --jp-brand-color1: var(--md-blue-700);\n --jp-brand-color2: var(--md-blue-300);\n --jp-brand-color3: var(--md-blue-100);\n --jp-brand-color4: var(--md-blue-50);\n\n --jp-accent-color0: var(--md-green-900);\n --jp-accent-color1: var(--md-green-700);\n --jp-accent-color2: var(--md-green-300);\n --jp-accent-color3: var(--md-green-100);\n\n /* State colors (warn, error, success, info) */\n\n --jp-warn-color0: var(--md-orange-900);\n --jp-warn-color1: var(--md-orange-700);\n --jp-warn-color2: var(--md-orange-300);\n --jp-warn-color3: var(--md-orange-100);\n\n --jp-error-color0: var(--md-red-900);\n --jp-error-color1: var(--md-red-700);\n --jp-error-color2: var(--md-red-300);\n --jp-error-color3: var(--md-red-100);\n\n --jp-success-color0: var(--md-green-900);\n --jp-success-color1: var(--md-green-700);\n --jp-success-color2: var(--md-green-300);\n --jp-success-color3: var(--md-green-100);\n\n --jp-info-color0: var(--md-cyan-900);\n --jp-info-color1: var(--md-cyan-700);\n --jp-info-color2: var(--md-cyan-300);\n --jp-info-color3: var(--md-cyan-100);\n\n /* Cell specific styles */\n\n --jp-cell-padding: 5px;\n\n --jp-cell-collapser-width: 8px;\n --jp-cell-collapser-min-height: 20px;\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\n\n --jp-cell-editor-background: var(--md-grey-100);\n --jp-cell-editor-border-color: var(--md-grey-300);\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-cell-editor-active-background: var(--jp-layout-color0);\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\n\n --jp-cell-prompt-width: 64px;\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\n --jp-cell-prompt-letter-spacing: 0px;\n --jp-cell-prompt-opacity: 1;\n --jp-cell-prompt-not-active-opacity: 0.5;\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\n /* A custom blend of MD grey and blue 600\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\n --jp-cell-inprompt-font-color: #307fc1;\n /* A custom blend of MD grey and orange 600\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\n --jp-cell-outprompt-font-color: #bf5b3d;\n\n /* Notebook specific styles */\n\n --jp-notebook-padding: 10px;\n --jp-notebook-select-background: var(--jp-layout-color1);\n --jp-notebook-multiselected-color: var(--md-blue-50);\n\n /* The scroll padding is calculated to fill enough space at the bottom of the\n notebook to show one single-line cell (with appropriate padding) at the top\n when the notebook is scrolled all the way to the bottom. We also subtract one\n pixel so that no scrollbar appears if we have just one single-line cell in the\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\n */\n --jp-notebook-scroll-padding: calc(\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\n );\n\n /* Rendermime styles */\n\n --jp-rendermime-error-background: #fdd;\n --jp-rendermime-table-row-background: var(--md-grey-100);\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\n\n /* Dialog specific styles */\n\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\n\n /* Console specific styles */\n\n --jp-console-padding: 10px;\n\n /* Toolbar specific styles */\n\n --jp-toolbar-border-color: var(--jp-border-color1);\n --jp-toolbar-micro-height: 8px;\n --jp-toolbar-background: var(--jp-layout-color1);\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\n --jp-toolbar-active-background: var(--md-grey-300);\n\n /* Statusbar specific styles */\n\n --jp-statusbar-height: 24px;\n\n /* Input field styles */\n\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-input-active-background: var(--jp-layout-color1);\n --jp-input-hover-background: var(--jp-layout-color1);\n --jp-input-background: var(--md-grey-100);\n --jp-input-border-color: var(--jp-inverse-border-color);\n --jp-input-active-border-color: var(--jp-brand-color1);\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\n\n /* General editor styles */\n\n --jp-editor-selected-background: #d9d9d9;\n --jp-editor-selected-focused-background: #d7d4f0;\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\n\n /* Code mirror specific styles */\n\n --jp-mirror-editor-keyword-color: #008000;\n --jp-mirror-editor-atom-color: #88f;\n --jp-mirror-editor-number-color: #080;\n --jp-mirror-editor-def-color: #00f;\n --jp-mirror-editor-variable-color: var(--md-grey-900);\n --jp-mirror-editor-variable-2-color: #05a;\n --jp-mirror-editor-variable-3-color: #085;\n --jp-mirror-editor-punctuation-color: #05a;\n --jp-mirror-editor-property-color: #05a;\n --jp-mirror-editor-operator-color: #aa22ff;\n --jp-mirror-editor-comment-color: #408080;\n --jp-mirror-editor-string-color: #ba2121;\n --jp-mirror-editor-string-2-color: #708;\n --jp-mirror-editor-meta-color: #aa22ff;\n --jp-mirror-editor-qualifier-color: #555;\n --jp-mirror-editor-builtin-color: #008000;\n --jp-mirror-editor-bracket-color: #997;\n --jp-mirror-editor-tag-color: #170;\n --jp-mirror-editor-attribute-color: #00c;\n --jp-mirror-editor-header-color: blue;\n --jp-mirror-editor-quote-color: #090;\n --jp-mirror-editor-link-color: #00c;\n --jp-mirror-editor-error-color: #f00;\n --jp-mirror-editor-hr-color: #999;\n\n /* Vega extension styles */\n\n --jp-vega-background: white;\n\n /* Sidebar-related styles */\n\n --jp-sidebar-min-width: 250px;\n\n /* Search-related styles */\n\n --jp-search-toggle-off-opacity: 0.5;\n --jp-search-toggle-hover-opacity: 0.8;\n --jp-search-toggle-on-opacity: 1;\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\n --jp-search-selected-match-color: black;\n --jp-search-unselected-match-background-color: var(\n --jp-inverse-layout-color0\n );\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\n\n /* Icon colors that work well with light or dark backgrounds */\n --jp-icon-contrast-color0: var(--md-purple-600);\n --jp-icon-contrast-color1: var(--md-green-600);\n --jp-icon-contrast-color2: var(--md-pink-600);\n --jp-icon-contrast-color3: var(--md-blue-600);\n}\n\n/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/* Set the default typography for monospace elements */\ntt,\ncode,\nkbd,\nsamp,\npre {\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n line-height: var(--jp-code-line-height);\n}\n\n", "",{"version":3,"sources":["webpack://./style/base.css"],"names":[],"mappings":"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","sourcesContent":["/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n.lds-ripple {\n display: flex;\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 80px;\n height: 80px;\n}\n.lds-ripple div {\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n border: 4px solid rgb(245, 131, 55);\n opacity: 1;\n border-radius: 50%;\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n.lds-ripple div:nth-child(2) {\n animation-delay: -0.5s;\n}\n@keyframes lds-ripple {\n 0% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 4.9% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 5% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: 0px;\n left: 0px;\n width: 72px;\n height: 72px;\n opacity: 0;\n }\n}\n\n\n/* CSS */\n.button-62 {\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\n border: 0;\n border-radius: 12px;\n color: #FFFFFF;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system,system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n font-size: 16px;\n font-weight: 500;\n line-height: 2.5;\n outline: transparent;\n padding: 0 1rem;\n text-align: center;\n text-decoration: none;\n transition: box-shadow .2s ease-in-out;\n user-select: none;\n -webkit-user-select: none;\n touch-action: manipulation;\n white-space: nowrap;\n}\n\n.button-62:not([disabled]):focus {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.button-62:not([disabled]):hover {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.aselector select {\n background-color: initial;\n border: none;\n border-radius: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color0);\n display: block;\n font-size: var(--jp-ui-font-size1);\n height: 24px;\n line-height: 14px;\n padding: 0 25px 0 10px;\n text-align: left;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n/* Use our own theme for hover and option styles */\n.aselector select:hover,\n.aselector select > option {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\nselect {\n box-sizing: border-box;\n}\n\n.font{\nbackground-color: initial;\nborder: none;\nheight: 21px;\nborder-radius: 0;\nfont-weight:500;\ncolor: var(--jp-ui-font-color0);\ndisplay: block;\nline-height: 22.5px;\npadding: 0 25px 0 10px;\nfont-size: var(--jp-ui-font-size1);\n}\n.wrapper {\n display: flex;\n}\n.f1ozlkqi {\n pointer-events: none;\n}\n\n.palybutton{\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\n}\n.loading{\n \n background-image: url(\"data:image/svg+xml,\");\n background-size: contain; \n}\n\n:root {\n /* Elevation\n *\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\n *\n * https://github.com/material-components/material-components-web\n * https://material-components-web.appspot.com/elevation.html\n */\n\n --jp-shadow-base-lightness: 0;\n --jp-shadow-umbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.2\n );\n --jp-shadow-penumbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.14\n );\n --jp-shadow-ambient-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.12\n );\n --jp-elevation-z0: none;\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\n\n /* Borders\n *\n * The following variables, specify the visual styling of borders in JupyterLab.\n */\n\n --jp-border-width: 1px;\n --jp-border-color0: var(--md-grey-400);\n --jp-border-color1: var(--md-grey-400);\n --jp-border-color2: var(--md-grey-300);\n --jp-border-color3: var(--md-grey-200);\n --jp-inverse-border-color: var(--md-grey-600);\n --jp-border-radius: 2px;\n\n /* UI Fonts\n *\n * The UI font CSS variables are used for the typography all of the JupyterLab\n * user interface elements that are not directly user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-ui-font-scale-factor: 1.2;\n --jp-ui-font-size0: 0.83333em;\n --jp-ui-font-size1: 13px; /* Base font size */\n --jp-ui-font-size2: 1.2em;\n --jp-ui-font-size3: 1.44em;\n\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n\n /*\n * Use these font colors against the corresponding main layout colors.\n * In a light theme, these go from dark to light.\n */\n\n /* Defaults use Material Design specification */\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\n\n /*\n * Use these against the brand/accent/warn/error colors.\n * These will typically go from light to darker, in both a dark and light theme.\n */\n\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\n\n /* Content Fonts\n *\n * Content font variables are used for typography of user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-content-line-height: 1.6;\n --jp-content-font-scale-factor: 1.2;\n --jp-content-font-size0: 0.83333em;\n --jp-content-font-size1: 14px; /* Base font size */\n --jp-content-font-size2: 1.2em;\n --jp-content-font-size3: 1.44em;\n --jp-content-font-size4: 1.728em;\n --jp-content-font-size5: 2.0736em;\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-content-presentation-font-size1: 17px;\n\n --jp-content-heading-line-height: 1;\n --jp-content-heading-margin-top: 1.2em;\n --jp-content-heading-margin-bottom: 0.8em;\n --jp-content-heading-font-weight: 500;\n\n /* Defaults use Material Design specification */\n --jp-content-font-color0: rgba(0, 0, 0, 1);\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\n\n --jp-content-link-color: var(--md-blue-700);\n\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n\n /*\n * Code Fonts\n *\n * Code font variables are used for typography of code and other monospaces content.\n */\n\n --jp-code-font-size: 13px;\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\n --jp-code-font-family: var(--jp-code-font-family-default);\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-code-presentation-font-size: 16px;\n\n /* may need to tweak cursor width if you change font size */\n --jp-code-cursor-width0: 1.4px;\n --jp-code-cursor-width1: 2px;\n --jp-code-cursor-width2: 4px;\n\n /* Layout\n *\n * The following are the main layout colors use in JupyterLab. In a light\n * theme these would go from light to dark.\n */\n\n --jp-layout-color0: white;\n --jp-layout-color1: white;\n --jp-layout-color2: var(--md-grey-200);\n --jp-layout-color3: var(--md-grey-400);\n --jp-layout-color4: var(--md-grey-600);\n\n /* Inverse Layout\n *\n * The following are the inverse layout colors use in JupyterLab. In a light\n * theme these would go from dark to light.\n */\n\n --jp-inverse-layout-color0: #111111;\n --jp-inverse-layout-color1: var(--md-grey-900);\n --jp-inverse-layout-color2: var(--md-grey-800);\n --jp-inverse-layout-color3: var(--md-grey-700);\n --jp-inverse-layout-color4: var(--md-grey-600);\n\n /* Brand/accent */\n\n --jp-brand-color0: var(--md-blue-900);\n --jp-brand-color1: var(--md-blue-700);\n --jp-brand-color2: var(--md-blue-300);\n --jp-brand-color3: var(--md-blue-100);\n --jp-brand-color4: var(--md-blue-50);\n\n --jp-accent-color0: var(--md-green-900);\n --jp-accent-color1: var(--md-green-700);\n --jp-accent-color2: var(--md-green-300);\n --jp-accent-color3: var(--md-green-100);\n\n /* State colors (warn, error, success, info) */\n\n --jp-warn-color0: var(--md-orange-900);\n --jp-warn-color1: var(--md-orange-700);\n --jp-warn-color2: var(--md-orange-300);\n --jp-warn-color3: var(--md-orange-100);\n\n --jp-error-color0: var(--md-red-900);\n --jp-error-color1: var(--md-red-700);\n --jp-error-color2: var(--md-red-300);\n --jp-error-color3: var(--md-red-100);\n\n --jp-success-color0: var(--md-green-900);\n --jp-success-color1: var(--md-green-700);\n --jp-success-color2: var(--md-green-300);\n --jp-success-color3: var(--md-green-100);\n\n --jp-info-color0: var(--md-cyan-900);\n --jp-info-color1: var(--md-cyan-700);\n --jp-info-color2: var(--md-cyan-300);\n --jp-info-color3: var(--md-cyan-100);\n\n /* Cell specific styles */\n\n --jp-cell-padding: 5px;\n\n --jp-cell-collapser-width: 8px;\n --jp-cell-collapser-min-height: 20px;\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\n\n --jp-cell-editor-background: var(--md-grey-100);\n --jp-cell-editor-border-color: var(--md-grey-300);\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-cell-editor-active-background: var(--jp-layout-color0);\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\n\n --jp-cell-prompt-width: 64px;\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\n --jp-cell-prompt-letter-spacing: 0px;\n --jp-cell-prompt-opacity: 1;\n --jp-cell-prompt-not-active-opacity: 0.5;\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\n /* A custom blend of MD grey and blue 600\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\n --jp-cell-inprompt-font-color: #307fc1;\n /* A custom blend of MD grey and orange 600\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\n --jp-cell-outprompt-font-color: #bf5b3d;\n\n /* Notebook specific styles */\n\n --jp-notebook-padding: 10px;\n --jp-notebook-select-background: var(--jp-layout-color1);\n --jp-notebook-multiselected-color: var(--md-blue-50);\n\n /* The scroll padding is calculated to fill enough space at the bottom of the\n notebook to show one single-line cell (with appropriate padding) at the top\n when the notebook is scrolled all the way to the bottom. We also subtract one\n pixel so that no scrollbar appears if we have just one single-line cell in the\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\n */\n --jp-notebook-scroll-padding: calc(\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\n );\n\n /* Rendermime styles */\n\n --jp-rendermime-error-background: #fdd;\n --jp-rendermime-table-row-background: var(--md-grey-100);\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\n\n /* Dialog specific styles */\n\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\n\n /* Console specific styles */\n\n --jp-console-padding: 10px;\n\n /* Toolbar specific styles */\n\n --jp-toolbar-border-color: var(--jp-border-color1);\n --jp-toolbar-micro-height: 8px;\n --jp-toolbar-background: var(--jp-layout-color1);\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\n --jp-toolbar-active-background: var(--md-grey-300);\n\n /* Statusbar specific styles */\n\n --jp-statusbar-height: 24px;\n\n /* Input field styles */\n\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-input-active-background: var(--jp-layout-color1);\n --jp-input-hover-background: var(--jp-layout-color1);\n --jp-input-background: var(--md-grey-100);\n --jp-input-border-color: var(--jp-inverse-border-color);\n --jp-input-active-border-color: var(--jp-brand-color1);\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\n\n /* General editor styles */\n\n --jp-editor-selected-background: #d9d9d9;\n --jp-editor-selected-focused-background: #d7d4f0;\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\n\n /* Code mirror specific styles */\n\n --jp-mirror-editor-keyword-color: #008000;\n --jp-mirror-editor-atom-color: #88f;\n --jp-mirror-editor-number-color: #080;\n --jp-mirror-editor-def-color: #00f;\n --jp-mirror-editor-variable-color: var(--md-grey-900);\n --jp-mirror-editor-variable-2-color: #05a;\n --jp-mirror-editor-variable-3-color: #085;\n --jp-mirror-editor-punctuation-color: #05a;\n --jp-mirror-editor-property-color: #05a;\n --jp-mirror-editor-operator-color: #aa22ff;\n --jp-mirror-editor-comment-color: #408080;\n --jp-mirror-editor-string-color: #ba2121;\n --jp-mirror-editor-string-2-color: #708;\n --jp-mirror-editor-meta-color: #aa22ff;\n --jp-mirror-editor-qualifier-color: #555;\n --jp-mirror-editor-builtin-color: #008000;\n --jp-mirror-editor-bracket-color: #997;\n --jp-mirror-editor-tag-color: #170;\n --jp-mirror-editor-attribute-color: #00c;\n --jp-mirror-editor-header-color: blue;\n --jp-mirror-editor-quote-color: #090;\n --jp-mirror-editor-link-color: #00c;\n --jp-mirror-editor-error-color: #f00;\n --jp-mirror-editor-hr-color: #999;\n\n /* Vega extension styles */\n\n --jp-vega-background: white;\n\n /* Sidebar-related styles */\n\n --jp-sidebar-min-width: 250px;\n\n /* Search-related styles */\n\n --jp-search-toggle-off-opacity: 0.5;\n --jp-search-toggle-hover-opacity: 0.8;\n --jp-search-toggle-on-opacity: 1;\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\n --jp-search-selected-match-color: black;\n --jp-search-unselected-match-background-color: var(\n --jp-inverse-layout-color0\n );\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\n\n /* Icon colors that work well with light or dark backgrounds */\n --jp-icon-contrast-color0: var(--md-purple-600);\n --jp-icon-contrast-color1: var(--md-green-600);\n --jp-icon-contrast-color2: var(--md-pink-600);\n --jp-icon-contrast-color3: var(--md-blue-600);\n}\n\n/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/* Set the default typography for monospace elements */\ntt,\ncode,\nkbd,\nsamp,\npre {\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n line-height: var(--jp-code-line-height);\n}\n\n"],"sourceRoot":""}]); -// Exports -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); - - -/***/ }), - -/***/ "./style/base.css": -/*!************************!*\ - !*** ./style/base.css ***! - \************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); -/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _node_modules_css_loader_dist_cjs_js_base_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./base.css */ "./node_modules/css-loader/dist/cjs.js!./style/base.css"); - - - -var options = {}; - -options.insert = "head"; -options.singleton = false; - -var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_base_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); - - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_base_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); - -/***/ }), - -/***/ "./style/index.js": -/*!************************!*\ - !*** ./style/index.js ***! - \************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _base_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base.css */ "./style/base.css"); - - - -/***/ }) - -}]); -//# sourceMappingURL=style_index_js.01365bdf92323310e6f2.js.map \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js.map b/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js.map deleted file mode 100644 index 5eb0fbb8dcb..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style_index_js.01365bdf92323310e6f2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"style_index_js.01365bdf92323310e6f2.js","mappings":"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","sources":["webpack://neural-compressor-ext-lab/./style/base.css","webpack://neural-compressor-ext-lab/./style/base.css?1944","webpack://neural-compressor-ext-lab/./style/index.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\n See the JupyterLab Developer Guide for useful CSS Patterns:\\n\\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\\n*/\\n.lds-ripple {\\n display: flex;\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 80px;\\n height: 80px;\\n}\\n.lds-ripple div {\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n border: 4px solid rgb(245, 131, 55);\\n opacity: 1;\\n border-radius: 50%;\\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\\n}\\n.lds-ripple div:nth-child(2) {\\n animation-delay: -0.5s;\\n}\\n@keyframes lds-ripple {\\n 0% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 4.9% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 5% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 1;\\n }\\n 100% {\\n top: 0px;\\n left: 0px;\\n width: 72px;\\n height: 72px;\\n opacity: 0;\\n }\\n}\\n\\n\\n/* CSS */\\n.button-62 {\\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\\n border: 0;\\n border-radius: 12px;\\n color: #FFFFFF;\\n cursor: pointer;\\n display: inline-block;\\n font-family: -apple-system,system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif;\\n font-size: 16px;\\n font-weight: 500;\\n line-height: 2.5;\\n outline: transparent;\\n padding: 0 1rem;\\n text-align: center;\\n text-decoration: none;\\n transition: box-shadow .2s ease-in-out;\\n user-select: none;\\n -webkit-user-select: none;\\n touch-action: manipulation;\\n white-space: nowrap;\\n}\\n\\n.button-62:not([disabled]):focus {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.button-62:not([disabled]):hover {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.aselector select {\\n background-color: initial;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n color: var(--jp-ui-font-color0);\\n display: block;\\n font-size: var(--jp-ui-font-size1);\\n height: 24px;\\n line-height: 14px;\\n padding: 0 25px 0 10px;\\n text-align: left;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n}\\n\\n/* Use our own theme for hover and option styles */\\n.aselector select:hover,\\n.aselector select > option {\\n background-color: var(--jp-layout-color2);\\n color: var(--jp-ui-font-color0);\\n}\\nselect {\\n box-sizing: border-box;\\n}\\n\\n.font{\\nbackground-color: initial;\\nborder: none;\\nheight: 21px;\\nborder-radius: 0;\\nfont-weight:500;\\ncolor: var(--jp-ui-font-color0);\\ndisplay: block;\\nline-height: 22.5px;\\npadding: 0 25px 0 10px;\\nfont-size: var(--jp-ui-font-size1);\\n}\\n.wrapper {\\n display: flex;\\n}\\n.f1ozlkqi {\\n pointer-events: none;\\n}\\n\\n.palybutton{\\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\\n}\\n.loading{\\n \\n background-image: url(\\\"data:image/svg+xml,\\\");\\n background-size: contain; \\n}\\n\\n:root {\\n /* Elevation\\n *\\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\\n *\\n * https://github.com/material-components/material-components-web\\n * https://material-components-web.appspot.com/elevation.html\\n */\\n\\n --jp-shadow-base-lightness: 0;\\n --jp-shadow-umbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.2\\n );\\n --jp-shadow-penumbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.14\\n );\\n --jp-shadow-ambient-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.12\\n );\\n --jp-elevation-z0: none;\\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\\n\\n /* Borders\\n *\\n * The following variables, specify the visual styling of borders in JupyterLab.\\n */\\n\\n --jp-border-width: 1px;\\n --jp-border-color0: var(--md-grey-400);\\n --jp-border-color1: var(--md-grey-400);\\n --jp-border-color2: var(--md-grey-300);\\n --jp-border-color3: var(--md-grey-200);\\n --jp-inverse-border-color: var(--md-grey-600);\\n --jp-border-radius: 2px;\\n\\n /* UI Fonts\\n *\\n * The UI font CSS variables are used for the typography all of the JupyterLab\\n * user interface elements that are not directly user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-ui-font-scale-factor: 1.2;\\n --jp-ui-font-size0: 0.83333em;\\n --jp-ui-font-size1: 13px; /* Base font size */\\n --jp-ui-font-size2: 1.2em;\\n --jp-ui-font-size3: 1.44em;\\n\\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\\n\\n /*\\n * Use these font colors against the corresponding main layout colors.\\n * In a light theme, these go from dark to light.\\n */\\n\\n /* Defaults use Material Design specification */\\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\\n\\n /*\\n * Use these against the brand/accent/warn/error colors.\\n * These will typically go from light to darker, in both a dark and light theme.\\n */\\n\\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\\n\\n /* Content Fonts\\n *\\n * Content font variables are used for typography of user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-content-line-height: 1.6;\\n --jp-content-font-scale-factor: 1.2;\\n --jp-content-font-size0: 0.83333em;\\n --jp-content-font-size1: 14px; /* Base font size */\\n --jp-content-font-size2: 1.2em;\\n --jp-content-font-size3: 1.44em;\\n --jp-content-font-size4: 1.728em;\\n --jp-content-font-size5: 2.0736em;\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-content-presentation-font-size1: 17px;\\n\\n --jp-content-heading-line-height: 1;\\n --jp-content-heading-margin-top: 1.2em;\\n --jp-content-heading-margin-bottom: 0.8em;\\n --jp-content-heading-font-weight: 500;\\n\\n /* Defaults use Material Design specification */\\n --jp-content-font-color0: rgba(0, 0, 0, 1);\\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\\n\\n --jp-content-link-color: var(--md-blue-700);\\n\\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\\n 'Segoe UI Symbol';\\n\\n /*\\n * Code Fonts\\n *\\n * Code font variables are used for typography of code and other monospaces content.\\n */\\n\\n --jp-code-font-size: 13px;\\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\\n --jp-code-font-family: var(--jp-code-font-family-default);\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-code-presentation-font-size: 16px;\\n\\n /* may need to tweak cursor width if you change font size */\\n --jp-code-cursor-width0: 1.4px;\\n --jp-code-cursor-width1: 2px;\\n --jp-code-cursor-width2: 4px;\\n\\n /* Layout\\n *\\n * The following are the main layout colors use in JupyterLab. In a light\\n * theme these would go from light to dark.\\n */\\n\\n --jp-layout-color0: white;\\n --jp-layout-color1: white;\\n --jp-layout-color2: var(--md-grey-200);\\n --jp-layout-color3: var(--md-grey-400);\\n --jp-layout-color4: var(--md-grey-600);\\n\\n /* Inverse Layout\\n *\\n * The following are the inverse layout colors use in JupyterLab. In a light\\n * theme these would go from dark to light.\\n */\\n\\n --jp-inverse-layout-color0: #111111;\\n --jp-inverse-layout-color1: var(--md-grey-900);\\n --jp-inverse-layout-color2: var(--md-grey-800);\\n --jp-inverse-layout-color3: var(--md-grey-700);\\n --jp-inverse-layout-color4: var(--md-grey-600);\\n\\n /* Brand/accent */\\n\\n --jp-brand-color0: var(--md-blue-900);\\n --jp-brand-color1: var(--md-blue-700);\\n --jp-brand-color2: var(--md-blue-300);\\n --jp-brand-color3: var(--md-blue-100);\\n --jp-brand-color4: var(--md-blue-50);\\n\\n --jp-accent-color0: var(--md-green-900);\\n --jp-accent-color1: var(--md-green-700);\\n --jp-accent-color2: var(--md-green-300);\\n --jp-accent-color3: var(--md-green-100);\\n\\n /* State colors (warn, error, success, info) */\\n\\n --jp-warn-color0: var(--md-orange-900);\\n --jp-warn-color1: var(--md-orange-700);\\n --jp-warn-color2: var(--md-orange-300);\\n --jp-warn-color3: var(--md-orange-100);\\n\\n --jp-error-color0: var(--md-red-900);\\n --jp-error-color1: var(--md-red-700);\\n --jp-error-color2: var(--md-red-300);\\n --jp-error-color3: var(--md-red-100);\\n\\n --jp-success-color0: var(--md-green-900);\\n --jp-success-color1: var(--md-green-700);\\n --jp-success-color2: var(--md-green-300);\\n --jp-success-color3: var(--md-green-100);\\n\\n --jp-info-color0: var(--md-cyan-900);\\n --jp-info-color1: var(--md-cyan-700);\\n --jp-info-color2: var(--md-cyan-300);\\n --jp-info-color3: var(--md-cyan-100);\\n\\n /* Cell specific styles */\\n\\n --jp-cell-padding: 5px;\\n\\n --jp-cell-collapser-width: 8px;\\n --jp-cell-collapser-min-height: 20px;\\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\\n\\n --jp-cell-editor-background: var(--md-grey-100);\\n --jp-cell-editor-border-color: var(--md-grey-300);\\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-cell-editor-active-background: var(--jp-layout-color0);\\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\\n\\n --jp-cell-prompt-width: 64px;\\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\\n --jp-cell-prompt-letter-spacing: 0px;\\n --jp-cell-prompt-opacity: 1;\\n --jp-cell-prompt-not-active-opacity: 0.5;\\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\\n /* A custom blend of MD grey and blue 600\\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\\n --jp-cell-inprompt-font-color: #307fc1;\\n /* A custom blend of MD grey and orange 600\\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\\n --jp-cell-outprompt-font-color: #bf5b3d;\\n\\n /* Notebook specific styles */\\n\\n --jp-notebook-padding: 10px;\\n --jp-notebook-select-background: var(--jp-layout-color1);\\n --jp-notebook-multiselected-color: var(--md-blue-50);\\n\\n /* The scroll padding is calculated to fill enough space at the bottom of the\\n notebook to show one single-line cell (with appropriate padding) at the top\\n when the notebook is scrolled all the way to the bottom. We also subtract one\\n pixel so that no scrollbar appears if we have just one single-line cell in the\\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\\n */\\n --jp-notebook-scroll-padding: calc(\\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\\n );\\n\\n /* Rendermime styles */\\n\\n --jp-rendermime-error-background: #fdd;\\n --jp-rendermime-table-row-background: var(--md-grey-100);\\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\\n\\n /* Dialog specific styles */\\n\\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\\n\\n /* Console specific styles */\\n\\n --jp-console-padding: 10px;\\n\\n /* Toolbar specific styles */\\n\\n --jp-toolbar-border-color: var(--jp-border-color1);\\n --jp-toolbar-micro-height: 8px;\\n --jp-toolbar-background: var(--jp-layout-color1);\\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\\n --jp-toolbar-active-background: var(--md-grey-300);\\n\\n /* Statusbar specific styles */\\n\\n --jp-statusbar-height: 24px;\\n\\n /* Input field styles */\\n\\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-input-active-background: var(--jp-layout-color1);\\n --jp-input-hover-background: var(--jp-layout-color1);\\n --jp-input-background: var(--md-grey-100);\\n --jp-input-border-color: var(--jp-inverse-border-color);\\n --jp-input-active-border-color: var(--jp-brand-color1);\\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\\n\\n /* General editor styles */\\n\\n --jp-editor-selected-background: #d9d9d9;\\n --jp-editor-selected-focused-background: #d7d4f0;\\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\\n\\n /* Code mirror specific styles */\\n\\n --jp-mirror-editor-keyword-color: #008000;\\n --jp-mirror-editor-atom-color: #88f;\\n --jp-mirror-editor-number-color: #080;\\n --jp-mirror-editor-def-color: #00f;\\n --jp-mirror-editor-variable-color: var(--md-grey-900);\\n --jp-mirror-editor-variable-2-color: #05a;\\n --jp-mirror-editor-variable-3-color: #085;\\n --jp-mirror-editor-punctuation-color: #05a;\\n --jp-mirror-editor-property-color: #05a;\\n --jp-mirror-editor-operator-color: #aa22ff;\\n --jp-mirror-editor-comment-color: #408080;\\n --jp-mirror-editor-string-color: #ba2121;\\n --jp-mirror-editor-string-2-color: #708;\\n --jp-mirror-editor-meta-color: #aa22ff;\\n --jp-mirror-editor-qualifier-color: #555;\\n --jp-mirror-editor-builtin-color: #008000;\\n --jp-mirror-editor-bracket-color: #997;\\n --jp-mirror-editor-tag-color: #170;\\n --jp-mirror-editor-attribute-color: #00c;\\n --jp-mirror-editor-header-color: blue;\\n --jp-mirror-editor-quote-color: #090;\\n --jp-mirror-editor-link-color: #00c;\\n --jp-mirror-editor-error-color: #f00;\\n --jp-mirror-editor-hr-color: #999;\\n\\n /* Vega extension styles */\\n\\n --jp-vega-background: white;\\n\\n /* Sidebar-related styles */\\n\\n --jp-sidebar-min-width: 250px;\\n\\n /* Search-related styles */\\n\\n --jp-search-toggle-off-opacity: 0.5;\\n --jp-search-toggle-hover-opacity: 0.8;\\n --jp-search-toggle-on-opacity: 1;\\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\\n --jp-search-selected-match-color: black;\\n --jp-search-unselected-match-background-color: var(\\n --jp-inverse-layout-color0\\n );\\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\\n\\n /* Icon colors that work well with light or dark backgrounds */\\n --jp-icon-contrast-color0: var(--md-purple-600);\\n --jp-icon-contrast-color1: var(--md-green-600);\\n --jp-icon-contrast-color2: var(--md-pink-600);\\n --jp-icon-contrast-color3: var(--md-blue-600);\\n}\\n\\n/*-----------------------------------------------------------------------------\\n| Copyright (c) Jupyter Development Team.\\n| Distributed under the terms of the Modified BSD License.\\n|----------------------------------------------------------------------------*/\\n\\n/* Set the default typography for monospace elements */\\ntt,\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: var(--jp-code-font-family);\\n font-size: var(--jp-code-font-size);\\n line-height: var(--jp-code-line-height);\\n}\\n\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./style/base.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*\\n See the JupyterLab Developer Guide for useful CSS Patterns:\\n\\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\\n*/\\n.lds-ripple {\\n display: flex;\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 80px;\\n height: 80px;\\n}\\n.lds-ripple div {\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n border: 4px solid rgb(245, 131, 55);\\n opacity: 1;\\n border-radius: 50%;\\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\\n}\\n.lds-ripple div:nth-child(2) {\\n animation-delay: -0.5s;\\n}\\n@keyframes lds-ripple {\\n 0% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 4.9% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 5% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 1;\\n }\\n 100% {\\n top: 0px;\\n left: 0px;\\n width: 72px;\\n height: 72px;\\n opacity: 0;\\n }\\n}\\n\\n\\n/* CSS */\\n.button-62 {\\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\\n border: 0;\\n border-radius: 12px;\\n color: #FFFFFF;\\n cursor: pointer;\\n display: inline-block;\\n font-family: -apple-system,system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif;\\n font-size: 16px;\\n font-weight: 500;\\n line-height: 2.5;\\n outline: transparent;\\n padding: 0 1rem;\\n text-align: center;\\n text-decoration: none;\\n transition: box-shadow .2s ease-in-out;\\n user-select: none;\\n -webkit-user-select: none;\\n touch-action: manipulation;\\n white-space: nowrap;\\n}\\n\\n.button-62:not([disabled]):focus {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.button-62:not([disabled]):hover {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.aselector select {\\n background-color: initial;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n color: var(--jp-ui-font-color0);\\n display: block;\\n font-size: var(--jp-ui-font-size1);\\n height: 24px;\\n line-height: 14px;\\n padding: 0 25px 0 10px;\\n text-align: left;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n}\\n\\n/* Use our own theme for hover and option styles */\\n.aselector select:hover,\\n.aselector select > option {\\n background-color: var(--jp-layout-color2);\\n color: var(--jp-ui-font-color0);\\n}\\nselect {\\n box-sizing: border-box;\\n}\\n\\n.font{\\nbackground-color: initial;\\nborder: none;\\nheight: 21px;\\nborder-radius: 0;\\nfont-weight:500;\\ncolor: var(--jp-ui-font-color0);\\ndisplay: block;\\nline-height: 22.5px;\\npadding: 0 25px 0 10px;\\nfont-size: var(--jp-ui-font-size1);\\n}\\n.wrapper {\\n display: flex;\\n}\\n.f1ozlkqi {\\n pointer-events: none;\\n}\\n\\n.palybutton{\\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\\n}\\n.loading{\\n \\n background-image: url(\\\"data:image/svg+xml,\\\");\\n background-size: contain; \\n}\\n\\n:root {\\n /* Elevation\\n *\\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\\n *\\n * https://github.com/material-components/material-components-web\\n * https://material-components-web.appspot.com/elevation.html\\n */\\n\\n --jp-shadow-base-lightness: 0;\\n --jp-shadow-umbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.2\\n );\\n --jp-shadow-penumbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.14\\n );\\n --jp-shadow-ambient-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.12\\n );\\n --jp-elevation-z0: none;\\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\\n\\n /* Borders\\n *\\n * The following variables, specify the visual styling of borders in JupyterLab.\\n */\\n\\n --jp-border-width: 1px;\\n --jp-border-color0: var(--md-grey-400);\\n --jp-border-color1: var(--md-grey-400);\\n --jp-border-color2: var(--md-grey-300);\\n --jp-border-color3: var(--md-grey-200);\\n --jp-inverse-border-color: var(--md-grey-600);\\n --jp-border-radius: 2px;\\n\\n /* UI Fonts\\n *\\n * The UI font CSS variables are used for the typography all of the JupyterLab\\n * user interface elements that are not directly user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-ui-font-scale-factor: 1.2;\\n --jp-ui-font-size0: 0.83333em;\\n --jp-ui-font-size1: 13px; /* Base font size */\\n --jp-ui-font-size2: 1.2em;\\n --jp-ui-font-size3: 1.44em;\\n\\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\\n\\n /*\\n * Use these font colors against the corresponding main layout colors.\\n * In a light theme, these go from dark to light.\\n */\\n\\n /* Defaults use Material Design specification */\\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\\n\\n /*\\n * Use these against the brand/accent/warn/error colors.\\n * These will typically go from light to darker, in both a dark and light theme.\\n */\\n\\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\\n\\n /* Content Fonts\\n *\\n * Content font variables are used for typography of user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-content-line-height: 1.6;\\n --jp-content-font-scale-factor: 1.2;\\n --jp-content-font-size0: 0.83333em;\\n --jp-content-font-size1: 14px; /* Base font size */\\n --jp-content-font-size2: 1.2em;\\n --jp-content-font-size3: 1.44em;\\n --jp-content-font-size4: 1.728em;\\n --jp-content-font-size5: 2.0736em;\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-content-presentation-font-size1: 17px;\\n\\n --jp-content-heading-line-height: 1;\\n --jp-content-heading-margin-top: 1.2em;\\n --jp-content-heading-margin-bottom: 0.8em;\\n --jp-content-heading-font-weight: 500;\\n\\n /* Defaults use Material Design specification */\\n --jp-content-font-color0: rgba(0, 0, 0, 1);\\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\\n\\n --jp-content-link-color: var(--md-blue-700);\\n\\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\\n 'Segoe UI Symbol';\\n\\n /*\\n * Code Fonts\\n *\\n * Code font variables are used for typography of code and other monospaces content.\\n */\\n\\n --jp-code-font-size: 13px;\\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\\n --jp-code-font-family: var(--jp-code-font-family-default);\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-code-presentation-font-size: 16px;\\n\\n /* may need to tweak cursor width if you change font size */\\n --jp-code-cursor-width0: 1.4px;\\n --jp-code-cursor-width1: 2px;\\n --jp-code-cursor-width2: 4px;\\n\\n /* Layout\\n *\\n * The following are the main layout colors use in JupyterLab. In a light\\n * theme these would go from light to dark.\\n */\\n\\n --jp-layout-color0: white;\\n --jp-layout-color1: white;\\n --jp-layout-color2: var(--md-grey-200);\\n --jp-layout-color3: var(--md-grey-400);\\n --jp-layout-color4: var(--md-grey-600);\\n\\n /* Inverse Layout\\n *\\n * The following are the inverse layout colors use in JupyterLab. In a light\\n * theme these would go from dark to light.\\n */\\n\\n --jp-inverse-layout-color0: #111111;\\n --jp-inverse-layout-color1: var(--md-grey-900);\\n --jp-inverse-layout-color2: var(--md-grey-800);\\n --jp-inverse-layout-color3: var(--md-grey-700);\\n --jp-inverse-layout-color4: var(--md-grey-600);\\n\\n /* Brand/accent */\\n\\n --jp-brand-color0: var(--md-blue-900);\\n --jp-brand-color1: var(--md-blue-700);\\n --jp-brand-color2: var(--md-blue-300);\\n --jp-brand-color3: var(--md-blue-100);\\n --jp-brand-color4: var(--md-blue-50);\\n\\n --jp-accent-color0: var(--md-green-900);\\n --jp-accent-color1: var(--md-green-700);\\n --jp-accent-color2: var(--md-green-300);\\n --jp-accent-color3: var(--md-green-100);\\n\\n /* State colors (warn, error, success, info) */\\n\\n --jp-warn-color0: var(--md-orange-900);\\n --jp-warn-color1: var(--md-orange-700);\\n --jp-warn-color2: var(--md-orange-300);\\n --jp-warn-color3: var(--md-orange-100);\\n\\n --jp-error-color0: var(--md-red-900);\\n --jp-error-color1: var(--md-red-700);\\n --jp-error-color2: var(--md-red-300);\\n --jp-error-color3: var(--md-red-100);\\n\\n --jp-success-color0: var(--md-green-900);\\n --jp-success-color1: var(--md-green-700);\\n --jp-success-color2: var(--md-green-300);\\n --jp-success-color3: var(--md-green-100);\\n\\n --jp-info-color0: var(--md-cyan-900);\\n --jp-info-color1: var(--md-cyan-700);\\n --jp-info-color2: var(--md-cyan-300);\\n --jp-info-color3: var(--md-cyan-100);\\n\\n /* Cell specific styles */\\n\\n --jp-cell-padding: 5px;\\n\\n --jp-cell-collapser-width: 8px;\\n --jp-cell-collapser-min-height: 20px;\\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\\n\\n --jp-cell-editor-background: var(--md-grey-100);\\n --jp-cell-editor-border-color: var(--md-grey-300);\\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-cell-editor-active-background: var(--jp-layout-color0);\\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\\n\\n --jp-cell-prompt-width: 64px;\\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\\n --jp-cell-prompt-letter-spacing: 0px;\\n --jp-cell-prompt-opacity: 1;\\n --jp-cell-prompt-not-active-opacity: 0.5;\\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\\n /* A custom blend of MD grey and blue 600\\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\\n --jp-cell-inprompt-font-color: #307fc1;\\n /* A custom blend of MD grey and orange 600\\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\\n --jp-cell-outprompt-font-color: #bf5b3d;\\n\\n /* Notebook specific styles */\\n\\n --jp-notebook-padding: 10px;\\n --jp-notebook-select-background: var(--jp-layout-color1);\\n --jp-notebook-multiselected-color: var(--md-blue-50);\\n\\n /* The scroll padding is calculated to fill enough space at the bottom of the\\n notebook to show one single-line cell (with appropriate padding) at the top\\n when the notebook is scrolled all the way to the bottom. We also subtract one\\n pixel so that no scrollbar appears if we have just one single-line cell in the\\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\\n */\\n --jp-notebook-scroll-padding: calc(\\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\\n );\\n\\n /* Rendermime styles */\\n\\n --jp-rendermime-error-background: #fdd;\\n --jp-rendermime-table-row-background: var(--md-grey-100);\\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\\n\\n /* Dialog specific styles */\\n\\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\\n\\n /* Console specific styles */\\n\\n --jp-console-padding: 10px;\\n\\n /* Toolbar specific styles */\\n\\n --jp-toolbar-border-color: var(--jp-border-color1);\\n --jp-toolbar-micro-height: 8px;\\n --jp-toolbar-background: var(--jp-layout-color1);\\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\\n --jp-toolbar-active-background: var(--md-grey-300);\\n\\n /* Statusbar specific styles */\\n\\n --jp-statusbar-height: 24px;\\n\\n /* Input field styles */\\n\\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-input-active-background: var(--jp-layout-color1);\\n --jp-input-hover-background: var(--jp-layout-color1);\\n --jp-input-background: var(--md-grey-100);\\n --jp-input-border-color: var(--jp-inverse-border-color);\\n --jp-input-active-border-color: var(--jp-brand-color1);\\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\\n\\n /* General editor styles */\\n\\n --jp-editor-selected-background: #d9d9d9;\\n --jp-editor-selected-focused-background: #d7d4f0;\\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\\n\\n /* Code mirror specific styles */\\n\\n --jp-mirror-editor-keyword-color: #008000;\\n --jp-mirror-editor-atom-color: #88f;\\n --jp-mirror-editor-number-color: #080;\\n --jp-mirror-editor-def-color: #00f;\\n --jp-mirror-editor-variable-color: var(--md-grey-900);\\n --jp-mirror-editor-variable-2-color: #05a;\\n --jp-mirror-editor-variable-3-color: #085;\\n --jp-mirror-editor-punctuation-color: #05a;\\n --jp-mirror-editor-property-color: #05a;\\n --jp-mirror-editor-operator-color: #aa22ff;\\n --jp-mirror-editor-comment-color: #408080;\\n --jp-mirror-editor-string-color: #ba2121;\\n --jp-mirror-editor-string-2-color: #708;\\n --jp-mirror-editor-meta-color: #aa22ff;\\n --jp-mirror-editor-qualifier-color: #555;\\n --jp-mirror-editor-builtin-color: #008000;\\n --jp-mirror-editor-bracket-color: #997;\\n --jp-mirror-editor-tag-color: #170;\\n --jp-mirror-editor-attribute-color: #00c;\\n --jp-mirror-editor-header-color: blue;\\n --jp-mirror-editor-quote-color: #090;\\n --jp-mirror-editor-link-color: #00c;\\n --jp-mirror-editor-error-color: #f00;\\n --jp-mirror-editor-hr-color: #999;\\n\\n /* Vega extension styles */\\n\\n --jp-vega-background: white;\\n\\n /* Sidebar-related styles */\\n\\n --jp-sidebar-min-width: 250px;\\n\\n /* Search-related styles */\\n\\n --jp-search-toggle-off-opacity: 0.5;\\n --jp-search-toggle-hover-opacity: 0.8;\\n --jp-search-toggle-on-opacity: 1;\\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\\n --jp-search-selected-match-color: black;\\n --jp-search-unselected-match-background-color: var(\\n --jp-inverse-layout-color0\\n );\\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\\n\\n /* Icon colors that work well with light or dark backgrounds */\\n --jp-icon-contrast-color0: var(--md-purple-600);\\n --jp-icon-contrast-color1: var(--md-green-600);\\n --jp-icon-contrast-color2: var(--md-pink-600);\\n --jp-icon-contrast-color3: var(--md-blue-600);\\n}\\n\\n/*-----------------------------------------------------------------------------\\n| Copyright (c) Jupyter Development Team.\\n| Distributed under the terms of the Modified BSD License.\\n|----------------------------------------------------------------------------*/\\n\\n/* Set the default typography for monospace elements */\\ntt,\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: var(--jp-code-font-family);\\n font-size: var(--jp-code-font-size);\\n line-height: var(--jp-code-line-height);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../node_modules/css-loader/dist/cjs.js!./base.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import './base.css';\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/requirements.txt b/neural_coder/extensions/neural-compressor-ext-lab/requirements.txt deleted file mode 100644 index 35463b1f8be..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/requirements.txt +++ /dev/null @@ -1,140 +0,0 @@ -anyio -argon2-cffi -argon2-cffi-bindings -attrs -Babel -backcall -backoff==1.11.1 -beautifulsoup4 -bleach -boto3==1.24.57 -botocore==1.27.57 -brotlipy==0.7.0 -cachetools==5.2.0 -certifi==2022.6.15 -cffi -charset-normalizer==2.1.1 -click==8.1.3 -cloudpickle==2.1.0 -contextlib2==21.6.0 -cPython==0.0.6 -cryptography -cycler==0.11.0 -Cython==3.0.0a11 -debugpy -decorator -defusedxml -deprecation==2.1.0 -docker==4.4.4 -entrypoints -executing -fastjsonschema -fonttools==4.36.0 -future==0.18.2 -gitdb==4.0.9 -GitPython==3.1.27 -google-auth==2.11.0 -hyperopt==0.2.7 -idna -ipykernel -ipython -ipython-genutils -ipywidgets -jedi -Jinja2 -jmespath==1.0.1 -joblib==1.1.0 -json5 -jsonschema -jupyter -jupyter-client -jupyter-console -jupyter-core -jupyter-packaging==0.12.2 -jupyter-server -jupyterlab -jupyterlab-pygments -jupyterlab-server -jupyterlab-widgets -kiwisolver==1.4.4 -kubernetes==12.0.1 -MarkupSafe -matplotlib==3.5.3 -matplotlib-inline -nbclassic -nbclient -nbconvert -nbformat -nest-asyncio -networkx==2.8.6 -neural-compressor==1.13.1 -notebook -npm==0.1.1 -numpy==1.23.2 -oauthlib==3.2.0 -opencv-python==4.6.0.66 -optional-django==0.1.0 -packaging -pandas==1.4.3 -pandocfilters -parso -pexpect -pickleshare -Pillow==9.2.0 -Pint==0.16.1 -ply==3.11 -prettytable==3.3.0 -prometheus-client -prompt-toolkit -psutil==5.9.1 -ptyprocess -pure-eval -py-cpuinfo==8.0.0 -py4j==0.10.9.7 -pyasn1==0.5.0rc1 -pyasn1-modules==0.3.0rc1 -pycocotools==2.0.4 -pycparser -Pygments -pymongo==4.2.0 -pyOpenSSL -pyparsing==3.0.9 -pypng==0.20220715.0 -PyQt5-sip==12.11.0 -pyrsistent -PySocks -python-dateutil -pytz -PyYAML==5.4.1 -pyzmq -qtconsole -QtPy -requests -requests-oauthlib==1.3.1 -rsa==4.9 -s3transfer==0.6.0 -schema==0.7.5 -scikit-learn==1.1.2 -scipy==1.9.0 -Send2Trash -sigopt==8.5.1 -sip -six -smmap==5.0.0 -sniffio -soupsieve -stack-data -terminado -testpath -threadpoolctl==3.1.0 -toml -tomlkit==0.11.4 -tornado -tqdm==4.64.0 -traitlets -typing_extensions -urllib3==1.26.12 -wcwidth -webencodings==0.5.1 -websocket-client -widgetsnbextension diff --git a/neural_coder/extensions/neural-compressor-ext-lab/setup.cfg b/neural_coder/extensions/neural-compressor-ext-lab/setup.cfg deleted file mode 100644 index 8bfd5a12f85..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[egg_info] -tag_build = -tag_date = 0 - diff --git a/neural_coder/extensions/neural-compressor-ext-lab/src/__tests__/Neural_Coder.spec.ts b/neural_coder/extensions/neural-compressor-ext-lab/src/__tests__/Neural_Coder.spec.ts deleted file mode 100644 index 8c3b2a153d9..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/src/__tests__/Neural_Coder.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Example of [Jest](https://jestjs.io/docs/getting-started) unit tests - */ - -describe('Neural_Coder', () => { - it('should be tested', () => { - expect(1 + 1).toEqual(2); - }); -}); diff --git a/neural_coder/extensions/neural-compressor-ext-lab/src/client.ts b/neural_coder/extensions/neural-compressor-ext-lab/src/client.ts deleted file mode 100644 index dff83861bfa..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/src/client.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { URLExt } from '@jupyterlab/coreutils'; -import { ServerConnection } from '@jupyterlab/services'; -import { Constants } from './constants'; - -class JupyterlabDeepCoderClient { - public request(path: string, method: string, body: any): Promise { - const settings = ServerConnection.makeSettings(); - const fullUrl = URLExt.join( - settings.baseUrl, - Constants.SHORT_PLUGIN_NAME, - path - ); - return ServerConnection.makeRequest( - fullUrl, - { - body, - method, - headers: new Headers({ - 'Plugin-Version': Constants.PLUGIN_VERSION - }) - }, - settings - ).then(response => { - if (response.status !== 200) { - return response.text().then(() => { - throw new ServerConnection.ResponseError( - response, - response.statusText - ); - }); - } - return response.text(); - }); - } - - } - - export default JupyterlabDeepCoderClient; - \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/src/deepcoder.ts b/neural_coder/extensions/neural-compressor-ext-lab/src/deepcoder.ts deleted file mode 100644 index 11102ab6467..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/src/deepcoder.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { Cell, CodeCell } from '@jupyterlab/cells'; -import { INotebookTracker, Notebook} from '@jupyterlab/notebook'; -import { IEditorTracker } from '@jupyterlab/fileeditor'; -import { showErrorMessage } from '@jupyterlab/apputils'; -import { Widget } from '@lumino/widgets'; -import JupyterlabDeepCoderClient from './client'; - - -class JupyterlabCodeOptimizer { - protected client: JupyterlabDeepCoderClient; - protected working: boolean; - constructor(client: JupyterlabDeepCoderClient) { - this.client = client; - this.working = false; - } - - protected optimizeCode( - code: string[], - formatter: string, - options: any, - notebook: boolean - ) { - - return this.client - .request( - 'optimize', - 'POST', - JSON.stringify({ - code, - notebook, - formatter, - options - }) - ) - .then(resp => JSON.parse(resp)); - } - } - - export class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { - protected notebookTracker: INotebookTracker; - - constructor( - client: JupyterlabDeepCoderClient, - notebookTracker: INotebookTracker - ) { - super(client); - this.notebookTracker = notebookTracker; - } - - public async optimizeAction(config: any, formatter?: string) { - return this.optimizeCells(true, config, formatter); - } - - - public async optimizeAllCodeCells( - config: any, - formatter?: string, - notebook?: Notebook - ) { - return this.optimizeCells(false, config, formatter, notebook); - } - - private getCodeCells(selectedOnly = true, notebook?: Notebook): CodeCell[] { - if (!this.notebookTracker.currentWidget) { - return []; - } - const codeCells: CodeCell[] = []; - notebook = notebook || this.notebookTracker.currentWidget.content; - notebook.widgets.forEach((cell: Cell) => { - if (cell.model.type === 'code') { - codeCells.push(cell as CodeCell); - } - }); - return codeCells; - } - - private async optimizeCells( - selectedOnly: boolean, - config: any, - formatter?: string, - notebook?: Notebook - ) { - if (this.working) { - return; - } - try { - this.working = true; - const selectedCells = this.getCodeCells(selectedOnly, notebook); - if (selectedCells.length === 0) { - this.working = false; - return; - } - const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu'; - const currentTexts = selectedCells.map(cell => cell.model.value.text); - const optimizedTexts = await this.optimizeCode( - currentTexts, - optimize_type, - undefined, - true - ); - for (let i = 0; i < selectedCells.length; ++i) { - const cell = selectedCells[i]; - const currentText = currentTexts[i]; - const optimizedText = optimizedTexts.code[i]; - if (cell.model.value.text === currentText) { - if (optimizedText.error) { - if (!(config.suppressFormatterErrors ?? false)) { - await showErrorMessage( - 'Optimize Code Error', - optimizedText.error - ); - } - } else { - cell.model.value.text = optimizedText; - } - } else { - await showErrorMessage( - 'Optimize Code Error', - `Cell value changed since format request was sent, formatting for cell ${i} skipped.` - ); - } - } - } catch (error) { - await showErrorMessage('Optimize Code Error', error); - } - this.working = false; - } - applicable(formatter: string, currentWidget: Widget) { - const currentNotebookWidget = this.notebookTracker.currentWidget; - return currentNotebookWidget && currentWidget === currentNotebookWidget; - } - } - export class JupyterlabFileEditorCodeOptimizer extends JupyterlabCodeOptimizer { - protected editorTracker: IEditorTracker; - - constructor( - client: JupyterlabDeepCoderClient, - editorTracker: IEditorTracker - ) { - super(client); - this.editorTracker = editorTracker; - } - - optimizeAction(config: any, formatter: string) { - if (this.working) { - return; - } - const editorWidget = this.editorTracker.currentWidget; - this.working = true; - if(editorWidget == null){ - return; - } - const editor = editorWidget.content.editor; - const code = editor.model.value.text; - this.optimizeCode([code], formatter, config[formatter], false) - .then(data => { - if (data.code[0].error) { - void showErrorMessage( - 'Optimize Code Error', - data.code[0].error - ); - this.working = false; - return; - } - this.working = false; - }) - .catch(error => { - this.working = false; - void showErrorMessage('Optimize Code Error', error); - }); - } - - applicable(formatter: string, currentWidget: Widget) { - const currentEditorWidget = this.editorTracker.currentWidget; - return currentEditorWidget && currentWidget === currentEditorWidget; - } - } - \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/README.md b/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/README.md deleted file mode 100644 index 3544aec4e88..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/README.md +++ /dev/null @@ -1,148 +0,0 @@ -# Integration Testing - -This folder contains the integration tests of the extension. - -They are defined using [Playwright](https://playwright.dev/docs/intro) test runner -and [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) helper. - -The Playwright configuration is defined in [playwright.config.js](./playwright.config.js). - -The JupyterLab server configuration to use for the integration test is defined -in [jupyter_server_test_config.py](./jupyter_server_test_config.py). - -The default configuration will produce video for failing tests and an HTML report. - -## Run the tests - -> All commands are assumed to be executed from the root directory - -To run the tests, you need to: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the [Playwright](https://playwright.dev/docs/intro) tests: - -```sh -cd ./ui-tests -jlpm playwright test -``` - -Test results will be shown in the terminal. In case of any test failures, the test report -will be opened in your browser at the end of the tests execution; see -[Playwright documentation](https://playwright.dev/docs/test-reporters#html-reporter) -for configuring that behavior. - -## Update the tests snapshots - -> All commands are assumed to be executed from the root directory - -If you are comparing snapshots to validate your tests, you may need to update -the reference snapshots stored in the repository. To do that, you need to: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the [Playwright](https://playwright.dev/docs/intro) command: - -```sh -cd ./ui-tests -jlpm playwright test -u -``` - -> Some discrepancy may occurs between the snapshots generated on your computer and -> the one generated on the CI. To ease updating the snapshots on a PR, you can -> type `please update playwright snapshots` to trigger the update by a bot on the CI. -> Once the bot has computed new snapshots, it will commit them to the PR branch. - -## Create tests - -> All commands are assumed to be executed from the root directory - -To create tests, the easiest way is to use the code generator tool of playwright: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the [Playwright code generator](https://playwright.dev/docs/codegen): - -```sh -cd ./ui-tests -jlpm playwright codegen localhost:8888 -``` - -## Debug tests - -> All commands are assumed to be executed from the root directory - -To debug tests, a good way is to use the inspector tool of playwright: - -1. Compile the extension: - -```sh -jlpm install -jlpm build:prod -``` - -> Check the extension is installed in JupyterLab. - -2. Install test dependencies (needed only once): - -```sh -cd ./ui-tests -jlpm install -jlpm playwright install -cd .. -``` - -3. Execute the Playwright tests in [debug mode](https://playwright.dev/docs/debug): - -```sh -cd ./ui-tests -PWDEBUG=1 jlpm playwright test -``` diff --git a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/jupyter_server_test_config.py b/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/jupyter_server_test_config.py deleted file mode 100644 index f33f3bdbffe..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/jupyter_server_test_config.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (c) 2022 Intel Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Server configuration for integration tests. - -!! Never use this configuration in production because it -opens the server to the world and provide access to JupyterLab -JavaScript objects through the global window variable. -""" -from tempfile import mkdtemp - -c.ServerApp.port = 8888 -c.ServerApp.port_retries = 0 -c.ServerApp.open_browser = False - -c.ServerApp.root_dir = mkdtemp(prefix='galata-test-') -c.ServerApp.token = "" -c.ServerApp.password = "" -c.ServerApp.disable_check_xsrf = True -c.LabApp.expose_app_in_browser = True - -# Uncomment to set server log level to debug level -# c.ServerApp.log_level = "DEBUG" diff --git a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/package.json b/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/package.json deleted file mode 100644 index 1de8904d7a8..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "Neural_Coder-ui-tests", - "version": "1.0.0", - "description": "JupyterLab Neural_Coder Integration Tests", - "private": true, - "scripts": { - "start": "jupyter lab --config jupyter_server_test_config.py", - "test": "jlpm playwright test" - }, - "devDependencies": { - "@jupyterlab/galata": "^4.3.0" - } -} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/playwright.config.js b/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/playwright.config.js deleted file mode 100644 index 9ece6fa1106..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/playwright.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Configuration for Playwright using default from @jupyterlab/galata - */ -const baseConfig = require('@jupyterlab/galata/lib/playwright-config'); - -module.exports = { - ...baseConfig, - webServer: { - command: 'jlpm start', - url: 'http://localhost:8888/lab', - timeout: 120 * 1000, - reuseExistingServer: !process.env.CI - } -}; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/tests/Neural_Coder.spec.ts b/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/tests/Neural_Coder.spec.ts deleted file mode 100644 index 8df76fae2cc..00000000000 --- a/neural_coder/extensions/neural-compressor-ext-lab/ui-tests/tests/Neural_Coder.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { expect, test } from '@jupyterlab/galata'; - -/** - * Don't load JupyterLab webpage before running the tests. - * This is required to ensure we capture all log messages. - */ -test.use({ autoGoto: false }); - -test('should emit an activation console message', async ({ page }) => { - const logs: string[] = []; - - page.on('console', message => { - logs.push(message.text()); - }); - - await page.goto(); - - expect( - logs.filter(s => s === 'JupyterLab extension Neural_Coder is activated!') - ).toHaveLength(1); -}); diff --git a/neural_coder/extensions/neural_compressor_ext_lab/.eslintignore b/neural_coder/extensions/neural_compressor_ext_lab/.eslintignore new file mode 100644 index 00000000000..fffa32fdf63 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/.eslintignore @@ -0,0 +1,8 @@ +node_modules +dist +coverage +**/*.d.ts +tests + +**/__tests__ +ui-tests diff --git a/neural_coder/extensions/neural_compressor_ext_lab/.eslintrc.js b/neural_coder/extensions/neural_compressor_ext_lab/.eslintrc.js new file mode 100644 index 00000000000..dbaf8a2b4b1 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/.eslintrc.js @@ -0,0 +1,44 @@ +module.exports = { + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended' + ], + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + sourceType: 'module' + }, + plugins: ['@typescript-eslint'], + rules: { + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'interface', + format: ['PascalCase'], + custom: { + regex: '^I[A-Z]', + match: true + } + } + ], + '@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/quotes': [ + 'error', + 'single', + { avoidEscape: true, allowTemplateLiterals: false } + ], + node: { + fs: 'empty', + net:'empty', + tls:'empty', +} + curly: ['error', 'all'], + eqeqeq: 'error', + 'prefer-arrow-callback': 'error' + } +}; diff --git a/neural_coder/extensions/neural_compressor_ext_lab/.prettierignore b/neural_coder/extensions/neural_compressor_ext_lab/.prettierignore new file mode 100644 index 00000000000..0de58a6f50b --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/.prettierignore @@ -0,0 +1,5 @@ +node_modules +**/node_modules +**/lib +**/package.json +neural_compressor_ext_lab diff --git a/neural_coder/extensions/neural_compressor_ext_lab/.prettierrc b/neural_coder/extensions/neural_compressor_ext_lab/.prettierrc new file mode 100644 index 00000000000..d0824a69c14 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/.prettierrc @@ -0,0 +1,6 @@ +{ + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid", + "endOfLine": "auto" +} diff --git a/neural_coder/extensions/neural_compressor_ext_lab/.stylelintrc b/neural_coder/extensions/neural_compressor_ext_lab/.stylelintrc new file mode 100644 index 00000000000..0e1ff30327c --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/.stylelintrc @@ -0,0 +1,12 @@ +{ + "extends": [ + "stylelint-config-recommended", + "stylelint-config-standard", + "stylelint-prettier/recommended" + ], + "rules": { + "property-no-vendor-prefix": null, + "selector-no-vendor-prefix": null, + "value-no-vendor-prefix": null + } +} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/CHANGELOG.md b/neural_coder/extensions/neural_compressor_ext_lab/CHANGELOG.md similarity index 100% rename from neural_coder/extensions/neural-compressor-ext-lab/CHANGELOG.md rename to neural_coder/extensions/neural_compressor_ext_lab/CHANGELOG.md diff --git a/neural_coder/extensions/neural_compressor_ext_lab/LICENSE b/neural_coder/extensions/neural_compressor_ext_lab/LICENSE new file mode 100644 index 00000000000..d3f814da892 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2022, neural_coder +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/neural_coder/extensions/neural-compressor-ext-lab/MANIFEST.in b/neural_coder/extensions/neural_compressor_ext_lab/MANIFEST.in similarity index 71% rename from neural_coder/extensions/neural-compressor-ext-lab/MANIFEST.in rename to neural_coder/extensions/neural_compressor_ext_lab/MANIFEST.in index ed806d17c68..99115494fae 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/MANIFEST.in +++ b/neural_coder/extensions/neural_compressor_ext_lab/MANIFEST.in @@ -1,21 +1,17 @@ include LICENSE include *.md include pyproject.toml -include conftest.py include package.json include install.json include ts*.json -include *.config.js include yarn.lock -include jupyter-config/jupyterlab_neural_coder.json -graft nerual-compressor-ext-lab/labextension +graft neural_compressor_ext_lab/labextension # Javascript files graft src graft style -graft ui-tests prune **/node_modules prune lib prune binder diff --git a/neural_coder/extensions/neural_compressor_ext_lab/README.md b/neural_coder/extensions/neural_compressor_ext_lab/README.md new file mode 100644 index 00000000000..7141373e783 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/README.md @@ -0,0 +1,75 @@ +# neural_compressor_ext_lab + +A JupyterLab extension. + +## Requirements + +- JupyterLab >= 3.0 + +## Install + +To install the extension, execute: + +```bash +pip install neural_compressor_ext_lab +``` + +## Uninstall + +To remove the extension, execute: + +```bash +pip uninstall neural_compressor_ext_lab +``` + +## Contributing + +### Development install + +Note: You will need NodeJS to build the extension package. + +The `jlpm` command is JupyterLab's pinned version of +[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use +`yarn` or `npm` in lieu of `jlpm` below. + +```bash +# Clone the repo to your local environment +# Change directory to the neural_compressor_ext_lab directory +# Install package in development mode +pip install -e . +# Link your development version of the extension with JupyterLab +jupyter labextension develop . --overwrite +# Rebuild extension Typescript source after making changes +jlpm build +``` + +You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. + +```bash +# Watch the source directory in one terminal, automatically rebuilding when needed +jlpm watch +# Run JupyterLab in another terminal +jupyter lab +``` + +With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). + +By default, the `jlpm build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command: + +```bash +jupyter lab build --minimize=False +``` + +### Development uninstall + +```bash +pip uninstall neural_compressor_ext_lab +``` + +In development mode, you will also need to remove the symlink created by `jupyter labextension develop` +command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions` +folder is located. Then you can remove the symlink named `neural_compressor_ext_lab` within that folder. + +### Packaging the extension + +See [RELEASE](RELEASE.md) diff --git a/neural_coder/extensions/neural-compressor-ext-lab/RELEASE.md b/neural_coder/extensions/neural_compressor_ext_lab/RELEASE.md similarity index 97% rename from neural_coder/extensions/neural-compressor-ext-lab/RELEASE.md rename to neural_coder/extensions/neural_compressor_ext_lab/RELEASE.md index 7856398bcfc..bd51b356f28 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/RELEASE.md +++ b/neural_coder/extensions/neural_compressor_ext_lab/RELEASE.md @@ -1,4 +1,4 @@ -# Making a new release of Neural_Coder +# Making a new release of neural_compressor_ext_lab The extension can be published to `PyPI` and `npm` manually or using the [Jupyter Releaser](https://github.com/jupyter-server/jupyter_releaser). diff --git a/neural_coder/extensions/neural_compressor_ext_lab/binder/environment.yml b/neural_coder/extensions/neural_compressor_ext_lab/binder/environment.yml new file mode 100644 index 00000000000..23bed128c24 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/binder/environment.yml @@ -0,0 +1,21 @@ +# a mybinder.org-ready environment for demoing neural_compressor_ext_lab +# this environment may also be used locally on Linux/MacOS/Windows, e.g. +# +# conda env update --file binder/environment.yml +# conda activate neural-compressor-ext-lab-demo +# +name: neural-compressor-ext-lab-demo + +channels: + - conda-forge + +dependencies: + # runtime dependencies + - python >=3.8,<3.9.0a0 + - jupyterlab >=3,<4.0.0a0 + # labextension build dependencies + - nodejs >=14,<15 + - pip + - wheel + # additional packages for demos + # - ipywidgets diff --git a/neural_coder/extensions/neural_compressor_ext_lab/binder/postBuild b/neural_coder/extensions/neural_compressor_ext_lab/binder/postBuild new file mode 100755 index 00000000000..95eabd91874 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/binder/postBuild @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +""" perform a development install of neural_compressor_ext_lab + + On Binder, this will run _after_ the environment has been fully created from + the environment.yml in this directory. + + This script should also run locally on Linux/MacOS/Windows: + + python3 binder/postBuild +""" +import subprocess +import sys +from pathlib import Path + + +ROOT = Path.cwd() + +def _(*args, **kwargs): + """ Run a command, echoing the args + + fails hard if something goes wrong + """ + print("\n\t", " ".join(args), "\n") + return_code = subprocess.call(args, **kwargs) + if return_code != 0: + print("\nERROR", return_code, " ".join(args)) + sys.exit(return_code) + +# verify the environment is self-consistent before even starting +_(sys.executable, "-m", "pip", "check") + +# install the labextension +_(sys.executable, "-m", "pip", "install", "-e", ".") +_(sys.executable, "-m", "jupyter", "labextension", "develop", "--overwrite", ".") + +# verify the environment the extension didn't break anything +_(sys.executable, "-m", "pip", "check") + +# list the extensions +_("jupyter", "server", "extension", "list") + +# initially list installed extensions to determine if there are any surprises +_("jupyter", "labextension", "list") + + +print("JupyterLab with neural_compressor_ext_lab is ready to run with:\n") +print("\tjupyter lab\n") diff --git a/neural_coder/extensions/neural_compressor_ext_lab/install.json b/neural_coder/extensions/neural_compressor_ext_lab/install.json new file mode 100644 index 00000000000..24f9a58e094 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/install.json @@ -0,0 +1,5 @@ +{ + "packageManager": "python", + "packageName": "neural_compressor_ext_lab", + "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package neural_compressor_ext_lab" +} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/constants.d.ts b/neural_coder/extensions/neural_compressor_ext_lab/lib/constants.d.ts similarity index 97% rename from neural_coder/extensions/neural-compressor-ext-lab/lib/constants.d.ts rename to neural_coder/extensions/neural_compressor_ext_lab/lib/constants.d.ts index af4b5c551c9..94a7af37564 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/constants.d.ts +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/constants.d.ts @@ -1,5 +1,6 @@ export declare namespace Constants { - const SHORT_PLUGIN_NAME = "neural-compressor-ext-lab"; + const SHORT_PLUGIN_NAME = "neural_compressor_ext_lab"; + const WORK_PATH = "lab_workspace/"; const ICON_FORMAT_ALL_SVG = ""; const ICON_RUN = ""; const SVG = ""; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/constants.js b/neural_coder/extensions/neural_compressor_ext_lab/lib/constants.js similarity index 97% rename from neural_coder/extensions/neural-compressor-ext-lab/constants.js rename to neural_coder/extensions/neural_compressor_ext_lab/lib/constants.js index fe7b7de3855..ff365147bf4 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/constants.js +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/constants.js @@ -1,6 +1,7 @@ export var Constants; (function (Constants) { - Constants.SHORT_PLUGIN_NAME = 'neural-compressor-ext-lab'; + Constants.SHORT_PLUGIN_NAME = 'neural_compressor_ext_lab'; + Constants.WORK_PATH = "lab_workspace/"; Constants.ICON_FORMAT_ALL_SVG = ''; Constants.ICON_RUN = ''; Constants.SVG = ''; diff --git a/neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.d.ts b/neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.d.ts new file mode 100644 index 00000000000..da96b6b661b --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.d.ts @@ -0,0 +1,26 @@ +import { CodeCell } from '@jupyterlab/cells'; +import { ToolbarButton } from '@jupyterlab/apputils'; +import { Widget } from '@lumino/widgets'; +import { INotebookTracker, NotebookPanel, Notebook } from '@jupyterlab/notebook'; +declare class JupyterlabCodeOptimizer { + protected working: boolean; + protected panel: NotebookPanel; + private tmp_path; + log_path: string; + tmp_log_path: string; + rand: number; + cells: CodeCell[]; + constructor(panel: NotebookPanel); + optimizeCode(code: string[], formatter: string, name: string, next: string, options: string | undefined, notebook: boolean, panel: NotebookPanel, cell: CodeCell, run?: ToolbarButton | undefined): Promise; +} +export declare class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { + protected notebookname: string; + protected notebookTracker: INotebookTracker; + constructor(notebookTracker: INotebookTracker, panel: NotebookPanel); + optimizeAction(config: any, formatter?: string): Promise; + optimizeAllCodeCells(config?: string, formatter?: string, notebook?: Notebook, run?: ToolbarButton): Promise; + private getCodeCells; + private optimizeCells; + applicable(formatter: string, currentWidget: Widget): boolean | null; +} +export {}; diff --git a/neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.js b/neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.js new file mode 100644 index 00000000000..e99afd6b6f0 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/deepcoder.js @@ -0,0 +1,249 @@ +import NotebookUtilities from "./utils"; +import { Constants } from './constants'; +// import * as fse from 'fs'; +// import * as child_process from 'lerna__child-process'; +class JupyterlabCodeOptimizer { + constructor(panel) { + this.working = false; + this.panel = panel; + this.tmp_path = Constants.WORK_PATH + "tmp.py"; + this.rand = NotebookUtilities.GetRandomNum(0, 200); + this.log_path = Constants.WORK_PATH + "NeuralCoder" + this.rand + ".log"; + this.tmp_log_path = Constants.WORK_PATH + "NeuralCoder_tmp" + ".log"; + this.cells = []; + } + async optimizeCode(code, formatter, name, next, options, notebook, panel, cell, run) { + let codes = []; + code.forEach(function (value) { + // console.log("each code", value) + value = value.replace(/('\\n')/g, '^^^'); + value = value.replace(/\\n"/g, '###'); + value = value.replace(/\\n'/g, '###'); + value = value.replace(/"\\n/g, '@@'); + value = value.replace(/'\\n/g, '@@'); + value = value.replace(/\n/g, '\\n'); + value = value.replace(/"/g, '+++'); + value = value.replace(/,/g, '$'); + // console.log("After Replace...",value) + codes.push(value); + }); + let gen_code = `code = "${codes}"\ncodes = code.split(',')\nwith open( '${this.tmp_path}', 'w+' ) as f:\n for i in range(0,len(codes)):\n f.write('# this is the beginning of a single code snippet\\n')\n code_list = codes[i].replace('$',',').replace('+++','\"').split('\\n')\n for line in code_list:\n if('split(^^^)' in line):\n line=line.replace('split(^^^)', 'split(\\'\\\\n\\')')\n if('###' in line):\n line=line.replace('###', '\\\\n\"')\n if('@@' in line):\n line=line.replace('@@', '\"\\\\n')\n f.write(line+'\\n')`; + const expr = { code_list: `code_list` }; + NotebookUtilities.sendKernelRequestFromNotebook(panel, gen_code, expr, false); + if (options === 'normal') { + let runcode = `from neural_coder import enable\nenable(code="${this.tmp_path}",features=["${formatter}"], overwrite=True)`; + //The user expressions + let expr = { sum: ` ` }; + //Async function call (returns a promise) + NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode, expr, false); + let run_code1 = `with open("${this.tmp_path}", 'r') as f:\n optimized_code = f.read()\n`; + let expr1 = { optimizedCode: "optimized_code" }; + let result2 = NotebookUtilities.sendKernelRequestFromNotebook(panel, run_code1, expr1, false); + result2.then(value => { + var _a, _b, _c, _d; + let optimizedTexts = Object.values(value.optimizedCode.data)[0]; + let optimizeCodes = optimizedTexts.split('# this is the beginning of a single code snippet\\n').slice(1); + console.log("optimizedText", optimizeCodes); + optimizeCodes[optimizeCodes.length - 1] = optimizeCodes[optimizeCodes.length - 1].slice(0, -3); + for (let i = 0; i < optimizeCodes.length; ++i) { + const cell = this.cells[i]; + const currentTexts = this.cells.map(cell => cell.model.value.text); + const currentText = currentTexts[i]; + let optimizedtext = optimizeCodes[i]; + optimizedtext = optimizedtext.replace(/\\'\\\\n\\'/g, "^^^"); + optimizedtext = optimizedtext.replace(/\\\\n"/g, "+++"); + optimizedtext = optimizedtext.replace(/\\\\n'/g, "+++"); + optimizedtext = optimizedtext.replace(/"\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/'\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/\\n/g, '\n'); + console.log("text2", optimizedtext); + optimizedtext = optimizedtext.replace(/\\'/g, "'"); + optimizedtext = optimizedtext.replace(/\^\^\^/g, "'\\n'"); + optimizedtext = optimizedtext.replace(/\+\+\+/g, "\\n\""); + optimizedtext = optimizedtext.replace(/\@\@\@/g, "\"\\n"); + if (cell.model.value.text === currentText) { + cell.model.value.text = optimizedtext; + } + const run_svg = document.createElement("svg"); + run_svg.innerHTML = Constants.ICON_RUN; + (_d = (_c = (_b = (_a = run === null || run === void 0 ? void 0 : run.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(run_svg); + } + }); + } + else { + if (formatter === '') { + cell.outputArea.node.innerText += "[NeuralCoder INFO] Enabling and Benchmarking for The Original Model ......\n"; + let runcode1 = `with open("${this.log_path}", 'a' ) as f:\n f.write("[NeuralCoder INFO] Enabling and Benchmarking for The Original Model ......\\n")`; + let expr1 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode1, expr1, false); + let runcode = `from neural_coder import enable\nperfomance, mode, path = enable(code="${this.tmp_path}",features=[], run_bench=True, args="${options}")\nwith open(path + '/bench.log', 'r') as f:\n logs = f.readlines()\nlog_line = logs[4]\nlog = log_line.split("[")[1].split("]")[0]`; + let expr = { path: "path", log: "log" }; + let result = NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode, expr, false); + let fps; + result.then(value => { + fps = Object.values(value.log.data)[0]; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Result (Performance) of The Original Model is ${fps} (FPS)\n`; + let text = `[NeuralCoder INFO] Benchmark Result (Performance) of The Original Model is ${fps} (FPS)\\n`; + let runcode = `with open("${this.log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode, expr, false); + cell.outputArea.node.innerText += `[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\n`; + let runcode1 = `with open("${this.log_path}", 'a' ) as f:\n f.write("[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\n")`; + let expr1 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode1, expr1, false); + let runcode2 = `with open("${this.tmp_log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr2 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + }); + } + else { + let runcode = `from neural_coder import enable\nperfomance, mode, path = enable(code="${this.tmp_path}", features=["${formatter}"], run_bench=True, args="${options}")\nwith open(path + '/bench.log', 'r') as f:\n logs = f.readlines()\nlog_line = logs[4]\nlog = log_line.split("[")[1].split("]")[0]`; + let expr = { path: "path", log: "log" }; + let result = NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode, expr, false); + let fps; + result.then(value => { + fps = Object.values(value.log.data)[0]; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Result (Performance) of ${name} is ${fps} (FPS)\n`; + let text = `[NeuralCoder INFO] Benchmark Result (Performance) of ${name} is ${fps} (FPS)\\n`; + let runcode = `with open("${this.log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode, expr, false); + if (next !== '') { + cell.outputArea.node.innerText += `[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\n`; + let runcode2 = `with open("${this.log_path}", 'a' ) as f:\n f.write("[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\n")`; + let expr2 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + } + let runcode2 = `with open("${this.tmp_log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr2 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + if (formatter === 'pytorch_inc_bf16') { + let read_log = `import re\nwith open("${this.tmp_log_path}", 'r') as f:\n logs = f.readlines()\n fps_list=[]\n for log_line in logs[-4:-1]:\n pat = r\'\\d+\\.?\\d+'\n fps = re.search(pat,log_line).group()\n fps_list.append(float(fps))\nmaxi = max(fps_list)\nindex = fps_list.index(maxi)\nboost = round(maxi/fps_list[0],1)\nfeatures=['','pytorch_inc_static_quant_fx','pytorch_inc_dynamic_quant','pytorch_inc_bf16']\nfeature_name=['','INC Enable INT8 (Static)','INC Enable INT8 (Dynamic)','INC Enable BF16']\nbest_feature = features[index]\nbest_name = feature_name[index]\nfeature_l = []\nfeature_l.append(best_feature)\nfrom neural_coder import enable\nenable(code="${this.tmp_path}",features=feature_l, overwrite=True)\nwith open("${this.tmp_path}", 'r') as f:\n optimized_code = f.read()\n`; + let read_expr = { boost: "boost", best_feature: "best_feature", best_name: "best_name", optimizeCode: "optimized_code", feature_l: "feature_l" }; + let read_result = NotebookUtilities.sendKernelRequestFromNotebook(this.panel, read_log, read_expr, false); + read_result.then(value => { + var _a, _b, _c, _d; + let boost = Object.values(value.boost.data)[0]; + let best_name = Object.values(value.best_name.data)[0]; + let optimizedTexts = Object.values(value.optimizeCode.data)[0]; + let optimizeCodes = optimizedTexts.split('# this is the beginning of a single code snippet\\n').slice(1); + cell.outputArea.node.innerText += `[NeuralCoder INFO] The Best Intel Optimization: ${best_name}\n`; + cell.outputArea.node.innerText += `[NeuralCoder INFO] You can get up to ${boost}X performance boost.\n`; + console.log("optimizedText", optimizeCodes); + optimizeCodes[optimizeCodes.length - 1] = optimizeCodes[optimizeCodes.length - 1].slice(0, -3); + for (let i = 0; i < optimizeCodes.length; ++i) { + const cell = this.cells[i]; + const currentTexts = this.cells.map(cell => cell.model.value.text); + const currentText = currentTexts[i]; + let optimizedtext = optimizeCodes[i]; + console.log("text1", optimizedtext); + optimizedtext = optimizedtext.replace(/\\'\\\\n\\'/g, "^^^"); + optimizedtext = optimizedtext.replace(/\\\\n"/g, "+++"); + optimizedtext = optimizedtext.replace(/\\\\n'/g, "+++"); + optimizedtext = optimizedtext.replace(/"\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/'\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/\\n/g, '\n'); + console.log("text2", optimizedtext); + optimizedtext = optimizedtext.replace(/\\'/g, "'"); + optimizedtext = optimizedtext.replace(/\^\^\^/g, "'\\n'"); + optimizedtext = optimizedtext.replace(/\+\+\+/g, "\\n\""); + optimizedtext = optimizedtext.replace(/\@\@\@/g, "\"\\n"); + console.log("text3", optimizedtext); + if (cell.model.value.text === currentText) { + cell.model.value.text = optimizedtext; + } + } + let command = "lscpu | grep 'Model name'"; + let get_hardware = `import subprocess\nsubp = subprocess.Popen("${command}",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")\nsubp.wait(2)\nhardware = subp.communicate()[0].replace("Model name:","").strip()`; + let expr_hardware = { hardware: "hardware" }; + let hard_res = NotebookUtilities.sendKernelRequestFromNotebook(this.panel, get_hardware, expr_hardware, false); + hard_res.then(value => { + let hard = Object.values(value.hardware.data)[0]; + cell.outputArea.node.innerText += `[NeuralCoder INFO] HardWare: ${hard}\n`; + }); + cell.outputArea.node.innerText += `[NeuralCoder INFO] The log was saved to lab_workspace\\NeuralCoder${this.rand}.log\n`; + const run_svg = document.createElement("svg"); + run_svg.innerHTML = Constants.ICON_RUN; + (_d = (_c = (_b = (_a = run === null || run === void 0 ? void 0 : run.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(run_svg); + }); + } + }); + } + } + } +} +export class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { + constructor(notebookTracker, panel) { + super(panel); + this.notebookTracker = notebookTracker; + this.notebookname = ''; + } + async optimizeAction(config, formatter) { + return this.optimizeCells(true, config, formatter); + } + async optimizeAllCodeCells(config, formatter, notebook, run) { + return this.optimizeCells(false, config, formatter, notebook, run); + } + getCodeCells(selectedOnly = true, notebook) { + if (!this.notebookTracker.currentWidget) { + return []; + } + const codeCells = []; + notebook = notebook || this.notebookTracker.currentWidget.content; + this.notebookname = notebook.title.label; + notebook.widgets.forEach((cell) => { + if (cell.model.type === 'code') { + codeCells.push(cell); + } + }); + this.cells = codeCells; + return codeCells; + } + async optimizeCells(selectedOnly, config, formatter, notebook, run) { + if (this.working) { + return new Promise((resolve, reject) => { + resolve("false!"); + }); + } + this.working = true; + const selectedCells = this.getCodeCells(selectedOnly, notebook); + let cell = selectedCells[selectedCells.length - 1]; + if (selectedCells.length === 0) { + this.working = false; + return new Promise((resolve, reject) => { + resolve("false!"); + }); + } + const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu'; + const currentTexts = selectedCells.map(cell => cell.model.value.text); + if (optimize_type === 'auto-quant') { + cell.outputArea.node.innerText = `[NeuralCoder INFO] Auto-Quant Started ......\n`; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Code: User code from Jupyter Lab notebook "${this.notebookname}"\n`; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Mode: Throughput\n`; + let runcode = `with open('${this.log_path}', 'a' ) as f:\n f.write("[NeuralCoder INFO] Auto-Quant Started ......\\n")`; + let expr = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode, expr, false); + let runcode2 = `with open('${this.log_path}', 'a' ) as f:\n f.write("[NeuralCoder INFO] Code: User code from Jupyter Lab notebook '${this.notebookname}'\\n")`; + let expr2 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + let runcode3 = `with open('${this.log_path}', 'a' ) as f:\n f.write("[NeuralCoder INFO] Benchmark Mode: Throughput\\n")`; + let expr3 = { path: "" }; + NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode3, expr3, false); + cell.outputArea.node.setAttribute("class", "pad"); + await this.optimizeCode(currentTexts, '', 'The Original Model', 'INC Enable INT8 (Static)', config, true, this.panel, cell, run); + await this.optimizeCode(currentTexts, 'pytorch_inc_static_quant_fx', 'INC Enable INT8 (Static)', 'INC Enable INT8 (Dynamic)', config, true, this.panel, cell, run); + await this.optimizeCode(currentTexts, 'pytorch_inc_dynamic_quant', 'INC Enable INT8 (Dynamic)', 'INC Enable BF16', config, true, this.panel, cell, run); + await this.optimizeCode(currentTexts, 'pytorch_inc_bf16', 'INC Enable BF16', '', config, true, this.panel, cell, run); + } + else { + await this.optimizeCode(currentTexts, optimize_type, "", "", "normal", true, this.panel, cell, run); + } + return new Promise((resolve, reject) => { + resolve("success!"); + }); + } + applicable(formatter, currentWidget) { + const currentNotebookWidget = this.notebookTracker.currentWidget; + return currentNotebookWidget && currentWidget === currentNotebookWidget; + } +} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/index.d.ts b/neural_coder/extensions/neural_compressor_ext_lab/lib/index.d.ts similarity index 68% rename from neural_coder/extensions/neural-compressor-ext-lab/lib/index.d.ts rename to neural_coder/extensions/neural_compressor_ext_lab/lib/index.d.ts index e9dc35371bc..f256eada9ba 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/index.d.ts +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/index.d.ts @@ -1,6 +1,6 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; /** - * Initialization data for the deepcoder-jupyterlab extension. + * Initialization data for the neural_compressor_ext_lab extension. */ declare const plugin: JupyterFrontEndPlugin; export default plugin; diff --git a/neural_coder/extensions/neural-compressor-ext-lab/lib/index.js b/neural_coder/extensions/neural_compressor_ext_lab/lib/index.js similarity index 60% rename from neural_coder/extensions/neural-compressor-ext-lab/lib/index.js rename to neural_coder/extensions/neural_compressor_ext_lab/lib/index.js index 50e98ed5110..b33cee74c1c 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/lib/index.js +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/index.js @@ -1,27 +1,26 @@ -import { INotebookTracker, } from '@jupyterlab/notebook'; -import { -// ICommandPalette, -ToolbarButton, } from '@jupyterlab/apputils'; +import { INotebookTracker } from '@jupyterlab/notebook'; +import { ToolbarButton, showDialog, Dialog } from '@jupyterlab/apputils'; import { ISettingRegistry } from '@jupyterlab/settingregistry'; import { IMainMenu } from '@jupyterlab/mainmenu'; -// import { DisposableDelegate, IDisposable } from '@lumino/disposable'; import { LabIcon } from '@jupyterlab/ui-components'; import { Widget } from '@lumino/widgets'; import { JupyterlabNotebookCodeOptimizer } from './deepcoder'; -import JupyterlabDeepCoderClient from './client'; import { Constants } from './constants'; -class JupyterLabDeepCoder { - // private panel: NotebookPanel; - constructor(app, tracker) { +class neural_compressor_ext_lab { + constructor(app, tracker, notebookpanel) { this.app = app; this.tracker = tracker; - // this.panel = panel; - this.client = new JupyterlabDeepCoderClient(); - this.notebookCodeOptimizer = new JupyterlabNotebookCodeOptimizer(this.client, this.tracker); + this.notebookpanel = notebookpanel; + // this.notebookCodeOptimizer = new JupyterlabNotebookCodeOptimizer( + // this.tracker, + // this.notebookpanel + // ); this.setupWidgetExtension(); + this.config = ''; } createNew(nb) { - // this.panel = nb; + this.notebookpanel = nb; + this.notebookCodeOptimizer = new JupyterlabNotebookCodeOptimizer(this.tracker, this.notebookpanel); const svg = document.createElement("svg"); svg.innerHTML = Constants.ICON_FORMAT_ALL_SVG; const run_svg = document.createElement("svg"); @@ -36,15 +35,17 @@ class JupyterLabDeepCoder { selector.id = "NeuralCoder"; const option1 = document.createElement("option"); option1.value = "pytorch_inc_static_quant_fx"; - option1.innerText = "Intel INT8 (Static)"; + option1.innerText = "INC Enable INT8 (Static)"; option1.selected = true; const option2 = document.createElement("option"); option2.value = "pytorch_inc_dynamic_quant"; - option2.innerText = "Intel INT8 (Dynamic)"; + option2.innerText = "INC Enable INT8 (Dynamic)"; const option3 = document.createElement("option"); option3.value = "pytorch_inc_bf16"; - option3.innerText = "Intel BF16"; + option3.innerText = "INC Enable BF16"; const option4 = document.createElement("option"); + option4.value = "auto-quant"; + option4.innerText = "INC Auto Enable & Benchmark"; selector.options.add(option1); selector.options.add(option2); selector.options.add(option3); @@ -54,9 +55,12 @@ class JupyterLabDeepCoder { const selector_widget = new Widget(); selector_widget.node.appendChild(div); selector_widget.addClass("aselector"); - // let panel = this.panel; let notebookCodeOptimizer = this.notebookCodeOptimizer; let config = this.config; + const dia_input = document.createElement("input"); + const dia_widget = new Widget(); + dia_widget.node.appendChild(dia_input); + dia_widget.addClass("dialog"); const run_button = new ToolbarButton({ tooltip: 'NeuralCoder', icon: new LabIcon({ @@ -64,12 +68,20 @@ class JupyterLabDeepCoder { svgstr: Constants.ICON_RUN }), onClick: async function () { - var _a, _b, _c, _d, _e, _f, _g, _h; + var _a, _b, _c, _d; (_d = (_c = (_b = (_a = run_button.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(svg); - console.log("user's selecting feature"); - console.log(selector.options[selector.selectedIndex].value); - await notebookCodeOptimizer.optimizeAllCodeCells(config, selector.options[selector.selectedIndex].value); - (_h = (_g = (_f = (_e = run_button.node.firstChild) === null || _e === void 0 ? void 0 : _e.firstChild) === null || _f === void 0 ? void 0 : _f.firstChild) === null || _g === void 0 ? void 0 : _g.firstChild) === null || _h === void 0 ? void 0 : _h.replaceWith(run_svg); + if (selector.options[selector.selectedIndex].value === 'auto-quant') { + await showDialog({ + title: 'Please input execute parameters:', + body: dia_widget, + buttons: [Dialog.okButton({ label: 'Confirm' })] + }).then(result => { + if (result.button.accept) { + config = dia_input.value; + } + }); + } + await notebookCodeOptimizer.optimizeAllCodeCells(config, selector.options[selector.selectedIndex].value, undefined, run_button); } }); nb.toolbar.insertItem(11, "nc", run_button); @@ -80,16 +92,16 @@ class JupyterLabDeepCoder { } } /** - * Initialization data for the deepcoder-jupyterlab extension. + * Initialization data for the neural_compressor_ext_lab extension. */ const plugin = { - id: 'neural-compressor-ext-lab:plugin', + id: 'neural_compressor_ext_lab:plugin', autoStart: true, requires: [INotebookTracker, IMainMenu], optional: [ISettingRegistry], - activate: (app, tracker) => { - new JupyterLabDeepCoder(app, tracker); - console.log('JupyterLab extension jupyterlab_neuralcoder is activated!'); + activate: (app, tracker, notebookpanel) => { + new neural_compressor_ext_lab(app, tracker, notebookpanel); + console.log('JupyterLab extension neural_compressor_ext_lab is activated!'); } }; export default plugin; diff --git a/neural_coder/extensions/neural_compressor_ext_lab/lib/test.d.ts b/neural_coder/extensions/neural_compressor_ext_lab/lib/test.d.ts new file mode 100644 index 00000000000..2c28e08c632 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/test.d.ts @@ -0,0 +1,2 @@ +declare let str: string; +declare let str1: number; diff --git a/neural_coder/extensions/neural_compressor_ext_lab/lib/test.js b/neural_coder/extensions/neural_compressor_ext_lab/lib/test.js new file mode 100644 index 00000000000..b51ac0b82b3 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/test.js @@ -0,0 +1,4 @@ +"use strict"; +let str = '# this is the beginning of a single code snippet\nimport glob\nimport torch\nimport os\nimport sys\nfrom tqdm import tqdm\nfrom dalle_pytorch import VQGanVAE, DALLE, DiscreteVAE\nfrom dalle_pytorch.tokenizer import tokenizer\nfrom einops import repeat\nfrom dalle_nc import DALLE, DiscreteVAE\nfrom torch.utils.data import DataLoader\nfrom torch.utils.data import Dataset\n\n# model\nvae = DiscreteVAE(\n image_size = 8,\n num_layers = 3,\n num_tokens = 8192,\n codebook_dim = 1024,\n hidden_dim = 64,\n num_resnet_blocks = 1,\n temperature = 0.9\n)\n\ndalle = DALLE(\n dim = 1024,\n vae = vae, # automatically infer (1) image sequence length and (2) number of image tokens\n num_text_tokens = 100000, # vocab size for text\n text_seq_len = 256, # text sequence length\n depth = 12, # should aim to be 64\n heads = 16, # attention heads\n dim_head = 64, # attention head dimension\n attn_dropout = 0.1, # attention dropout\n ff_dropout = 0.1 # feedforward dropout\n)\n# [NeuralCoder] pytorch_inc_dynamic_quant for dalle [Beginning Line]\nif "GraphModule" not in str(type(dalle)):\n from neural_compressor.conf.config import QuantConf\n from neural_compressor.experimental import Quantization, common\n quant_config = QuantConf()\n quant_config.usr_cfg.quantization.approach = "post_training_dynamic_quant"\n quant_config.usr_cfg.model.framework = "pytorch"\n quantizer = Quantization(quant_config)\n quantizer.model = common.Model(dalle)\n dalle = quantizer()\n dalle = dalle.model\n dalle.eval()\n# [NeuralCoder] pytorch_inc_dynamic_quant for dalle [Ending Line]\n\ndalle.eval()\n\n# real data for DALLE image generation\nfiles = glob.glob(\'/home2/longxin/neural_compressor_ext_lab/real_text.txt\')\n\n# create dataloader\ninput_list = []\nwith torch.no_grad():\n count = 0\n for file in files:\n texts = open(file, \'r\').read().split(\'\\n\')\n for text in texts:\n print(text)\n\n num_images = 1\n\n top_k = 0.9\n\n image_size = vae.image_size\n\n texts = text.split(\'|\')\n\n for j, text in tqdm(enumerate(texts)):\n text_tokens = tokenizer.tokenize([text], 256).to(\'cpu\')\n\n text_tokens = repeat(text_tokens, \'() n -> b n\', b=num_images)\n\n for text_chunk in tqdm(text_tokens):\n d = {}\n d["text"] = text_chunk\n d["filter_thres"] = top_k\n input_list.append(d)\n\nclass MyDataset(Dataset):\n def __init__(self):\n self.samples = input_list\n\n def __getitem__(self, idx):\n return self.samples[idx], 1\n\n def __len__(self):\n return len(self.samples)\ndataset = MyDataset()\ndataloader = DataLoader(dataset)\n\n# inference\nwith torch.no_grad():\n for step, (inputs, labels) in enumerate(dataloader):\n print("running inference ...")\n output = dalle(**inputs)\n\n'; +let str1 = str.split('# this is the beginning of a single code snippet\\n').length; +console.log(__filename); diff --git a/neural_coder/extensions/neural_compressor_ext_lab/lib/utils.d.ts b/neural_coder/extensions/neural_compressor_ext_lab/lib/utils.d.ts new file mode 100644 index 00000000000..8b7a2173767 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/utils.d.ts @@ -0,0 +1,120 @@ +import { NotebookPanel } from '@jupyterlab/notebook'; +import { Kernel } from '@jupyterlab/services'; +import { CommandRegistry } from '@phosphor/commands'; +export default class NotebookUtilities { + /** + * generate random number + * @Min + * @Max + */ + static GetRandomNum(Min: number, Max: number): number; + /** + * Builds an HTML container by sanitizing a list of strings and converting + * them in valid HTML + * @param msg A list of string with HTML formatting + * @returns a HTMLDivElement composed of a list of spans with formatted text + */ + private static buildDialogBody; + /** + * Opens a pop-up dialog in JupyterLab to display a simple message. + * @param title The title for the message popup + * @param msg The message as an array of strings + * @param buttonLabel The label to use for the button. Default is 'OK' + * @param buttonClassName The classname to give to the 'ok' button + * @returns Promise - A promise once the message is closed. + */ + static showMessage(title: string, msg: string[], buttonLabel?: string, buttonClassName?: string): Promise; + /** + * Opens a pop-up dialog in JupyterLab to display a yes/no dialog. + * @param title The title for the message popup + * @param msg The message + * @param acceptLabel The label to use for the accept button. Default is 'YES' + * @param rejectLabel The label to use for the reject button. Default is 'NO' + * @param yesButtonClassName The classname to give to the accept button. + * @param noButtonClassName The classname to give to the cancel button. + * @returns Promise - A promise once the message is closed. + */ + static showYesNoDialog(title: string, msg: string[], acceptLabel?: string, rejectLabel?: string, yesButtonClassName?: string, noButtonClassName?: string): Promise; + /** + * Opens a pop-up dialog in JupyterLab with various information and button + * triggering reloading the page. + * @param title The title for the message popup + * @param msg The message + * @param buttonLabel The label to use for the button. Default is 'Refresh' + * @param buttonClassName The classname to give to the 'refresh' button. + * @returns Promise - A promise once the message is closed. + */ + static showRefreshDialog(title: string, msg: string[], buttonLabel?: string, buttonClassName?: string): Promise; + /** + * @description Creates a new JupyterLab notebook for use by the application + * @param command The command registry + * @returns Promise - A promise containing the notebook panel object that was created (if successful). + */ + static createNewNotebook(command: CommandRegistry): Promise; + /** + * Safely saves the Jupyter notebook document contents to disk + * @param notebookPanel The notebook panel containing the notebook to save + */ + static saveNotebook(notebookPanel: NotebookPanel): Promise; + /** + * Convert the notebook contents to JSON + * @param notebookPanel The notebook panel containing the notebook to serialize + */ + static notebookToJSON(notebookPanel: NotebookPanel): any; + /** + * @description Gets the value of a key from specified notebook's metadata. + * @param notebookPanel The notebook to get meta data from. + * @param key The key of the value. + * @returns any -The value of the metadata. Returns null if the key doesn't exist. + */ + static getMetaData(notebookPanel: NotebookPanel, key: string): any; + /** + * @description Sets the key value pair in the notebook's metadata. + * If the key doesn't exists it will add one. + * @param notebookPanel The notebook to set meta data in. + * @param key The key of the value to create. + * @param value The value to set. + * @param save Default is false. Whether the notebook should be saved after the meta data is set. + * Note: This function will not wait for the save to complete, it only sends a save request. + * @returns The old value for the key, or undefined if it did not exist. + */ + static setMetaData(notebookPanel: NotebookPanel, key: string, value: any, save?: boolean): any; + /** + * @description This function runs code directly in the notebook's kernel and then evaluates the + * result and returns it as a promise. + * @param kernel The kernel to run the code in. + * @param runCode The code to run in the kernel. + * @param userExpressions The expressions used to capture the desired info from the executed code. + * @param runSilent Default is false. If true, kernel will execute as quietly as possible. + * store_history will be set to false, and no broadcast on IOPUB channel will be made. + * @param storeHistory Default is false. If true, the code executed will be stored in the kernel's history + * and the counter which is shown in the cells will be incremented to reflect code was run. + * @param allowStdIn Default is false. If true, code running in kernel can prompt user for input using + * an input_request message. + * @param stopOnError Default is false. If True, does not abort the execution queue, if an exception is encountered. + * This allows the queued execution of multiple execute_requests, even if they generate exceptions. + * @returns Promise - A promise containing the execution results of the code as an object with + * keys based on the user_expressions. + * @example + * //The code + * const code = "a=123\nb=456\nsum=a+b"; + * //The user expressions + * const expr = {sum: "sum",prod: "a*b",args:"[a,b,sum]"}; + * //Async function call (returns a promise) + * sendKernelRequest(notebookPanel, code, expr,false); + * //Result when promise resolves: + * { + * sum:{status:"ok",data:{"text/plain":"579"},metadata:{}}, + * prod:{status:"ok",data:{"text/plain":"56088"},metadata:{}}, + * args:{status:"ok",data:{"text/plain":"[123, 456, 579]"}} + * } + * @see For more information on JupyterLab messages: + * https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results + */ + static sendKernelRequest(kernel: Kernel.IKernelConnection | null | undefined, runCode: string, userExpressions: any, runSilent?: boolean, storeHistory?: boolean, allowStdIn?: boolean, stopOnError?: boolean): Promise; + /** + * Same as method sendKernelRequest but passing + * a NotebookPanel instead of a Kernel + */ + static sendKernelRequestFromNotebook(notebookPanel: NotebookPanel, runCode: string, userExpressions: any, runSilent?: boolean, storeHistory?: boolean, allowStdIn?: boolean, stopOnError?: boolean): Promise; +} diff --git a/neural_coder/extensions/neural_compressor_ext_lab/lib/utils.js b/neural_coder/extensions/neural_compressor_ext_lab/lib/utils.js new file mode 100644 index 00000000000..5ac72df1071 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/lib/utils.js @@ -0,0 +1,270 @@ +/* + * Copyright 2019-2020 The Kale Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Dialog, showDialog } from '@jupyterlab/apputils'; +// @ts-ignore +import SanitizedHTML from 'react-sanitized-html'; +import * as React from 'react'; +export default class NotebookUtilities { + /** + * generate random number + * @Min + * @Max + */ + static GetRandomNum(Min, Max) { + let Range; + Range = Max - Min; + var Rand = Math.random(); + return (Min + Math.round(Rand * Range)); + } + /** + * Builds an HTML container by sanitizing a list of strings and converting + * them in valid HTML + * @param msg A list of string with HTML formatting + * @returns a HTMLDivElement composed of a list of spans with formatted text + */ + static buildDialogBody(msg) { + return (React.createElement("div", null, msg.map((s, i) => { + return (React.createElement(React.Fragment, { key: `msg-${i}` }, + React.createElement(SanitizedHTML, { allowedAttributes: { a: ['href'] }, allowedTags: ['b', 'i', 'em', 'strong', 'a', 'pre'], html: s }), + React.createElement("br", null))); + }))); + } + /** + * Opens a pop-up dialog in JupyterLab to display a simple message. + * @param title The title for the message popup + * @param msg The message as an array of strings + * @param buttonLabel The label to use for the button. Default is 'OK' + * @param buttonClassName The classname to give to the 'ok' button + * @returns Promise - A promise once the message is closed. + */ + static async showMessage(title, msg, buttonLabel = 'Dismiss', buttonClassName = '') { + const buttons = [ + Dialog.okButton({ label: buttonLabel, className: buttonClassName }), + ]; + const messageBody = this.buildDialogBody(msg); + await showDialog({ title, buttons, body: messageBody }); + } + /** + * Opens a pop-up dialog in JupyterLab to display a yes/no dialog. + * @param title The title for the message popup + * @param msg The message + * @param acceptLabel The label to use for the accept button. Default is 'YES' + * @param rejectLabel The label to use for the reject button. Default is 'NO' + * @param yesButtonClassName The classname to give to the accept button. + * @param noButtonClassName The classname to give to the cancel button. + * @returns Promise - A promise once the message is closed. + */ + static async showYesNoDialog(title, msg, acceptLabel = 'YES', rejectLabel = 'NO', yesButtonClassName = '', noButtonClassName = '') { + const buttons = [ + Dialog.okButton({ label: acceptLabel, className: yesButtonClassName }), + Dialog.cancelButton({ label: rejectLabel, className: noButtonClassName }), + ]; + const messageBody = this.buildDialogBody(msg); + const result = await showDialog({ title, buttons, body: messageBody }); + return result.button.label === acceptLabel; + } + /** + * Opens a pop-up dialog in JupyterLab with various information and button + * triggering reloading the page. + * @param title The title for the message popup + * @param msg The message + * @param buttonLabel The label to use for the button. Default is 'Refresh' + * @param buttonClassName The classname to give to the 'refresh' button. + * @returns Promise - A promise once the message is closed. + */ + static async showRefreshDialog(title, msg, buttonLabel = 'Refresh', buttonClassName = '') { + await this.showMessage(title, msg, buttonLabel, buttonClassName); + location.reload(); + } + /** + * @description Creates a new JupyterLab notebook for use by the application + * @param command The command registry + * @returns Promise - A promise containing the notebook panel object that was created (if successful). + */ + static async createNewNotebook(command) { + const notebook = await command.execute('notebook:create-new', { + activate: true, + path: '', + preferredLanguage: '', + }); + await notebook.session.ready; + return notebook; + } + /** + * Safely saves the Jupyter notebook document contents to disk + * @param notebookPanel The notebook panel containing the notebook to save + */ + static async saveNotebook(notebookPanel) { + if (notebookPanel) { + await notebookPanel.context.ready; + notebookPanel.context.save(); + return true; + } + return false; + } + /** + * Convert the notebook contents to JSON + * @param notebookPanel The notebook panel containing the notebook to serialize + */ + static notebookToJSON(notebookPanel) { + if (notebookPanel.content.model) { + return notebookPanel.content.model.toJSON(); + } + return null; + } + /** + * @description Gets the value of a key from specified notebook's metadata. + * @param notebookPanel The notebook to get meta data from. + * @param key The key of the value. + * @returns any -The value of the metadata. Returns null if the key doesn't exist. + */ + static getMetaData(notebookPanel, key) { + if (!notebookPanel) { + throw new Error('The notebook is null or undefined. No meta data available.'); + } + if (notebookPanel.model && notebookPanel.model.metadata.has(key)) { + return notebookPanel.model.metadata.get(key); + } + return null; + } + /** + * @description Sets the key value pair in the notebook's metadata. + * If the key doesn't exists it will add one. + * @param notebookPanel The notebook to set meta data in. + * @param key The key of the value to create. + * @param value The value to set. + * @param save Default is false. Whether the notebook should be saved after the meta data is set. + * Note: This function will not wait for the save to complete, it only sends a save request. + * @returns The old value for the key, or undefined if it did not exist. + */ + static setMetaData(notebookPanel, key, value, save = false) { + var _a; + if (!notebookPanel) { + throw new Error('The notebook is null or undefined. No meta data available.'); + } + const oldVal = (_a = notebookPanel.model) === null || _a === void 0 ? void 0 : _a.metadata.set(key, value); + if (save) { + this.saveNotebook(notebookPanel); + } + return oldVal; + } + // /** + // * Get a new Kernel, not tied to a Notebook + // * Source code here: https://github.com/jupyterlab/jupyterlab/tree/473348d25bcb258ca2f0c127dd8fb5b193217135/packages/services + // */ + // public static async createNewKernel() { + // // Get info about the available kernels and start a new one. + // let options: Kernel.IOptions = await Kernel.getSpecs().then(kernelSpecs => { + // // console.log('Default spec:', kernelSpecs.default); + // // console.log('Available specs', Object.keys(kernelSpecs.kernelspecs)); + // // use the default name + // return { name: kernelSpecs.default }; + // }); + // return await Kernel.startNew(options).then(_kernel => { + // return _kernel; + // }); + // } + // // TODO: We can use this context manager to execute commands inside a new kernel + // // and be sure that it will be disposed of at the end. + // // Another approach could be to create a kale_rpc Kernel, as a singleton, + // // created at startup. The only (possible) drawback is that we can not name + // // a kernel instance with a custom id/name, so when refreshing JupyterLab we would + // // not recognize the kernel. A solution could be to have a kernel spec dedicated to kale rpc calls. + // public static async executeWithNewKernel(action: Function, args: any[] = []) { + // // create brand new kernel + // const _k = await this.createNewKernel(); + // // execute action inside kernel + // const res = await action(_k, ...args); + // // close kernel + // _k.shutdown(); + // // return result + // return res; + // } + /** + * @description This function runs code directly in the notebook's kernel and then evaluates the + * result and returns it as a promise. + * @param kernel The kernel to run the code in. + * @param runCode The code to run in the kernel. + * @param userExpressions The expressions used to capture the desired info from the executed code. + * @param runSilent Default is false. If true, kernel will execute as quietly as possible. + * store_history will be set to false, and no broadcast on IOPUB channel will be made. + * @param storeHistory Default is false. If true, the code executed will be stored in the kernel's history + * and the counter which is shown in the cells will be incremented to reflect code was run. + * @param allowStdIn Default is false. If true, code running in kernel can prompt user for input using + * an input_request message. + * @param stopOnError Default is false. If True, does not abort the execution queue, if an exception is encountered. + * This allows the queued execution of multiple execute_requests, even if they generate exceptions. + * @returns Promise - A promise containing the execution results of the code as an object with + * keys based on the user_expressions. + * @example + * //The code + * const code = "a=123\nb=456\nsum=a+b"; + * //The user expressions + * const expr = {sum: "sum",prod: "a*b",args:"[a,b,sum]"}; + * //Async function call (returns a promise) + * sendKernelRequest(notebookPanel, code, expr,false); + * //Result when promise resolves: + * { + * sum:{status:"ok",data:{"text/plain":"579"},metadata:{}}, + * prod:{status:"ok",data:{"text/plain":"56088"},metadata:{}}, + * args:{status:"ok",data:{"text/plain":"[123, 456, 579]"}} + * } + * @see For more information on JupyterLab messages: + * https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results + */ + static async sendKernelRequest(kernel, runCode, userExpressions, runSilent = false, storeHistory = false, allowStdIn = false, stopOnError = false) { + if (!kernel) { + throw new Error('Kernel is null or undefined.'); + } + // Wait for kernel to be ready before sending request + // await kernel.status; + const message = await kernel.requestExecute({ + allow_stdin: allowStdIn, + code: runCode, + silent: runSilent, + stop_on_error: stopOnError, + store_history: storeHistory, + user_expressions: userExpressions, + }).done; + const content = message.content; + if (content.status !== 'ok') { + // If response is not 'ok', throw contents as error, log code + const msg = `Code caused an error:\n${runCode}`; + console.error(msg); + if (content.traceback) { + content.traceback.forEach((line) => console.log(line.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''))); + } + throw content; + } + // Return user_expressions of the content + return content.user_expressions; + } + /** + * Same as method sendKernelRequest but passing + * a NotebookPanel instead of a Kernel + */ + static async sendKernelRequestFromNotebook(notebookPanel, runCode, userExpressions, runSilent = false, storeHistory = false, allowStdIn = false, stopOnError = false) { + var _a, _b, _c, _d; + if (!notebookPanel) { + throw new Error('Notebook is null or undefined.'); + } + // Wait for notebook panel to be ready + await notebookPanel.activate; + await ((_a = notebookPanel.sessionContext) === null || _a === void 0 ? void 0 : _a.ready); + console.log('get kernel', (_b = notebookPanel.sessionContext.session) === null || _b === void 0 ? void 0 : _b.kernel); + return this.sendKernelRequest((_d = (_c = notebookPanel.sessionContext) === null || _c === void 0 ? void 0 : _c.session) === null || _d === void 0 ? void 0 : _d.kernel, runCode, userExpressions, runSilent, storeHistory, allowStdIn, stopOnError); + } +} diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/__init__.py b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/__init__.py similarity index 50% rename from neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/__init__.py rename to neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/__init__.py index 4bdc517e2e7..74c4e9f68fc 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/__init__.py +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/__init__.py @@ -14,35 +14,21 @@ import json -import os.path as osp +from pathlib import Path -from .handlers import setup_handlers from ._version import __version__ -HERE = osp.abspath(osp.dirname(__file__)) -with open(osp.join(HERE, "package.json")) as fid: - data = json.load(fid) - - -def _jupyter_labextension_paths(): - return [{"src": "labextension", "dest": data["name"]}] +HERE = Path(__file__).parent.resolve() -def _jupyter_server_extension_paths(): - return [{"module": "neural-compressor-ext-lab"}] - - -def _load_jupyter_server_extension(server_app): - """Registers the API handler to receive HTTP requests from the frontend extension. +with (HERE / "labextension" / "package.json").open() as fid: + data = json.load(fid) - Parameters - ---------- - lab_app: jupyterlab.labapp.LabApp - JupyterLab application instance - """ - setup_handlers(server_app.web_app) +def _jupyter_labextension_paths(): + return [{ + "src": "labextension", + "dest": data["name"] + }] -# For backward compatibility -load_jupyter_server_extension = _load_jupyter_server_extension diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/_version.py b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/_version.py similarity index 60% rename from neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/_version.py rename to neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/_version.py index fedbdada02b..30cfd6b1021 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/_version.py +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/_version.py @@ -13,26 +13,26 @@ # limitations under the License. -__all__ = ["__version__"] +import json +from pathlib import Path +__all__ = ["__version__"] def _fetchVersion(): - import json - import os - from pathlib import Path + HERE = Path(__file__).parent.resolve() - HERE = os.path.abspath(os.path.dirname(__file__)) - # HERE = Path(__file__).parent - - for d, _, _ in os.walk(HERE): - print("walk dir",d) + for settings in HERE.rglob("package.json"): try: - with open(os.path.join(d, "package.json")) as f: - return json.load(f)["version"] + with settings.open() as f: + version = json.load(f)["version"] + return ( + version.replace("-alpha.", "a") + .replace("-beta.", "b") + .replace("-rc.", "rc") + ) except FileNotFoundError: pass - raise FileNotFoundError("Could not find package.json under dir {}".format(HERE)) - + raise FileNotFoundError(f"Could not find package.json under dir {HERE!s}") __version__ = _fetchVersion() diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/build_log.json b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/build_log.json new file mode 100644 index 00000000000..86507de63a9 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/build_log.json @@ -0,0 +1,653 @@ +[ + { + "bail": false, + "module": { + "rules": [ + { + "test": {}, + "use": [ + "style-loader", + "css-loader" + ] + }, + { + "test": {}, + "use": "raw-loader" + }, + { + "test": {}, + "use": "raw-loader" + }, + { + "test": {}, + "use": "file-loader" + }, + { + "test": {}, + "use": "file-loader" + }, + { + "test": {}, + "use": "url-loader?limit=10000&mimetype=application/font-woff" + }, + { + "test": {}, + "use": "url-loader?limit=10000&mimetype=application/font-woff" + }, + { + "test": {}, + "use": "url-loader?limit=10000&mimetype=application/octet-stream" + }, + { + "test": {}, + "use": "file-loader" + }, + { + "test": {}, + "issuer": {}, + "use": { + "loader": "svg-url-loader", + "options": { + "encoding": "none", + "limit": 10000 + } + } + }, + { + "test": {}, + "issuer": {}, + "use": { + "loader": "raw-loader" + } + }, + { + "test": {}, + "type": "javascript/auto" + }, + { + "test": {}, + "resolve": { + "fullySpecified": false + } + }, + { + "test": {}, + "resolve": { + "fullySpecified": false + } + }, + { + "test": {}, + "use": "file-loader" + } + ] + }, + "resolve": { + "alias": { + "@phosphor/algorithm$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/algorithm/dist/index.js", + "@phosphor/application$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/application/dist/index.js", + "@phosphor/commands$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/commands/dist/index.js", + "@phosphor/coreutils$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/coreutils/dist/index.node.js", + "@phosphor/disposable$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/disposable/dist/index.js", + "@phosphor/domutils$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/domutils/dist/index.js", + "@phosphor/dragdrop$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/dragdrop/dist/index.js", + "@phosphor/dragdrop/style": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/widgets/style", + "@phosphor/messaging$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/messaging/dist/index.js", + "@phosphor/properties$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/properties/dist/index.js", + "@phosphor/signaling": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/signaling/dist/index.js", + "@phosphor/widgets/style": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/widgets/style", + "@phosphor/virtualdom$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/virtualdom/dist/index.js", + "@phosphor/widgets$": "/home2/longxin/neural_compressor_ext_lab/node_modules/@lumino/widgets/dist/index.js" + }, + "fallback": { + "url": false, + "buffer": false, + "crypto": false, + "path": "/home2/longxin/neural_compressor_ext_lab/node_modules/path-browserify/index.js", + "process": "/home2/longxin/neural_compressor_ext_lab/node_modules/process/browser.js" + } + }, + "watchOptions": { + "poll": 500, + "aggregateTimeout": 1000 + }, + "output": { + "hashFunction": "sha256", + "filename": "[name].[contenthash].js", + "path": "/home2/longxin/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static", + "publicPath": "auto" + }, + "plugins": [ + { + "definitions": { + "process": "process/browser" + } + }, + { + "_options": { + "name": "neural_compressor_ext_lab", + "library": { + "type": "var", + "name": [ + "_JUPYTERLAB", + "neural_compressor_ext_lab" + ] + }, + "filename": "remoteEntry.[contenthash].js", + "exposes": { + "./index": "/home2/longxin/neural_compressor_ext_lab/lib/index.js", + "./extension": "/home2/longxin/neural_compressor_ext_lab/lib/index.js", + "./style": "/home2/longxin/neural_compressor_ext_lab/style/index.js" + }, + "shared": { + "@jupyterlab/application": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/application-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/apputils-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/cell-toolbar-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/celltags-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/codemirror-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/completer-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/console-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/coreutils": { + "requiredVersion": "^5.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/csvviewer-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/debugger-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/docmanager-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/docprovider-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/documentsearch-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/extensionmanager-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/filebrowser-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/fileeditor-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/help-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/htmlviewer-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/hub-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/imageviewer-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/inspector-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/javascript-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/json-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/launcher-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/logconsole-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/mainmenu-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/markdownviewer-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/mathjax2-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/notebook-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/pdf-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/rendermime-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/running-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/settingeditor-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/shortcuts-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/statusbar-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/terminal-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/theme-dark-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/theme-light-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/toc-extension": { + "requiredVersion": "^5.4.5", + "import": false + }, + "@jupyterlab/tooltip-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/translation-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/ui-components-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/vdom-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/vega5-extension": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/apputils": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/attachments": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/cell-toolbar": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/cells": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/celltags": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/codeeditor": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/codemirror": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/completer": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/console": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/csvviewer": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/debugger": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/docmanager": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/docprovider": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/docregistry": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/documentsearch": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/extensionmanager": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/filebrowser": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/fileeditor": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/htmlviewer": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/imageviewer": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/inspector": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/launcher": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/logconsole": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/mainmenu": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/markdownviewer": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/mathjax2": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/metapackage": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/nbconvert-css": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/nbformat": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/notebook": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/observables": { + "requiredVersion": "^4.4.5", + "import": false + }, + "@jupyterlab/outputarea": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/property-inspector": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/rendermime": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/rendermime-interfaces": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/running": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@jupyterlab/services": { + "requiredVersion": "^6.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/settingeditor": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/settingregistry": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/shared-models": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/statedb": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/statusbar": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/terminal": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/toc": { + "requiredVersion": "^5.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/tooltip": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/translation": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/ui-components": { + "requiredVersion": "^3.4.5", + "import": false, + "singleton": true + }, + "@jupyterlab/vdom": { + "requiredVersion": "^3.4.5", + "import": false + }, + "@lumino/algorithm": { + "requiredVersion": "^1.9.0", + "import": false, + "singleton": true + }, + "@lumino/application": { + "requiredVersion": "^1.27.0", + "import": false, + "singleton": true + }, + "@lumino/commands": { + "requiredVersion": "^1.19.0", + "import": false, + "singleton": true + }, + "@lumino/coreutils": { + "requiredVersion": "^1.11.0", + "import": false, + "singleton": true + }, + "@lumino/disposable": { + "requiredVersion": "^1.10.0", + "import": false, + "singleton": true + }, + "@lumino/domutils": { + "requiredVersion": "^1.8.0", + "import": false, + "singleton": true + }, + "@lumino/dragdrop": { + "requiredVersion": "^1.13.0", + "import": false, + "singleton": true + }, + "@lumino/messaging": { + "requiredVersion": "^1.10.0", + "import": false, + "singleton": true + }, + "@lumino/properties": { + "requiredVersion": "^1.8.0", + "import": false, + "singleton": true + }, + "@lumino/signaling": { + "requiredVersion": "^1.10.0", + "import": false, + "singleton": true + }, + "@lumino/virtualdom": { + "requiredVersion": "^1.14.0", + "import": false, + "singleton": true + }, + "@lumino/widgets": { + "requiredVersion": "^1.33.0", + "import": false, + "singleton": true + }, + "react": { + "requiredVersion": "^17.0.1", + "import": false, + "singleton": true + }, + "react-dom": { + "requiredVersion": "^17.0.1", + "import": false, + "singleton": true + }, + "yjs": { + "requiredVersion": "^13.5.17", + "import": false, + "singleton": true + }, + "@phosphor/commands": {}, + "@types/lerna__child-process": {}, + "@types/shelljs": {}, + "assert": {}, + "browserify-fs": {}, + "brython": {}, + "buffer": {}, + "child_process": {}, + "constants": {}, + "fs": {}, + "react-sanitized-html": {}, + "shelljs": {}, + "stream": {}, + "util": {}, + "neural_compressor_ext_lab": { + "version": "0.1.0", + "singleton": true, + "import": "/home2/longxin/neural_compressor_ext_lab/lib/index.js" + } + } + } + }, + {} + ], + "mode": "development", + "devtool": "source-map", + "entry": {} + } +] \ No newline at end of file diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/package.json b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/package.json new file mode 100644 index 00000000000..bbaf67c0b6f --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/package.json @@ -0,0 +1,131 @@ +{ + "name": "neural_compressor_ext_lab", + "version": "0.1.0", + "description": "A JupyterLab extension.", + "keywords": [ + "jupyter", + "jupyterlab", + "jupyterlab-extension" + ], + "homepage": "https://github.com/Ymirsss/neural_compressor_ext_lab", + "bugs": { + "url": "https://github.com/Ymirsss/neural_compressor_ext_lab/issues" + }, + "license": "BSD-3-Clause", + "author": { + "name": "neural_coder", + "email": "rya.ashs@gmail.com" + }, + "files": [ + "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", + "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}" + ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "style": "style/index.css", + "repository": { + "type": "git", + "url": "https://github.com/Ymirsss/neural_compressor_ext_lab.git" + }, + "scripts": { + "build": "jlpm build:lib && jlpm build:labextension:dev", + "build:prod": "jlpm clean && jlpm build:lib && jlpm build:labextension", + "build:labextension": "jupyter labextension build .", + "build:labextension:dev": "jupyter labextension build --development True .", + "build:lib": "tsc", + "clean": "jlpm clean:lib", + "clean:lib": "rimraf lib tsconfig.tsbuildinfo", + "clean:lintcache": "rimraf .eslintcache .stylelintcache", + "clean:labextension": "rimraf neural_compressor_ext_lab/labextension", + "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache", + "eslint": "jlpm eslint:check --fix", + "eslint:check": "eslint . --cache --ext .ts,.tsx", + "install:extension": "jlpm build", + "lint": "jlpm stylelint && jlpm prettier && jlpm eslint", + "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check", + "prettier": "jlpm prettier:base --write --list-different", + "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier:check": "jlpm prettier:base --check", + "stylelint": "jlpm stylelint:check --fix", + "stylelint:check": "stylelint --cache \"style/**/*.css\"", + "watch": "run-p watch:src watch:labextension", + "watch:src": "tsc -w", + "watch:labextension": "jupyter labextension watch ." + }, + "dependencies": { + "@jupyterlab/application": "^3.1.0", + "@jupyterlab/cells": "^3.4.6", + "@jupyterlab/fileeditor": "^3.4.6", + "@jupyterlab/mainmenu": "^3.4.6", + "@jupyterlab/notebook": "^3.4.6", + "@phosphor/commands": "^1.7.2", + "@types/lerna__child-process": "^5.1.0", + "@types/shelljs": "^0.8.11", + "assert": "^2.0.0", + "browserify-fs": "^1.0.0", + "brython": "^3.10.6", + "buffer": "^6.0.3", + "child_process": "^1.0.2", + "constants": "^0.0.2", + "fs": "^0.0.1-security", + "react": "^16.14.0", + "react-sanitized-html": "^2.0.0", + "shelljs": "^0.8.5", + "stream": "^0.0.2", + "util": "^0.12.4" + }, + "devDependencies": { + "@jupyterlab/builder": "^3.1.0", + "@types/fs-extra": "^9.0.13", + "@types/node": "^18.7.15", + "@typescript-eslint/eslint-plugin": "^4.8.1", + "@typescript-eslint/parser": "^4.8.1", + "eslint": "^7.14.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-prettier": "^3.1.4", + "npm-run-all": "^4.1.5", + "prettier": "^2.1.1", + "rimraf": "^3.0.2", + "stylelint": "^14.3.0", + "stylelint-config-prettier": "^9.0.3", + "stylelint-config-recommended": "^6.0.0", + "stylelint-config-standard": "~24.0.0", + "stylelint-prettier": "^2.0.0", + "typescript": "~4.1.3" + }, + "sideEffects": [ + "style/*.css", + "style/index.js" + ], + "styleModule": "style/index.js", + "publishConfig": { + "access": "public" + }, + "jupyterlab": { + "extension": true, + "outputDir": "neural_compressor_ext_lab/labextension", + "_build": { + "load": "static/remoteEntry.6eba177d6998a43bce65.js", + "extension": "./extension", + "style": "./style" + } + }, + "browser": { + "child_process": false, + "lerna__child_process": false, + "fs": false, + "path": false, + "os": false + }, + "jupyter-releaser": { + "hooks": { + "before-build-npm": [ + "python -m pip install jupyterlab~=3.1", + "jlpm" + ], + "before-build-python": [ + "jlpm clean:all" + ] + } + } +} diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js new file mode 100644 index 00000000000..9d2bde3a125 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js @@ -0,0 +1,704 @@ +"use strict"; +(self["webpackChunkneural_compressor_ext_lab"] = self["webpackChunkneural_compressor_ext_lab"] || []).push([["lib_index_js"],{ + +/***/ "./lib/constants.js": +/*!**************************!*\ + !*** ./lib/constants.js ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "Constants": () => (/* binding */ Constants) +/* harmony export */ }); +var Constants; +(function (Constants) { + Constants.SHORT_PLUGIN_NAME = 'neural_compressor_ext_lab'; + Constants.WORK_PATH = "lab_workspace/"; + Constants.ICON_FORMAT_ALL_SVG = ''; + Constants.ICON_RUN = ''; + Constants.SVG = ''; + Constants.LONG_PLUGIN_NAME = `@rya/${Constants.SHORT_PLUGIN_NAME}`; + Constants.SETTINGS_SECTION = `${Constants.LONG_PLUGIN_NAME}:settings`; + Constants.COMMAND_SECTION_NAME = 'Jupyterlab Code Optimizer'; + Constants.PLUGIN_VERSION = '0.1.0'; +})(Constants || (Constants = {})); + + +/***/ }), + +/***/ "./lib/deepcoder.js": +/*!**************************!*\ + !*** ./lib/deepcoder.js ***! + \**************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "JupyterlabNotebookCodeOptimizer": () => (/* binding */ JupyterlabNotebookCodeOptimizer) +/* harmony export */ }); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./lib/utils.js"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "./lib/constants.js"); + + +class JupyterlabCodeOptimizer { + constructor(panel) { + this.working = false; + this.panel = panel; + this.tmp_path = _constants__WEBPACK_IMPORTED_MODULE_0__.Constants.WORK_PATH + "tmp.py"; + this.rand = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].GetRandomNum(0, 200); + this.log_path = _constants__WEBPACK_IMPORTED_MODULE_0__.Constants.WORK_PATH + "NeuralCoder" + this.rand + ".log"; + this.tmp_log_path = _constants__WEBPACK_IMPORTED_MODULE_0__.Constants.WORK_PATH + "NeuralCoder_tmp" + ".log"; + this.cells = []; + } + async optimizeCode(code, formatter, name, next, options, notebook, panel, cell, run) { + let codes = []; + code.forEach(function (value) { + value = value.replace(/('\\n')/g, '^^^'); + value = value.replace(/\\n"/g, '###'); + value = value.replace(/\\n'/g, '###'); + value = value.replace(/"\\n/g, '@@'); + value = value.replace(/'\\n/g, '@@'); + value = value.replace(/\n/g, '\\n'); + value = value.replace(/"/g, '+++'); + value = value.replace(/,/g, '$'); + codes.push(value); + }); + let gen_code = `code = "${codes}"\ncodes = code.split(',')\nwith open( '${this.tmp_path}', 'w+' ) as f:\n for i in range(0,len(codes)):\n f.write('# this is the beginning of a single code snippet\\n')\n code_list = codes[i].replace('$',',').replace('+++','\"').split('\\n')\n for line in code_list:\n if('split(^^^)' in line):\n line=line.replace('split(^^^)', 'split(\\'\\\\n\\')')\n if('###' in line):\n line=line.replace('###', '\\\\n\"')\n if('@@' in line):\n line=line.replace('@@', '\"\\\\n')\n f.write(line+'\\n')`; + const expr = { code_list: `code_list` }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, gen_code, expr, false); + if (options === 'normal') { + let runcode = `from neural_coder import enable\nenable(code="${this.tmp_path}",features=["${formatter}"], overwrite=True)`; + let expr = { sum: ` ` }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, runcode, expr, false); + let run_code1 = `with open("${this.tmp_path}", 'r') as f:\n optimized_code = f.read()\n`; + let expr1 = { optimizedCode: "optimized_code" }; + let result2 = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, run_code1, expr1, false); + result2.then(value => { + var _a, _b, _c, _d; + let optimizedTexts = Object.values(value.optimizedCode.data)[0]; + let optimizeCodes = optimizedTexts.split('# this is the beginning of a single code snippet\\n').slice(1); + optimizeCodes[optimizeCodes.length - 1] = optimizeCodes[optimizeCodes.length - 1].slice(0, -3); + for (let i = 0; i < optimizeCodes.length; ++i) { + const cell = this.cells[i]; + const currentTexts = this.cells.map(cell => cell.model.value.text); + const currentText = currentTexts[i]; + let optimizedtext = optimizeCodes[i]; + optimizedtext = optimizedtext.replace(/\\'\\\\n\\'/g, "^^^"); + optimizedtext = optimizedtext.replace(/\\\\n"/g, "+++"); + optimizedtext = optimizedtext.replace(/\\\\n'/g, "+++"); + optimizedtext = optimizedtext.replace(/"\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/'\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/\\n/g, '\n'); + optimizedtext = optimizedtext.replace(/\\'/g, "'"); + optimizedtext = optimizedtext.replace(/\^\^\^/g, "'\\n'"); + optimizedtext = optimizedtext.replace(/\+\+\+/g, "\\n\""); + optimizedtext = optimizedtext.replace(/\@\@\@/g, "\"\\n"); + if (cell.model.value.text === currentText) { + cell.model.value.text = optimizedtext; + } + const run_svg = document.createElement("svg"); + run_svg.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_0__.Constants.ICON_RUN; + (_d = (_c = (_b = (_a = run === null || run === void 0 ? void 0 : run.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(run_svg); + } + }); + } + else { + if (formatter === '') { + cell.outputArea.node.innerText += "[NeuralCoder INFO] Enabling and Benchmarking for The Original Model ......\n"; + let runcode1 = `with open("${this.log_path}", 'a' ) as f:\n f.write("[NeuralCoder INFO] Enabling and Benchmarking for The Original Model ......\\n")`; + let expr1 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, runcode1, expr1, false); + let runcode = `from neural_coder import enable\nperfomance, mode, path = enable(code="${this.tmp_path}",features=[], run_bench=True, args="${options}")\nwith open(path + '/bench.log', 'r') as f:\n logs = f.readlines()\nlog_line = logs[4]\nlog = log_line.split("[")[1].split("]")[0]`; + let expr = { path: "path", log: "log" }; + let result = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, runcode, expr, false); + let fps; + result.then(value => { + fps = Object.values(value.log.data)[0]; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Result (Performance) of The Original Model is ${fps} (FPS)\n`; + let text = `[NeuralCoder INFO] Benchmark Result (Performance) of The Original Model is ${fps} (FPS)\\n`; + let runcode = `with open("${this.log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode, expr, false); + cell.outputArea.node.innerText += `[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\n`; + let runcode1 = `with open("${this.log_path}", 'a' ) as f:\n f.write("[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\n")`; + let expr1 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, runcode1, expr1, false); + let runcode2 = `with open("${this.tmp_log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr2 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + }); + } + else { + let runcode = `from neural_coder import enable\nperfomance, mode, path = enable(code="${this.tmp_path}", features=["${formatter}"], run_bench=True, args="${options}")\nwith open(path + '/bench.log', 'r') as f:\n logs = f.readlines()\nlog_line = logs[4]\nlog = log_line.split("[")[1].split("]")[0]`; + let expr = { path: "path", log: "log" }; + let result = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(panel, runcode, expr, false); + let fps; + result.then(value => { + fps = Object.values(value.log.data)[0]; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Result (Performance) of ${name} is ${fps} (FPS)\n`; + let text = `[NeuralCoder INFO] Benchmark Result (Performance) of ${name} is ${fps} (FPS)\\n`; + let runcode = `with open("${this.log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode, expr, false); + if (next !== '') { + cell.outputArea.node.innerText += `[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\n`; + let runcode2 = `with open("${this.log_path}", 'a' ) as f:\n f.write("[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\n")`; + let expr2 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + } + let runcode2 = `with open("${this.tmp_log_path}", 'a' ) as f:\n f.write("${text}")`; + let expr2 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + if (formatter === 'pytorch_inc_bf16') { + let read_log = `import re\nwith open("${this.tmp_log_path}", 'r') as f:\n logs = f.readlines()\n fps_list=[]\n for log_line in logs[-4:-1]:\n pat = r\'\\d+\\.?\\d+'\n fps = re.search(pat,log_line).group()\n fps_list.append(float(fps))\nmaxi = max(fps_list)\nindex = fps_list.index(maxi)\nboost = round(maxi/fps_list[0],1)\nfeatures=['','pytorch_inc_static_quant_fx','pytorch_inc_dynamic_quant','pytorch_inc_bf16']\nfeature_name=['','INC Enable INT8 (Static)','INC Enable INT8 (Dynamic)','INC Enable BF16']\nbest_feature = features[index]\nbest_name = feature_name[index]\nfeature_l = []\nfeature_l.append(best_feature)\nfrom neural_coder import enable\nenable(code="${this.tmp_path}",features=feature_l, overwrite=True)\nwith open("${this.tmp_path}", 'r') as f:\n optimized_code = f.read()\n`; + let read_expr = { boost: "boost", best_feature: "best_feature", best_name: "best_name", optimizeCode: "optimized_code", feature_l: "feature_l" }; + let read_result = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, read_log, read_expr, false); + read_result.then(value => { + var _a, _b, _c, _d; + let boost = Object.values(value.boost.data)[0]; + let best_name = Object.values(value.best_name.data)[0]; + let optimizedTexts = Object.values(value.optimizeCode.data)[0]; + let optimizeCodes = optimizedTexts.split('# this is the beginning of a single code snippet\\n').slice(1); + cell.outputArea.node.innerText += `[NeuralCoder INFO] The Best Intel Optimization: ${best_name}\n`; + cell.outputArea.node.innerText += `[NeuralCoder INFO] You can get up to ${boost}X performance boost.\n`; + optimizeCodes[optimizeCodes.length - 1] = optimizeCodes[optimizeCodes.length - 1].slice(0, -3); + for (let i = 0; i < optimizeCodes.length; ++i) { + const cell = this.cells[i]; + const currentTexts = this.cells.map(cell => cell.model.value.text); + const currentText = currentTexts[i]; + let optimizedtext = optimizeCodes[i]; + optimizedtext = optimizedtext.replace(/\\'\\\\n\\'/g, "^^^"); + optimizedtext = optimizedtext.replace(/\\\\n"/g, "+++"); + optimizedtext = optimizedtext.replace(/\\\\n'/g, "+++"); + optimizedtext = optimizedtext.replace(/"\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/'\\\\n/g, "@@@"); + optimizedtext = optimizedtext.replace(/\\n/g, '\n'); + optimizedtext = optimizedtext.replace(/\\'/g, "'"); + optimizedtext = optimizedtext.replace(/\^\^\^/g, "'\\n'"); + optimizedtext = optimizedtext.replace(/\+\+\+/g, "\\n\""); + optimizedtext = optimizedtext.replace(/\@\@\@/g, "\"\\n"); + if (cell.model.value.text === currentText) { + cell.model.value.text = optimizedtext; + } + } + let command = "lscpu | grep 'Model name'"; + let get_hardware = `import subprocess\nsubp = subprocess.Popen("${command}",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")\nsubp.wait(2)\nhardware = subp.communicate()[0].replace("Model name:","").strip()`; + let expr_hardware = { hardware: "hardware" }; + let hard_res = _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, get_hardware, expr_hardware, false); + hard_res.then(value => { + let hard = Object.values(value.hardware.data)[0]; + cell.outputArea.node.innerText += `[NeuralCoder INFO] HardWare: ${hard}\n`; + }); + cell.outputArea.node.innerText += `[NeuralCoder INFO] The log was saved to lab_workspace\\NeuralCoder${this.rand}.log\n`; + const run_svg = document.createElement("svg"); + run_svg.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_0__.Constants.ICON_RUN; + (_d = (_c = (_b = (_a = run === null || run === void 0 ? void 0 : run.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(run_svg); + }); + } + }); + } + } + } +} +class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer { + constructor(notebookTracker, panel) { + super(panel); + this.notebookTracker = notebookTracker; + this.notebookname = ''; + } + async optimizeAction(config, formatter) { + return this.optimizeCells(true, config, formatter); + } + async optimizeAllCodeCells(config, formatter, notebook, run) { + return this.optimizeCells(false, config, formatter, notebook, run); + } + getCodeCells(selectedOnly = true, notebook) { + if (!this.notebookTracker.currentWidget) { + return []; + } + const codeCells = []; + notebook = notebook || this.notebookTracker.currentWidget.content; + this.notebookname = notebook.title.label; + notebook.widgets.forEach((cell) => { + if (cell.model.type === 'code') { + codeCells.push(cell); + } + }); + this.cells = codeCells; + return codeCells; + } + async optimizeCells(selectedOnly, config, formatter, notebook, run) { + if (this.working) { + return new Promise((resolve, reject) => { + resolve("false!"); + }); + } + this.working = true; + const selectedCells = this.getCodeCells(selectedOnly, notebook); + let cell = selectedCells[selectedCells.length - 1]; + if (selectedCells.length === 0) { + this.working = false; + return new Promise((resolve, reject) => { + resolve("false!"); + }); + } + const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu'; + const currentTexts = selectedCells.map(cell => cell.model.value.text); + if (optimize_type === 'auto-quant') { + cell.outputArea.node.innerText = `[NeuralCoder INFO] Auto-Quant Started ......\n`; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Code: User code from Jupyter Lab notebook "${this.notebookname}"\n`; + cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Mode: Throughput\n`; + let runcode = `with open('${this.log_path}', 'a' ) as f:\n f.write("[NeuralCoder INFO] Auto-Quant Started ......\\n")`; + let expr = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode, expr, false); + let runcode2 = `with open('${this.log_path}', 'a' ) as f:\n f.write("[NeuralCoder INFO] Code: User code from Jupyter Lab notebook '${this.notebookname}'\\n")`; + let expr2 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false); + let runcode3 = `with open('${this.log_path}', 'a' ) as f:\n f.write("[NeuralCoder INFO] Benchmark Mode: Throughput\\n")`; + let expr3 = { path: "" }; + _utils__WEBPACK_IMPORTED_MODULE_1__["default"].sendKernelRequestFromNotebook(this.panel, runcode3, expr3, false); + cell.outputArea.node.setAttribute("class", "pad"); + await this.optimizeCode(currentTexts, '', 'The Original Model', 'INC Enable INT8 (Static)', config, true, this.panel, cell, run); + await this.optimizeCode(currentTexts, 'pytorch_inc_static_quant_fx', 'INC Enable INT8 (Static)', 'INC Enable INT8 (Dynamic)', config, true, this.panel, cell, run); + await this.optimizeCode(currentTexts, 'pytorch_inc_dynamic_quant', 'INC Enable INT8 (Dynamic)', 'INC Enable BF16', config, true, this.panel, cell, run); + await this.optimizeCode(currentTexts, 'pytorch_inc_bf16', 'INC Enable BF16', '', config, true, this.panel, cell, run); + } + else { + await this.optimizeCode(currentTexts, optimize_type, "", "", "normal", true, this.panel, cell, run); + } + return new Promise((resolve, reject) => { + resolve("success!"); + }); + } + applicable(formatter, currentWidget) { + const currentNotebookWidget = this.notebookTracker.currentWidget; + return currentNotebookWidget && currentWidget === currentNotebookWidget; + } +} + + +/***/ }), + +/***/ "./lib/index.js": +/*!**********************!*\ + !*** ./lib/index.js ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/notebook */ "webpack/sharing/consume/default/@jupyterlab/notebook"); +/* harmony import */ var _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils"); +/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/settingregistry */ "webpack/sharing/consume/default/@jupyterlab/settingregistry"); +/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/mainmenu */ "webpack/sharing/consume/default/@jupyterlab/mainmenu"); +/* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/ui-components */ "webpack/sharing/consume/default/@jupyterlab/ui-components"); +/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/widgets */ "webpack/sharing/consume/default/@lumino/widgets"); +/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _deepcoder__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./deepcoder */ "./lib/deepcoder.js"); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constants */ "./lib/constants.js"); + + + + + + + + +class neural_compressor_ext_lab { + constructor(app, tracker, notebookpanel) { + this.app = app; + this.tracker = tracker; + this.notebookpanel = notebookpanel; + this.setupWidgetExtension(); + this.config = ''; + } + createNew(nb) { + this.notebookpanel = nb; + this.notebookCodeOptimizer = new _deepcoder__WEBPACK_IMPORTED_MODULE_6__.JupyterlabNotebookCodeOptimizer(this.tracker, this.notebookpanel); + const svg = document.createElement("svg"); + svg.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_7__.Constants.ICON_FORMAT_ALL_SVG; + const run_svg = document.createElement("svg"); + run_svg.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_7__.Constants.ICON_RUN; + const div = document.createElement("div"); + div.setAttribute("class", "wrapper"); + const span = document.createElement("span"); + span.setAttribute("class", "f1ozlkqi"); + span.innerHTML = _constants__WEBPACK_IMPORTED_MODULE_7__.Constants.SVG; + const selector = document.createElement("select"); + selector.setAttribute("class", "aselector"); + selector.id = "NeuralCoder"; + const option1 = document.createElement("option"); + option1.value = "pytorch_inc_static_quant_fx"; + option1.innerText = "INC Enable INT8 (Static)"; + option1.selected = true; + const option2 = document.createElement("option"); + option2.value = "pytorch_inc_dynamic_quant"; + option2.innerText = "INC Enable INT8 (Dynamic)"; + const option3 = document.createElement("option"); + option3.value = "pytorch_inc_bf16"; + option3.innerText = "INC Enable BF16"; + const option4 = document.createElement("option"); + option4.value = "auto-quant"; + option4.innerText = "INC Auto Enable & Benchmark"; + selector.options.add(option1); + selector.options.add(option2); + selector.options.add(option3); + selector.options.add(option4); + div.appendChild(selector); + div.appendChild(span); + const selector_widget = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__.Widget(); + selector_widget.node.appendChild(div); + selector_widget.addClass("aselector"); + let notebookCodeOptimizer = this.notebookCodeOptimizer; + let config = this.config; + const dia_input = document.createElement("input"); + const dia_widget = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_5__.Widget(); + dia_widget.node.appendChild(dia_input); + dia_widget.addClass("dialog"); + const run_button = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ToolbarButton({ + tooltip: 'NeuralCoder', + icon: new _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.LabIcon({ + name: "run", + svgstr: _constants__WEBPACK_IMPORTED_MODULE_7__.Constants.ICON_RUN + }), + onClick: async function () { + var _a, _b, _c, _d; + (_d = (_c = (_b = (_a = run_button.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(svg); + if (selector.options[selector.selectedIndex].value === 'auto-quant') { + await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.showDialog)({ + title: 'Please input execute parameters:', + body: dia_widget, + buttons: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog.okButton({ label: 'Confirm' })] + }).then(result => { + if (result.button.accept) { + config = dia_input.value; + } + }); + } + await notebookCodeOptimizer.optimizeAllCodeCells(config, selector.options[selector.selectedIndex].value, undefined, run_button); + } + }); + nb.toolbar.insertItem(11, "nc", run_button); + nb.toolbar.insertItem(12, "selector", selector_widget); + } + setupWidgetExtension() { + this.app.docRegistry.addWidgetExtension('Notebook', this); + } +} +/** + * Initialization data for the neural_compressor_ext_lab extension. + */ +const plugin = { + id: 'neural_compressor_ext_lab:plugin', + autoStart: true, + requires: [_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__.INotebookTracker, _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__.IMainMenu], + optional: [_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_2__.ISettingRegistry], + activate: (app, tracker, notebookpanel) => { + new neural_compressor_ext_lab(app, tracker, notebookpanel); + console.log('JupyterLab extension neural_compressor_ext_lab is activated!'); + } +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (plugin); + + +/***/ }), + +/***/ "./lib/utils.js": +/*!**********************!*\ + !*** ./lib/utils.js ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ NotebookUtilities) +/* harmony export */ }); +/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils"); +/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var react_sanitized_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-sanitized-html */ "webpack/sharing/consume/default/react-sanitized-html/react-sanitized-html"); +/* harmony import */ var react_sanitized_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_sanitized_html__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); +/* + * Copyright 2019-2020 The Kale Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// @ts-ignore + + +class NotebookUtilities { + /** + * generate random number + * @Min + * @Max + */ + static GetRandomNum(Min, Max) { + let Range; + Range = Max - Min; + var Rand = Math.random(); + return (Min + Math.round(Rand * Range)); + } + /** + * Builds an HTML container by sanitizing a list of strings and converting + * them in valid HTML + * @param msg A list of string with HTML formatting + * @returns a HTMLDivElement composed of a list of spans with formatted text + */ + static buildDialogBody(msg) { + return (react__WEBPACK_IMPORTED_MODULE_2__.createElement("div", null, msg.map((s, i) => { + return (react__WEBPACK_IMPORTED_MODULE_2__.createElement(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, { key: `msg-${i}` }, + react__WEBPACK_IMPORTED_MODULE_2__.createElement((react_sanitized_html__WEBPACK_IMPORTED_MODULE_1___default()), { allowedAttributes: { a: ['href'] }, allowedTags: ['b', 'i', 'em', 'strong', 'a', 'pre'], html: s }), + react__WEBPACK_IMPORTED_MODULE_2__.createElement("br", null))); + }))); + } + /** + * Opens a pop-up dialog in JupyterLab to display a simple message. + * @param title The title for the message popup + * @param msg The message as an array of strings + * @param buttonLabel The label to use for the button. Default is 'OK' + * @param buttonClassName The classname to give to the 'ok' button + * @returns Promise - A promise once the message is closed. + */ + static async showMessage(title, msg, buttonLabel = 'Dismiss', buttonClassName = '') { + const buttons = [ + _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Dialog.okButton({ label: buttonLabel, className: buttonClassName }), + ]; + const messageBody = this.buildDialogBody(msg); + await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showDialog)({ title, buttons, body: messageBody }); + } + /** + * Opens a pop-up dialog in JupyterLab to display a yes/no dialog. + * @param title The title for the message popup + * @param msg The message + * @param acceptLabel The label to use for the accept button. Default is 'YES' + * @param rejectLabel The label to use for the reject button. Default is 'NO' + * @param yesButtonClassName The classname to give to the accept button. + * @param noButtonClassName The classname to give to the cancel button. + * @returns Promise - A promise once the message is closed. + */ + static async showYesNoDialog(title, msg, acceptLabel = 'YES', rejectLabel = 'NO', yesButtonClassName = '', noButtonClassName = '') { + const buttons = [ + _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Dialog.okButton({ label: acceptLabel, className: yesButtonClassName }), + _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Dialog.cancelButton({ label: rejectLabel, className: noButtonClassName }), + ]; + const messageBody = this.buildDialogBody(msg); + const result = await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.showDialog)({ title, buttons, body: messageBody }); + return result.button.label === acceptLabel; + } + /** + * Opens a pop-up dialog in JupyterLab with various information and button + * triggering reloading the page. + * @param title The title for the message popup + * @param msg The message + * @param buttonLabel The label to use for the button. Default is 'Refresh' + * @param buttonClassName The classname to give to the 'refresh' button. + * @returns Promise - A promise once the message is closed. + */ + static async showRefreshDialog(title, msg, buttonLabel = 'Refresh', buttonClassName = '') { + await this.showMessage(title, msg, buttonLabel, buttonClassName); + location.reload(); + } + /** + * @description Creates a new JupyterLab notebook for use by the application + * @param command The command registry + * @returns Promise - A promise containing the notebook panel object that was created (if successful). + */ + static async createNewNotebook(command) { + const notebook = await command.execute('notebook:create-new', { + activate: true, + path: '', + preferredLanguage: '', + }); + await notebook.session.ready; + return notebook; + } + /** + * Safely saves the Jupyter notebook document contents to disk + * @param notebookPanel The notebook panel containing the notebook to save + */ + static async saveNotebook(notebookPanel) { + if (notebookPanel) { + await notebookPanel.context.ready; + notebookPanel.context.save(); + return true; + } + return false; + } + /** + * Convert the notebook contents to JSON + * @param notebookPanel The notebook panel containing the notebook to serialize + */ + static notebookToJSON(notebookPanel) { + if (notebookPanel.content.model) { + return notebookPanel.content.model.toJSON(); + } + return null; + } + /** + * @description Gets the value of a key from specified notebook's metadata. + * @param notebookPanel The notebook to get meta data from. + * @param key The key of the value. + * @returns any -The value of the metadata. Returns null if the key doesn't exist. + */ + static getMetaData(notebookPanel, key) { + if (!notebookPanel) { + throw new Error('The notebook is null or undefined. No meta data available.'); + } + if (notebookPanel.model && notebookPanel.model.metadata.has(key)) { + return notebookPanel.model.metadata.get(key); + } + return null; + } + /** + * @description Sets the key value pair in the notebook's metadata. + * If the key doesn't exists it will add one. + * @param notebookPanel The notebook to set meta data in. + * @param key The key of the value to create. + * @param value The value to set. + * @param save Default is false. Whether the notebook should be saved after the meta data is set. + * Note: This function will not wait for the save to complete, it only sends a save request. + * @returns The old value for the key, or undefined if it did not exist. + */ + static setMetaData(notebookPanel, key, value, save = false) { + var _a; + if (!notebookPanel) { + throw new Error('The notebook is null or undefined. No meta data available.'); + } + const oldVal = (_a = notebookPanel.model) === null || _a === void 0 ? void 0 : _a.metadata.set(key, value); + if (save) { + this.saveNotebook(notebookPanel); + } + return oldVal; + } + // /** + // * Get a new Kernel, not tied to a Notebook + // * Source code here: https://github.com/jupyterlab/jupyterlab/tree/473348d25bcb258ca2f0c127dd8fb5b193217135/packages/services + // */ + // public static async createNewKernel() { + // // Get info about the available kernels and start a new one. + // let options: Kernel.IOptions = await Kernel.getSpecs().then(kernelSpecs => { + // // console.log('Default spec:', kernelSpecs.default); + // // console.log('Available specs', Object.keys(kernelSpecs.kernelspecs)); + // // use the default name + // return { name: kernelSpecs.default }; + // }); + // return await Kernel.startNew(options).then(_kernel => { + // return _kernel; + // }); + // } + // // TODO: We can use this context manager to execute commands inside a new kernel + // // and be sure that it will be disposed of at the end. + // // Another approach could be to create a kale_rpc Kernel, as a singleton, + // // created at startup. The only (possible) drawback is that we can not name + // // a kernel instance with a custom id/name, so when refreshing JupyterLab we would + // // not recognize the kernel. A solution could be to have a kernel spec dedicated to kale rpc calls. + // public static async executeWithNewKernel(action: Function, args: any[] = []) { + // // create brand new kernel + // const _k = await this.createNewKernel(); + // // execute action inside kernel + // const res = await action(_k, ...args); + // // close kernel + // _k.shutdown(); + // // return result + // return res; + // } + /** + * @description This function runs code directly in the notebook's kernel and then evaluates the + * result and returns it as a promise. + * @param kernel The kernel to run the code in. + * @param runCode The code to run in the kernel. + * @param userExpressions The expressions used to capture the desired info from the executed code. + * @param runSilent Default is false. If true, kernel will execute as quietly as possible. + * store_history will be set to false, and no broadcast on IOPUB channel will be made. + * @param storeHistory Default is false. If true, the code executed will be stored in the kernel's history + * and the counter which is shown in the cells will be incremented to reflect code was run. + * @param allowStdIn Default is false. If true, code running in kernel can prompt user for input using + * an input_request message. + * @param stopOnError Default is false. If True, does not abort the execution queue, if an exception is encountered. + * This allows the queued execution of multiple execute_requests, even if they generate exceptions. + * @returns Promise - A promise containing the execution results of the code as an object with + * keys based on the user_expressions. + * @example + * //The code + * const code = "a=123\nb=456\nsum=a+b"; + * //The user expressions + * const expr = {sum: "sum",prod: "a*b",args:"[a,b,sum]"}; + * //Async function call (returns a promise) + * sendKernelRequest(notebookPanel, code, expr,false); + * //Result when promise resolves: + * { + * sum:{status:"ok",data:{"text/plain":"579"},metadata:{}}, + * prod:{status:"ok",data:{"text/plain":"56088"},metadata:{}}, + * args:{status:"ok",data:{"text/plain":"[123, 456, 579]"}} + * } + * @see For more information on JupyterLab messages: + * https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results + */ + static async sendKernelRequest(kernel, runCode, userExpressions, runSilent = false, storeHistory = false, allowStdIn = false, stopOnError = false) { + if (!kernel) { + throw new Error('Kernel is null or undefined.'); + } + // Wait for kernel to be ready before sending request + // await kernel.status; + const message = await kernel.requestExecute({ + allow_stdin: allowStdIn, + code: runCode, + silent: runSilent, + stop_on_error: stopOnError, + store_history: storeHistory, + user_expressions: userExpressions, + }).done; + const content = message.content; + if (content.status !== 'ok') { + // If response is not 'ok', throw contents as error, log code + const msg = `Code caused an error:\n${runCode}`; + console.error(msg); + if (content.traceback) { + content.traceback.forEach((line) => console.log(line.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''))); + } + throw content; + } + // Return user_expressions of the content + return content.user_expressions; + } + /** + * Same as method sendKernelRequest but passing + * a NotebookPanel instead of a Kernel + */ + static async sendKernelRequestFromNotebook(notebookPanel, runCode, userExpressions, runSilent = false, storeHistory = false, allowStdIn = false, stopOnError = false) { + var _a, _b, _c, _d; + if (!notebookPanel) { + throw new Error('Notebook is null or undefined.'); + } + // Wait for notebook panel to be ready + await notebookPanel.activate; + await ((_a = notebookPanel.sessionContext) === null || _a === void 0 ? void 0 : _a.ready); + return this.sendKernelRequest((_d = (_c = notebookPanel.sessionContext) === null || _c === void 0 ? void 0 : _c.session) === null || _d === void 0 ? void 0 : _d.kernel, runCode, userExpressions, runSilent, storeHistory, allowStdIn, stopOnError); + } +} + + +/***/ }) + +}]); +//# sourceMappingURL=lib_index_js.f3ace973ac83174a6db0.js.map \ No newline at end of file diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js.map b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js.map new file mode 100644 index 00000000000..d56538a8b4a --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/lib_index_js.f3ace973ac83174a6db0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lib_index_js.f3ace973ac83174a6db0.js","mappings":";;;;;;;;;;;;;AAAO;AACP;AACA;AACA;AACA,6IAA6I,gCAAgC,gBAAgB,sBAAsB,qVAAqV,mBAAmB,gVAAgV,mBAAmB;AAC95B;AACA;AACA,yCAAyC,4BAA4B;AACrE,oCAAoC,2BAA2B;AAC/D;AACA;AACA,CAAC,8BAA8B;;;;;;;;;;;;;;;;;ACXS;AACA;AACxC;AACA;AACA;AACA;AACA,wBAAwB,2DAAmB;AAC3C,oBAAoB,2DAA8B;AAClD,wBAAwB,2DAAmB;AAC3C,4BAA4B,2DAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kCAAkC,MAAM,0CAA0C,cAAc;AAChG,uBAAuB;AACvB,QAAQ,4EAA+C;AACvD;AACA,2EAA2E,cAAc,eAAe,UAAU;AAClH,yBAAyB;AACzB,YAAY,4EAA+C;AAC3D,0CAA0C,cAAc;AACxD,0BAA0B;AAC1B,0BAA0B,4EAA+C;AACzE;AACA;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0DAAkB;AAC1D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,6CAA6C,cAAc;AAC3D,8BAA8B;AAC9B,gBAAgB,4EAA+C;AAC/D,wGAAwG,cAAc,uCAAuC,QAAQ;AACrK,6BAA6B;AAC7B,6BAA6B,4EAA+C;AAC5E;AACA;AACA;AACA,oIAAoI,KAAK;AACzI,6GAA6G,KAAK;AAClH,gDAAgD,cAAc,8BAA8B,KAAK;AACjG,iCAAiC;AACjC,oBAAoB,4EAA+C;AACnE,0GAA0G,MAAM;AAChH,iDAAiD,cAAc,mFAAmF,MAAM;AACxJ,kCAAkC;AAClC,oBAAoB,4EAA+C;AACnE,iDAAiD,kBAAkB,kCAAkC,KAAK;AAC1G,kCAAkC;AAClC,oBAAoB,4EAA+C;AACnE,iBAAiB;AACjB;AACA;AACA,wGAAwG,cAAc,gBAAgB,UAAU,4BAA4B,QAAQ;AACpL,6BAA6B;AAC7B,6BAA6B,4EAA+C;AAC5E;AACA;AACA;AACA,8GAA8G,MAAM,KAAK,KAAK;AAC9H,uFAAuF,MAAM,KAAK,KAAK;AACvG,gDAAgD,cAAc,kCAAkC,KAAK;AACrG,iCAAiC;AACjC,oBAAoB,4EAA+C;AACnE;AACA,8GAA8G,MAAM;AACpH,qDAAqD,cAAc,mFAAmF,MAAM;AAC5J,sCAAsC;AACtC,wBAAwB,4EAA+C;AACvE;AACA,iDAAiD,kBAAkB,kCAAkC,KAAK;AAC1G,kCAAkC;AAClC,oBAAoB,4EAA+C;AACnE;AACA,gEAAgE,kBAAkB,goBAAgoB,cAAc,oDAAoD,cAAc;AAClyB,0CAA0C;AAC1C,0CAA0C,4EAA+C;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,iHAAiH,UAAU;AAC3H,sGAAsG,MAAM;AAC5G;AACA,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F,QAAQ;AACtG,kDAAkD;AAClD,2CAA2C,4EAA+C;AAC1F;AACA;AACA,kGAAkG,KAAK;AACvG,6BAA6B;AAC7B,mIAAmI,UAAU;AAC7I;AACA,gDAAgD,0DAAkB;AAClE;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,+GAA+G,kBAAkB;AACjI;AACA,wCAAwC,cAAc;AACtD,yBAAyB;AACzB,YAAY,4EAA+C;AAC3D,yCAAyC,cAAc,gGAAgG,kBAAkB;AACzK,0BAA0B;AAC1B,YAAY,4EAA+C;AAC3D,yCAAyC,cAAc;AACvD,0BAA0B;AAC1B,YAAY,4EAA+C;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5OwD;AACiB;AACV;AACd;AACG;AACX;AACqB;AACtB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAA+B;AACxE;AACA,wBAAwB,qEAA6B;AACrD;AACA,4BAA4B,0DAAkB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB,qDAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mDAAM;AAC1C;AACA;AACA;AACA;AACA;AACA,+BAA+B,mDAAM;AACrC;AACA;AACA,+BAA+B,+DAAa;AAC5C;AACA,sBAAsB,8DAAO;AAC7B;AACA,wBAAwB,0DAAkB;AAC1C,aAAa;AACb;AACA;AACA;AACA;AACA,0BAA0B,gEAAU;AACpC;AACA;AACA,kCAAkC,iEAAe,GAAG,kBAAkB;AACtE,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kEAAgB,EAAE,2DAAS;AAC1C,eAAe,yEAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;;;;ACtGtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC0D;AAC1D;AACiD;AAClB;AAChB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAmB;AACnC,oBAAoB,gDAAmB,CAAC,2CAAc,IAAI,YAAY,EAAE,GAAG;AAC3E,gBAAgB,gDAAmB,CAAC,6DAAa,IAAI,qBAAqB,aAAa,gEAAgE;AACvJ,gBAAgB,gDAAmB;AACnC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAe,GAAG,gDAAgD;AAC9E;AACA;AACA,cAAc,gEAAU,GAAG,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAe,GAAG,mDAAmD;AACjF,YAAY,qEAAmB,GAAG,kDAAkD;AACpF;AACA;AACA,6BAA6B,gEAAU,GAAG,mCAAmC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa,kBAAkB,mBAAmB,aAAa;AAC/D,cAAc,kBAAkB,qBAAqB,aAAa;AAClE,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA,kGAAkG,YAAY,IAAI,IAAI,MAAM,IAAI;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack://neural_compressor_ext_lab/./lib/constants.js","webpack://neural_compressor_ext_lab/./lib/deepcoder.js","webpack://neural_compressor_ext_lab/./lib/index.js","webpack://neural_compressor_ext_lab/./lib/utils.js"],"sourcesContent":["export var Constants;\n(function (Constants) {\n Constants.SHORT_PLUGIN_NAME = 'neural_compressor_ext_lab';\n Constants.WORK_PATH = \"lab_workspace/\";\n Constants.ICON_FORMAT_ALL_SVG = '';\n Constants.ICON_RUN = '';\n Constants.SVG = '';\n Constants.LONG_PLUGIN_NAME = `@rya/${Constants.SHORT_PLUGIN_NAME}`;\n Constants.SETTINGS_SECTION = `${Constants.LONG_PLUGIN_NAME}:settings`;\n Constants.COMMAND_SECTION_NAME = 'Jupyterlab Code Optimizer';\n Constants.PLUGIN_VERSION = '0.1.0';\n})(Constants || (Constants = {}));\n","import NotebookUtilities from \"./utils\";\nimport { Constants } from './constants';\nclass JupyterlabCodeOptimizer {\n constructor(panel) {\n this.working = false;\n this.panel = panel;\n this.tmp_path = Constants.WORK_PATH + \"tmp.py\";\n this.rand = NotebookUtilities.GetRandomNum(0, 200);\n this.log_path = Constants.WORK_PATH + \"NeuralCoder\" + this.rand + \".log\";\n this.tmp_log_path = Constants.WORK_PATH + \"NeuralCoder_tmp\" + \".log\";\n this.cells = [];\n }\n async optimizeCode(code, formatter, name, next, options, notebook, panel, cell, run) {\n let codes = [];\n code.forEach(function (value) {\n value = value.replace(/('\\\\n')/g, '^^^');\n value = value.replace(/\\\\n\"/g, '###');\n value = value.replace(/\\\\n'/g, '###');\n value = value.replace(/\"\\\\n/g, '@@');\n value = value.replace(/'\\\\n/g, '@@');\n value = value.replace(/\\n/g, '\\\\n');\n value = value.replace(/\"/g, '+++');\n value = value.replace(/,/g, '$');\n codes.push(value);\n });\n let gen_code = `code = \"${codes}\"\\ncodes = code.split(',')\\nwith open( '${this.tmp_path}', 'w+' ) as f:\\n for i in range(0,len(codes)):\\n f.write('# this is the beginning of a single code snippet\\\\n')\\n code_list = codes[i].replace('$',',').replace('+++','\\\"').split('\\\\n')\\n for line in code_list:\\n if('split(^^^)' in line):\\n line=line.replace('split(^^^)', 'split(\\\\'\\\\\\\\n\\\\')')\\n if('###' in line):\\n line=line.replace('###', '\\\\\\\\n\\\"')\\n if('@@' in line):\\n line=line.replace('@@', '\\\"\\\\\\\\n')\\n f.write(line+'\\\\n')`;\n const expr = { code_list: `code_list` };\n NotebookUtilities.sendKernelRequestFromNotebook(panel, gen_code, expr, false);\n if (options === 'normal') {\n let runcode = `from neural_coder import enable\\nenable(code=\"${this.tmp_path}\",features=[\"${formatter}\"], overwrite=True)`;\n let expr = { sum: ` ` };\n NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode, expr, false);\n let run_code1 = `with open(\"${this.tmp_path}\", 'r') as f:\\n optimized_code = f.read()\\n`;\n let expr1 = { optimizedCode: \"optimized_code\" };\n let result2 = NotebookUtilities.sendKernelRequestFromNotebook(panel, run_code1, expr1, false);\n result2.then(value => {\n var _a, _b, _c, _d;\n let optimizedTexts = Object.values(value.optimizedCode.data)[0];\n let optimizeCodes = optimizedTexts.split('# this is the beginning of a single code snippet\\\\n').slice(1);\n optimizeCodes[optimizeCodes.length - 1] = optimizeCodes[optimizeCodes.length - 1].slice(0, -3);\n for (let i = 0; i < optimizeCodes.length; ++i) {\n const cell = this.cells[i];\n const currentTexts = this.cells.map(cell => cell.model.value.text);\n const currentText = currentTexts[i];\n let optimizedtext = optimizeCodes[i];\n optimizedtext = optimizedtext.replace(/\\\\'\\\\\\\\n\\\\'/g, \"^^^\");\n optimizedtext = optimizedtext.replace(/\\\\\\\\n\"/g, \"+++\");\n optimizedtext = optimizedtext.replace(/\\\\\\\\n'/g, \"+++\");\n optimizedtext = optimizedtext.replace(/\"\\\\\\\\n/g, \"@@@\");\n optimizedtext = optimizedtext.replace(/'\\\\\\\\n/g, \"@@@\");\n optimizedtext = optimizedtext.replace(/\\\\n/g, '\\n');\n optimizedtext = optimizedtext.replace(/\\\\'/g, \"'\");\n optimizedtext = optimizedtext.replace(/\\^\\^\\^/g, \"'\\\\n'\");\n optimizedtext = optimizedtext.replace(/\\+\\+\\+/g, \"\\\\n\\\"\");\n optimizedtext = optimizedtext.replace(/\\@\\@\\@/g, \"\\\"\\\\n\");\n if (cell.model.value.text === currentText) {\n cell.model.value.text = optimizedtext;\n }\n const run_svg = document.createElement(\"svg\");\n run_svg.innerHTML = Constants.ICON_RUN;\n (_d = (_c = (_b = (_a = run === null || run === void 0 ? void 0 : run.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(run_svg);\n }\n });\n }\n else {\n if (formatter === '') {\n cell.outputArea.node.innerText += \"[NeuralCoder INFO] Enabling and Benchmarking for The Original Model ......\\n\";\n let runcode1 = `with open(\"${this.log_path}\", 'a' ) as f:\\n f.write(\"[NeuralCoder INFO] Enabling and Benchmarking for The Original Model ......\\\\n\")`;\n let expr1 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode1, expr1, false);\n let runcode = `from neural_coder import enable\\nperfomance, mode, path = enable(code=\"${this.tmp_path}\",features=[], run_bench=True, args=\"${options}\")\\nwith open(path + '/bench.log', 'r') as f:\\n logs = f.readlines()\\nlog_line = logs[4]\\nlog = log_line.split(\"[\")[1].split(\"]\")[0]`;\n let expr = { path: \"path\", log: \"log\" };\n let result = NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode, expr, false);\n let fps;\n result.then(value => {\n fps = Object.values(value.log.data)[0];\n cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Result (Performance) of The Original Model is ${fps} (FPS)\\n`;\n let text = `[NeuralCoder INFO] Benchmark Result (Performance) of The Original Model is ${fps} (FPS)\\\\n`;\n let runcode = `with open(\"${this.log_path}\", 'a' ) as f:\\n f.write(\"${text}\")`;\n let expr = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode, expr, false);\n cell.outputArea.node.innerText += `[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\n`;\n let runcode1 = `with open(\"${this.log_path}\", 'a' ) as f:\\n f.write(\"[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\\\n\")`;\n let expr1 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode1, expr1, false);\n let runcode2 = `with open(\"${this.tmp_log_path}\", 'a' ) as f:\\n f.write(\"${text}\")`;\n let expr2 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false);\n });\n }\n else {\n let runcode = `from neural_coder import enable\\nperfomance, mode, path = enable(code=\"${this.tmp_path}\", features=[\"${formatter}\"], run_bench=True, args=\"${options}\")\\nwith open(path + '/bench.log', 'r') as f:\\n logs = f.readlines()\\nlog_line = logs[4]\\nlog = log_line.split(\"[\")[1].split(\"]\")[0]`;\n let expr = { path: \"path\", log: \"log\" };\n let result = NotebookUtilities.sendKernelRequestFromNotebook(panel, runcode, expr, false);\n let fps;\n result.then(value => {\n fps = Object.values(value.log.data)[0];\n cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Result (Performance) of ${name} is ${fps} (FPS)\\n`;\n let text = `[NeuralCoder INFO] Benchmark Result (Performance) of ${name} is ${fps} (FPS)\\\\n`;\n let runcode = `with open(\"${this.log_path}\", 'a' ) as f:\\n f.write(\"${text}\")`;\n let expr = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode, expr, false);\n if (next !== '') {\n cell.outputArea.node.innerText += `[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\n`;\n let runcode2 = `with open(\"${this.log_path}\", 'a' ) as f:\\n f.write(\"[NeuralCoder INFO] Enabling and Benchmarking for ${next} ......\\\\n\")`;\n let expr2 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false);\n }\n let runcode2 = `with open(\"${this.tmp_log_path}\", 'a' ) as f:\\n f.write(\"${text}\")`;\n let expr2 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false);\n if (formatter === 'pytorch_inc_bf16') {\n let read_log = `import re\\nwith open(\"${this.tmp_log_path}\", 'r') as f:\\n logs = f.readlines()\\n fps_list=[]\\n for log_line in logs[-4:-1]:\\n pat = r\\'\\\\d+\\\\.?\\\\d+'\\n fps = re.search(pat,log_line).group()\\n fps_list.append(float(fps))\\nmaxi = max(fps_list)\\nindex = fps_list.index(maxi)\\nboost = round(maxi/fps_list[0],1)\\nfeatures=['','pytorch_inc_static_quant_fx','pytorch_inc_dynamic_quant','pytorch_inc_bf16']\\nfeature_name=['','INC Enable INT8 (Static)','INC Enable INT8 (Dynamic)','INC Enable BF16']\\nbest_feature = features[index]\\nbest_name = feature_name[index]\\nfeature_l = []\\nfeature_l.append(best_feature)\\nfrom neural_coder import enable\\nenable(code=\"${this.tmp_path}\",features=feature_l, overwrite=True)\\nwith open(\"${this.tmp_path}\", 'r') as f:\\n optimized_code = f.read()\\n`;\n let read_expr = { boost: \"boost\", best_feature: \"best_feature\", best_name: \"best_name\", optimizeCode: \"optimized_code\", feature_l: \"feature_l\" };\n let read_result = NotebookUtilities.sendKernelRequestFromNotebook(this.panel, read_log, read_expr, false);\n read_result.then(value => {\n var _a, _b, _c, _d;\n let boost = Object.values(value.boost.data)[0];\n let best_name = Object.values(value.best_name.data)[0];\n let optimizedTexts = Object.values(value.optimizeCode.data)[0];\n let optimizeCodes = optimizedTexts.split('# this is the beginning of a single code snippet\\\\n').slice(1);\n cell.outputArea.node.innerText += `[NeuralCoder INFO] The Best Intel Optimization: ${best_name}\\n`;\n cell.outputArea.node.innerText += `[NeuralCoder INFO] You can get up to ${boost}X performance boost.\\n`;\n optimizeCodes[optimizeCodes.length - 1] = optimizeCodes[optimizeCodes.length - 1].slice(0, -3);\n for (let i = 0; i < optimizeCodes.length; ++i) {\n const cell = this.cells[i];\n const currentTexts = this.cells.map(cell => cell.model.value.text);\n const currentText = currentTexts[i];\n let optimizedtext = optimizeCodes[i];\n optimizedtext = optimizedtext.replace(/\\\\'\\\\\\\\n\\\\'/g, \"^^^\");\n optimizedtext = optimizedtext.replace(/\\\\\\\\n\"/g, \"+++\");\n optimizedtext = optimizedtext.replace(/\\\\\\\\n'/g, \"+++\");\n optimizedtext = optimizedtext.replace(/\"\\\\\\\\n/g, \"@@@\");\n optimizedtext = optimizedtext.replace(/'\\\\\\\\n/g, \"@@@\");\n optimizedtext = optimizedtext.replace(/\\\\n/g, '\\n');\n optimizedtext = optimizedtext.replace(/\\\\'/g, \"'\");\n optimizedtext = optimizedtext.replace(/\\^\\^\\^/g, \"'\\\\n'\");\n optimizedtext = optimizedtext.replace(/\\+\\+\\+/g, \"\\\\n\\\"\");\n optimizedtext = optimizedtext.replace(/\\@\\@\\@/g, \"\\\"\\\\n\");\n if (cell.model.value.text === currentText) {\n cell.model.value.text = optimizedtext;\n }\n }\n let command = \"lscpu | grep 'Model name'\";\n let get_hardware = `import subprocess\\nsubp = subprocess.Popen(\"${command}\",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=\"utf-8\")\\nsubp.wait(2)\\nhardware = subp.communicate()[0].replace(\"Model name:\",\"\").strip()`;\n let expr_hardware = { hardware: \"hardware\" };\n let hard_res = NotebookUtilities.sendKernelRequestFromNotebook(this.panel, get_hardware, expr_hardware, false);\n hard_res.then(value => {\n let hard = Object.values(value.hardware.data)[0];\n cell.outputArea.node.innerText += `[NeuralCoder INFO] HardWare: ${hard}\\n`;\n });\n cell.outputArea.node.innerText += `[NeuralCoder INFO] The log was saved to lab_workspace\\\\NeuralCoder${this.rand}.log\\n`;\n const run_svg = document.createElement(\"svg\");\n run_svg.innerHTML = Constants.ICON_RUN;\n (_d = (_c = (_b = (_a = run === null || run === void 0 ? void 0 : run.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(run_svg);\n });\n }\n });\n }\n }\n }\n}\nexport class JupyterlabNotebookCodeOptimizer extends JupyterlabCodeOptimizer {\n constructor(notebookTracker, panel) {\n super(panel);\n this.notebookTracker = notebookTracker;\n this.notebookname = '';\n }\n async optimizeAction(config, formatter) {\n return this.optimizeCells(true, config, formatter);\n }\n async optimizeAllCodeCells(config, formatter, notebook, run) {\n return this.optimizeCells(false, config, formatter, notebook, run);\n }\n getCodeCells(selectedOnly = true, notebook) {\n if (!this.notebookTracker.currentWidget) {\n return [];\n }\n const codeCells = [];\n notebook = notebook || this.notebookTracker.currentWidget.content;\n this.notebookname = notebook.title.label;\n notebook.widgets.forEach((cell) => {\n if (cell.model.type === 'code') {\n codeCells.push(cell);\n }\n });\n this.cells = codeCells;\n return codeCells;\n }\n async optimizeCells(selectedOnly, config, formatter, notebook, run) {\n if (this.working) {\n return new Promise((resolve, reject) => {\n resolve(\"false!\");\n });\n }\n this.working = true;\n const selectedCells = this.getCodeCells(selectedOnly, notebook);\n let cell = selectedCells[selectedCells.length - 1];\n if (selectedCells.length === 0) {\n this.working = false;\n return new Promise((resolve, reject) => {\n resolve(\"false!\");\n });\n }\n const optimize_type = formatter !== undefined ? formatter : 'pytorch_mixed_precision_cpu';\n const currentTexts = selectedCells.map(cell => cell.model.value.text);\n if (optimize_type === 'auto-quant') {\n cell.outputArea.node.innerText = `[NeuralCoder INFO] Auto-Quant Started ......\\n`;\n cell.outputArea.node.innerText += `[NeuralCoder INFO] Code: User code from Jupyter Lab notebook \"${this.notebookname}\"\\n`;\n cell.outputArea.node.innerText += `[NeuralCoder INFO] Benchmark Mode: Throughput\\n`;\n let runcode = `with open('${this.log_path}', 'a' ) as f:\\n f.write(\"[NeuralCoder INFO] Auto-Quant Started ......\\\\n\")`;\n let expr = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode, expr, false);\n let runcode2 = `with open('${this.log_path}', 'a' ) as f:\\n f.write(\"[NeuralCoder INFO] Code: User code from Jupyter Lab notebook '${this.notebookname}'\\\\n\")`;\n let expr2 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode2, expr2, false);\n let runcode3 = `with open('${this.log_path}', 'a' ) as f:\\n f.write(\"[NeuralCoder INFO] Benchmark Mode: Throughput\\\\n\")`;\n let expr3 = { path: \"\" };\n NotebookUtilities.sendKernelRequestFromNotebook(this.panel, runcode3, expr3, false);\n cell.outputArea.node.setAttribute(\"class\", \"pad\");\n await this.optimizeCode(currentTexts, '', 'The Original Model', 'INC Enable INT8 (Static)', config, true, this.panel, cell, run);\n await this.optimizeCode(currentTexts, 'pytorch_inc_static_quant_fx', 'INC Enable INT8 (Static)', 'INC Enable INT8 (Dynamic)', config, true, this.panel, cell, run);\n await this.optimizeCode(currentTexts, 'pytorch_inc_dynamic_quant', 'INC Enable INT8 (Dynamic)', 'INC Enable BF16', config, true, this.panel, cell, run);\n await this.optimizeCode(currentTexts, 'pytorch_inc_bf16', 'INC Enable BF16', '', config, true, this.panel, cell, run);\n }\n else {\n await this.optimizeCode(currentTexts, optimize_type, \"\", \"\", \"normal\", true, this.panel, cell, run);\n }\n return new Promise((resolve, reject) => {\n resolve(\"success!\");\n });\n }\n applicable(formatter, currentWidget) {\n const currentNotebookWidget = this.notebookTracker.currentWidget;\n return currentNotebookWidget && currentWidget === currentNotebookWidget;\n }\n}\n","import { INotebookTracker } from '@jupyterlab/notebook';\nimport { ToolbarButton, showDialog, Dialog } from '@jupyterlab/apputils';\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\nimport { IMainMenu } from '@jupyterlab/mainmenu';\nimport { LabIcon } from '@jupyterlab/ui-components';\nimport { Widget } from '@lumino/widgets';\nimport { JupyterlabNotebookCodeOptimizer } from './deepcoder';\nimport { Constants } from './constants';\nclass neural_compressor_ext_lab {\n constructor(app, tracker, notebookpanel) {\n this.app = app;\n this.tracker = tracker;\n this.notebookpanel = notebookpanel;\n this.setupWidgetExtension();\n this.config = '';\n }\n createNew(nb) {\n this.notebookpanel = nb;\n this.notebookCodeOptimizer = new JupyterlabNotebookCodeOptimizer(this.tracker, this.notebookpanel);\n const svg = document.createElement(\"svg\");\n svg.innerHTML = Constants.ICON_FORMAT_ALL_SVG;\n const run_svg = document.createElement(\"svg\");\n run_svg.innerHTML = Constants.ICON_RUN;\n const div = document.createElement(\"div\");\n div.setAttribute(\"class\", \"wrapper\");\n const span = document.createElement(\"span\");\n span.setAttribute(\"class\", \"f1ozlkqi\");\n span.innerHTML = Constants.SVG;\n const selector = document.createElement(\"select\");\n selector.setAttribute(\"class\", \"aselector\");\n selector.id = \"NeuralCoder\";\n const option1 = document.createElement(\"option\");\n option1.value = \"pytorch_inc_static_quant_fx\";\n option1.innerText = \"INC Enable INT8 (Static)\";\n option1.selected = true;\n const option2 = document.createElement(\"option\");\n option2.value = \"pytorch_inc_dynamic_quant\";\n option2.innerText = \"INC Enable INT8 (Dynamic)\";\n const option3 = document.createElement(\"option\");\n option3.value = \"pytorch_inc_bf16\";\n option3.innerText = \"INC Enable BF16\";\n const option4 = document.createElement(\"option\");\n option4.value = \"auto-quant\";\n option4.innerText = \"INC Auto Enable & Benchmark\";\n selector.options.add(option1);\n selector.options.add(option2);\n selector.options.add(option3);\n selector.options.add(option4);\n div.appendChild(selector);\n div.appendChild(span);\n const selector_widget = new Widget();\n selector_widget.node.appendChild(div);\n selector_widget.addClass(\"aselector\");\n let notebookCodeOptimizer = this.notebookCodeOptimizer;\n let config = this.config;\n const dia_input = document.createElement(\"input\");\n const dia_widget = new Widget();\n dia_widget.node.appendChild(dia_input);\n dia_widget.addClass(\"dialog\");\n const run_button = new ToolbarButton({\n tooltip: 'NeuralCoder',\n icon: new LabIcon({\n name: \"run\",\n svgstr: Constants.ICON_RUN\n }),\n onClick: async function () {\n var _a, _b, _c, _d;\n (_d = (_c = (_b = (_a = run_button.node.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.firstChild) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.replaceWith(svg);\n if (selector.options[selector.selectedIndex].value === 'auto-quant') {\n await showDialog({\n title: 'Please input execute parameters:',\n body: dia_widget,\n buttons: [Dialog.okButton({ label: 'Confirm' })]\n }).then(result => {\n if (result.button.accept) {\n config = dia_input.value;\n }\n });\n }\n await notebookCodeOptimizer.optimizeAllCodeCells(config, selector.options[selector.selectedIndex].value, undefined, run_button);\n }\n });\n nb.toolbar.insertItem(11, \"nc\", run_button);\n nb.toolbar.insertItem(12, \"selector\", selector_widget);\n }\n setupWidgetExtension() {\n this.app.docRegistry.addWidgetExtension('Notebook', this);\n }\n}\n/**\n * Initialization data for the neural_compressor_ext_lab extension.\n */\nconst plugin = {\n id: 'neural_compressor_ext_lab:plugin',\n autoStart: true,\n requires: [INotebookTracker, IMainMenu],\n optional: [ISettingRegistry],\n activate: (app, tracker, notebookpanel) => {\n new neural_compressor_ext_lab(app, tracker, notebookpanel);\n console.log('JupyterLab extension neural_compressor_ext_lab is activated!');\n }\n};\nexport default plugin;\n","/*\n * Copyright 2019-2020 The Kale Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Dialog, showDialog } from '@jupyterlab/apputils';\n// @ts-ignore\nimport SanitizedHTML from 'react-sanitized-html';\nimport * as React from 'react';\nexport default class NotebookUtilities {\n /**\n * generate random number\n * @Min\n * @Max\n */\n static GetRandomNum(Min, Max) {\n let Range;\n Range = Max - Min;\n var Rand = Math.random();\n return (Min + Math.round(Rand * Range));\n }\n /**\n * Builds an HTML container by sanitizing a list of strings and converting\n * them in valid HTML\n * @param msg A list of string with HTML formatting\n * @returns a HTMLDivElement composed of a list of spans with formatted text\n */\n static buildDialogBody(msg) {\n return (React.createElement(\"div\", null, msg.map((s, i) => {\n return (React.createElement(React.Fragment, { key: `msg-${i}` },\n React.createElement(SanitizedHTML, { allowedAttributes: { a: ['href'] }, allowedTags: ['b', 'i', 'em', 'strong', 'a', 'pre'], html: s }),\n React.createElement(\"br\", null)));\n })));\n }\n /**\n * Opens a pop-up dialog in JupyterLab to display a simple message.\n * @param title The title for the message popup\n * @param msg The message as an array of strings\n * @param buttonLabel The label to use for the button. Default is 'OK'\n * @param buttonClassName The classname to give to the 'ok' button\n * @returns Promise - A promise once the message is closed.\n */\n static async showMessage(title, msg, buttonLabel = 'Dismiss', buttonClassName = '') {\n const buttons = [\n Dialog.okButton({ label: buttonLabel, className: buttonClassName }),\n ];\n const messageBody = this.buildDialogBody(msg);\n await showDialog({ title, buttons, body: messageBody });\n }\n /**\n * Opens a pop-up dialog in JupyterLab to display a yes/no dialog.\n * @param title The title for the message popup\n * @param msg The message\n * @param acceptLabel The label to use for the accept button. Default is 'YES'\n * @param rejectLabel The label to use for the reject button. Default is 'NO'\n * @param yesButtonClassName The classname to give to the accept button.\n * @param noButtonClassName The classname to give to the cancel button.\n * @returns Promise - A promise once the message is closed.\n */\n static async showYesNoDialog(title, msg, acceptLabel = 'YES', rejectLabel = 'NO', yesButtonClassName = '', noButtonClassName = '') {\n const buttons = [\n Dialog.okButton({ label: acceptLabel, className: yesButtonClassName }),\n Dialog.cancelButton({ label: rejectLabel, className: noButtonClassName }),\n ];\n const messageBody = this.buildDialogBody(msg);\n const result = await showDialog({ title, buttons, body: messageBody });\n return result.button.label === acceptLabel;\n }\n /**\n * Opens a pop-up dialog in JupyterLab with various information and button\n * triggering reloading the page.\n * @param title The title for the message popup\n * @param msg The message\n * @param buttonLabel The label to use for the button. Default is 'Refresh'\n * @param buttonClassName The classname to give to the 'refresh' button.\n * @returns Promise - A promise once the message is closed.\n */\n static async showRefreshDialog(title, msg, buttonLabel = 'Refresh', buttonClassName = '') {\n await this.showMessage(title, msg, buttonLabel, buttonClassName);\n location.reload();\n }\n /**\n * @description Creates a new JupyterLab notebook for use by the application\n * @param command The command registry\n * @returns Promise - A promise containing the notebook panel object that was created (if successful).\n */\n static async createNewNotebook(command) {\n const notebook = await command.execute('notebook:create-new', {\n activate: true,\n path: '',\n preferredLanguage: '',\n });\n await notebook.session.ready;\n return notebook;\n }\n /**\n * Safely saves the Jupyter notebook document contents to disk\n * @param notebookPanel The notebook panel containing the notebook to save\n */\n static async saveNotebook(notebookPanel) {\n if (notebookPanel) {\n await notebookPanel.context.ready;\n notebookPanel.context.save();\n return true;\n }\n return false;\n }\n /**\n * Convert the notebook contents to JSON\n * @param notebookPanel The notebook panel containing the notebook to serialize\n */\n static notebookToJSON(notebookPanel) {\n if (notebookPanel.content.model) {\n return notebookPanel.content.model.toJSON();\n }\n return null;\n }\n /**\n * @description Gets the value of a key from specified notebook's metadata.\n * @param notebookPanel The notebook to get meta data from.\n * @param key The key of the value.\n * @returns any -The value of the metadata. Returns null if the key doesn't exist.\n */\n static getMetaData(notebookPanel, key) {\n if (!notebookPanel) {\n throw new Error('The notebook is null or undefined. No meta data available.');\n }\n if (notebookPanel.model && notebookPanel.model.metadata.has(key)) {\n return notebookPanel.model.metadata.get(key);\n }\n return null;\n }\n /**\n * @description Sets the key value pair in the notebook's metadata.\n * If the key doesn't exists it will add one.\n * @param notebookPanel The notebook to set meta data in.\n * @param key The key of the value to create.\n * @param value The value to set.\n * @param save Default is false. Whether the notebook should be saved after the meta data is set.\n * Note: This function will not wait for the save to complete, it only sends a save request.\n * @returns The old value for the key, or undefined if it did not exist.\n */\n static setMetaData(notebookPanel, key, value, save = false) {\n var _a;\n if (!notebookPanel) {\n throw new Error('The notebook is null or undefined. No meta data available.');\n }\n const oldVal = (_a = notebookPanel.model) === null || _a === void 0 ? void 0 : _a.metadata.set(key, value);\n if (save) {\n this.saveNotebook(notebookPanel);\n }\n return oldVal;\n }\n // /**\n // * Get a new Kernel, not tied to a Notebook\n // * Source code here: https://github.com/jupyterlab/jupyterlab/tree/473348d25bcb258ca2f0c127dd8fb5b193217135/packages/services\n // */\n // public static async createNewKernel() {\n // // Get info about the available kernels and start a new one.\n // let options: Kernel.IOptions = await Kernel.getSpecs().then(kernelSpecs => {\n // // console.log('Default spec:', kernelSpecs.default);\n // // console.log('Available specs', Object.keys(kernelSpecs.kernelspecs));\n // // use the default name\n // return { name: kernelSpecs.default };\n // });\n // return await Kernel.startNew(options).then(_kernel => {\n // return _kernel;\n // });\n // }\n // // TODO: We can use this context manager to execute commands inside a new kernel\n // // and be sure that it will be disposed of at the end.\n // // Another approach could be to create a kale_rpc Kernel, as a singleton,\n // // created at startup. The only (possible) drawback is that we can not name\n // // a kernel instance with a custom id/name, so when refreshing JupyterLab we would\n // // not recognize the kernel. A solution could be to have a kernel spec dedicated to kale rpc calls.\n // public static async executeWithNewKernel(action: Function, args: any[] = []) {\n // // create brand new kernel\n // const _k = await this.createNewKernel();\n // // execute action inside kernel\n // const res = await action(_k, ...args);\n // // close kernel\n // _k.shutdown();\n // // return result\n // return res;\n // }\n /**\n * @description This function runs code directly in the notebook's kernel and then evaluates the\n * result and returns it as a promise.\n * @param kernel The kernel to run the code in.\n * @param runCode The code to run in the kernel.\n * @param userExpressions The expressions used to capture the desired info from the executed code.\n * @param runSilent Default is false. If true, kernel will execute as quietly as possible.\n * store_history will be set to false, and no broadcast on IOPUB channel will be made.\n * @param storeHistory Default is false. If true, the code executed will be stored in the kernel's history\n * and the counter which is shown in the cells will be incremented to reflect code was run.\n * @param allowStdIn Default is false. If true, code running in kernel can prompt user for input using\n * an input_request message.\n * @param stopOnError Default is false. If True, does not abort the execution queue, if an exception is encountered.\n * This allows the queued execution of multiple execute_requests, even if they generate exceptions.\n * @returns Promise - A promise containing the execution results of the code as an object with\n * keys based on the user_expressions.\n * @example\n * //The code\n * const code = \"a=123\\nb=456\\nsum=a+b\";\n * //The user expressions\n * const expr = {sum: \"sum\",prod: \"a*b\",args:\"[a,b,sum]\"};\n * //Async function call (returns a promise)\n * sendKernelRequest(notebookPanel, code, expr,false);\n * //Result when promise resolves:\n * {\n * sum:{status:\"ok\",data:{\"text/plain\":\"579\"},metadata:{}},\n * prod:{status:\"ok\",data:{\"text/plain\":\"56088\"},metadata:{}},\n * args:{status:\"ok\",data:{\"text/plain\":\"[123, 456, 579]\"}}\n * }\n * @see For more information on JupyterLab messages:\n * https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results\n */\n static async sendKernelRequest(kernel, runCode, userExpressions, runSilent = false, storeHistory = false, allowStdIn = false, stopOnError = false) {\n if (!kernel) {\n throw new Error('Kernel is null or undefined.');\n }\n // Wait for kernel to be ready before sending request\n // await kernel.status;\n const message = await kernel.requestExecute({\n allow_stdin: allowStdIn,\n code: runCode,\n silent: runSilent,\n stop_on_error: stopOnError,\n store_history: storeHistory,\n user_expressions: userExpressions,\n }).done;\n const content = message.content;\n if (content.status !== 'ok') {\n // If response is not 'ok', throw contents as error, log code\n const msg = `Code caused an error:\\n${runCode}`;\n console.error(msg);\n if (content.traceback) {\n content.traceback.forEach((line) => console.log(line.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '')));\n }\n throw content;\n }\n // Return user_expressions of the content\n return content.user_expressions;\n }\n /**\n * Same as method sendKernelRequest but passing\n * a NotebookPanel instead of a Kernel\n */\n static async sendKernelRequestFromNotebook(notebookPanel, runCode, userExpressions, runSilent = false, storeHistory = false, allowStdIn = false, stopOnError = false) {\n var _a, _b, _c, _d;\n if (!notebookPanel) {\n throw new Error('Notebook is null or undefined.');\n }\n // Wait for notebook panel to be ready\n await notebookPanel.activate;\n await ((_a = notebookPanel.sessionContext) === null || _a === void 0 ? void 0 : _a.ready);\n console.log('get kernel', (_b = notebookPanel.sessionContext.session) === null || _b === void 0 ? void 0 : _b.kernel);\n return this.sendKernelRequest((_d = (_c = notebookPanel.sessionContext) === null || _c === void 0 ? void 0 : _c.session) === null || _d === void 0 ? void 0 : _d.kernel, runCode, userExpressions, runSilent, storeHistory, allowStdIn, stopOnError);\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js similarity index 90% rename from neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js rename to neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js index b77d9bdd688..8384bc21f6e 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/remoteEntry.5902e6831f208a384a8f.js +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js @@ -3,7 +3,7 @@ var _JUPYTERLAB; /******/ "use strict"; /******/ var __webpack_modules__ = ({ -/***/ "webpack/container/entry/neural-compressor-ext=lab": +/***/ "webpack/container/entry/neural_compressor_ext_lab": /*!***********************!*\ !*** container entry ***! \***********************/ @@ -11,10 +11,10 @@ var _JUPYTERLAB; var moduleMap = { "./index": () => { - return __webpack_require__.e("lib_index_js").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ "./lib/index.js"))))); + return Promise.all([__webpack_require__.e("webpack_sharing_consume_default_react"), __webpack_require__.e("lib_index_js")]).then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ "./lib/index.js"))))); }, "./extension": () => { - return __webpack_require__.e("lib_index_js").then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ "./lib/index.js"))))); + return Promise.all([__webpack_require__.e("webpack_sharing_consume_default_react"), __webpack_require__.e("lib_index_js")]).then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ "./lib/index.js"))))); }, "./style": () => { return Promise.all([__webpack_require__.e("vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1"), __webpack_require__.e("style_index_js")]).then(() => (() => ((__webpack_require__(/*! ./style/index.js */ "./style/index.js"))))); @@ -124,7 +124,7 @@ __webpack_require__.d(exports, { /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return "" + chunkId + "." + {"lib_index_js":"c8ce5d6f06928ba82660","vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1":"e23251bcbb7e84631721","style_index_js":"01365bdf92323310e6f2"}[chunkId] + ".js"; +/******/ return "" + chunkId + "." + {"webpack_sharing_consume_default_react":"19c51f7b56cfd16da3f9","lib_index_js":"f3ace973ac83174a6db0","vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1":"de03554a230625d91110","style_index_js":"64a99c20bfaa1b52d477","vendors-node_modules_react-sanitized-html_lib_index_js":"8b8b15b1484bb29831f7"}[chunkId] + ".js"; /******/ }; /******/ })(); /******/ @@ -148,7 +148,7 @@ __webpack_require__.d(exports, { /******/ /* webpack/runtime/load script */ /******/ (() => { /******/ var inProgress = {}; -/******/ var dataWebpackPrefix = "neural-compressor-ext-lab:"; +/******/ var dataWebpackPrefix = "neural_compressor_ext_lab:"; /******/ // loadScript function to load a script via script tag /******/ __webpack_require__.l = (url, done, key, chunkId) => { /******/ if(inProgress[url]) { inProgress[url].push(done); return; } @@ -221,7 +221,7 @@ __webpack_require__.d(exports, { /******/ // runs all init snippets from all modules reachable /******/ var scope = __webpack_require__.S[name]; /******/ var warn = (msg) => (typeof console !== "undefined" && console.warn && console.warn(msg)); -/******/ var uniqueName = "neural-compressor-ext-lab"; +/******/ var uniqueName = "neural_compressor_ext_lab"; /******/ var register = (name, version, factory, eager) => { /******/ var versions = scope[name] = scope[name] || {}; /******/ var activeVersion = versions[version]; @@ -241,7 +241,8 @@ __webpack_require__.d(exports, { /******/ var promises = []; /******/ switch(name) { /******/ case "default": { -/******/ register("neural-compressor-ext-lab", "0.1.0", () => (__webpack_require__.e("lib_index_js").then(() => (() => (__webpack_require__(/*! ./lib/index.js */ "./lib/index.js")))))); +/******/ register("neural_compressor_ext_lab", "0.1.0", () => (Promise.all([__webpack_require__.e("webpack_sharing_consume_default_react"), __webpack_require__.e("lib_index_js")]).then(() => (() => (__webpack_require__(/*! ./lib/index.js */ "./lib/index.js")))))); +/******/ register("react-sanitized-html", "2.0.0", () => (Promise.all([__webpack_require__.e("vendors-node_modules_react-sanitized-html_lib_index_js"), __webpack_require__.e("webpack_sharing_consume_default_react")]).then(() => (() => (__webpack_require__(/*! ./node_modules/react-sanitized-html/lib/index.js */ "./node_modules/react-sanitized-html/lib/index.js")))))); /******/ } /******/ break; /******/ } @@ -405,17 +406,20 @@ __webpack_require__.d(exports, { /******/ }); /******/ var installedModules = {}; /******/ var moduleToHandlerMapping = { -/******/ "webpack/sharing/consume/default/@jupyterlab/notebook": () => (loadSingletonVersionCheck("default", "@jupyterlab/notebook", [1,3,4,4])), -/******/ "webpack/sharing/consume/default/@jupyterlab/apputils": () => (loadSingletonVersionCheck("default", "@jupyterlab/apputils", [1,3,4,4])), -/******/ "webpack/sharing/consume/default/@jupyterlab/settingregistry": () => (loadSingletonVersionCheck("default", "@jupyterlab/settingregistry", [1,3,4,4])), -/******/ "webpack/sharing/consume/default/@jupyterlab/mainmenu": () => (loadSingletonVersionCheck("default", "@jupyterlab/mainmenu", [1,3,4,4])), -/******/ "webpack/sharing/consume/default/@jupyterlab/ui-components": () => (loadSingletonVersionCheck("default", "@jupyterlab/ui-components", [1,3,4,4])), +/******/ "webpack/sharing/consume/default/react": () => (loadSingletonVersionCheck("default", "react", [1,17,0,1])), +/******/ "webpack/sharing/consume/default/@jupyterlab/notebook": () => (loadSingletonVersionCheck("default", "@jupyterlab/notebook", [1,3,4,5])), +/******/ "webpack/sharing/consume/default/@jupyterlab/apputils": () => (loadSingletonVersionCheck("default", "@jupyterlab/apputils", [1,3,4,5])), +/******/ "webpack/sharing/consume/default/@jupyterlab/settingregistry": () => (loadSingletonVersionCheck("default", "@jupyterlab/settingregistry", [1,3,4,5])), +/******/ "webpack/sharing/consume/default/@jupyterlab/mainmenu": () => (loadSingletonVersionCheck("default", "@jupyterlab/mainmenu", [1,3,4,5])), +/******/ "webpack/sharing/consume/default/@jupyterlab/ui-components": () => (loadSingletonVersionCheck("default", "@jupyterlab/ui-components", [1,3,4,5])), /******/ "webpack/sharing/consume/default/@lumino/widgets": () => (loadSingletonVersionCheck("default", "@lumino/widgets", [1,1,33,0])), -/******/ "webpack/sharing/consume/default/@jupyterlab/coreutils": () => (loadSingletonVersionCheck("default", "@jupyterlab/coreutils", [1,5,4,4])), -/******/ "webpack/sharing/consume/default/@jupyterlab/services": () => (loadSingletonVersionCheck("default", "@jupyterlab/services", [1,6,4,4])) +/******/ "webpack/sharing/consume/default/react-sanitized-html/react-sanitized-html": () => (loadStrictVersionCheckFallback("default", "react-sanitized-html", [1,2,0,0], () => (__webpack_require__.e("vendors-node_modules_react-sanitized-html_lib_index_js").then(() => (() => (__webpack_require__(/*! react-sanitized-html */ "./node_modules/react-sanitized-html/lib/index.js"))))))) /******/ }; /******/ // no consumes in initial chunks /******/ var chunkMapping = { +/******/ "webpack_sharing_consume_default_react": [ +/******/ "webpack/sharing/consume/default/react" +/******/ ], /******/ "lib_index_js": [ /******/ "webpack/sharing/consume/default/@jupyterlab/notebook", /******/ "webpack/sharing/consume/default/@jupyterlab/apputils", @@ -423,8 +427,7 @@ __webpack_require__.d(exports, { /******/ "webpack/sharing/consume/default/@jupyterlab/mainmenu", /******/ "webpack/sharing/consume/default/@jupyterlab/ui-components", /******/ "webpack/sharing/consume/default/@lumino/widgets", -/******/ "webpack/sharing/consume/default/@jupyterlab/coreutils", -/******/ "webpack/sharing/consume/default/@jupyterlab/services" +/******/ "webpack/sharing/consume/default/react-sanitized-html/react-sanitized-html" /******/ ] /******/ }; /******/ __webpack_require__.f.consumes = (chunkId, promises) => { @@ -464,7 +467,7 @@ __webpack_require__.d(exports, { /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded /******/ var installedChunks = { -/******/ "neural-compressor-ext-lab": 0 +/******/ "neural_compressor_ext_lab": 0 /******/ }; /******/ /******/ __webpack_require__.f.j = (chunkId, promises) => { @@ -476,7 +479,7 @@ __webpack_require__.d(exports, { /******/ if(installedChunkData) { /******/ promises.push(installedChunkData[2]); /******/ } else { -/******/ if(true) { // all chunks have JS +/******/ if("webpack_sharing_consume_default_react" != chunkId) { /******/ // setup Promise in chunk cache /******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); /******/ promises.push(installedChunkData[2] = promise); @@ -541,7 +544,7 @@ __webpack_require__.d(exports, { /******/ /******/ } /******/ -/******/ var chunkLoadingGlobal = self["webpackChunkneural-compressor-ext-lab"] = self["webpackChunkneural-compressor-ext-lab"] || []; +/******/ var chunkLoadingGlobal = self["webpackChunkneural_compressor_ext_lab"] = self["webpackChunkneural_compressor_ext_lab"] || []; /******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); /******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); /******/ })(); @@ -556,9 +559,9 @@ __webpack_require__.d(exports, { /******/ // module cache are used so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports -/******/ var __webpack_exports__ = __webpack_require__("webpack/container/entry/neural-compressor-ext-lab"); -/******/ (_JUPYTERLAB = typeof _JUPYTERLAB === "undefined" ? {} : _JUPYTERLAB).neural-compressor-ext-lab = __webpack_exports__; +/******/ var __webpack_exports__ = __webpack_require__("webpack/container/entry/neural_compressor_ext_lab"); +/******/ (_JUPYTERLAB = typeof _JUPYTERLAB === "undefined" ? {} : _JUPYTERLAB).neural_compressor_ext_lab = __webpack_exports__; /******/ /******/ })() ; -//# sourceMappingURL=remoteEntry.5902e6831f208a384a8f.js.map \ No newline at end of file +//# sourceMappingURL=remoteEntry.6eba177d6998a43bce65.js.map \ No newline at end of file diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js.map b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js.map new file mode 100644 index 00000000000..1f6fc1603f6 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/remoteEntry.6eba177d6998a43bce65.js.map @@ -0,0 +1 @@ +{"version":3,"file":"remoteEntry.6eba177d6998a43bce65.js","mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;UCpCD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA,8BAA8B,2VAA2V;WACzX;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,oJAAoJ;WACpJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI,aAAa;WACjB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC5CA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WCfA;WACA;WACA,WAAW,6BAA6B,iBAAiB,GAAG,qEAAqE;WACjI;WACA;WACA;WACA,qCAAqC,aAAa,EAAE,wDAAwD,2BAA2B,4BAA4B,2BAA2B,+CAA+C,mCAAmC;WAChR;WACA;WACA;WACA,qBAAqB,8BAA8B,SAAS,sDAAsD,gBAAgB,eAAe,KAAK,6DAA6D,SAAS,SAAS,QAAQ,eAAe,KAAK,eAAe,qGAAqG,WAAW,aAAa;WAC7Y;WACA;WACA;WACA,gBAAgB,8BAA8B,qBAAqB,YAAY,sBAAsB,SAAS,iDAAiD,6FAA6F,WAAW,uBAAuB,2BAA2B,wBAAwB,KAAK,oCAAoC,oBAAoB,wBAAwB,oBAAoB,SAAS,KAAK,yBAAyB,KAAK,gCAAgC,yBAAyB,QAAQ,eAAe,KAAK,eAAe,4DAA4D;WACtoB;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,CAAC;;WAED;WACA;WACA;WACA,CAAC;WACD;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA,CAAC;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN,KAAK,WAAW;WAChB,GAAG;WACH;WACA;;;;;WCvLA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;WCrFA;;;;;UEAA;UACA;UACA;UACA","sources":["webpack://neural_compressor_ext_lab/webpack/container-entry","webpack://neural_compressor_ext_lab/webpack/bootstrap","webpack://neural_compressor_ext_lab/webpack/runtime/compat get default export","webpack://neural_compressor_ext_lab/webpack/runtime/define property getters","webpack://neural_compressor_ext_lab/webpack/runtime/ensure chunk","webpack://neural_compressor_ext_lab/webpack/runtime/get javascript chunk filename","webpack://neural_compressor_ext_lab/webpack/runtime/global","webpack://neural_compressor_ext_lab/webpack/runtime/hasOwnProperty shorthand","webpack://neural_compressor_ext_lab/webpack/runtime/load script","webpack://neural_compressor_ext_lab/webpack/runtime/make namespace object","webpack://neural_compressor_ext_lab/webpack/runtime/sharing","webpack://neural_compressor_ext_lab/webpack/runtime/publicPath","webpack://neural_compressor_ext_lab/webpack/runtime/consumes","webpack://neural_compressor_ext_lab/webpack/runtime/jsonp chunk loading","webpack://neural_compressor_ext_lab/webpack/runtime/nonce","webpack://neural_compressor_ext_lab/webpack/before-startup","webpack://neural_compressor_ext_lab/webpack/startup","webpack://neural_compressor_ext_lab/webpack/after-startup"],"sourcesContent":["var moduleMap = {\n\t\"./index\": () => {\n\t\treturn Promise.all([__webpack_require__.e(\"webpack_sharing_consume_default_react\"), __webpack_require__.e(\"lib_index_js\")]).then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./extension\": () => {\n\t\treturn Promise.all([__webpack_require__.e(\"webpack_sharing_consume_default_react\"), __webpack_require__.e(\"lib_index_js\")]).then(() => (() => ((__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\")))));\n\t},\n\t\"./style\": () => {\n\t\treturn Promise.all([__webpack_require__.e(\"vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1\"), __webpack_require__.e(\"style_index_js\")]).then(() => (() => ((__webpack_require__(/*! ./style/index.js */ \"./style/index.js\")))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"webpack_sharing_consume_default_react\":\"19c51f7b56cfd16da3f9\",\"lib_index_js\":\"f3ace973ac83174a6db0\",\"vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1\":\"de03554a230625d91110\",\"style_index_js\":\"64a99c20bfaa1b52d477\",\"vendors-node_modules_react-sanitized-html_lib_index_js\":\"8b8b15b1484bb29831f7\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"neural_compressor_ext_lab:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => (typeof console !== \"undefined\" && console.warn && console.warn(msg));\n\tvar uniqueName = \"neural_compressor_ext_lab\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tregister(\"neural_compressor_ext_lab\", \"0.1.0\", () => (Promise.all([__webpack_require__.e(\"webpack_sharing_consume_default_react\"), __webpack_require__.e(\"lib_index_js\")]).then(() => (() => (__webpack_require__(/*! ./lib/index.js */ \"./lib/index.js\"))))));\n\t\t\tregister(\"react-sanitized-html\", \"2.0.0\", () => (Promise.all([__webpack_require__.e(\"vendors-node_modules_react-sanitized-html_lib_index_js\"), __webpack_require__.e(\"webpack_sharing_consume_default_react\")]).then(() => (() => (__webpack_require__(/*! ./node_modules/react-sanitized-html/lib/index.js */ \"./node_modules/react-sanitized-html/lib/index.js\"))))));\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var parseVersion = (str) => {\n\t// see webpack/lib/util/semver.js for original code\n\tvar p=p=>{return p.split(\".\").map((p=>{return+p==p?+p:p}))},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;\n}\nvar versionLt = (a, b) => {\n\t// see webpack/lib/util/semver.js for original code\n\ta=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r=b.length)return\"u\"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return\"o\"==n&&\"n\"==f||(\"s\"==f||\"u\"==n);if(\"o\"!=n&&\"u\"!=n&&e!=t)return e {\n\t// see webpack/lib/util/semver.js for original code\n\tvar r=range[0],n=\"\";if(1===range.length)return\"*\";if(r+.5){n+=0==r?\">=\":-1==r?\"<\":1==r?\"^\":2==r?\"~\":r>0?\"=\":\"!=\";for(var e=1,a=1;a0?\".\":\"\")+(e=2,t)}return n}var g=[];for(a=1;a {\n\t// see webpack/lib/util/semver.js for original code\n\tif(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i=version.length||\"o\"==(s=(typeof(f=version[n]))[0]))return!a||(\"u\"==g?i>e&&!r:\"\"==g!=r);if(\"u\"==s){if(!a||\"u\"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f {\n\tvar scope = __webpack_require__.S[scopeName];\n\tif(!scope || !__webpack_require__.o(scope, key)) throw new Error(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);\n\treturn scope;\n};\nvar findVersion = (scope, key) => {\n\tvar versions = scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar findSingletonVersionKey = (scope, key) => {\n\tvar versions = scope[key];\n\treturn Object.keys(versions).reduce((a, b) => {\n\t\treturn !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;\n\t}, 0);\n};\nvar getInvalidSingletonVersionMessage = (scope, key, version, requiredVersion) => {\n\treturn \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"\n};\nvar getSingleton = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\treturn get(scope[key][version]);\n};\nvar getSingletonVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\tif (!satisfy(requiredVersion, version)) typeof console !== \"undefined\" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\treturn get(scope[key][version]);\n};\nvar getStrictSingletonVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar version = findSingletonVersionKey(scope, key);\n\tif (!satisfy(requiredVersion, version)) throw new Error(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));\n\treturn get(scope[key][version]);\n};\nvar findValidVersion = (scope, key, requiredVersion) => {\n\tvar versions = scope[key];\n\tvar key = Object.keys(versions).reduce((a, b) => {\n\t\tif (!satisfy(requiredVersion, b)) return a;\n\t\treturn !a || versionLt(a, b) ? b : a;\n\t}, 0);\n\treturn key && versions[key]\n};\nvar getInvalidVersionMessage = (scope, scopeName, key, requiredVersion) => {\n\tvar versions = scope[key];\n\treturn \"No satisfying version (\" + rangeToString(requiredVersion) + \") of shared module \" + key + \" found in shared scope \" + scopeName + \".\\n\" +\n\t\t\"Available versions: \" + Object.keys(versions).map((key) => {\n\t\treturn key + \" from \" + versions[key].from;\n\t}).join(\", \");\n};\nvar getValidVersion = (scope, scopeName, key, requiredVersion) => {\n\tvar entry = findValidVersion(scope, key, requiredVersion);\n\tif(entry) return get(entry);\n\tthrow new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));\n};\nvar warnInvalidVersion = (scope, scopeName, key, requiredVersion) => {\n\ttypeof console !== \"undefined\" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));\n};\nvar get = (entry) => {\n\tentry.loaded = 1;\n\treturn entry.get()\n};\nvar init = (fn) => (function(scopeName, a, b, c) {\n\tvar promise = __webpack_require__.I(scopeName);\n\tif (promise && promise.then) return promise.then(fn.bind(fn, scopeName, __webpack_require__.S[scopeName], a, b, c));\n\treturn fn(scopeName, __webpack_require__.S[scopeName], a, b, c);\n});\n\nvar load = /*#__PURE__*/ init((scopeName, scope, key) => {\n\tensureExistence(scopeName, key);\n\treturn get(findVersion(scope, key));\n});\nvar loadFallback = /*#__PURE__*/ init((scopeName, scope, key, fallback) => {\n\treturn scope && __webpack_require__.o(scope, key) ? get(findVersion(scope, key)) : fallback();\n});\nvar loadVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));\n});\nvar loadSingleton = /*#__PURE__*/ init((scopeName, scope, key) => {\n\tensureExistence(scopeName, key);\n\treturn getSingleton(scope, scopeName, key);\n});\nvar loadSingletonVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getSingletonVersion(scope, scopeName, key, version);\n});\nvar loadStrictVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getValidVersion(scope, scopeName, key, version);\n});\nvar loadStrictSingletonVersionCheck = /*#__PURE__*/ init((scopeName, scope, key, version) => {\n\tensureExistence(scopeName, key);\n\treturn getStrictSingletonVersion(scope, scopeName, key, version);\n});\nvar loadVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));\n});\nvar loadSingletonFallback = /*#__PURE__*/ init((scopeName, scope, key, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getSingleton(scope, scopeName, key);\n});\nvar loadSingletonVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getSingletonVersion(scope, scopeName, key, version);\n});\nvar loadStrictVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tvar entry = scope && __webpack_require__.o(scope, key) && findValidVersion(scope, key, version);\n\treturn entry ? get(entry) : fallback();\n});\nvar loadStrictSingletonVersionCheckFallback = /*#__PURE__*/ init((scopeName, scope, key, version, fallback) => {\n\tif(!scope || !__webpack_require__.o(scope, key)) return fallback();\n\treturn getStrictSingletonVersion(scope, scopeName, key, version);\n});\nvar installedModules = {};\nvar moduleToHandlerMapping = {\n\t\"webpack/sharing/consume/default/react\": () => (loadSingletonVersionCheck(\"default\", \"react\", [1,17,0,1])),\n\t\"webpack/sharing/consume/default/@jupyterlab/notebook\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/notebook\", [1,3,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/apputils\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/apputils\", [1,3,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/settingregistry\", [1,3,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/mainmenu\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/mainmenu\", [1,3,4,5])),\n\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\": () => (loadSingletonVersionCheck(\"default\", \"@jupyterlab/ui-components\", [1,3,4,5])),\n\t\"webpack/sharing/consume/default/@lumino/widgets\": () => (loadSingletonVersionCheck(\"default\", \"@lumino/widgets\", [1,1,33,0])),\n\t\"webpack/sharing/consume/default/react-sanitized-html/react-sanitized-html\": () => (loadStrictVersionCheckFallback(\"default\", \"react-sanitized-html\", [1,2,0,0], () => (__webpack_require__.e(\"vendors-node_modules_react-sanitized-html_lib_index_js\").then(() => (() => (__webpack_require__(/*! react-sanitized-html */ \"./node_modules/react-sanitized-html/lib/index.js\")))))))\n};\n// no consumes in initial chunks\nvar chunkMapping = {\n\t\"webpack_sharing_consume_default_react\": [\n\t\t\"webpack/sharing/consume/default/react\"\n\t],\n\t\"lib_index_js\": [\n\t\t\"webpack/sharing/consume/default/@jupyterlab/notebook\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/apputils\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/settingregistry\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/mainmenu\",\n\t\t\"webpack/sharing/consume/default/@jupyterlab/ui-components\",\n\t\t\"webpack/sharing/consume/default/@lumino/widgets\",\n\t\t\"webpack/sharing/consume/default/react-sanitized-html/react-sanitized-html\"\n\t]\n};\n__webpack_require__.f.consumes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tif(__webpack_require__.o(installedModules, id)) return promises.push(installedModules[id]);\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tinstalledModules[id] = 0;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onError = (error) => {\n\t\t\t\tdelete installedModules[id];\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tdelete __webpack_require__.c[id];\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar promise = moduleToHandlerMapping[id]();\n\t\t\t\tif(promise.then) {\n\t\t\t\t\tpromises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\n\t\t\t\t} else onFactory(promise);\n\t\t\t} catch(e) { onError(e); }\n\t\t});\n\t}\n}","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"neural_compressor_ext_lab\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(\"webpack_sharing_consume_default_react\" != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkneural_compressor_ext_lab\"] = self[\"webpackChunkneural_compressor_ext_lab\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(\"webpack/container/entry/neural_compressor_ext_lab\");\n",""],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style.js b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style.js similarity index 69% rename from neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style.js rename to neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style.js index 7ba22141afd..7b10c692587 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/style.js +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style.js @@ -1,4 +1,4 @@ /* This is a generated file of CSS imports */ /* It was generated by @jupyterlab/builder in Build.ensureAssets() */ -import 'neural-compressor-ext-lab/style/index.js'; +import 'neural_compressor_ext_lab/style/index.js'; diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js new file mode 100644 index 00000000000..d6e506b9dc4 --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js @@ -0,0 +1,73 @@ +"use strict"; +(self["webpackChunkneural_compressor_ext_lab"] = self["webpackChunkneural_compressor_ext_lab"] || []).push([["style_index_js"],{ + +/***/ "./node_modules/css-loader/dist/cjs.js!./style/base.css": +/*!**************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./style/base.css ***! + \**************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ "./node_modules/css-loader/dist/runtime/cssWithMappingToString.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, "/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n.lds-ripple {\n display: flex;\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 80px;\n height: 80px;\n}\n.lds-ripple div {\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n border: 4px solid rgb(245, 131, 55);\n opacity: 1;\n border-radius: 50%;\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n.lds-ripple div:nth-child(2) {\n animation-delay: -0.5s;\n}\n@keyframes lds-ripple {\n 0% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 4.9% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 5% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: 0px;\n left: 0px;\n width: 72px;\n height: 72px;\n opacity: 0;\n }\n}\n\n\n/* CSS */\n.button-62 {\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\n border: 0;\n border-radius: 12px;\n color: #FFFFFF;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system,system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n font-size: 16px;\n font-weight: 500;\n line-height: 2.5;\n outline: transparent;\n padding: 0 1rem;\n text-align: center;\n text-decoration: none;\n transition: box-shadow .2s ease-in-out;\n user-select: none;\n -webkit-user-select: none;\n touch-action: manipulation;\n white-space: nowrap;\n}\n\n.button-62:not([disabled]):focus {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.button-62:not([disabled]):hover {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.aselector select {\n background-color: initial;\n border: none;\n border-radius: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color0);\n display: block;\n font-size: var(--jp-ui-font-size1);\n height: 24px;\n line-height: 14px;\n padding: 0 25px 0 10px;\n text-align: left;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n/* Use our own theme for hover and option styles */\n.aselector select:hover,\n.aselector select > option {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\nselect {\n box-sizing: border-box;\n}\n\n.font{\nbackground-color: initial;\nborder: none;\nheight: 21px;\nborder-radius: 0;\nfont-weight:500;\ncolor: var(--jp-ui-font-color0);\ndisplay: block;\nline-height: 22.5px;\npadding: 0 25px 0 10px;\nfont-size: var(--jp-ui-font-size1);\n}\n.wrapper {\n display: flex;\n}\n.f1ozlkqi {\n pointer-events: none;\n}\n\n.palybutton{\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\n}\n.loading{\n \n background-image: url(\"data:image/svg+xml,\");\n background-size: contain; \n}\n\n.dialog{\nbody {\n margin: 0;\n height: 100vh;\n width:600px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n font-family: \"Poppins\", sans-serif;\n background: #e3d0b6;\n}\n\n#cookie-policy {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 460px;\n height: 600px;\n background: #f3efe6;\n border-radius: 12px;\n transform: scale(.8);\n}\n\n#cookie-wrapper {\n height: 240px;\n width: 240px;\n margin: 30px 0;\n position: relative;\n left: -40px;\n}\n\nh1 {\n color: #6c3a1f;\n text-align: center;\n font-size: 36px;\n margin: 0;\n}\n\np {\n color: #a28561;\n font-size: 14px;\n margin-top: 0;\n padding: 0 60px;\n text-align: center;\n}\na {\n margin-top: 18px;\n font-size: 14px;\n color: #a28561;\n text-decoration: none;\n pointer-events: none;\n}\na:hover {\n color: #846b4d;\n}\n\nspan {\n font-family: \"Amatic SC\", cursive;\n font-weight: 400;\n font-size: 20px;\n position: relative;\n top: -18px;\n left: 3px;\n color: #a28561; \n}\n\n#heart-no, #thought-heart-yes, #mouth, #face-no, #thought-1, #thought-2, #thought-heart-na, #q-mark, #eyes, #leg-l, #leg-r {\n opacity: 0;\n}\n}\n.dia_button {\n color: white;\n background: #dd794a;\n margin-top: 12px;\n cursor: pointer;\n font-size: 24px;\n font-family: \"Poppins\", sans-serif;\n border-radius: 9px;\n border: none;\n width: 72%;\n padding: 12px 0;\n transition: 150ms ease-out;\n pointer-events: none;\n}\n\n.dia_button:hover {\n background: #d66029;\n}\n\n.pad{\n padding-left:6%\n}\n\n:root {\n /* Elevation\n *\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\n *\n * https://github.com/material-components/material-components-web\n * https://material-components-web.appspot.com/elevation.html\n */\n\n --jp-shadow-base-lightness: 0;\n --jp-shadow-umbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.2\n );\n --jp-shadow-penumbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.14\n );\n --jp-shadow-ambient-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.12\n );\n --jp-elevation-z0: none;\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\n\n /* Borders\n *\n * The following variables, specify the visual styling of borders in JupyterLab.\n */\n\n --jp-border-width: 1px;\n --jp-border-color0: var(--md-grey-400);\n --jp-border-color1: var(--md-grey-400);\n --jp-border-color2: var(--md-grey-300);\n --jp-border-color3: var(--md-grey-200);\n --jp-inverse-border-color: var(--md-grey-600);\n --jp-border-radius: 2px;\n\n /* UI Fonts\n *\n * The UI font CSS variables are used for the typography all of the JupyterLab\n * user interface elements that are not directly user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-ui-font-scale-factor: 1.2;\n --jp-ui-font-size0: 0.83333em;\n --jp-ui-font-size1: 13px; /* Base font size */\n --jp-ui-font-size2: 1.2em;\n --jp-ui-font-size3: 1.44em;\n\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n\n /*\n * Use these font colors against the corresponding main layout colors.\n * In a light theme, these go from dark to light.\n */\n\n /* Defaults use Material Design specification */\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\n\n /*\n * Use these against the brand/accent/warn/error colors.\n * These will typically go from light to darker, in both a dark and light theme.\n */\n\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\n\n /* Content Fonts\n *\n * Content font variables are used for typography of user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-content-line-height: 1.6;\n --jp-content-font-scale-factor: 1.2;\n --jp-content-font-size0: 0.83333em;\n --jp-content-font-size1: 14px; /* Base font size */\n --jp-content-font-size2: 1.2em;\n --jp-content-font-size3: 1.44em;\n --jp-content-font-size4: 1.728em;\n --jp-content-font-size5: 2.0736em;\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-content-presentation-font-size1: 17px;\n\n --jp-content-heading-line-height: 1;\n --jp-content-heading-margin-top: 1.2em;\n --jp-content-heading-margin-bottom: 0.8em;\n --jp-content-heading-font-weight: 500;\n\n /* Defaults use Material Design specification */\n --jp-content-font-color0: rgba(0, 0, 0, 1);\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\n\n --jp-content-link-color: var(--md-blue-700);\n\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n\n /*\n * Code Fonts\n *\n * Code font variables are used for typography of code and other monospaces content.\n */\n\n --jp-code-font-size: 13px;\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\n --jp-code-font-family: var(--jp-code-font-family-default);\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-code-presentation-font-size: 16px;\n\n /* may need to tweak cursor width if you change font size */\n --jp-code-cursor-width0: 1.4px;\n --jp-code-cursor-width1: 2px;\n --jp-code-cursor-width2: 4px;\n\n /* Layout\n *\n * The following are the main layout colors use in JupyterLab. In a light\n * theme these would go from light to dark.\n */\n\n --jp-layout-color0: white;\n --jp-layout-color1: white;\n --jp-layout-color2: var(--md-grey-200);\n --jp-layout-color3: var(--md-grey-400);\n --jp-layout-color4: var(--md-grey-600);\n\n /* Inverse Layout\n *\n * The following are the inverse layout colors use in JupyterLab. In a light\n * theme these would go from dark to light.\n */\n\n --jp-inverse-layout-color0: #111111;\n --jp-inverse-layout-color1: var(--md-grey-900);\n --jp-inverse-layout-color2: var(--md-grey-800);\n --jp-inverse-layout-color3: var(--md-grey-700);\n --jp-inverse-layout-color4: var(--md-grey-600);\n\n /* Brand/accent */\n\n --jp-brand-color0: var(--md-blue-900);\n --jp-brand-color1: var(--md-blue-700);\n --jp-brand-color2: var(--md-blue-300);\n --jp-brand-color3: var(--md-blue-100);\n --jp-brand-color4: var(--md-blue-50);\n\n --jp-accent-color0: var(--md-green-900);\n --jp-accent-color1: var(--md-green-700);\n --jp-accent-color2: var(--md-green-300);\n --jp-accent-color3: var(--md-green-100);\n\n /* State colors (warn, error, success, info) */\n\n --jp-warn-color0: var(--md-orange-900);\n --jp-warn-color1: var(--md-orange-700);\n --jp-warn-color2: var(--md-orange-300);\n --jp-warn-color3: var(--md-orange-100);\n\n --jp-error-color0: var(--md-red-900);\n --jp-error-color1: var(--md-red-700);\n --jp-error-color2: var(--md-red-300);\n --jp-error-color3: var(--md-red-100);\n\n --jp-success-color0: var(--md-green-900);\n --jp-success-color1: var(--md-green-700);\n --jp-success-color2: var(--md-green-300);\n --jp-success-color3: var(--md-green-100);\n\n --jp-info-color0: var(--md-cyan-900);\n --jp-info-color1: var(--md-cyan-700);\n --jp-info-color2: var(--md-cyan-300);\n --jp-info-color3: var(--md-cyan-100);\n\n /* Cell specific styles */\n\n --jp-cell-padding: 5px;\n\n --jp-cell-collapser-width: 8px;\n --jp-cell-collapser-min-height: 20px;\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\n\n --jp-cell-editor-background: var(--md-grey-100);\n --jp-cell-editor-border-color: var(--md-grey-300);\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-cell-editor-active-background: var(--jp-layout-color0);\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\n\n --jp-cell-prompt-width: 64px;\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\n --jp-cell-prompt-letter-spacing: 0px;\n --jp-cell-prompt-opacity: 1;\n --jp-cell-prompt-not-active-opacity: 0.5;\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\n /* A custom blend of MD grey and blue 600\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\n --jp-cell-inprompt-font-color: #307fc1;\n /* A custom blend of MD grey and orange 600\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\n --jp-cell-outprompt-font-color: #bf5b3d;\n\n /* Notebook specific styles */\n\n --jp-notebook-padding: 10px;\n --jp-notebook-select-background: var(--jp-layout-color1);\n --jp-notebook-multiselected-color: var(--md-blue-50);\n\n /* The scroll padding is calculated to fill enough space at the bottom of the\n notebook to show one single-line cell (with appropriate padding) at the top\n when the notebook is scrolled all the way to the bottom. We also subtract one\n pixel so that no scrollbar appears if we have just one single-line cell in the\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\n */\n --jp-notebook-scroll-padding: calc(\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\n );\n\n /* Rendermime styles */\n\n --jp-rendermime-error-background: #fdd;\n --jp-rendermime-table-row-background: var(--md-grey-100);\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\n\n /* Dialog specific styles */\n\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\n\n /* Console specific styles */\n\n --jp-console-padding: 10px;\n\n /* Toolbar specific styles */\n\n --jp-toolbar-border-color: var(--jp-border-color1);\n --jp-toolbar-micro-height: 8px;\n --jp-toolbar-background: var(--jp-layout-color1);\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\n --jp-toolbar-active-background: var(--md-grey-300);\n\n /* Statusbar specific styles */\n\n --jp-statusbar-height: 24px;\n\n /* Input field styles */\n\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-input-active-background: var(--jp-layout-color1);\n --jp-input-hover-background: var(--jp-layout-color1);\n --jp-input-background: var(--md-grey-100);\n --jp-input-border-color: var(--jp-inverse-border-color);\n --jp-input-active-border-color: var(--jp-brand-color1);\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\n\n /* General editor styles */\n\n --jp-editor-selected-background: #d9d9d9;\n --jp-editor-selected-focused-background: #d7d4f0;\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\n\n /* Code mirror specific styles */\n\n --jp-mirror-editor-keyword-color: #008000;\n --jp-mirror-editor-atom-color: #88f;\n --jp-mirror-editor-number-color: #080;\n --jp-mirror-editor-def-color: #00f;\n --jp-mirror-editor-variable-color: var(--md-grey-900);\n --jp-mirror-editor-variable-2-color: #05a;\n --jp-mirror-editor-variable-3-color: #085;\n --jp-mirror-editor-punctuation-color: #05a;\n --jp-mirror-editor-property-color: #05a;\n --jp-mirror-editor-operator-color: #aa22ff;\n --jp-mirror-editor-comment-color: #408080;\n --jp-mirror-editor-string-color: #ba2121;\n --jp-mirror-editor-string-2-color: #708;\n --jp-mirror-editor-meta-color: #aa22ff;\n --jp-mirror-editor-qualifier-color: #555;\n --jp-mirror-editor-builtin-color: #008000;\n --jp-mirror-editor-bracket-color: #997;\n --jp-mirror-editor-tag-color: #170;\n --jp-mirror-editor-attribute-color: #00c;\n --jp-mirror-editor-header-color: blue;\n --jp-mirror-editor-quote-color: #090;\n --jp-mirror-editor-link-color: #00c;\n --jp-mirror-editor-error-color: #f00;\n --jp-mirror-editor-hr-color: #999;\n\n /* Vega extension styles */\n\n --jp-vega-background: white;\n\n /* Sidebar-related styles */\n\n --jp-sidebar-min-width: 250px;\n\n /* Search-related styles */\n\n --jp-search-toggle-off-opacity: 0.5;\n --jp-search-toggle-hover-opacity: 0.8;\n --jp-search-toggle-on-opacity: 1;\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\n --jp-search-selected-match-color: black;\n --jp-search-unselected-match-background-color: var(\n --jp-inverse-layout-color0\n );\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\n\n /* Icon colors that work well with light or dark backgrounds */\n --jp-icon-contrast-color0: var(--md-purple-600);\n --jp-icon-contrast-color1: var(--md-green-600);\n --jp-icon-contrast-color2: var(--md-pink-600);\n --jp-icon-contrast-color3: var(--md-blue-600);\n}\n\n/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/* Set the default typography for monospace elements */\ntt,\ncode,\nkbd,\nsamp,\npre {\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n line-height: var(--jp-code-line-height);\n}\n\n", "",{"version":3,"sources":["webpack://./style/base.css"],"names":[],"mappings":"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","sourcesContent":["/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n.lds-ripple {\n display: flex;\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 80px;\n height: 80px;\n}\n.lds-ripple div {\n position: absolute; \n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n border: 4px solid rgb(245, 131, 55);\n opacity: 1;\n border-radius: 50%;\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n.lds-ripple div:nth-child(2) {\n animation-delay: -0.5s;\n}\n@keyframes lds-ripple {\n 0% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 4.9% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 0;\n }\n 5% {\n left: 0; \n top: 0; \n right: 0; \n bottom: 0;\n margin: auto; \n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: 0px;\n left: 0px;\n width: 72px;\n height: 72px;\n opacity: 0;\n }\n}\n\n\n/* CSS */\n.button-62 {\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\n border: 0;\n border-radius: 12px;\n color: #FFFFFF;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system,system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n font-size: 16px;\n font-weight: 500;\n line-height: 2.5;\n outline: transparent;\n padding: 0 1rem;\n text-align: center;\n text-decoration: none;\n transition: box-shadow .2s ease-in-out;\n user-select: none;\n -webkit-user-select: none;\n touch-action: manipulation;\n white-space: nowrap;\n}\n\n.button-62:not([disabled]):focus {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.button-62:not([disabled]):hover {\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\n}\n\n.aselector select {\n background-color: initial;\n border: none;\n border-radius: 0;\n box-shadow: none;\n color: var(--jp-ui-font-color0);\n display: block;\n font-size: var(--jp-ui-font-size1);\n height: 24px;\n line-height: 14px;\n padding: 0 25px 0 10px;\n text-align: left;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n/* Use our own theme for hover and option styles */\n.aselector select:hover,\n.aselector select > option {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\nselect {\n box-sizing: border-box;\n}\n\n.font{\nbackground-color: initial;\nborder: none;\nheight: 21px;\nborder-radius: 0;\nfont-weight:500;\ncolor: var(--jp-ui-font-color0);\ndisplay: block;\nline-height: 22.5px;\npadding: 0 25px 0 10px;\nfont-size: var(--jp-ui-font-size1);\n}\n.wrapper {\n display: flex;\n}\n.f1ozlkqi {\n pointer-events: none;\n}\n\n.palybutton{\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\n}\n.loading{\n \n background-image: url(\"data:image/svg+xml,\");\n background-size: contain; \n}\n\n.dialog{\nbody {\n margin: 0;\n height: 100vh;\n width:600px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n font-family: \"Poppins\", sans-serif;\n background: #e3d0b6;\n}\n\n#cookie-policy {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 460px;\n height: 600px;\n background: #f3efe6;\n border-radius: 12px;\n transform: scale(.8);\n}\n\n#cookie-wrapper {\n height: 240px;\n width: 240px;\n margin: 30px 0;\n position: relative;\n left: -40px;\n}\n\nh1 {\n color: #6c3a1f;\n text-align: center;\n font-size: 36px;\n margin: 0;\n}\n\np {\n color: #a28561;\n font-size: 14px;\n margin-top: 0;\n padding: 0 60px;\n text-align: center;\n}\na {\n margin-top: 18px;\n font-size: 14px;\n color: #a28561;\n text-decoration: none;\n pointer-events: none;\n}\na:hover {\n color: #846b4d;\n}\n\nspan {\n font-family: \"Amatic SC\", cursive;\n font-weight: 400;\n font-size: 20px;\n position: relative;\n top: -18px;\n left: 3px;\n color: #a28561; \n}\n\n#heart-no, #thought-heart-yes, #mouth, #face-no, #thought-1, #thought-2, #thought-heart-na, #q-mark, #eyes, #leg-l, #leg-r {\n opacity: 0;\n}\n}\n.dia_button {\n color: white;\n background: #dd794a;\n margin-top: 12px;\n cursor: pointer;\n font-size: 24px;\n font-family: \"Poppins\", sans-serif;\n border-radius: 9px;\n border: none;\n width: 72%;\n padding: 12px 0;\n transition: 150ms ease-out;\n pointer-events: none;\n}\n\n.dia_button:hover {\n background: #d66029;\n}\n\n.pad{\n padding-left:6%\n}\n\n:root {\n /* Elevation\n *\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\n *\n * https://github.com/material-components/material-components-web\n * https://material-components-web.appspot.com/elevation.html\n */\n\n --jp-shadow-base-lightness: 0;\n --jp-shadow-umbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.2\n );\n --jp-shadow-penumbra-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.14\n );\n --jp-shadow-ambient-color: rgba(\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n var(--jp-shadow-base-lightness),\n 0.12\n );\n --jp-elevation-z0: none;\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\n\n /* Borders\n *\n * The following variables, specify the visual styling of borders in JupyterLab.\n */\n\n --jp-border-width: 1px;\n --jp-border-color0: var(--md-grey-400);\n --jp-border-color1: var(--md-grey-400);\n --jp-border-color2: var(--md-grey-300);\n --jp-border-color3: var(--md-grey-200);\n --jp-inverse-border-color: var(--md-grey-600);\n --jp-border-radius: 2px;\n\n /* UI Fonts\n *\n * The UI font CSS variables are used for the typography all of the JupyterLab\n * user interface elements that are not directly user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-ui-font-scale-factor: 1.2;\n --jp-ui-font-size0: 0.83333em;\n --jp-ui-font-size1: 13px; /* Base font size */\n --jp-ui-font-size2: 1.2em;\n --jp-ui-font-size3: 1.44em;\n\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\n\n /*\n * Use these font colors against the corresponding main layout colors.\n * In a light theme, these go from dark to light.\n */\n\n /* Defaults use Material Design specification */\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\n\n /*\n * Use these against the brand/accent/warn/error colors.\n * These will typically go from light to darker, in both a dark and light theme.\n */\n\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\n\n /* Content Fonts\n *\n * Content font variables are used for typography of user generated content.\n *\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\n * is applied to a parent element. When children elements, such as headings, are sized\n * in em all things will be computed relative to that body size.\n */\n\n --jp-content-line-height: 1.6;\n --jp-content-font-scale-factor: 1.2;\n --jp-content-font-size0: 0.83333em;\n --jp-content-font-size1: 14px; /* Base font size */\n --jp-content-font-size2: 1.2em;\n --jp-content-font-size3: 1.44em;\n --jp-content-font-size4: 1.728em;\n --jp-content-font-size5: 2.0736em;\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-content-presentation-font-size1: 17px;\n\n --jp-content-heading-line-height: 1;\n --jp-content-heading-margin-top: 1.2em;\n --jp-content-heading-margin-bottom: 0.8em;\n --jp-content-heading-font-weight: 500;\n\n /* Defaults use Material Design specification */\n --jp-content-font-color0: rgba(0, 0, 0, 1);\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\n\n --jp-content-link-color: var(--md-blue-700);\n\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n\n /*\n * Code Fonts\n *\n * Code font variables are used for typography of code and other monospaces content.\n */\n\n --jp-code-font-size: 13px;\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\n --jp-code-font-family: var(--jp-code-font-family-default);\n\n /* This gives a magnification of about 125% in presentation mode over normal. */\n --jp-code-presentation-font-size: 16px;\n\n /* may need to tweak cursor width if you change font size */\n --jp-code-cursor-width0: 1.4px;\n --jp-code-cursor-width1: 2px;\n --jp-code-cursor-width2: 4px;\n\n /* Layout\n *\n * The following are the main layout colors use in JupyterLab. In a light\n * theme these would go from light to dark.\n */\n\n --jp-layout-color0: white;\n --jp-layout-color1: white;\n --jp-layout-color2: var(--md-grey-200);\n --jp-layout-color3: var(--md-grey-400);\n --jp-layout-color4: var(--md-grey-600);\n\n /* Inverse Layout\n *\n * The following are the inverse layout colors use in JupyterLab. In a light\n * theme these would go from dark to light.\n */\n\n --jp-inverse-layout-color0: #111111;\n --jp-inverse-layout-color1: var(--md-grey-900);\n --jp-inverse-layout-color2: var(--md-grey-800);\n --jp-inverse-layout-color3: var(--md-grey-700);\n --jp-inverse-layout-color4: var(--md-grey-600);\n\n /* Brand/accent */\n\n --jp-brand-color0: var(--md-blue-900);\n --jp-brand-color1: var(--md-blue-700);\n --jp-brand-color2: var(--md-blue-300);\n --jp-brand-color3: var(--md-blue-100);\n --jp-brand-color4: var(--md-blue-50);\n\n --jp-accent-color0: var(--md-green-900);\n --jp-accent-color1: var(--md-green-700);\n --jp-accent-color2: var(--md-green-300);\n --jp-accent-color3: var(--md-green-100);\n\n /* State colors (warn, error, success, info) */\n\n --jp-warn-color0: var(--md-orange-900);\n --jp-warn-color1: var(--md-orange-700);\n --jp-warn-color2: var(--md-orange-300);\n --jp-warn-color3: var(--md-orange-100);\n\n --jp-error-color0: var(--md-red-900);\n --jp-error-color1: var(--md-red-700);\n --jp-error-color2: var(--md-red-300);\n --jp-error-color3: var(--md-red-100);\n\n --jp-success-color0: var(--md-green-900);\n --jp-success-color1: var(--md-green-700);\n --jp-success-color2: var(--md-green-300);\n --jp-success-color3: var(--md-green-100);\n\n --jp-info-color0: var(--md-cyan-900);\n --jp-info-color1: var(--md-cyan-700);\n --jp-info-color2: var(--md-cyan-300);\n --jp-info-color3: var(--md-cyan-100);\n\n /* Cell specific styles */\n\n --jp-cell-padding: 5px;\n\n --jp-cell-collapser-width: 8px;\n --jp-cell-collapser-min-height: 20px;\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\n\n --jp-cell-editor-background: var(--md-grey-100);\n --jp-cell-editor-border-color: var(--md-grey-300);\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-cell-editor-active-background: var(--jp-layout-color0);\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\n\n --jp-cell-prompt-width: 64px;\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\n --jp-cell-prompt-letter-spacing: 0px;\n --jp-cell-prompt-opacity: 1;\n --jp-cell-prompt-not-active-opacity: 0.5;\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\n /* A custom blend of MD grey and blue 600\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\n --jp-cell-inprompt-font-color: #307fc1;\n /* A custom blend of MD grey and orange 600\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\n --jp-cell-outprompt-font-color: #bf5b3d;\n\n /* Notebook specific styles */\n\n --jp-notebook-padding: 10px;\n --jp-notebook-select-background: var(--jp-layout-color1);\n --jp-notebook-multiselected-color: var(--md-blue-50);\n\n /* The scroll padding is calculated to fill enough space at the bottom of the\n notebook to show one single-line cell (with appropriate padding) at the top\n when the notebook is scrolled all the way to the bottom. We also subtract one\n pixel so that no scrollbar appears if we have just one single-line cell in the\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\n */\n --jp-notebook-scroll-padding: calc(\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\n );\n\n /* Rendermime styles */\n\n --jp-rendermime-error-background: #fdd;\n --jp-rendermime-table-row-background: var(--md-grey-100);\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\n\n /* Dialog specific styles */\n\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\n\n /* Console specific styles */\n\n --jp-console-padding: 10px;\n\n /* Toolbar specific styles */\n\n --jp-toolbar-border-color: var(--jp-border-color1);\n --jp-toolbar-micro-height: 8px;\n --jp-toolbar-background: var(--jp-layout-color1);\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\n --jp-toolbar-active-background: var(--md-grey-300);\n\n /* Statusbar specific styles */\n\n --jp-statusbar-height: 24px;\n\n /* Input field styles */\n\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\n --jp-input-active-background: var(--jp-layout-color1);\n --jp-input-hover-background: var(--jp-layout-color1);\n --jp-input-background: var(--md-grey-100);\n --jp-input-border-color: var(--jp-inverse-border-color);\n --jp-input-active-border-color: var(--jp-brand-color1);\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\n\n /* General editor styles */\n\n --jp-editor-selected-background: #d9d9d9;\n --jp-editor-selected-focused-background: #d7d4f0;\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\n\n /* Code mirror specific styles */\n\n --jp-mirror-editor-keyword-color: #008000;\n --jp-mirror-editor-atom-color: #88f;\n --jp-mirror-editor-number-color: #080;\n --jp-mirror-editor-def-color: #00f;\n --jp-mirror-editor-variable-color: var(--md-grey-900);\n --jp-mirror-editor-variable-2-color: #05a;\n --jp-mirror-editor-variable-3-color: #085;\n --jp-mirror-editor-punctuation-color: #05a;\n --jp-mirror-editor-property-color: #05a;\n --jp-mirror-editor-operator-color: #aa22ff;\n --jp-mirror-editor-comment-color: #408080;\n --jp-mirror-editor-string-color: #ba2121;\n --jp-mirror-editor-string-2-color: #708;\n --jp-mirror-editor-meta-color: #aa22ff;\n --jp-mirror-editor-qualifier-color: #555;\n --jp-mirror-editor-builtin-color: #008000;\n --jp-mirror-editor-bracket-color: #997;\n --jp-mirror-editor-tag-color: #170;\n --jp-mirror-editor-attribute-color: #00c;\n --jp-mirror-editor-header-color: blue;\n --jp-mirror-editor-quote-color: #090;\n --jp-mirror-editor-link-color: #00c;\n --jp-mirror-editor-error-color: #f00;\n --jp-mirror-editor-hr-color: #999;\n\n /* Vega extension styles */\n\n --jp-vega-background: white;\n\n /* Sidebar-related styles */\n\n --jp-sidebar-min-width: 250px;\n\n /* Search-related styles */\n\n --jp-search-toggle-off-opacity: 0.5;\n --jp-search-toggle-hover-opacity: 0.8;\n --jp-search-toggle-on-opacity: 1;\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\n --jp-search-selected-match-color: black;\n --jp-search-unselected-match-background-color: var(\n --jp-inverse-layout-color0\n );\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\n\n /* Icon colors that work well with light or dark backgrounds */\n --jp-icon-contrast-color0: var(--md-purple-600);\n --jp-icon-contrast-color1: var(--md-green-600);\n --jp-icon-contrast-color2: var(--md-pink-600);\n --jp-icon-contrast-color3: var(--md-blue-600);\n}\n\n/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/* Set the default typography for monospace elements */\ntt,\ncode,\nkbd,\nsamp,\npre {\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n line-height: var(--jp-code-line-height);\n}\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./style/base.css": +/*!************************!*\ + !*** ./style/base.css ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_cjs_js_base_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./base.css */ "./node_modules/css-loader/dist/cjs.js!./style/base.css"); + + + +var options = {}; + +options.insert = "head"; +options.singleton = false; + +var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_base_css__WEBPACK_IMPORTED_MODULE_1__["default"], options); + + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_base_css__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {}); + +/***/ }), + +/***/ "./style/index.js": +/*!************************!*\ + !*** ./style/index.js ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _base_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base.css */ "./style/base.css"); + + + +/***/ }) + +}]); +//# sourceMappingURL=style_index_js.64a99c20bfaa1b52d477.js.map \ No newline at end of file diff --git a/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js.map b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js.map new file mode 100644 index 00000000000..e38154f761e --- /dev/null +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/style_index_js.64a99c20bfaa1b52d477.js.map @@ -0,0 +1 @@ +{"version":3,"file":"style_index_js.64a99c20bfaa1b52d477.js","mappings":"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","sources":["webpack://neural_compressor_ext_lab/./style/base.css","webpack://neural_compressor_ext_lab/./style/base.css?1944","webpack://neural_compressor_ext_lab/./style/index.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*\\n See the JupyterLab Developer Guide for useful CSS Patterns:\\n\\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\\n*/\\n.lds-ripple {\\n display: flex;\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 80px;\\n height: 80px;\\n}\\n.lds-ripple div {\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n border: 4px solid rgb(245, 131, 55);\\n opacity: 1;\\n border-radius: 50%;\\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\\n}\\n.lds-ripple div:nth-child(2) {\\n animation-delay: -0.5s;\\n}\\n@keyframes lds-ripple {\\n 0% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 4.9% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 5% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 1;\\n }\\n 100% {\\n top: 0px;\\n left: 0px;\\n width: 72px;\\n height: 72px;\\n opacity: 0;\\n }\\n}\\n\\n\\n/* CSS */\\n.button-62 {\\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\\n border: 0;\\n border-radius: 12px;\\n color: #FFFFFF;\\n cursor: pointer;\\n display: inline-block;\\n font-family: -apple-system,system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif;\\n font-size: 16px;\\n font-weight: 500;\\n line-height: 2.5;\\n outline: transparent;\\n padding: 0 1rem;\\n text-align: center;\\n text-decoration: none;\\n transition: box-shadow .2s ease-in-out;\\n user-select: none;\\n -webkit-user-select: none;\\n touch-action: manipulation;\\n white-space: nowrap;\\n}\\n\\n.button-62:not([disabled]):focus {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.button-62:not([disabled]):hover {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.aselector select {\\n background-color: initial;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n color: var(--jp-ui-font-color0);\\n display: block;\\n font-size: var(--jp-ui-font-size1);\\n height: 24px;\\n line-height: 14px;\\n padding: 0 25px 0 10px;\\n text-align: left;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n}\\n\\n/* Use our own theme for hover and option styles */\\n.aselector select:hover,\\n.aselector select > option {\\n background-color: var(--jp-layout-color2);\\n color: var(--jp-ui-font-color0);\\n}\\nselect {\\n box-sizing: border-box;\\n}\\n\\n.font{\\nbackground-color: initial;\\nborder: none;\\nheight: 21px;\\nborder-radius: 0;\\nfont-weight:500;\\ncolor: var(--jp-ui-font-color0);\\ndisplay: block;\\nline-height: 22.5px;\\npadding: 0 25px 0 10px;\\nfont-size: var(--jp-ui-font-size1);\\n}\\n.wrapper {\\n display: flex;\\n}\\n.f1ozlkqi {\\n pointer-events: none;\\n}\\n\\n.palybutton{\\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\\n}\\n.loading{\\n \\n background-image: url(\\\"data:image/svg+xml,\\\");\\n background-size: contain; \\n}\\n\\n.dialog{\\nbody {\\n margin: 0;\\n height: 100vh;\\n width:600px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n overflow: hidden;\\n font-family: \\\"Poppins\\\", sans-serif;\\n background: #e3d0b6;\\n}\\n\\n#cookie-policy {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n width: 460px;\\n height: 600px;\\n background: #f3efe6;\\n border-radius: 12px;\\n transform: scale(.8);\\n}\\n\\n#cookie-wrapper {\\n height: 240px;\\n width: 240px;\\n margin: 30px 0;\\n position: relative;\\n left: -40px;\\n}\\n\\nh1 {\\n color: #6c3a1f;\\n text-align: center;\\n font-size: 36px;\\n margin: 0;\\n}\\n\\np {\\n color: #a28561;\\n font-size: 14px;\\n margin-top: 0;\\n padding: 0 60px;\\n text-align: center;\\n}\\na {\\n margin-top: 18px;\\n font-size: 14px;\\n color: #a28561;\\n text-decoration: none;\\n pointer-events: none;\\n}\\na:hover {\\n color: #846b4d;\\n}\\n\\nspan {\\n font-family: \\\"Amatic SC\\\", cursive;\\n font-weight: 400;\\n font-size: 20px;\\n position: relative;\\n top: -18px;\\n left: 3px;\\n color: #a28561; \\n}\\n\\n#heart-no, #thought-heart-yes, #mouth, #face-no, #thought-1, #thought-2, #thought-heart-na, #q-mark, #eyes, #leg-l, #leg-r {\\n opacity: 0;\\n}\\n}\\n.dia_button {\\n color: white;\\n background: #dd794a;\\n margin-top: 12px;\\n cursor: pointer;\\n font-size: 24px;\\n font-family: \\\"Poppins\\\", sans-serif;\\n border-radius: 9px;\\n border: none;\\n width: 72%;\\n padding: 12px 0;\\n transition: 150ms ease-out;\\n pointer-events: none;\\n}\\n\\n.dia_button:hover {\\n background: #d66029;\\n}\\n\\n.pad{\\n padding-left:6%\\n}\\n\\n:root {\\n /* Elevation\\n *\\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\\n *\\n * https://github.com/material-components/material-components-web\\n * https://material-components-web.appspot.com/elevation.html\\n */\\n\\n --jp-shadow-base-lightness: 0;\\n --jp-shadow-umbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.2\\n );\\n --jp-shadow-penumbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.14\\n );\\n --jp-shadow-ambient-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.12\\n );\\n --jp-elevation-z0: none;\\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\\n\\n /* Borders\\n *\\n * The following variables, specify the visual styling of borders in JupyterLab.\\n */\\n\\n --jp-border-width: 1px;\\n --jp-border-color0: var(--md-grey-400);\\n --jp-border-color1: var(--md-grey-400);\\n --jp-border-color2: var(--md-grey-300);\\n --jp-border-color3: var(--md-grey-200);\\n --jp-inverse-border-color: var(--md-grey-600);\\n --jp-border-radius: 2px;\\n\\n /* UI Fonts\\n *\\n * The UI font CSS variables are used for the typography all of the JupyterLab\\n * user interface elements that are not directly user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-ui-font-scale-factor: 1.2;\\n --jp-ui-font-size0: 0.83333em;\\n --jp-ui-font-size1: 13px; /* Base font size */\\n --jp-ui-font-size2: 1.2em;\\n --jp-ui-font-size3: 1.44em;\\n\\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\\n\\n /*\\n * Use these font colors against the corresponding main layout colors.\\n * In a light theme, these go from dark to light.\\n */\\n\\n /* Defaults use Material Design specification */\\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\\n\\n /*\\n * Use these against the brand/accent/warn/error colors.\\n * These will typically go from light to darker, in both a dark and light theme.\\n */\\n\\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\\n\\n /* Content Fonts\\n *\\n * Content font variables are used for typography of user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-content-line-height: 1.6;\\n --jp-content-font-scale-factor: 1.2;\\n --jp-content-font-size0: 0.83333em;\\n --jp-content-font-size1: 14px; /* Base font size */\\n --jp-content-font-size2: 1.2em;\\n --jp-content-font-size3: 1.44em;\\n --jp-content-font-size4: 1.728em;\\n --jp-content-font-size5: 2.0736em;\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-content-presentation-font-size1: 17px;\\n\\n --jp-content-heading-line-height: 1;\\n --jp-content-heading-margin-top: 1.2em;\\n --jp-content-heading-margin-bottom: 0.8em;\\n --jp-content-heading-font-weight: 500;\\n\\n /* Defaults use Material Design specification */\\n --jp-content-font-color0: rgba(0, 0, 0, 1);\\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\\n\\n --jp-content-link-color: var(--md-blue-700);\\n\\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\\n 'Segoe UI Symbol';\\n\\n /*\\n * Code Fonts\\n *\\n * Code font variables are used for typography of code and other monospaces content.\\n */\\n\\n --jp-code-font-size: 13px;\\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\\n --jp-code-font-family: var(--jp-code-font-family-default);\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-code-presentation-font-size: 16px;\\n\\n /* may need to tweak cursor width if you change font size */\\n --jp-code-cursor-width0: 1.4px;\\n --jp-code-cursor-width1: 2px;\\n --jp-code-cursor-width2: 4px;\\n\\n /* Layout\\n *\\n * The following are the main layout colors use in JupyterLab. In a light\\n * theme these would go from light to dark.\\n */\\n\\n --jp-layout-color0: white;\\n --jp-layout-color1: white;\\n --jp-layout-color2: var(--md-grey-200);\\n --jp-layout-color3: var(--md-grey-400);\\n --jp-layout-color4: var(--md-grey-600);\\n\\n /* Inverse Layout\\n *\\n * The following are the inverse layout colors use in JupyterLab. In a light\\n * theme these would go from dark to light.\\n */\\n\\n --jp-inverse-layout-color0: #111111;\\n --jp-inverse-layout-color1: var(--md-grey-900);\\n --jp-inverse-layout-color2: var(--md-grey-800);\\n --jp-inverse-layout-color3: var(--md-grey-700);\\n --jp-inverse-layout-color4: var(--md-grey-600);\\n\\n /* Brand/accent */\\n\\n --jp-brand-color0: var(--md-blue-900);\\n --jp-brand-color1: var(--md-blue-700);\\n --jp-brand-color2: var(--md-blue-300);\\n --jp-brand-color3: var(--md-blue-100);\\n --jp-brand-color4: var(--md-blue-50);\\n\\n --jp-accent-color0: var(--md-green-900);\\n --jp-accent-color1: var(--md-green-700);\\n --jp-accent-color2: var(--md-green-300);\\n --jp-accent-color3: var(--md-green-100);\\n\\n /* State colors (warn, error, success, info) */\\n\\n --jp-warn-color0: var(--md-orange-900);\\n --jp-warn-color1: var(--md-orange-700);\\n --jp-warn-color2: var(--md-orange-300);\\n --jp-warn-color3: var(--md-orange-100);\\n\\n --jp-error-color0: var(--md-red-900);\\n --jp-error-color1: var(--md-red-700);\\n --jp-error-color2: var(--md-red-300);\\n --jp-error-color3: var(--md-red-100);\\n\\n --jp-success-color0: var(--md-green-900);\\n --jp-success-color1: var(--md-green-700);\\n --jp-success-color2: var(--md-green-300);\\n --jp-success-color3: var(--md-green-100);\\n\\n --jp-info-color0: var(--md-cyan-900);\\n --jp-info-color1: var(--md-cyan-700);\\n --jp-info-color2: var(--md-cyan-300);\\n --jp-info-color3: var(--md-cyan-100);\\n\\n /* Cell specific styles */\\n\\n --jp-cell-padding: 5px;\\n\\n --jp-cell-collapser-width: 8px;\\n --jp-cell-collapser-min-height: 20px;\\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\\n\\n --jp-cell-editor-background: var(--md-grey-100);\\n --jp-cell-editor-border-color: var(--md-grey-300);\\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-cell-editor-active-background: var(--jp-layout-color0);\\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\\n\\n --jp-cell-prompt-width: 64px;\\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\\n --jp-cell-prompt-letter-spacing: 0px;\\n --jp-cell-prompt-opacity: 1;\\n --jp-cell-prompt-not-active-opacity: 0.5;\\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\\n /* A custom blend of MD grey and blue 600\\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\\n --jp-cell-inprompt-font-color: #307fc1;\\n /* A custom blend of MD grey and orange 600\\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\\n --jp-cell-outprompt-font-color: #bf5b3d;\\n\\n /* Notebook specific styles */\\n\\n --jp-notebook-padding: 10px;\\n --jp-notebook-select-background: var(--jp-layout-color1);\\n --jp-notebook-multiselected-color: var(--md-blue-50);\\n\\n /* The scroll padding is calculated to fill enough space at the bottom of the\\n notebook to show one single-line cell (with appropriate padding) at the top\\n when the notebook is scrolled all the way to the bottom. We also subtract one\\n pixel so that no scrollbar appears if we have just one single-line cell in the\\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\\n */\\n --jp-notebook-scroll-padding: calc(\\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\\n );\\n\\n /* Rendermime styles */\\n\\n --jp-rendermime-error-background: #fdd;\\n --jp-rendermime-table-row-background: var(--md-grey-100);\\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\\n\\n /* Dialog specific styles */\\n\\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\\n\\n /* Console specific styles */\\n\\n --jp-console-padding: 10px;\\n\\n /* Toolbar specific styles */\\n\\n --jp-toolbar-border-color: var(--jp-border-color1);\\n --jp-toolbar-micro-height: 8px;\\n --jp-toolbar-background: var(--jp-layout-color1);\\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\\n --jp-toolbar-active-background: var(--md-grey-300);\\n\\n /* Statusbar specific styles */\\n\\n --jp-statusbar-height: 24px;\\n\\n /* Input field styles */\\n\\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-input-active-background: var(--jp-layout-color1);\\n --jp-input-hover-background: var(--jp-layout-color1);\\n --jp-input-background: var(--md-grey-100);\\n --jp-input-border-color: var(--jp-inverse-border-color);\\n --jp-input-active-border-color: var(--jp-brand-color1);\\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\\n\\n /* General editor styles */\\n\\n --jp-editor-selected-background: #d9d9d9;\\n --jp-editor-selected-focused-background: #d7d4f0;\\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\\n\\n /* Code mirror specific styles */\\n\\n --jp-mirror-editor-keyword-color: #008000;\\n --jp-mirror-editor-atom-color: #88f;\\n --jp-mirror-editor-number-color: #080;\\n --jp-mirror-editor-def-color: #00f;\\n --jp-mirror-editor-variable-color: var(--md-grey-900);\\n --jp-mirror-editor-variable-2-color: #05a;\\n --jp-mirror-editor-variable-3-color: #085;\\n --jp-mirror-editor-punctuation-color: #05a;\\n --jp-mirror-editor-property-color: #05a;\\n --jp-mirror-editor-operator-color: #aa22ff;\\n --jp-mirror-editor-comment-color: #408080;\\n --jp-mirror-editor-string-color: #ba2121;\\n --jp-mirror-editor-string-2-color: #708;\\n --jp-mirror-editor-meta-color: #aa22ff;\\n --jp-mirror-editor-qualifier-color: #555;\\n --jp-mirror-editor-builtin-color: #008000;\\n --jp-mirror-editor-bracket-color: #997;\\n --jp-mirror-editor-tag-color: #170;\\n --jp-mirror-editor-attribute-color: #00c;\\n --jp-mirror-editor-header-color: blue;\\n --jp-mirror-editor-quote-color: #090;\\n --jp-mirror-editor-link-color: #00c;\\n --jp-mirror-editor-error-color: #f00;\\n --jp-mirror-editor-hr-color: #999;\\n\\n /* Vega extension styles */\\n\\n --jp-vega-background: white;\\n\\n /* Sidebar-related styles */\\n\\n --jp-sidebar-min-width: 250px;\\n\\n /* Search-related styles */\\n\\n --jp-search-toggle-off-opacity: 0.5;\\n --jp-search-toggle-hover-opacity: 0.8;\\n --jp-search-toggle-on-opacity: 1;\\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\\n --jp-search-selected-match-color: black;\\n --jp-search-unselected-match-background-color: var(\\n --jp-inverse-layout-color0\\n );\\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\\n\\n /* Icon colors that work well with light or dark backgrounds */\\n --jp-icon-contrast-color0: var(--md-purple-600);\\n --jp-icon-contrast-color1: var(--md-green-600);\\n --jp-icon-contrast-color2: var(--md-pink-600);\\n --jp-icon-contrast-color3: var(--md-blue-600);\\n}\\n\\n/*-----------------------------------------------------------------------------\\n| Copyright (c) Jupyter Development Team.\\n| Distributed under the terms of the Modified BSD License.\\n|----------------------------------------------------------------------------*/\\n\\n/* Set the default typography for monospace elements */\\ntt,\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: var(--jp-code-font-family);\\n font-size: var(--jp-code-font-size);\\n line-height: var(--jp-code-line-height);\\n}\\n\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./style/base.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*\\n See the JupyterLab Developer Guide for useful CSS Patterns:\\n\\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\\n*/\\n.lds-ripple {\\n display: flex;\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 80px;\\n height: 80px;\\n}\\n.lds-ripple div {\\n position: absolute; \\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n border: 4px solid rgb(245, 131, 55);\\n opacity: 1;\\n border-radius: 50%;\\n animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\\n}\\n.lds-ripple div:nth-child(2) {\\n animation-delay: -0.5s;\\n}\\n@keyframes lds-ripple {\\n 0% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 4.9% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 0;\\n }\\n 5% {\\n left: 0; \\n top: 0; \\n right: 0; \\n bottom: 0;\\n margin: auto; \\n width: 0;\\n height: 0;\\n opacity: 1;\\n }\\n 100% {\\n top: 0px;\\n left: 0px;\\n width: 72px;\\n height: 72px;\\n opacity: 0;\\n }\\n}\\n\\n\\n/* CSS */\\n.button-62 {\\n background: linear-gradient(to bottom right, #EF4765, #FF9A5A);\\n border: 0;\\n border-radius: 12px;\\n color: #FFFFFF;\\n cursor: pointer;\\n display: inline-block;\\n font-family: -apple-system,system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif;\\n font-size: 16px;\\n font-weight: 500;\\n line-height: 2.5;\\n outline: transparent;\\n padding: 0 1rem;\\n text-align: center;\\n text-decoration: none;\\n transition: box-shadow .2s ease-in-out;\\n user-select: none;\\n -webkit-user-select: none;\\n touch-action: manipulation;\\n white-space: nowrap;\\n}\\n\\n.button-62:not([disabled]):focus {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.button-62:not([disabled]):hover {\\n box-shadow: 0 0 .25rem rgba(0, 0, 0, 0.5), -.125rem -.125rem 1rem rgba(239, 71, 101, 0.5), .125rem .125rem 1rem rgba(255, 154, 90, 0.5);\\n}\\n\\n.aselector select {\\n background-color: initial;\\n border: none;\\n border-radius: 0;\\n box-shadow: none;\\n color: var(--jp-ui-font-color0);\\n display: block;\\n font-size: var(--jp-ui-font-size1);\\n height: 24px;\\n line-height: 14px;\\n padding: 0 25px 0 10px;\\n text-align: left;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n}\\n\\n/* Use our own theme for hover and option styles */\\n.aselector select:hover,\\n.aselector select > option {\\n background-color: var(--jp-layout-color2);\\n color: var(--jp-ui-font-color0);\\n}\\nselect {\\n box-sizing: border-box;\\n}\\n\\n.font{\\nbackground-color: initial;\\nborder: none;\\nheight: 21px;\\nborder-radius: 0;\\nfont-weight:500;\\ncolor: var(--jp-ui-font-color0);\\ndisplay: block;\\nline-height: 22.5px;\\npadding: 0 25px 0 10px;\\nfont-size: var(--jp-ui-font-size1);\\n}\\n.wrapper {\\n display: flex;\\n}\\n.f1ozlkqi {\\n pointer-events: none;\\n}\\n\\n.palybutton{\\n background-image: '/home2/longxin/Neural_Coder_EXT/style/icons8-circled-play.gif';\\n}\\n.loading{\\n \\n background-image: url(\\\"data:image/svg+xml,\\\");\\n background-size: contain; \\n}\\n\\n.dialog{\\nbody {\\n margin: 0;\\n height: 100vh;\\n width:600px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n overflow: hidden;\\n font-family: \\\"Poppins\\\", sans-serif;\\n background: #e3d0b6;\\n}\\n\\n#cookie-policy {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n width: 460px;\\n height: 600px;\\n background: #f3efe6;\\n border-radius: 12px;\\n transform: scale(.8);\\n}\\n\\n#cookie-wrapper {\\n height: 240px;\\n width: 240px;\\n margin: 30px 0;\\n position: relative;\\n left: -40px;\\n}\\n\\nh1 {\\n color: #6c3a1f;\\n text-align: center;\\n font-size: 36px;\\n margin: 0;\\n}\\n\\np {\\n color: #a28561;\\n font-size: 14px;\\n margin-top: 0;\\n padding: 0 60px;\\n text-align: center;\\n}\\na {\\n margin-top: 18px;\\n font-size: 14px;\\n color: #a28561;\\n text-decoration: none;\\n pointer-events: none;\\n}\\na:hover {\\n color: #846b4d;\\n}\\n\\nspan {\\n font-family: \\\"Amatic SC\\\", cursive;\\n font-weight: 400;\\n font-size: 20px;\\n position: relative;\\n top: -18px;\\n left: 3px;\\n color: #a28561; \\n}\\n\\n#heart-no, #thought-heart-yes, #mouth, #face-no, #thought-1, #thought-2, #thought-heart-na, #q-mark, #eyes, #leg-l, #leg-r {\\n opacity: 0;\\n}\\n}\\n.dia_button {\\n color: white;\\n background: #dd794a;\\n margin-top: 12px;\\n cursor: pointer;\\n font-size: 24px;\\n font-family: \\\"Poppins\\\", sans-serif;\\n border-radius: 9px;\\n border: none;\\n width: 72%;\\n padding: 12px 0;\\n transition: 150ms ease-out;\\n pointer-events: none;\\n}\\n\\n.dia_button:hover {\\n background: #d66029;\\n}\\n\\n.pad{\\n padding-left:6%\\n}\\n\\n:root {\\n /* Elevation\\n *\\n * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:\\n *\\n * https://github.com/material-components/material-components-web\\n * https://material-components-web.appspot.com/elevation.html\\n */\\n\\n --jp-shadow-base-lightness: 0;\\n --jp-shadow-umbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.2\\n );\\n --jp-shadow-penumbra-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.14\\n );\\n --jp-shadow-ambient-color: rgba(\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n var(--jp-shadow-base-lightness),\\n 0.12\\n );\\n --jp-elevation-z0: none;\\n --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),\\n 0px 1px 1px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 3px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),\\n 0px 2px 2px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 5px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),\\n 0px 4px 5px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 10px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),\\n 0px 6px 10px 0px var(--jp-shadow-penumbra-color),\\n 0px 1px 18px 0px var(--jp-shadow-ambient-color);\\n --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),\\n 0px 8px 10px 1px var(--jp-shadow-penumbra-color),\\n 0px 3px 14px 2px var(--jp-shadow-ambient-color);\\n --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),\\n 0px 12px 17px 2px var(--jp-shadow-penumbra-color),\\n 0px 5px 22px 4px var(--jp-shadow-ambient-color);\\n --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),\\n 0px 16px 24px 2px var(--jp-shadow-penumbra-color),\\n 0px 6px 30px 5px var(--jp-shadow-ambient-color);\\n --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),\\n 0px 20px 31px 3px var(--jp-shadow-penumbra-color),\\n 0px 8px 38px 7px var(--jp-shadow-ambient-color);\\n --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),\\n 0px 24px 38px 3px var(--jp-shadow-penumbra-color),\\n 0px 9px 46px 8px var(--jp-shadow-ambient-color);\\n\\n /* Borders\\n *\\n * The following variables, specify the visual styling of borders in JupyterLab.\\n */\\n\\n --jp-border-width: 1px;\\n --jp-border-color0: var(--md-grey-400);\\n --jp-border-color1: var(--md-grey-400);\\n --jp-border-color2: var(--md-grey-300);\\n --jp-border-color3: var(--md-grey-200);\\n --jp-inverse-border-color: var(--md-grey-600);\\n --jp-border-radius: 2px;\\n\\n /* UI Fonts\\n *\\n * The UI font CSS variables are used for the typography all of the JupyterLab\\n * user interface elements that are not directly user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-ui-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-ui-font-scale-factor: 1.2;\\n --jp-ui-font-size0: 0.83333em;\\n --jp-ui-font-size1: 13px; /* Base font size */\\n --jp-ui-font-size2: 1.2em;\\n --jp-ui-font-size3: 1.44em;\\n\\n --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,\\n Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';\\n\\n /*\\n * Use these font colors against the corresponding main layout colors.\\n * In a light theme, these go from dark to light.\\n */\\n\\n /* Defaults use Material Design specification */\\n --jp-ui-font-color0: rgba(0, 0, 0, 1);\\n --jp-ui-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-ui-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-ui-font-color3: rgba(0, 0, 0, 0.38);\\n\\n /*\\n * Use these against the brand/accent/warn/error colors.\\n * These will typically go from light to darker, in both a dark and light theme.\\n */\\n\\n --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);\\n --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);\\n --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);\\n\\n /* Content Fonts\\n *\\n * Content font variables are used for typography of user generated content.\\n *\\n * The font sizing here is done assuming that the body font size of --jp-content-font-size1\\n * is applied to a parent element. When children elements, such as headings, are sized\\n * in em all things will be computed relative to that body size.\\n */\\n\\n --jp-content-line-height: 1.6;\\n --jp-content-font-scale-factor: 1.2;\\n --jp-content-font-size0: 0.83333em;\\n --jp-content-font-size1: 14px; /* Base font size */\\n --jp-content-font-size2: 1.2em;\\n --jp-content-font-size3: 1.44em;\\n --jp-content-font-size4: 1.728em;\\n --jp-content-font-size5: 2.0736em;\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-content-presentation-font-size1: 17px;\\n\\n --jp-content-heading-line-height: 1;\\n --jp-content-heading-margin-top: 1.2em;\\n --jp-content-heading-margin-bottom: 0.8em;\\n --jp-content-heading-font-weight: 500;\\n\\n /* Defaults use Material Design specification */\\n --jp-content-font-color0: rgba(0, 0, 0, 1);\\n --jp-content-font-color1: rgba(0, 0, 0, 0.87);\\n --jp-content-font-color2: rgba(0, 0, 0, 0.54);\\n --jp-content-font-color3: rgba(0, 0, 0, 0.38);\\n\\n --jp-content-link-color: var(--md-blue-700);\\n\\n --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',\\n Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',\\n 'Segoe UI Symbol';\\n\\n /*\\n * Code Fonts\\n *\\n * Code font variables are used for typography of code and other monospaces content.\\n */\\n\\n --jp-code-font-size: 13px;\\n --jp-code-line-height: 1.3077; /* 17px for 13px base */\\n --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */\\n --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace;\\n --jp-code-font-family: var(--jp-code-font-family-default);\\n\\n /* This gives a magnification of about 125% in presentation mode over normal. */\\n --jp-code-presentation-font-size: 16px;\\n\\n /* may need to tweak cursor width if you change font size */\\n --jp-code-cursor-width0: 1.4px;\\n --jp-code-cursor-width1: 2px;\\n --jp-code-cursor-width2: 4px;\\n\\n /* Layout\\n *\\n * The following are the main layout colors use in JupyterLab. In a light\\n * theme these would go from light to dark.\\n */\\n\\n --jp-layout-color0: white;\\n --jp-layout-color1: white;\\n --jp-layout-color2: var(--md-grey-200);\\n --jp-layout-color3: var(--md-grey-400);\\n --jp-layout-color4: var(--md-grey-600);\\n\\n /* Inverse Layout\\n *\\n * The following are the inverse layout colors use in JupyterLab. In a light\\n * theme these would go from dark to light.\\n */\\n\\n --jp-inverse-layout-color0: #111111;\\n --jp-inverse-layout-color1: var(--md-grey-900);\\n --jp-inverse-layout-color2: var(--md-grey-800);\\n --jp-inverse-layout-color3: var(--md-grey-700);\\n --jp-inverse-layout-color4: var(--md-grey-600);\\n\\n /* Brand/accent */\\n\\n --jp-brand-color0: var(--md-blue-900);\\n --jp-brand-color1: var(--md-blue-700);\\n --jp-brand-color2: var(--md-blue-300);\\n --jp-brand-color3: var(--md-blue-100);\\n --jp-brand-color4: var(--md-blue-50);\\n\\n --jp-accent-color0: var(--md-green-900);\\n --jp-accent-color1: var(--md-green-700);\\n --jp-accent-color2: var(--md-green-300);\\n --jp-accent-color3: var(--md-green-100);\\n\\n /* State colors (warn, error, success, info) */\\n\\n --jp-warn-color0: var(--md-orange-900);\\n --jp-warn-color1: var(--md-orange-700);\\n --jp-warn-color2: var(--md-orange-300);\\n --jp-warn-color3: var(--md-orange-100);\\n\\n --jp-error-color0: var(--md-red-900);\\n --jp-error-color1: var(--md-red-700);\\n --jp-error-color2: var(--md-red-300);\\n --jp-error-color3: var(--md-red-100);\\n\\n --jp-success-color0: var(--md-green-900);\\n --jp-success-color1: var(--md-green-700);\\n --jp-success-color2: var(--md-green-300);\\n --jp-success-color3: var(--md-green-100);\\n\\n --jp-info-color0: var(--md-cyan-900);\\n --jp-info-color1: var(--md-cyan-700);\\n --jp-info-color2: var(--md-cyan-300);\\n --jp-info-color3: var(--md-cyan-100);\\n\\n /* Cell specific styles */\\n\\n --jp-cell-padding: 5px;\\n\\n --jp-cell-collapser-width: 8px;\\n --jp-cell-collapser-min-height: 20px;\\n --jp-cell-collapser-not-active-hover-opacity: 0.6;\\n\\n --jp-cell-editor-background: var(--md-grey-100);\\n --jp-cell-editor-border-color: var(--md-grey-300);\\n --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-cell-editor-active-background: var(--jp-layout-color0);\\n --jp-cell-editor-active-border-color: var(--jp-brand-color1);\\n\\n --jp-cell-prompt-width: 64px;\\n --jp-cell-prompt-font-family: var(--jp-code-font-family-default);\\n --jp-cell-prompt-letter-spacing: 0px;\\n --jp-cell-prompt-opacity: 1;\\n --jp-cell-prompt-not-active-opacity: 0.5;\\n --jp-cell-prompt-not-active-font-color: var(--md-grey-700);\\n /* A custom blend of MD grey and blue 600\\n * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */\\n --jp-cell-inprompt-font-color: #307fc1;\\n /* A custom blend of MD grey and orange 600\\n * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */\\n --jp-cell-outprompt-font-color: #bf5b3d;\\n\\n /* Notebook specific styles */\\n\\n --jp-notebook-padding: 10px;\\n --jp-notebook-select-background: var(--jp-layout-color1);\\n --jp-notebook-multiselected-color: var(--md-blue-50);\\n\\n /* The scroll padding is calculated to fill enough space at the bottom of the\\n notebook to show one single-line cell (with appropriate padding) at the top\\n when the notebook is scrolled all the way to the bottom. We also subtract one\\n pixel so that no scrollbar appears if we have just one single-line cell in the\\n notebook. This padding is to enable a 'scroll past end' feature in a notebook.\\n */\\n --jp-notebook-scroll-padding: calc(\\n 100% - var(--jp-code-font-size) * var(--jp-code-line-height) -\\n var(--jp-code-padding) - var(--jp-cell-padding) - 1px\\n );\\n\\n /* Rendermime styles */\\n\\n --jp-rendermime-error-background: #fdd;\\n --jp-rendermime-table-row-background: var(--md-grey-100);\\n --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);\\n\\n /* Dialog specific styles */\\n\\n --jp-dialog-background: rgba(0, 0, 0, 0.25);\\n\\n /* Console specific styles */\\n\\n --jp-console-padding: 10px;\\n\\n /* Toolbar specific styles */\\n\\n --jp-toolbar-border-color: var(--jp-border-color1);\\n --jp-toolbar-micro-height: 8px;\\n --jp-toolbar-background: var(--jp-layout-color1);\\n --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24);\\n --jp-toolbar-header-margin: 4px 4px 0px 4px;\\n --jp-toolbar-active-background: var(--md-grey-300);\\n\\n /* Statusbar specific styles */\\n\\n --jp-statusbar-height: 24px;\\n\\n /* Input field styles */\\n\\n --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);\\n --jp-input-active-background: var(--jp-layout-color1);\\n --jp-input-hover-background: var(--jp-layout-color1);\\n --jp-input-background: var(--md-grey-100);\\n --jp-input-border-color: var(--jp-inverse-border-color);\\n --jp-input-active-border-color: var(--jp-brand-color1);\\n --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);\\n\\n /* General editor styles */\\n\\n --jp-editor-selected-background: #d9d9d9;\\n --jp-editor-selected-focused-background: #d7d4f0;\\n --jp-editor-cursor-color: var(--jp-ui-font-color0);\\n\\n /* Code mirror specific styles */\\n\\n --jp-mirror-editor-keyword-color: #008000;\\n --jp-mirror-editor-atom-color: #88f;\\n --jp-mirror-editor-number-color: #080;\\n --jp-mirror-editor-def-color: #00f;\\n --jp-mirror-editor-variable-color: var(--md-grey-900);\\n --jp-mirror-editor-variable-2-color: #05a;\\n --jp-mirror-editor-variable-3-color: #085;\\n --jp-mirror-editor-punctuation-color: #05a;\\n --jp-mirror-editor-property-color: #05a;\\n --jp-mirror-editor-operator-color: #aa22ff;\\n --jp-mirror-editor-comment-color: #408080;\\n --jp-mirror-editor-string-color: #ba2121;\\n --jp-mirror-editor-string-2-color: #708;\\n --jp-mirror-editor-meta-color: #aa22ff;\\n --jp-mirror-editor-qualifier-color: #555;\\n --jp-mirror-editor-builtin-color: #008000;\\n --jp-mirror-editor-bracket-color: #997;\\n --jp-mirror-editor-tag-color: #170;\\n --jp-mirror-editor-attribute-color: #00c;\\n --jp-mirror-editor-header-color: blue;\\n --jp-mirror-editor-quote-color: #090;\\n --jp-mirror-editor-link-color: #00c;\\n --jp-mirror-editor-error-color: #f00;\\n --jp-mirror-editor-hr-color: #999;\\n\\n /* Vega extension styles */\\n\\n --jp-vega-background: white;\\n\\n /* Sidebar-related styles */\\n\\n --jp-sidebar-min-width: 250px;\\n\\n /* Search-related styles */\\n\\n --jp-search-toggle-off-opacity: 0.5;\\n --jp-search-toggle-hover-opacity: 0.8;\\n --jp-search-toggle-on-opacity: 1;\\n --jp-search-selected-match-background-color: rgb(245, 200, 0);\\n --jp-search-selected-match-color: black;\\n --jp-search-unselected-match-background-color: var(\\n --jp-inverse-layout-color0\\n );\\n --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);\\n\\n /* Icon colors that work well with light or dark backgrounds */\\n --jp-icon-contrast-color0: var(--md-purple-600);\\n --jp-icon-contrast-color1: var(--md-green-600);\\n --jp-icon-contrast-color2: var(--md-pink-600);\\n --jp-icon-contrast-color3: var(--md-blue-600);\\n}\\n\\n/*-----------------------------------------------------------------------------\\n| Copyright (c) Jupyter Development Team.\\n| Distributed under the terms of the Modified BSD License.\\n|----------------------------------------------------------------------------*/\\n\\n/* Set the default typography for monospace elements */\\ntt,\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: var(--jp-code-font-family);\\n font-size: var(--jp-code-font-size);\\n line-height: var(--jp-code-line-height);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../node_modules/css-loader/dist/cjs.js!./base.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import './base.css';\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js similarity index 98% rename from neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js rename to neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js index ec9eae89305..24cdc42bfee 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js @@ -1,5 +1,5 @@ "use strict"; -(self["webpackChunkneural-compressor-ext-lab"] = self["webpackChunkneural-compressor-ext-lab"] || []).push([["vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1"],{ +(self["webpackChunkneural_compressor_ext_lab"] = self["webpackChunkneural_compressor_ext_lab"] || []).push([["vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1"],{ /***/ "./node_modules/css-loader/dist/runtime/api.js": /*!*****************************************************!*\ @@ -400,4 +400,4 @@ module.exports = function (list, options) { /***/ }) }]); -//# sourceMappingURL=vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js.map \ No newline at end of file +//# sourceMappingURL=vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js.map \ No newline at end of file diff --git a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js.map b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js.map similarity index 97% rename from neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js.map rename to neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js.map index c345fa38a67..1ff363efb4a 100644 --- a/neural_coder/extensions/neural-compressor-ext-lab/neural-compressor-ext-lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js.map +++ b/neural_coder/extensions/neural_compressor_ext_lab/neural_compressor_ext_lab/labextension/static/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.de03554a230625d91110.js.map @@ -1 +1 @@ -{"version":3,"file":"vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_cssW-72eba1.e23251bcbb7e84631721.js","mappings":";;;;;;;;;AAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sBAAsB,iBAAiB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;ACjEa;;AAEb,kCAAkC;;AAElC,8BAA8B;;AAE9B,kDAAkD,gBAAgB,gEAAgE,wDAAwD,6DAA6D,sDAAsD;;AAE7S,uCAAuC,uDAAuD,uCAAuC,SAAS,OAAO,oBAAoB;;AAEzK,yCAAyC,8FAA8F,wBAAwB,eAAe,eAAe,gBAAgB,YAAY,MAAM,wBAAwB,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,mDAAmD,UAAU,sBAAsB;;AAEve,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;;;;;;;;ACnCa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,cAAc;;AAExG;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,yDAAyD;AACzD,IAAI;;AAEJ;;;AAGA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA","sources":["webpack://neural-compressor-ext-lab/./node_modules/css-loader/dist/runtime/api.js","webpack://neural-compressor-ext-lab/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://neural-compressor-ext-lab/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"],"sourcesContent":["\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of