Răsfoiți Sursa

Rewrites website

Henning Dieterichs 2 ani în urmă
părinte
comite
10577a0641
100 a modificat fișierele cu 1356 adăugiri și 18402 ștergeri
  1. 0 14
      .github/workflows/publish-website.sh
  2. 25 12
      .github/workflows/website.yml
  3. 1 0
      .gitignore
  4. 7 0
      .vscode/launch.json
  5. 53 0
      build/check-samples.ts
  6. 1 1
      build/release.ts
  7. 0 163
      build/website.ts
  8. 363 254
      package-lock.json
  9. 10 6
      package.json
  10. 2 1
      src/tsconfig.json
  11. 51 2
      website/.gitignore
  12. 6 0
      website/.prettierrc.json
  13. 0 302
      website/all.css
  14. BIN
      website/fork.png
  15. 0 229
      website/index.html
  16. 0 258
      website/index/index.css
  17. 0 174
      website/index/index.js
  18. 0 6806
      website/lib/bootstrap-cosmo.css
  19. 0 8
      website/lib/bootstrap-responsive.min.css
  20. 0 5
      website/lib/bootstrap.min.js
  21. 0 2
      website/lib/jquery-1.9.1.min.js
  22. 58 0
      website/package.json
  23. 0 108
      website/playground.html
  24. 0 8567
      website/playground/monaco.d.ts.txt
  25. 0 190
      website/playground/new-samples/all.js
  26. 0 8
      website/playground/new-samples/creating-the-diffeditor/hello-diff-world/sample.js
  27. 0 20
      website/playground/new-samples/creating-the-diffeditor/inline-diff-example/sample.js
  28. 0 17
      website/playground/new-samples/creating-the-diffeditor/multi-line-example/sample.js
  29. 0 150
      website/playground/new-samples/customizing-the-appearence/exposed-colors/sample.js
  30. 0 42
      website/playground/new-samples/extending-language-services/configure-json-defaults/sample.js
  31. 0 117
      website/playground/new-samples/extending-language-services/custom-languages/sample.js
  32. 0 166
      website/playground/new-samples/extending-language-services/semantic-tokens-provider-example/sample.js
  33. 0 36
      website/playground/new-samples/interacting-with-the-editor/adding-a-command-to-an-editor-instance/sample.js
  34. 0 25
      website/playground/new-samples/interacting-with-the-editor/customizing-the-line-numbers/sample.js
  35. 0 33
      website/playground/new-samples/interacting-with-the-editor/line-and-inline-decorations/sample.js
  36. 0 33
      website/playground/new-samples/interacting-with-the-editor/rendering-glyphs-in-the-margin/sample.js
  37. 0 91
      website/playground/playground-runner.html
  38. 0 59
      website/playground/playground.css
  39. 0 427
      website/playground/playground.js
  40. BIN
      website/playground/run.png
  41. 0 63
      website/playground/spinner.css
  42. 98 0
      website/src/monaco-loader.ts
  43. 49 0
      website/src/runner/index.ts
  44. 35 0
      website/src/runner/style.scss
  45. 21 0
      website/src/shared.ts
  46. 13 0
      website/src/types.d.ts
  47. 6 0
      website/src/website/bootstrap.scss
  48. 1 0
      website/src/website/code-oss.svg
  49. 75 0
      website/src/website/components/Nav.tsx
  50. 11 0
      website/src/website/components/Page.tsx
  51. 23 0
      website/src/website/components/Radio.tsx
  52. 75 0
      website/src/website/components/Select.tsx
  53. 21 0
      website/src/website/components/TextBox.tsx
  54. 32 0
      website/src/website/components/bootstrap.tsx
  55. 270 0
      website/src/website/components/monaco/MonacoEditor.tsx
  56. 38 0
      website/src/website/components/monaco/MonacoLoader.tsx
  57. 6 7
      website/src/website/data/diff-sample/modified.txt
  58. 5 6
      website/src/website/data/diff-sample/original.txt
  59. 0 0
      website/src/website/data/home-samples/sample.abap.txt
  60. 0 0
      website/src/website/data/home-samples/sample.aes.txt
  61. 0 0
      website/src/website/data/home-samples/sample.apex.txt
  62. 0 0
      website/src/website/data/home-samples/sample.azcli.txt
  63. 0 0
      website/src/website/data/home-samples/sample.bat.txt
  64. 0 0
      website/src/website/data/home-samples/sample.bicep.txt
  65. 0 0
      website/src/website/data/home-samples/sample.c.txt
  66. 0 0
      website/src/website/data/home-samples/sample.cameligo.txt
  67. 0 0
      website/src/website/data/home-samples/sample.clojure.txt
  68. 0 0
      website/src/website/data/home-samples/sample.coffeescript.txt
  69. 0 0
      website/src/website/data/home-samples/sample.cpp.txt
  70. 0 0
      website/src/website/data/home-samples/sample.csharp.txt
  71. 0 0
      website/src/website/data/home-samples/sample.csp.txt
  72. 0 0
      website/src/website/data/home-samples/sample.css.txt
  73. 0 0
      website/src/website/data/home-samples/sample.cypher.txt
  74. 0 0
      website/src/website/data/home-samples/sample.dart.txt
  75. 0 0
      website/src/website/data/home-samples/sample.dockerfile.txt
  76. 0 0
      website/src/website/data/home-samples/sample.ecl.txt
  77. 0 0
      website/src/website/data/home-samples/sample.elixir.txt
  78. 0 0
      website/src/website/data/home-samples/sample.flow9.txt
  79. 0 0
      website/src/website/data/home-samples/sample.freemarker2.tag-angle.interpolation-bracket.txt
  80. 0 0
      website/src/website/data/home-samples/sample.freemarker2.tag-angle.interpolation-dollar.txt
  81. 0 0
      website/src/website/data/home-samples/sample.freemarker2.tag-auto.interpolation-bracket.txt
  82. 0 0
      website/src/website/data/home-samples/sample.freemarker2.tag-auto.interpolation-dollar.txt
  83. 0 0
      website/src/website/data/home-samples/sample.freemarker2.tag-bracket.interpolation-bracket.txt
  84. 0 0
      website/src/website/data/home-samples/sample.freemarker2.tag-bracket.interpolation-dollar.txt
  85. 0 0
      website/src/website/data/home-samples/sample.freemarker2.txt
  86. 0 0
      website/src/website/data/home-samples/sample.fsharp.txt
  87. 0 0
      website/src/website/data/home-samples/sample.go.txt
  88. 0 0
      website/src/website/data/home-samples/sample.graphql.txt
  89. 0 0
      website/src/website/data/home-samples/sample.handlebars.txt
  90. 0 0
      website/src/website/data/home-samples/sample.hcl.txt
  91. 0 0
      website/src/website/data/home-samples/sample.html.txt
  92. 0 0
      website/src/website/data/home-samples/sample.ini.txt
  93. 0 0
      website/src/website/data/home-samples/sample.java.txt
  94. 0 0
      website/src/website/data/home-samples/sample.javascript.txt
  95. 0 0
      website/src/website/data/home-samples/sample.json.txt
  96. 0 0
      website/src/website/data/home-samples/sample.julia.txt
  97. 0 0
      website/src/website/data/home-samples/sample.kotlin.txt
  98. 0 0
      website/src/website/data/home-samples/sample.less.txt
  99. 0 0
      website/src/website/data/home-samples/sample.lex.txt
  100. 0 0
      website/src/website/data/home-samples/sample.lexon.txt

+ 0 - 14
.github/workflows/publish-website.sh

@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-COMMITTER_USER_NAME="$(git log --format='%an' -1)"
-COMMITTER_EMAIL="$(git log --format='%ae' -1)"
-
-cd ../monaco-editor-website
-git init
-git config user.name "${COMMITTER_USER_NAME}"
-git config user.email "${COMMITTER_EMAIL}"
-git remote add origin "https://x-access-token:${GITHUB_TOKEN}@github.com/microsoft/monaco-editor.git"
-git checkout -b gh-pages
-git add .
-git commit -m "Publish website"
-git push origin gh-pages --force

+ 25 - 12
.github/workflows/website.yml

@@ -2,8 +2,8 @@ name: Publish Website
 
 on:
   push:
-    branches:
-      - main
+    tags:
+      - 'v*'
   # enable users to manually trigger with workflow_dispatch
   workflow_dispatch: {}
 
@@ -12,9 +12,9 @@ jobs:
     name: Publish Website
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@dc323e67f16fb5f7663d20ff7941f27f5809e9b6 # pin@v2
 
-      - uses: actions/setup-node@v2
+      - uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561 # pin@v2
         with:
           node-version: 16
 
@@ -23,17 +23,30 @@ jobs:
         uses: actions/cache@v2
         with:
           path: '**/node_modules'
-          key: ${{ runner.os }}-cacheNodeModules-${{ hashFiles('**/package-lock.json') }}
-          restore-keys: ${{ runner.os }}-cacheNodeModules-
+          key: ${{ runner.os }}-cacheNodeModules2-${{ hashFiles('**/package-lock.json') }}
+          restore-keys: ${{ runner.os }}-cacheNodeModules2-
 
-      - name: Install node modules (1)
+      - name: execute `npm ci` (1)
         if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
         run: npm ci
 
+      - name: Build
+        run: npm run release
+
+      - name: Install website node modules
+        working-directory: website
+        run: yarn install --frozen-lockfile
+
+      - name: Install most recent version of monaco-editor
+        working-directory: website
+        run: yarn add monaco-editor
+
       - name: Build website
-        run: npm run build-website
+        working-directory: website
+        run: yarn run build
 
-      - name: Deploy to GitHub Pages
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        run: ./.github/workflows/publish-website.sh
+      - name: Upload website to github pages
+        uses: peaceiris/actions-gh-pages@bd8c6b06eba6b3d25d72b7a1767993c0aeee42e7 # pin@v3
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          publish_dir: ./website/dist

+ 1 - 0
.gitignore

@@ -6,3 +6,4 @@
 /test/smoke/vite/dist/**
 /test/smoke/parcel/dist/**
 /test/smoke/parcel/.cache/**
+**/dist/

+ 7 - 0
.vscode/launch.json

@@ -4,6 +4,13 @@
 	// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 	"version": "0.2.0",
 	"configurations": [
+		{
+			"name": "Launch Chrome",
+			"request": "launch",
+			"type": "chrome",
+			"url": "http://localhost:8081",
+			"webRoot": "${workspaceFolder}"
+		},
 		{
 			"type": "pwa-node",
 			"request": "launch",

+ 53 - 0
build/check-samples.ts

@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as fs from 'fs';
+import * as glob from 'glob';
+import * as path from 'path';
+import { REPO_ROOT } from './utils';
+
+checkEveryMonacoLanguageHasASample();
+
+function checkEveryMonacoLanguageHasASample() {
+	let languages = glob
+		.sync('src/basic-languages/*/*.contribution.ts', { cwd: REPO_ROOT })
+		.map((f) => path.dirname(f))
+		.map((f) => f.substring('src/basic-languages/'.length));
+	languages.push('css');
+	languages.push('html');
+	languages.push('json');
+	languages.push('typescript');
+
+	// some languages have a different id than their folder
+	languages = languages.map((l) => {
+		switch (l) {
+			case 'coffee':
+				return 'coffeescript';
+			case 'protobuf':
+				return 'proto';
+			case 'solidity':
+				return 'sol';
+			case 'sophia':
+				return 'aes';
+			default:
+				return l;
+		}
+	});
+
+	let fail = false;
+	for (const language of languages) {
+		const expectedSamplePath = path.join(
+			REPO_ROOT,
+			`website-v2/src/website/data/home-samples/sample.${language}.txt`
+		);
+		if (!fs.existsSync(expectedSamplePath)) {
+			console.error(`Missing sample for ${language} at ${expectedSamplePath}`);
+			fail = true;
+		}
+	}
+	if (fail) {
+		process.exit(1);
+	}
+}

+ 1 - 1
build/release.ts

@@ -324,7 +324,7 @@ function releaseDTS() {
 	writeFiles([monacodts, editorapidts], `release`);
 
 	fs.writeFileSync('website/playground/monaco.d.ts.txt', contents);
-	fs.writeFileSync('website/typedoc/monaco.d.ts', contents);
+	// fs.writeFileSync('website/typedoc/monaco.d.ts', contents);
 }
 
 /**

+ 0 - 163
build/website.ts

@@ -1,163 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import glob = require('glob');
-import path = require('path');
-import fs = require('fs');
-import cp = require('child_process');
-import CleanCSS from 'clean-css';
-import { REPO_ROOT, readFiles, writeFiles } from './utils';
-import { removeDir } from './fs';
-
-const MONACO_EDITOR_VERSION: string = (() => {
-	const output = cp.execSync(`npm show monaco-editor version`).toString();
-	const version = output.split(/\r\n|\r|\n/g)[0];
-	if (!/\d+\.\d+\.\d+/.test(version)) {
-		console.log('unrecognized package.json version: ' + version);
-		process.exit(1);
-	}
-	return version;
-})();
-
-removeDir(`../monaco-editor-website`);
-checkSamples();
-generateWebsite();
-
-/**
- * Check that there are samples for all available languages
- */
-function checkSamples() {
-	let languages = glob
-		.sync('src/basic-languages/*/*.contribution.ts', { cwd: REPO_ROOT })
-		.map((f) => path.dirname(f))
-		.map((f) => f.substring('src/basic-languages/'.length));
-	languages.push('css');
-	languages.push('html');
-	languages.push('json');
-	languages.push('typescript');
-
-	// some languages have a different id than their folder
-	languages = languages.map((l) => {
-		switch (l) {
-			case 'coffee':
-				return 'coffeescript';
-			case 'protobuf':
-				return 'proto';
-			case 'solidity':
-				return 'sol';
-			case 'sophia':
-				return 'aes';
-			default:
-				return l;
-		}
-	});
-
-	let fail = false;
-	for (const language of languages) {
-		const expectedSamplePath = path.join(REPO_ROOT, `website/index/samples/sample.${language}.txt`);
-		if (!fs.existsSync(expectedSamplePath)) {
-			console.error(`Missing sample for ${language} at ${expectedSamplePath}`);
-			fail = true;
-		}
-	}
-	if (fail) {
-		process.exit(1);
-	}
-}
-
-function replaceWithRelativeResource(
-	dataPath: string,
-	contents: string,
-	regex: RegExp,
-	callback: (match: string, fileContents: Buffer) => string
-): string {
-	return contents.replace(regex, function (_, m0) {
-		const filePath = path.join(REPO_ROOT, 'website', path.dirname(dataPath), m0);
-		return callback(m0, fs.readFileSync(filePath));
-	});
-}
-
-function generateWebsite() {
-	const files = readFiles('website/**/*', {
-		base: 'website',
-		ignore: ['website/typedoc/**/*'],
-		dot: true
-	});
-
-	for (const file of files) {
-		if (!file.contents || !/\.(html)$/.test(file.path) || /new-samples/.test(file.path)) {
-			continue;
-		}
-
-		let contents = file.contents.toString();
-		contents = contents.replace(/\.\.\/release\/dev/g, 'node_modules/monaco-editor/min');
-		// contents = contents.replace(/\.\.\/\.\.\/release\/dev/g, '../monaco-editor/release/dev');
-		contents = contents.replace(/{{version}}/g, MONACO_EDITOR_VERSION);
-		contents = contents.replace(/{{year}}/g, String(new Date().getFullYear()));
-
-		// Preload xhr contents
-		contents = replaceWithRelativeResource(
-			file.path,
-			contents,
-			/<pre data-preload="([^"]+)".*/g,
-			function (m0, fileContents) {
-				return (
-					'<pre data-preload="' +
-					m0 +
-					'" style="display:none">' +
-					fileContents
-						.toString('utf8')
-						.replace(/&/g, '&amp;')
-						.replace(/</g, '&lt;')
-						.replace(/>/g, '&gt;') +
-					'</pre>'
-				);
-			}
-		);
-
-		// Inline fork.png
-		contents = replaceWithRelativeResource(
-			file.path,
-			contents,
-			/src="(\.\/fork.png)"/g,
-			function (m0, fileContents) {
-				return 'src="data:image/png;base64,' + fileContents.toString('base64') + '"';
-			}
-		);
-
-		// let allCSS = '';
-		contents = replaceWithRelativeResource(
-			file.path,
-			contents,
-			/<link data-inline="yes-please" href="([^"]+)".*/g,
-			function (m0, fileContents) {
-				const minifiedCSS = (new CleanCSS() as any).minify(fileContents.toString('utf8')).styles;
-				return `<style>${minifiedCSS}</style>`;
-			}
-		);
-
-		// Inline javascript
-		contents = replaceWithRelativeResource(
-			file.path,
-			contents,
-			/<script data-inline="yes-please" src="([^"]+)".*/g,
-			function (m0, fileContents) {
-				return '<script>' + fileContents.toString('utf8') + '</script>';
-			}
-		);
-
-		file.contents = Buffer.from(contents.split(/\r\n|\r|\n/).join('\n'));
-	}
-
-	writeFiles(files, `../monaco-editor-website`);
-
-	// temporarily create package.json so that npm install doesn't bark
-	fs.writeFileSync(path.join(REPO_ROOT, '../monaco-editor-website/package.json'), '{}');
-	fs.writeFileSync(path.join(REPO_ROOT, '../monaco-editor-website/.nojekyll'), '');
-	cp.execSync('npm install monaco-editor', {
-		cwd: path.join(REPO_ROOT, '../monaco-editor-website')
-	});
-	fs.unlinkSync(path.join(REPO_ROOT, '../monaco-editor-website/package.json'));
-}

Fișier diff suprimat deoarece este prea mare
+ 363 - 254
package-lock.json


+ 10 - 6
package.json

@@ -8,7 +8,6 @@
 	"author": "Microsoft Corporation",
 	"license": "MIT",
 	"scripts": {
-		"build-website": "ts-node ./build/website && npm run typedoc",
 		"import-typescript": "ts-node ./build/importTypescript",
 		"playwright-install": "node ./node_modules/playwright/install.js",
 		"playwright-install-deps": "playwright install-deps",
@@ -24,11 +23,11 @@
 		"package-for-smoketest-vite": "ts-node ./test/smoke/package-vite",
 		"smoketest": "node ./test/smoke/runner.js",
 		"smoketest-debug": "node ./test/smoke/runner.js --debug-tests",
-		"test": "mocha test/unit/all.js",
+		"test": "mocha test/unit/all.js && ts-node ./build/check-samples",
 		"deps-all-remove": "ts-node ./build/npm/removeAll",
 		"deps-all-install": "ts-node ./build/npm/installAll",
-		"typedoc": "cd website/typedoc && \"../../node_modules/.bin/typedoc\" --options ./typedoc.json",
-		"watch": "tsc -w -p ./src"
+		"watch": "tsc -w -p ./src",
+		"update-actions": "pin-github-action ./.github/workflows/website.yml"
 	},
 	"typings": "./esm/vs/editor/editor.api.d.ts",
 	"module": "./esm/vs/editor/editor.main.js",
@@ -59,8 +58,8 @@
 		"style-loader": "^3.3.1",
 		"terser": "^5.14.2",
 		"ts-node": "^10.6.0",
-		"typedoc": "^0.22.11",
-		"typescript": "4.5.5",
+		"typedoc": "^0.23.10",
+		"typescript": "^4.7.4",
 		"vite": "^3.1.8",
 		"vscode-css-languageservice": "5.4.1",
 		"vscode-html-languageservice": "4.2.4",
@@ -74,5 +73,10 @@
 	"alias": {
 		"process": false,
 		"buffer": false
+	},
+	"dependencies": {
+		"@types/shelljs": "^0.8.11",
+		"pin-github-action": "^1.8.0",
+		"shelljs": "^0.8.5"
 	}
 }

+ 2 - 1
src/tsconfig.json

@@ -6,6 +6,7 @@
 		"moduleResolution": "node",
 		"outDir": "../out/amd",
 		"strict": true,
-		"target": "es5"
+		"target": "es5",
+		"sourceMap": true
 	}
 }

+ 51 - 2
website/.gitignore

@@ -1,2 +1,51 @@
-node_modules/monaco-editor/dev
-node_modules/monaco-editor/esm
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules
+jspm_packages
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
+
+dist
+api
+
+dist/
+
+.npmrc
+
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.js

+ 6 - 0
website/.prettierrc.json

@@ -0,0 +1,6 @@
+{
+	"trailingComma": "es5",
+	"tabWidth": 4,
+	"semi": true,
+	"useTabs": true
+}

+ 0 - 302
website/all.css

@@ -1,302 +0,0 @@
-body {
-	padding: 54px 0 40px 0;
-	overflow-y: scroll;
-}
-
-body.home {
-	padding-top: 0;
-}
-
-body,
-input,
-button,
-select,
-textarea,
-.navbar-search .search-query {
-	font: 400 14px/1.4em 'Segoe UI', 'Open Sans', Calibri, Candara, Arial, sans-serif;
-}
-
-.navbar .nav {
-	float: left;
-	margin-right: 0;
-}
-
-a {
-	color: #0066cc;
-	cursor: pointer;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-	letter-spacing: -0.01em;
-	margin: 0;
-	line-height: normal;
-}
-
-/***** Bootstrap Cosmo Overrides *****/
-h1,
-h2 {
-	font-family: 'Segoe UI Light', 'Segoe UI', 'Open Sans', Calibri, Candara, Arial, sans-serif;
-	font-weight: 300;
-}
-h1 {
-	font-size: 72px;
-	letter-spacing: -0.02em;
-}
-
-.hero-unit h1 {
-	font-size: 48px;
-}
-
-h2 {
-	font-size: 26px;
-}
-
-h3 {
-	font-size: 26px;
-}
-
-h4 {
-	font-size: 16px;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-	color: #999;
-}
-
-.alert-heading,
-.alert h1,
-.alert h2,
-.alert h3,
-.alert h4,
-.alert h5,
-.alert h6 {
-	color: inherit;
-}
-
-.alert-info {
-	color: #3a87ad;
-	background-color: #d9edf7;
-}
-
-.navbar-inverse .navbar-inner {
-	background-color: #68217a;
-	-webkit-filter: none;
-	filter: none;
-}
-
-.navbar-inverse.home .navbar-inner {
-	background-color: transparent;
-}
-
-.navbar-inverse .btn-navbar {
-	background: transparent;
-	margin-top: 14px;
-}
-
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-	background: #442359;
-}
-
-.btn-primary {
-	background-color: #0072c6;
-}
-
-.home .hero-unit {
-	margin-top: -54px;
-	position: relative;
-	z-index: 100;
-}
-
-.hero-unit {
-	font-weight: normal;
-}
-
-.hero-unit h1 {
-	margin: 0 0 6px;
-}
-
-.nav-tabs > li > a {
-	color: #999;
-}
-
-.nav-tabs > li > a:hover {
-	color: #555;
-}
-
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-	color: #0072c6;
-}
-
-/***** General *****/
-
-body > section > .container {
-	padding-top: 12px;
-}
-
-.masthead {
-	background-color: #0072c6;
-	color: white;
-}
-
-.masthead .hero-unit {
-	padding: 30px 0 0;
-	background: none;
-}
-
-.navbar.home {
-	position: relative;
-	z-index: 500;
-}
-
-.navbar .nav > li > a {
-	text-shadow: none;
-	padding-top: 18px;
-	font-size: 14px;
-	text-transform: uppercase;
-}
-
-.navbar-inverse .nav-collapse .nav > li > a {
-	color: white;
-	padding-left: 0;
-}
-
-.navbar-inverse .nav > li > a.nav-item:focus,
-.navbar-inverse .nav > li > a.nav-item:hover {
-	background-color: rgba(0, 0, 0, 0.12);
-}
-
-.navbar-inverse .nav .active > a.nav-item,
-.navbar-inverse .nav .active > a.nav-item:hover,
-.navbar-inverse .nav .active > a.nav-item:focus {
-	color: #fff;
-	background-color: rgba(0, 0, 0, 0.24);
-	-webkit-box-shadow: none;
-	box-shadow: none;
-}
-
-.navbar .logo {
-	/*background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIxIDBsLTExIDEyLTcuMzMzLTUuNjY2LTIuNjY3IDEuNjgydjEzLjk4NGwyLjY2NyAxLjY2NiA3LjMzMy01LjY2NiAxMSAxMSA3LTN2LTIyLjMzM2wtNy0zLjY2N3ptLTE4IDE5di05bDQgNS00IDR6bTExLTRsNy02djEybC03LTZ6Ii8+PC9zdmc+") left center no-repeat;*/
-	/*padding: 16px 12px 0 34px;*/
-	padding: 16px 12px 0 0px;
-	height: 35px;
-	display: block;
-	float: left;
-}
-
-.navbar .logo a {
-	color: #fff;
-	font-size: 24px;
-	letter-spacing: -1px;
-}
-
-.navbar-fixed-top {
-	z-index: 500;
-}
-
-.flgroup:after {
-	content: '';
-	display: block;
-	visibility: hidden;
-	height: 0;
-	clear: both;
-}
-
-/* Controls */
-
-/* Media Queries */
-@media (min-width: 1200px) {
-	h1,
-	h2 {
-		letter-spacing: -0.04em;
-	}
-
-	.hero-unit h1 {
-		font-size: 72px;
-	}
-
-	h2 {
-		font-size: 36px;
-	}
-}
-
-#gh-link {
-	display: none;
-	position: fixed;
-	top: 0;
-	right: 0;
-	border: 0;
-	margin: 0;
-	z-index: 1000;
-}
-@media (min-width: 980px) {
-	#gh-link {
-		display: block;
-	}
-}
-
-@media (min-width: 980px) {
-	.navbar .nav {
-		float: right;
-	}
-
-	.navbar-inverse .nav-collapse .nav > li > a {
-		padding-left: 15px;
-	}
-}
-
-@media (min-width: 768px) and (max-width: 979px) {
-	h1 {
-		letter-spacing: -0.02em;
-	}
-}
-
-@media (max-width: 979px) {
-	body {
-		padding: inherit;
-	}
-
-	.navbar-fixed-top,
-	.navbar-fixed-bottom,
-	.navbar-static-top {
-		margin-right: inherit;
-		margin-left: inherit;
-		margin-bottom: 0;
-	}
-
-	.navbar-fixed-top .navbar-inner {
-		padding: 0 20px;
-	}
-
-	.navbar .container {
-		width: 724px;
-	}
-}
-
-@media (max-width: 767px) {
-	.navbar .container {
-		width: 100%;
-	}
-}
-
-@media (max-width: 480px) {
-	.navbar .logo a {
-		display: none;
-	}
-}

BIN
website/fork.png


+ 0 - 229
website/index.html

@@ -1,229 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-		<meta name="viewport" content="width=device-width" />
-
-		<title>Monaco Editor</title>
-
-		<link data-inline="yes-please" href="./lib/bootstrap-cosmo.css" rel="stylesheet" />
-		<link data-inline="yes-please" href="./lib/bootstrap-responsive.min.css" rel="stylesheet" />
-		<link data-inline="yes-please" href="./all.css" rel="stylesheet" />
-		<link data-inline="yes-please" href="./index/index.css" rel="stylesheet" />
-
-		<link
-			data-name="vs/editor/editor.main"
-			rel="stylesheet"
-			href="../release/dev/vs/editor/editor.main.css"
-		/>
-	</head>
-
-	<body>
-		<pre data-preload="index/samples/sample.typescript.txt"></pre>
-		<pre data-preload="index/samples/diff.lhs.txt"></pre>
-		<pre data-preload="index/samples/diff.rhs.txt"></pre>
-		<a id="gh-link" href="https://github.com/microsoft/monaco-editor"
-			><img width="149" height="149" alt="Fork me on GitHub" src="./fork.png"
-		/></a>
-		<nav class="navbar navbar-inverse navbar-fixed-top">
-			<div class="navbar-inner">
-				<div class="container">
-					<div class="logo">
-						<a href="index.html">Monaco Editor</a>
-					</div>
-					<!-- collapse button for smaller screens -->
-					<button
-						type="button"
-						class="btn btn-navbar"
-						data-toggle="collapse"
-						data-target=".nav-collapse"
-					>
-						<span class="icon-bar"></span>
-						<span class="icon-bar"></span>
-						<span class="icon-bar"></span>
-					</button>
-
-					<!-- navbar title -->
-					<div class="nav-collapse collapse">
-						<ul class="nav">
-							<li><a class="nav-item" href="index.html">Home</a></li>
-							<li><a class="nav-item" href="api/index.html">API Doc</a></li>
-							<li><a class="nav-item" href="playground.html">Playground</a></li>
-							<li><a class="nav-item" href="monarch.html">Monarch</a></li>
-							<li>
-								<a
-									class="nav-item"
-									target="_blank"
-									href="https://registry.npmjs.org/monaco-editor/-/monaco-editor-{{version}}.tgz"
-									>Download {{version}}</a
-								>
-							</li>
-						</ul>
-					</div>
-				</div>
-			</div>
-		</nav>
-		<section class="try">
-			<div class="container">
-				<h3>About</h3>
-				<div class="row">
-					<div class="span12">
-						<br />
-						<p>
-							The Monaco Editor is the code editor that powers
-							<a href="https://github.com/microsoft/vscode">VS Code</a>. A good page describing the
-							code editor's features is
-							<a href="https://code.visualstudio.com/docs/editor/editingevolved">here</a>.
-						</p>
-
-						<p>
-							It is licensed under the MIT License and supports Edge, Chrome, Firefox, Safari and
-							Opera.
-						</p>
-
-						<p>
-							The Monaco editor is
-							<span style="font-weight: bold; color: #ff5722">not</span>
-							supported in mobile browsers or mobile web frameworks.
-						</p>
-
-						<p>
-							Find more information at the
-							<a href="https://github.com/microsoft/monaco-editor">Monaco Editor repo</a>.
-						</p>
-					</div>
-				</div>
-				<hr />
-				<h3>Download v{{version}}</h3>
-				<div class="row">
-					<div class="span12">
-						<br />
-						<p>The latest released version is <strong>{{version}}</strong>.</p>
-						<p>
-							Download with this direct
-							<a
-								target="_blank"
-								href="https://registry.npmjs.org/monaco-editor/-/monaco-editor-{{version}}.tgz"
-								>download link</a
-							>
-							or
-							<a href="https://www.npmjs.com/package/monaco-editor">from npm</a>:
-						</p>
-						<pre style="color: black">npm install monaco-editor@{{version}}</pre>
-					</div>
-				</div>
-				<hr />
-				<h3>Editor</h3>
-				<div class="editor row">
-					<div class="span3">
-						<h4
-							title="Syntax colorization plus support for errors, warnings, IntelliSense, formatting and outlining"
-						>
-							Rich IntelliSense, Validation
-						</h4>
-						<p>TypeScript, JavaScript, CSS, LESS, SCSS, JSON, HTML</p>
-						<br />
-						<h4 title="Syntax colorization">Basic Syntax Colorization</h4>
-						<p>
-							XML, PHP, C#, C++, Razor, Markdown, Diff, Java, VB, CoffeeScript, Handlebars, Batch,
-							Pug, F#, Lua, Powershell, Python, Ruby, SASS, R, Objective-C
-						</p>
-						<br />
-						<p>
-							Colorizers are implemented using
-							<a href="monarch.html" target="_blank">Monarch</a>.
-						</p>
-					</div>
-					<div class="span9">
-						<div class="row">
-							<div class="span4">
-								<label class="control-label">Language</label>
-								<select class="language-picker"></select>
-							</div>
-							<div class="span4">
-								<label class="control-label">Theme</label>
-								<select class="theme-picker">
-									<option>Visual Studio</option>
-									<option>Visual Studio Dark</option>
-									<option>High Contrast Dark</option>
-								</select>
-							</div>
-						</div>
-						<div class="editor-frame">
-							<div class="loading editor" style="display: none">
-								<div class="progress progress-striped active">
-									<div class="bar"></div>
-								</div>
-							</div>
-							<div id="editor"></div>
-						</div>
-					</div>
-				</div>
-				<hr />
-				<h3>Diff Editor</h3>
-				<div class="editor row">
-					<div class="span3">
-						<h4 title="As you type diffing for all supported languages">
-							Side by side live comparison
-						</h4>
-						<p>Supports all languages out of the box</p>
-					</div>
-					<div class="span9">
-						<div class="row">
-							<div class="span8">
-								<div class="checkbox">
-									<label class="control-label">
-										<input id="inline-diff-checkbox" type="checkbox" value="" />
-										Inline diff
-									</label>
-								</div>
-							</div>
-						</div>
-						<div class="editor-frame">
-							<div class="loading diff-editor" style="display: none">
-								<div class="progress progress-striped active">
-									<div class="bar"></div>
-								</div>
-							</div>
-							<div id="diff-editor"></div>
-						</div>
-					</div>
-				</div>
-			</div>
-		</section>
-
-		<footer class="container">
-			<hr />
-			<p class="text-center">
-				<a href="https://microsoft.com" title="Microsoft">
-					<img
-						src="https://opensource.microsoft.com/assets/images/Microsoft_logo.svg"
-						alt="Microsoft"
-						style="max-height: 23px; margin-bottom: 12px"
-					/>
-				</a>
-				<br />
-				<small>&copy; {{year}} Microsoft</small>
-			</p>
-		</footer>
-
-		<script
-			src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"
-			integrity="sha256-wS9gmOZBqsqWxgIVgA8Y9WcQOa7PgSIX+rPA0VL2rbQ="
-			crossorigin="anonymous"
-		></script>
-		<script
-			src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.0/bootstrap.min.js"
-			integrity="sha256-u+l2mGjpmGK/mFgUncmMcFKdMijvV+J3odlDJZSNUu8="
-			crossorigin="anonymous"
-		></script>
-
-		<script>
-			var require = { paths: { vs: '../release/dev/vs' } };
-		</script>
-		<script src="../release/dev/vs/loader.js"></script>
-		<script src="../release/dev/vs/editor/editor.main.nls.js"></script>
-		<script src="../release/dev/vs/editor/editor.main.js"></script>
-		<script data-inline="yes-please" src="./index/index.js"></script>
-	</body>
-</html>

+ 0 - 258
website/index/index.css

@@ -1,258 +0,0 @@
-.try .drops {
-	margin: 0;
-	list-style: none;
-	float: right;
-}
-
-.try .drops li {
-	float: left;
-	width: auto;
-	height: auto;
-	text-indent: 0;
-	font-size: 26px;
-	line-height: normal;
-	margin: 0 12px;
-	cursor: pointer;
-}
-
-.try .drops li a:hover,
-.try .drops li a:focus {
-	text-decoration: none;
-}
-
-.try .drops li h4 {
-	color: #999;
-}
-
-.try .drops li.active h4,
-.try .drops li.active:hover h4 {
-	color: #0072c6;
-}
-
-.try .drops li:hover h4 {
-	color: rgba(0, 114, 198, 0.5);
-}
-
-.try .editor.row {
-	padding: 18px 0;
-}
-
-.try .row h4 {
-	padding-bottom: 6px;
-}
-
-.try .tile {
-	position: relative;
-	height: 72px;
-	border: 1px solid #ddd;
-	text-align: right;
-	overflow: hidden;
-	cursor: pointer;
-
-	-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-	-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-
-	-webkit-box-sizing: border-box;
-	-o-box-sizing: border-box;
-	-moz-box-sizing: border-box;
-	-ms-box-sizing: border-box;
-	box-sizing: border-box;
-}
-
-.try .tile:hover {
-	-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-	-moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-}
-
-.try .tile h4 {
-	margin: 0;
-	position: absolute;
-	right: 12px;
-	bottom: 12px;
-	z-index: 1;
-}
-
-.try .tile .glyph {
-	position: absolute;
-	left: 12px;
-	bottom: -6px;
-	background: url('../img/cloud.png') no-repeat;
-	background-size: 80px 43px;
-	height: 43px;
-	width: 80px;
-
-	opacity: 0.5;
-	transition: opacity 0.5s ease, bottom 0.5s ease;
-	-webkit-transition: opacity 0.5s ease, bottom 0.5s ease;
-}
-
-.try .tile:hover .glyph {
-	opacity: 1;
-	bottom: -2px;
-}
-
-.try .editor.row h4 small {
-	color: #555;
-}
-
-.try .editor.row .control-label {
-	display: inline-block;
-	position: relative;
-	top: -4px;
-	margin-right: 4px;
-}
-
-.try .editor.row .monaco-editor .find-widget input[type='text'] {
-	margin-bottom: 0;
-	-webkit-box-shadow: none;
-	-moz-box-shadow: none;
-	box-shadow: none;
-	-webkit-transition: none;
-	-moz-transition: none;
-	-o-transition: none;
-	transition: none;
-}
-
-.try .editor.row .monaco-editor .find-widget .monaco-checkbox .label {
-	min-height: 20px;
-	min-width: 20px;
-}
-
-.try .editor.row .monaco-editor .find-widget .close {
-	float: none;
-	opacity: 1;
-}
-
-.try .editor .editor-frame {
-	position: relative;
-}
-
-.try .editor .editor-frame #editor,
-.try .editor .editor-frame #diff-editor {
-	height: 400px;
-	margin-bottom: 10px;
-	border: 1px solid #eee;
-}
-
-.try .editor .editor-frame .loading {
-	position: absolute;
-	height: 100%;
-	width: 100%;
-	background-color: rgba(255, 255, 255, 0.5);
-	margin: 0 auto;
-	display: none;
-	z-index: 100;
-}
-
-.try .editor .editor-frame .progress {
-	width: 50%;
-	margin: 15% auto 0;
-}
-
-.try .editor .editor-frame .progress .bar {
-	width: 100%;
-	background-color: #4bb1cf;
-}
-
-.try .editor .editor-frame #editor .alert,
-.try .editor .editor-frame #diff-editor .alert {
-	margin: 18% auto 0;
-	width: 30%;
-	text-align: center;
-	color: #b94a48;
-	background-color: #f2dede;
-	border-color: #eed3d7;
-}
-
-.try .editor #editor .monaco-editor .row,
-.try .editor #diff-editor .monaco-editor .row {
-	margin-left: 0;
-}
-
-.try .editor .vs.monaco-editor .context-view.monaco-menu-container a {
-	color: #646465;
-}
-
-.try .editor .vs-dark.monaco-editor .context-view.monaco-menu-container a {
-	color: #bbb;
-}
-
-@media (min-width: 1200px) {
-	.try .editor .row {
-		margin-left: 0px;
-	}
-}
-
-@media (max-width: 767px) {
-	.try .container {
-		margin: 0 24px;
-	}
-
-	.try .tile h4 {
-		right: 6px;
-	}
-
-	.try .editor > .span9 .row .span4 {
-		float: left;
-		width: 50%;
-	}
-
-	.try .editor h4 {
-		margin-top: 0;
-	}
-}
-
-@media (max-width: 520px) {
-	.try .editor > .span3 p,
-	.try .editor > .span3 h4 {
-		display: none;
-	}
-}
-
-@media (max-width: 320px) {
-	.try .editor > .span9 {
-		display: none;
-	}
-}
-
-/* ------- BEGIN bootstrap fixes for the editor ------- */
-
-.monaco-editor .container:before,
-.monaco-editor .row:before {
-	content: '';
-	display: inherit;
-}
-
-.monaco-editor .container:after,
-.monaco-editor .row:after {
-	clear: inherit;
-}
-
-.monaco-editor .container {
-	width: auto;
-	margin: inherit;
-	padding: inherit;
-}
-
-.monaco-editor .close {
-	float: none;
-	font-size: inherit;
-	font-weight: inherit;
-	line-height: inherit;
-	color: inherit;
-	text-shadow: inherit;
-	opacity: inherit;
-	filter: inherit;
-}
-
-.monaco-editor .row {
-	margin: inherit;
-}
-
-.monaco-editor .invisible {
-	visibility: visible;
-}
-
-/* ------- END bootstrap fixes for the editor ------- */

+ 0 - 174
website/index/index.js

@@ -1,174 +0,0 @@
-/// <reference path="../../release/monaco.d.ts" />
-
-'use strict';
-
-var editor = null,
-	diffEditor = null;
-
-$(document).ready(function () {
-	require(['vs/editor/editor.main'], function () {
-		var MODES = (function () {
-			var modesIds = monaco.languages.getLanguages().map(function (lang) {
-				return lang.id;
-			});
-			modesIds.sort();
-
-			return modesIds.map(function (modeId) {
-				return {
-					modeId: modeId,
-					sampleURL: 'index/samples/sample.' + modeId + '.txt'
-				};
-			});
-		})();
-
-		var startModeIndex = 0;
-		for (var i = 0; i < MODES.length; i++) {
-			var o = document.createElement('option');
-			o.textContent = MODES[i].modeId;
-			if (MODES[i].modeId === 'typescript') {
-				startModeIndex = i;
-			}
-			$('.language-picker').append(o);
-		}
-		$('.language-picker')[0].selectedIndex = startModeIndex;
-		loadSample(MODES[startModeIndex]);
-		$('.language-picker').change(function () {
-			loadSample(MODES[this.selectedIndex]);
-		});
-
-		$('.theme-picker').change(function () {
-			changeTheme(this.selectedIndex);
-		});
-
-		loadDiffSample();
-
-		$('#inline-diff-checkbox').change(function () {
-			diffEditor.updateOptions({
-				renderSideBySide: !$(this).is(':checked')
-			});
-		});
-	});
-
-	window.onresize = function () {
-		if (editor) {
-			editor.layout();
-		}
-		if (diffEditor) {
-			diffEditor.layout();
-		}
-	};
-});
-
-var preloaded = {};
-(function () {
-	var elements = Array.prototype.slice.call(document.querySelectorAll('pre[data-preload]'), 0);
-
-	elements.forEach(function (el) {
-		var path = el.getAttribute('data-preload');
-		preloaded[path] = el.innerText || el.textContent;
-		el.parentNode.removeChild(el);
-	});
-})();
-
-function xhr(url, cb) {
-	if (preloaded[url]) {
-		return cb(null, preloaded[url]);
-	}
-	$.ajax({
-		type: 'GET',
-		url: url,
-		dataType: 'text',
-		error: function () {
-			cb(this, null);
-		}
-	}).done(function (data) {
-		cb(null, data);
-	});
-}
-
-function loadSample(mode) {
-	$('.loading.editor').show();
-	xhr(mode.sampleURL, function (err, data) {
-		if (err) {
-			if (editor) {
-				if (editor.getModel()) {
-					editor.getModel().dispose();
-				}
-				editor.dispose();
-				editor = null;
-			}
-			$('.loading.editor').fadeOut({ duration: 200 });
-			$('#editor').empty();
-			$('#editor').append(
-				'<p class="alert alert-error">Failed to load ' + mode.modeId + ' sample</p>'
-			);
-			return;
-		}
-
-		if (!editor) {
-			$('#editor').empty();
-			editor = monaco.editor.create(document.getElementById('editor'), {
-				model: null
-			});
-		}
-
-		var oldModel = editor.getModel();
-		var newModel = monaco.editor.createModel(data, mode.modeId);
-		editor.setModel(newModel);
-		if (oldModel) {
-			oldModel.dispose();
-		}
-		$('.loading.editor').fadeOut({ duration: 300 });
-	});
-}
-
-function loadDiffSample() {
-	var onError = function () {
-		$('.loading.diff-editor').fadeOut({ duration: 200 });
-		$('#diff-editor').append('<p class="alert alert-error">Failed to load diff editor sample</p>');
-	};
-
-	$('.loading.diff-editor').show();
-
-	var lhsData = null,
-		rhsData = null,
-		jsMode = null;
-
-	xhr('index/samples/diff.lhs.txt', function (err, data) {
-		if (err) {
-			return onError();
-		}
-		lhsData = data;
-		onProgress();
-	});
-	xhr('index/samples/diff.rhs.txt', function (err, data) {
-		if (err) {
-			return onError();
-		}
-		rhsData = data;
-		onProgress();
-	});
-
-	function onProgress() {
-		if (lhsData && rhsData) {
-			diffEditor = monaco.editor.createDiffEditor(document.getElementById('diff-editor'), {
-				enableSplitViewResizing: false
-			});
-
-			var lhsModel = monaco.editor.createModel(lhsData, 'text/javascript');
-			var rhsModel = monaco.editor.createModel(rhsData, 'text/javascript');
-
-			diffEditor.setModel({
-				original: lhsModel,
-				modified: rhsModel
-			});
-
-			$('.loading.diff-editor').fadeOut({ duration: 300 });
-		}
-	}
-}
-
-function changeTheme(theme) {
-	var newTheme = theme === 1 ? 'vs-dark' : theme === 0 ? 'vs' : 'hc-black';
-	monaco.editor.setTheme(newTheme);
-}

+ 0 - 6806
website/lib/bootstrap-cosmo.css

@@ -1,6806 +0,0 @@
-/*!
- * Bootstrap v2.3.0
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-
-.clearfix {
-  *zoom: 1;
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-
-audio:not([controls]) {
-  display: none;
-}
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-a:hover,
-a:active {
-  outline: 0;
-}
-
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-
-sup {
-  top: -0.5em;
-}
-
-sub {
-  bottom: -0.25em;
-}
-
-img {
-  width: auto\9;
-  height: auto;
-  max-width: 100%;
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-
-@media print {
-  * {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-
-body {
-  margin: 0;
-  line-height: 20px;
-  color: #555555;
-  background-color: #ffffff;
-}
-
-a {
-  color: #007fff;
-  text-decoration: none;
-}
-
-a:hover,
-a:focus {
-  color: #0066cc;
-  text-decoration: underline;
-}
-
-.img-rounded {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-
-.img-circle {
-  -webkit-border-radius: 500px;
-     -moz-border-radius: 500px;
-          border-radius: 500px;
-}
-
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-
-.row:before,
-.row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row:after {
-  clear: both;
-}
-
-[class*="span"] {
-  float: left;
-  min-height: 1px;
-  margin-left: 20px;
-}
-
-.container,
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.span12 {
-  width: 940px;
-}
-
-.span11 {
-  width: 860px;
-}
-
-.span10 {
-  width: 780px;
-}
-
-.span9 {
-  width: 700px;
-}
-
-.span8 {
-  width: 620px;
-}
-
-.span7 {
-  width: 540px;
-}
-
-.span6 {
-  width: 460px;
-}
-
-.span5 {
-  width: 380px;
-}
-
-.span4 {
-  width: 300px;
-}
-
-.span3 {
-  width: 220px;
-}
-
-.span2 {
-  width: 140px;
-}
-
-.span1 {
-  width: 60px;
-}
-
-.offset12 {
-  margin-left: 980px;
-}
-
-.offset11 {
-  margin-left: 900px;
-}
-
-.offset10 {
-  margin-left: 820px;
-}
-
-.offset9 {
-  margin-left: 740px;
-}
-
-.offset8 {
-  margin-left: 660px;
-}
-
-.offset7 {
-  margin-left: 580px;
-}
-
-.offset6 {
-  margin-left: 500px;
-}
-
-.offset5 {
-  margin-left: 420px;
-}
-
-.offset4 {
-  margin-left: 340px;
-}
-
-.offset3 {
-  margin-left: 260px;
-}
-
-.offset2 {
-  margin-left: 180px;
-}
-
-.offset1 {
-  margin-left: 100px;
-}
-
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.row-fluid:after {
-  clear: both;
-}
-
-.row-fluid [class*="span"] {
-  display: block;
-  float: left;
-  width: 100%;
-  min-height: 30px;
-  margin-left: 2.127659574468085%;
-  *margin-left: 2.074468085106383%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.row-fluid [class*="span"]:first-child {
-  margin-left: 0;
-}
-
-.row-fluid .controls-row [class*="span"] + [class*="span"] {
-  margin-left: 2.127659574468085%;
-}
-
-.row-fluid .span12 {
-  width: 100%;
-  *width: 99.94680851063829%;
-}
-
-.row-fluid .span11 {
-  width: 91.48936170212765%;
-  *width: 91.43617021276594%;
-}
-
-.row-fluid .span10 {
-  width: 82.97872340425532%;
-  *width: 82.92553191489361%;
-}
-
-.row-fluid .span9 {
-  width: 74.46808510638297%;
-  *width: 74.41489361702126%;
-}
-
-.row-fluid .span8 {
-  width: 65.95744680851064%;
-  *width: 65.90425531914893%;
-}
-
-.row-fluid .span7 {
-  width: 57.44680851063829%;
-  *width: 57.39361702127659%;
-}
-
-.row-fluid .span6 {
-  width: 48.93617021276595%;
-  *width: 48.88297872340425%;
-}
-
-.row-fluid .span5 {
-  width: 40.42553191489362%;
-  *width: 40.37234042553192%;
-}
-
-.row-fluid .span4 {
-  width: 31.914893617021278%;
-  *width: 31.861702127659576%;
-}
-
-.row-fluid .span3 {
-  width: 23.404255319148934%;
-  *width: 23.351063829787233%;
-}
-
-.row-fluid .span2 {
-  width: 14.893617021276595%;
-  *width: 14.840425531914894%;
-}
-
-.row-fluid .span1 {
-  width: 6.382978723404255%;
-  *width: 6.329787234042553%;
-}
-
-.row-fluid .offset12 {
-  margin-left: 104.25531914893617%;
-  *margin-left: 104.14893617021275%;
-}
-
-.row-fluid .offset12:first-child {
-  margin-left: 102.12765957446808%;
-  *margin-left: 102.02127659574467%;
-}
-
-.row-fluid .offset11 {
-  margin-left: 95.74468085106382%;
-  *margin-left: 95.6382978723404%;
-}
-
-.row-fluid .offset11:first-child {
-  margin-left: 93.61702127659574%;
-  *margin-left: 93.51063829787232%;
-}
-
-.row-fluid .offset10 {
-  margin-left: 87.23404255319149%;
-  *margin-left: 87.12765957446807%;
-}
-
-.row-fluid .offset10:first-child {
-  margin-left: 85.1063829787234%;
-  *margin-left: 84.99999999999999%;
-}
-
-.row-fluid .offset9 {
-  margin-left: 78.72340425531914%;
-  *margin-left: 78.61702127659572%;
-}
-
-.row-fluid .offset9:first-child {
-  margin-left: 76.59574468085106%;
-  *margin-left: 76.48936170212764%;
-}
-
-.row-fluid .offset8 {
-  margin-left: 70.2127659574468%;
-  *margin-left: 70.10638297872339%;
-}
-
-.row-fluid .offset8:first-child {
-  margin-left: 68.08510638297872%;
-  *margin-left: 67.9787234042553%;
-}
-
-.row-fluid .offset7 {
-  margin-left: 61.70212765957446%;
-  *margin-left: 61.59574468085106%;
-}
-
-.row-fluid .offset7:first-child {
-  margin-left: 59.574468085106375%;
-  *margin-left: 59.46808510638297%;
-}
-
-.row-fluid .offset6 {
-  margin-left: 53.191489361702125%;
-  *margin-left: 53.085106382978715%;
-}
-
-.row-fluid .offset6:first-child {
-  margin-left: 51.063829787234035%;
-  *margin-left: 50.95744680851063%;
-}
-
-.row-fluid .offset5 {
-  margin-left: 44.68085106382979%;
-  *margin-left: 44.57446808510638%;
-}
-
-.row-fluid .offset5:first-child {
-  margin-left: 42.5531914893617%;
-  *margin-left: 42.4468085106383%;
-}
-
-.row-fluid .offset4 {
-  margin-left: 36.170212765957444%;
-  *margin-left: 36.06382978723405%;
-}
-
-.row-fluid .offset4:first-child {
-  margin-left: 34.04255319148936%;
-  *margin-left: 33.93617021276596%;
-}
-
-.row-fluid .offset3 {
-  margin-left: 27.659574468085104%;
-  *margin-left: 27.5531914893617%;
-}
-
-.row-fluid .offset3:first-child {
-  margin-left: 25.53191489361702%;
-  *margin-left: 25.425531914893618%;
-}
-
-.row-fluid .offset2 {
-  margin-left: 19.148936170212764%;
-  *margin-left: 19.04255319148936%;
-}
-
-.row-fluid .offset2:first-child {
-  margin-left: 17.02127659574468%;
-  *margin-left: 16.914893617021278%;
-}
-
-.row-fluid .offset1 {
-  margin-left: 10.638297872340425%;
-  *margin-left: 10.53191489361702%;
-}
-
-.row-fluid .offset1:first-child {
-  margin-left: 8.51063829787234%;
-  *margin-left: 8.404255319148938%;
-}
-
-[class*="span"].hide,
-.row-fluid [class*="span"].hide {
-  display: none;
-}
-
-[class*="span"].pull-right,
-.row-fluid [class*="span"].pull-right {
-  float: right;
-}
-
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  *zoom: 1;
-}
-
-.container:before,
-.container:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container:after {
-  clear: both;
-}
-
-.container-fluid {
-  padding-right: 20px;
-  padding-left: 20px;
-  *zoom: 1;
-}
-
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.container-fluid:after {
-  clear: both;
-}
-
-p {
-  margin: 0 0 10px;
-}
-
-.lead {
-  margin-bottom: 20px;
-  font-size: 21px;
-  font-weight: 200;
-  line-height: 30px;
-}
-
-small {
-  font-size: 85%;
-}
-
-strong {
-  font-weight: bold;
-}
-
-em {
-  font-style: italic;
-}
-
-cite {
-  font-style: normal;
-}
-
-.muted {
-  color: #dfdfdf;
-}
-
-a.muted:hover,
-a.muted:focus {
-  color: #c6c6c6;
-}
-
-.text-warning {
-  color: #ffffff;
-}
-
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #e6e6e6;
-}
-
-.text-error {
-  color: #ffffff;
-}
-
-a.text-error:hover,
-a.text-error:focus {
-  color: #e6e6e6;
-}
-
-.text-info {
-  color: #ffffff;
-}
-
-a.text-info:hover,
-a.text-info:focus {
-  color: #e6e6e6;
-}
-
-.text-success {
-  color: #ffffff;
-}
-
-a.text-success:hover,
-a.text-success:focus {
-  color: #e6e6e6;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-center {
-  text-align: center;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: 20px;
-  color: #080808;
-  text-rendering: optimizelegibility;
-}
-
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #dfdfdf;
-}
-
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-
-h1 {
-  font-size: 38.5px;
-}
-
-h2 {
-  font-size: 31.5px;
-}
-
-h3 {
-  font-size: 24.5px;
-}
-
-h4 {
-  font-size: 17.5px;
-}
-
-h5 {
-  font-size: 14px;
-}
-
-h6 {
-  font-size: 11.9px;
-}
-
-h1 small {
-  font-size: 24.5px;
-}
-
-h2 small {
-  font-size: 17.5px;
-}
-
-h3 small {
-  font-size: 14px;
-}
-
-h4 small {
-  font-size: 14px;
-}
-
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-
-li {
-  line-height: 20px;
-}
-
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  padding-right: 5px;
-  padding-left: 5px;
-  *zoom: 1;
-}
-
-dl {
-  margin-bottom: 20px;
-}
-
-dt,
-dd {
-  line-height: 20px;
-}
-
-dt {
-  font-weight: bold;
-}
-
-dd {
-  margin-left: 10px;
-}
-
-.dl-horizontal {
-  *zoom: 1;
-}
-
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.dl-horizontal:after {
-  clear: both;
-}
-
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  overflow: hidden;
-  clear: left;
-  text-align: right;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #dfdfdf;
-}
-
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-
-blockquote p {
-  margin-bottom: 0;
-  font-size: 17.5px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #dfdfdf;
-}
-
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-
-blockquote.pull-right small:before {
-  content: '';
-}
-
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 12px;
-  color: #999999;
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-code {
-  padding: 2px 4px;
-  color: #d14;
-  white-space: nowrap;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-
-form {
-  margin: 0 0 20px;
-}
-
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: 40px;
-  color: #999999;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-
-legend small {
-  font-size: 15px;
-  color: #dfdfdf;
-}
-
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-}
-
-input,
-button,
-select,
-textarea {
-  font-family: "Open Sans", Calibri, Candara, Arial, sans-serif;
-}
-
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 14px;
-  line-height: 20px;
-  color: #bbbbbb;
-  vertical-align: middle;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-
-textarea {
-  height: auto;
-}
-
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #bbbbbb;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-     -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-       -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-          transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
-}
-
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  *margin-top: 0;
-  line-height: normal;
-}
-
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-
-select {
-  width: 220px;
-  background-color: #ffffff;
-  border: 1px solid #bbbbbb;
-}
-
-select[multiple],
-select[size] {
-  height: auto;
-}
-
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.uneditable-input,
-.uneditable-textarea {
-  color: #dfdfdf;
-  cursor: not-allowed;
-  background-color: #fcfcfc;
-  border-color: #bbbbbb;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-}
-
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #bbbbbb;
-}
-
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #bbbbbb;
-}
-
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #bbbbbb;
-}
-
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-
-.input-mini {
-  width: 60px;
-}
-
-.input-small {
-  width: 90px;
-}
-
-.input-medium {
-  width: 150px;
-}
-
-.input-large {
-  width: 210px;
-}
-
-.input-xlarge {
-  width: 270px;
-}
-
-.input-xxlarge {
-  width: 530px;
-}
-
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-
-.controls-row {
-  *zoom: 1;
-}
-
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.controls-row:after {
-  clear: both;
-}
-
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #ffffff;
-}
-
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #ffffff;
-}
-
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #ffffff;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #e6e6e6;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-}
-
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #ffffff;
-  background-color: #ff7518;
-  border-color: #ffffff;
-}
-
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #ffffff;
-}
-
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #ffffff;
-}
-
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #ffffff;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #e6e6e6;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-}
-
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #ffffff;
-  background-color: #ff0039;
-  border-color: #ffffff;
-}
-
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #ffffff;
-}
-
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #ffffff;
-}
-
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #ffffff;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #e6e6e6;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-}
-
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #ffffff;
-  background-color: #3fb618;
-  border-color: #ffffff;
-}
-
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #ffffff;
-}
-
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #ffffff;
-}
-
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #ffffff;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #e6e6e6;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
-}
-
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #ffffff;
-  background-color: #9954bb;
-  border-color: #ffffff;
-}
-
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-     -moz-box-shadow: 0 0 6px #f8b9b7;
-          box-shadow: 0 0 6px #f8b9b7;
-}
-
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-actions:after {
-  clear: both;
-}
-
-.help-block,
-.help-inline {
-  color: #7b7b7b;
-}
-
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  padding-left: 5px;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 14px;
-}
-
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 0 0px 0;
-     -moz-border-radius: 0 0 0px 0;
-          border-radius: 0 0 0px 0;
-}
-
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-append .active,
-.input-prepend .active {
-  background-color: #96ed7a;
-  border-color: #3fb618;
-}
-
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 0 0 0 0px;
-     -moz-border-radius: 0 0 0 0px;
-          border-radius: 0 0 0 0px;
-}
-
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 0 0 0 0px;
-     -moz-border-radius: 0 0 0 0px;
-          border-radius: 0 0 0 0px;
-}
-
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 0 0px 0;
-     -moz-border-radius: 0 0 0px 0;
-          border-radius: 0 0 0px 0;
-}
-
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 0 0px 0;
-     -moz-border-radius: 0 0 0px 0;
-          border-radius: 0 0 0px 0;
-}
-
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 0 0px 0;
-     -moz-border-radius: 0 0 0px 0;
-          border-radius: 0 0 0px 0;
-}
-
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 0 0 0 0px;
-     -moz-border-radius: 0 0 0 0px;
-          border-radius: 0 0 0 0px;
-}
-
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 0 0px 0;
-     -moz-border-radius: 0 0 0px 0;
-          border-radius: 0 0 0px 0;
-}
-
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-/* Allow for input prepend/append in search forms */
-
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-     -moz-border-radius: 0 14px 14px 0;
-          border-radius: 0 14px 14px 0;
-}
-
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-     -moz-border-radius: 14px 0 0 14px;
-          border-radius: 14px 0 0 14px;
-}
-
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-
-.control-group {
-  margin-bottom: 10px;
-}
-
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.form-horizontal .control-group:after {
-  clear: both;
-}
-
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-
-.table th {
-  font-weight: bold;
-}
-
-.table thead th {
-  vertical-align: bottom;
-}
-
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-
-.table .table {
-  background-color: #ffffff;
-}
-
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -moz-border-radius-topright: 0;
-}
-
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-}
-
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-}
-
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -moz-border-radius-topright: 0;
-}
-
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #e8f8fd;
-}
-
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-
-.table tbody tr.success > td {
-  background-color: #3fb618;
-}
-
-.table tbody tr.error > td {
-  background-color: #ff0039;
-}
-
-.table tbody tr.warning > td {
-  background-color: #ff7518;
-}
-
-.table tbody tr.info > td {
-  background-color: #9954bb;
-}
-
-.table-hover tbody tr.success:hover > td {
-  background-color: #379f15;
-}
-
-.table-hover tbody tr.error:hover > td {
-  background-color: #e60033;
-}
-
-.table-hover tbody tr.warning:hover > td {
-  background-color: #fe6600;
-}
-
-.table-hover tbody tr.info:hover > td {
-  background-color: #8d46b0;
-}
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  margin-top: 1px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../img/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-/* White icons with optional class, or on hover/focus/active states of certain elements */
-
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:focus > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > li > a:focus > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:focus > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"],
-.dropdown-submenu:focus > a > [class*=" icon-"] {
-  background-image: url("../img/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-
-.icon-eject {
-  background-position: -408px -72px;
-}
-
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-
-.icon-plus {
-  background-position: -408px -96px;
-}
-
-.icon-minus {
-  background-position: -433px -96px;
-}
-
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-
-.icon-gift {
-  background-position: -24px -120px;
-}
-
-.icon-leaf {
-  background-position: -48px -120px;
-}
-
-.icon-fire {
-  background-position: -72px -120px;
-}
-
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-
-.icon-plane {
-  background-position: -168px -120px;
-}
-
-.icon-calendar {
-  background-position: -192px -120px;
-}
-
-.icon-random {
-  width: 16px;
-  background-position: -216px -120px;
-}
-
-.icon-comment {
-  background-position: -240px -120px;
-}
-
-.icon-magnet {
-  background-position: -264px -120px;
-}
-
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-
-.icon-retweet {
-  background-position: -336px -120px;
-}
-
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-
-.icon-folder-close {
-  width: 16px;
-  background-position: -384px -120px;
-}
-
-.icon-folder-open {
-  width: 16px;
-  background-position: -408px -120px;
-}
-
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-
-.icon-hdd {
-  background-position: 0 -144px;
-}
-
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-
-.icon-bell {
-  background-position: -48px -144px;
-}
-
-.icon-certificate {
-  background-position: -72px -144px;
-}
-
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-
-.icon-globe {
-  background-position: -336px -144px;
-}
-
-.icon-wrench {
-  background-position: -360px -144px;
-}
-
-.icon-tasks {
-  background-position: -384px -144px;
-}
-
-.icon-filter {
-  background-position: -408px -144px;
-}
-
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-
-.dropup,
-.dropdown {
-  position: relative;
-}
-
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #999999;
-  white-space: nowrap;
-}
-
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #007af5;
-  background-image: -moz-linear-gradient(top, #007fff, #0072e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#007fff), to(#0072e6));
-  background-image: -webkit-linear-gradient(top, #007fff, #0072e6);
-  background-image: -o-linear-gradient(top, #007fff, #0072e6);
-  background-image: linear-gradient(to bottom, #007fff, #0072e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff007fff', endColorstr='#ff0072e6', GradientType=0);
-}
-
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #007af5;
-  background-image: -moz-linear-gradient(top, #007fff, #0072e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#007fff), to(#0072e6));
-  background-image: -webkit-linear-gradient(top, #007fff, #0072e6);
-  background-image: -o-linear-gradient(top, #007fff, #0072e6);
-  background-image: linear-gradient(to bottom, #007fff, #0072e6);
-  background-repeat: repeat-x;
-  outline: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff007fff', endColorstr='#ff0072e6', GradientType=0);
-}
-
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #dfdfdf;
-}
-
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.open {
-  *z-index: 1000;
-}
-
-.open > .dropdown-menu {
-  display: block;
-}
-
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-
-.dropdown-submenu {
-  position: relative;
-}
-
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-     -moz-border-radius: 0 6px 6px 6px;
-          border-radius: 0 6px 6px 6px;
-}
-
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-     -moz-border-radius: 5px 5px 5px 0;
-          border-radius: 5px 5px 5px 0;
-}
-
-.dropdown-submenu > a:after {
-  display: block;
-  float: right;
-  width: 0;
-  height: 0;
-  margin-top: 5px;
-  margin-right: -10px;
-  border-color: transparent;
-  border-left-color: #cccccc;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  content: " ";
-}
-
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-
-.dropdown-submenu.pull-left {
-  float: none;
-}
-
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-     -moz-border-radius: 6px 0 6px 6px;
-          border-radius: 6px 0 6px 6px;
-}
-
-.dropdown .dropdown-menu .nav-header {
-  padding-right: 20px;
-  padding-left: 20px;
-}
-
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #eeeeee;
-  border: 1px solid #dcdcdc;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-     -moz-transition: opacity 0.15s linear;
-       -o-transition: opacity 0.15s linear;
-          transition: opacity 0.15s linear;
-}
-
-.fade.in {
-  opacity: 1;
-}
-
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-     -moz-transition: height 0.35s ease;
-       -o-transition: height 0.35s ease;
-          transition: height 0.35s ease;
-}
-
-.collapse.in {
-  height: auto;
-}
-
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-
-.close:hover,
-.close:focus {
-  color: #000000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-}
-
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
-
-.btn {
-  display: inline-block;
-  *display: inline;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  *margin-left: .3em;
-  font-size: 14px;
-  line-height: 20px;
-  color: #999999;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  vertical-align: middle;
-  cursor: pointer;
-  background-color: #dfdfdf;
-  *background-color: #c8c8c8;
-  background-image: -moz-linear-gradient(top, #eeeeee, #c8c8c8);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#c8c8c8));
-  background-image: -webkit-linear-gradient(top, #eeeeee, #c8c8c8);
-  background-image: -o-linear-gradient(top, #eeeeee, #c8c8c8);
-  background-image: linear-gradient(to bottom, #eeeeee, #c8c8c8);
-  background-repeat: repeat-x;
-  border: 1px solid #bbbbbb;
-  *border: 0;
-  border-color: #c8c8c8 #c8c8c8 #a2a2a2;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  border-bottom-color: #a2a2a2;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffc8c8c8', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #999999;
-  background-color: #c8c8c8;
-  *background-color: #bbbbbb;
-}
-
-.btn:active,
-.btn.active {
-  background-color: #aeaeae \9;
-}
-
-.btn:first-child {
-  *margin-left: 0;
-}
-
-.btn:hover,
-.btn:focus {
-  color: #999999;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-     -moz-transition: background-position 0.1s linear;
-       -o-transition: background-position 0.1s linear;
-          transition: background-position 0.1s linear;
-}
-
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-large {
-  padding: 22px 30px;
-  font-size: 17.5px;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.9px;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-
-.btn-mini {
-  padding: 2px 6px;
-  font-size: 10.5px;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0f82f5;
-  *background-color: #0072e6;
-  background-image: -moz-linear-gradient(top, #1a8cff, #0072e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#1a8cff), to(#0072e6));
-  background-image: -webkit-linear-gradient(top, #1a8cff, #0072e6);
-  background-image: -o-linear-gradient(top, #1a8cff, #0072e6);
-  background-image: linear-gradient(to bottom, #1a8cff, #0072e6);
-  background-repeat: repeat-x;
-  border-color: #0072e6 #0072e6 #004c99;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1a8cff', endColorstr='#ff0072e6', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0072e6;
-  *background-color: #0066cc;
-}
-
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #0059b3 \9;
-}
-
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #fe781e;
-  *background-color: #fe6600;
-  background-image: -moz-linear-gradient(top, #ff8432, #fe6600);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff8432), to(#fe6600));
-  background-image: -webkit-linear-gradient(top, #ff8432, #fe6600);
-  background-image: -o-linear-gradient(top, #ff8432, #fe6600);
-  background-image: linear-gradient(to bottom, #ff8432, #fe6600);
-  background-repeat: repeat-x;
-  border-color: #fe6600 #fe6600 #b14700;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff8432', endColorstr='#fffe6600', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #fe6600;
-  *background-color: #e45c00;
-}
-
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #cb5200 \9;
-}
-
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #f50f43;
-  *background-color: #e60033;
-  background-image: -moz-linear-gradient(top, #ff1a4d, #e60033);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff1a4d), to(#e60033));
-  background-image: -webkit-linear-gradient(top, #ff1a4d, #e60033);
-  background-image: -o-linear-gradient(top, #ff1a4d, #e60033);
-  background-image: linear-gradient(to bottom, #ff1a4d, #e60033);
-  background-repeat: repeat-x;
-  border-color: #e60033 #e60033 #990022;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff1a4d', endColorstr='#ffe60033', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #e60033;
-  *background-color: #cc002e;
-}
-
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #b30028 \9;
-}
-
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #41bb19;
-  *background-color: #379f15;
-  background-image: -moz-linear-gradient(top, #47cd1b, #379f15);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47cd1b), to(#379f15));
-  background-image: -webkit-linear-gradient(top, #47cd1b, #379f15);
-  background-image: -o-linear-gradient(top, #47cd1b, #379f15);
-  background-image: linear-gradient(to bottom, #47cd1b, #379f15);
-  background-repeat: repeat-x;
-  border-color: #379f15 #379f15 #205c0c;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff47cd1b', endColorstr='#ff379f15', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #379f15;
-  *background-color: #2f8912;
-}
-
-.btn-success:active,
-.btn-success.active {
-  background-color: #28720f \9;
-}
-
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #9b59bb;
-  *background-color: #8d46b0;
-  background-image: -moz-linear-gradient(top, #a466c2, #8d46b0);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#a466c2), to(#8d46b0));
-  background-image: -webkit-linear-gradient(top, #a466c2, #8d46b0);
-  background-image: -o-linear-gradient(top, #a466c2, #8d46b0);
-  background-image: linear-gradient(to bottom, #a466c2, #8d46b0);
-  background-repeat: repeat-x;
-  border-color: #8d46b0 #8d46b0 #613079;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa466c2', endColorstr='#ff8d46b0', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #8d46b0;
-  *background-color: #7e3f9d;
-}
-
-.btn-info:active,
-.btn-info.active {
-  background-color: #6f378b \9;
-}
-
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #080808;
-  *background-color: #000000;
-  background-image: -moz-linear-gradient(top, #0d0d0d, #000000);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0d0d0d), to(#000000));
-  background-image: -webkit-linear-gradient(top, #0d0d0d, #000000);
-  background-image: -o-linear-gradient(top, #0d0d0d, #000000);
-  background-image: linear-gradient(to bottom, #0d0d0d, #000000);
-  background-repeat: repeat-x;
-  border-color: #000000 #000000 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0d0d0d', endColorstr='#ff000000', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #000000;
-  *background-color: #000000;
-}
-
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #000000 \9;
-}
-
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn-link {
-  color: #007fff;
-  cursor: pointer;
-  border-color: transparent;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-link:hover,
-.btn-link:focus {
-  color: #0066cc;
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #999999;
-  text-decoration: none;
-}
-
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  *margin-left: .3em;
-  font-size: 0;
-  white-space: nowrap;
-  vertical-align: middle;
-  *zoom: 1;
-}
-
-.btn-group:first-child {
-  *margin-left: 0;
-}
-
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-toolbar {
-  margin-top: 10px;
-  margin-bottom: 10px;
-  font-size: 0;
-}
-
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 14px;
-}
-
-.btn-group > .btn-mini {
-  font-size: 10.5px;
-}
-
-.btn-group > .btn-small {
-  font-size: 11.9px;
-}
-
-.btn-group > .btn-large {
-  font-size: 17.5px;
-}
-
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-topright: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-topright: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  *padding-top: 5px;
-  padding-right: 8px;
-  *padding-bottom: 5px;
-  padding-left: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group > .btn-mini + .dropdown-toggle {
-  *padding-top: 2px;
-  padding-right: 5px;
-  *padding-bottom: 2px;
-  padding-left: 5px;
-}
-
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-
-.btn-group > .btn-large + .dropdown-toggle {
-  *padding-top: 7px;
-  padding-right: 12px;
-  *padding-bottom: 7px;
-  padding-left: 12px;
-}
-
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #c8c8c8;
-}
-
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0072e6;
-}
-
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #fe6600;
-}
-
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #e60033;
-}
-
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #379f15;
-}
-
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #8d46b0;
-}
-
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #000000;
-}
-
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-
-.btn-large .caret {
-  margin-top: 6px;
-}
-
-.btn-large .caret {
-  border-top-width: 5px;
-  border-right-width: 5px;
-  border-left-width: 5px;
-}
-
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group-vertical > .btn + .btn {
-  margin-top: -1px;
-  margin-left: 0;
-}
-
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 0 0px 0 0;
-     -moz-border-radius: 0 0px 0 0;
-          border-radius: 0 0px 0 0;
-}
-
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 0 0px;
-     -moz-border-radius: 0 0 0 0px;
-          border-radius: 0 0 0 0px;
-}
-
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 0 0px 0 0;
-     -moz-border-radius: 0 0px 0 0;
-          border-radius: 0 0px 0 0;
-}
-
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 0 0px;
-     -moz-border-radius: 0 0 0 0px;
-          border-radius: 0 0 0 0px;
-}
-
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #ff7518;
-  border: 1px solid transparent;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.alert,
-.alert h4 {
-  color: #ffffff;
-}
-
-.alert h4 {
-  margin: 0;
-}
-
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-
-.alert-success {
-  color: #ffffff;
-  background-color: #3fb618;
-  border-color: transparent;
-}
-
-.alert-success h4 {
-  color: #ffffff;
-}
-
-.alert-danger,
-.alert-error {
-  color: #ffffff;
-  background-color: #ff0039;
-  border-color: transparent;
-}
-
-.alert-danger h4,
-.alert-error h4 {
-  color: #ffffff;
-}
-
-.alert-info {
-  color: #ffffff;
-  background-color: #9954bb;
-  border-color: transparent;
-}
-
-.alert-info h4 {
-  color: #ffffff;
-}
-
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-
-.alert-block p + p {
-  margin-top: 5px;
-}
-
-.nav {
-  margin-bottom: 20px;
-  margin-left: 0;
-  list-style: none;
-}
-
-.nav > li > a {
-  display: block;
-}
-
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-
-.nav > li > a > img {
-  max-width: none;
-}
-
-.nav > .pull-right {
-  float: right;
-}
-
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #dfdfdf;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-
-.nav-list {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-bottom: 0;
-}
-
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-right: -15px;
-  margin-left: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #007fff;
-}
-
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-     -moz-border-radius: 4px 4px 0 0;
-          border-radius: 4px 4px 0 0;
-}
-
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #bbbbbb;
-  cursor: default;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-     -moz-border-radius: 5px;
-          border-radius: 5px;
-}
-
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #007fff;
-}
-
-.nav-stacked > li {
-  float: none;
-}
-
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-          border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-          border-top-left-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-          border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-          border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  z-index: 2;
-  border-color: #ddd;
-}
-
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-}
-
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.nav .dropdown-toggle .caret {
-  margin-top: 6px;
-  border-top-color: #007fff;
-  border-bottom-color: #007fff;
-}
-
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #0066cc;
-  border-bottom-color: #0066cc;
-}
-
-/* move down carets for tabs */
-
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #bbbbbb;
-  border-bottom-color: #bbbbbb;
-}
-
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #dfdfdf;
-  border-color: #dfdfdf;
-}
-
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #dfdfdf;
-}
-
-.tabbable {
-  *zoom: 1;
-}
-
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.tabbable:after {
-  clear: both;
-}
-
-.tab-content {
-  overflow: auto;
-}
-
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-     -moz-border-radius: 0 0 4px 4px;
-          border-radius: 0 0 4px 4px;
-}
-
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-top-color: #ddd;
-  border-bottom-color: transparent;
-}
-
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-     -moz-border-radius: 4px 0 0 4px;
-          border-radius: 4px 0 0 4px;
-}
-
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-     -moz-border-radius: 0 4px 4px 0;
-          border-radius: 0 4px 4px 0;
-}
-
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-
-.nav > .disabled > a {
-  color: #dfdfdf;
-}
-
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  cursor: default;
-  background-color: transparent;
-}
-
-.navbar {
-  *position: relative;
-  *z-index: 2;
-  margin-bottom: 20px;
-  overflow: visible;
-}
-
-.navbar-inner {
-  min-height: 50px;
-  padding-right: 20px;
-  padding-left: 20px;
-  background-color: #080808;
-  background-image: -moz-linear-gradient(top, #080808, #080808);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#080808), to(#080808));
-  background-image: -webkit-linear-gradient(top, #080808, #080808);
-  background-image: -o-linear-gradient(top, #080808, #080808);
-  background-image: linear-gradient(to bottom, #080808, #080808);
-  background-repeat: repeat-x;
-  border: 1px solid transparent;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff080808', GradientType=0);
-  *zoom: 1;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-     -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-          box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-}
-
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.navbar-inner:after {
-  clear: both;
-}
-
-.navbar .container {
-  width: auto;
-}
-
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-
-.navbar .brand {
-  display: block;
-  float: left;
-  padding: 15px 20px 15px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #ffffff;
-  text-shadow: 0 1px 0 #080808;
-}
-
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 50px;
-  color: #ffffff;
-}
-
-.navbar-link {
-  color: #ffffff;
-}
-
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #bbbbbb;
-}
-
-.navbar .divider-vertical {
-  height: 50px;
-  margin: 0 9px;
-  border-right: 1px solid #080808;
-  border-left: 1px solid #080808;
-}
-
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 10px;
-}
-
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.navbar-form:after {
-  clear: both;
-}
-
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 10px;
-}
-
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 10px;
-  margin-bottom: 0;
-}
-
-.navbar-search .search-query {
-  padding: 4px 14px;
-  margin-bottom: 0;
-  font-family: "Open Sans", Calibri, Candara, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-right: 0;
-  padding-left: 0;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-
-.navbar-fixed-top {
-  top: 0;
-}
-
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
-}
-
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
-          box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
-}
-
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-
-.navbar .nav > li {
-  float: left;
-}
-
-.navbar .nav > li > a {
-  float: none;
-  padding: 15px 15px 15px;
-  color: #ffffff;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #080808;
-}
-
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  color: #bbbbbb;
-  text-decoration: none;
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: transparent;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-     -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-          box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-right: 5px;
-  margin-left: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #000000;
-  *background-color: #000000;
-  background-image: -moz-linear-gradient(top, #000000, #000000);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000));
-  background-image: -webkit-linear-gradient(top, #000000, #000000);
-  background-image: -o-linear-gradient(top, #000000, #000000);
-  background-image: linear-gradient(to bottom, #000000, #000000);
-  background-repeat: repeat-x;
-  border-color: #000000 #000000 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #000000;
-  *background-color: #000000;
-}
-
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #000000 \9;
-}
-
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-     -moz-border-radius: 1px;
-          border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-     -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-          box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-
-.navbar .nav > li > .dropdown-menu:before {
-  position: absolute;
-  top: -7px;
-  left: 9px;
-  display: inline-block;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-left: 7px solid transparent;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  content: '';
-}
-
-.navbar .nav > li > .dropdown-menu:after {
-  position: absolute;
-  top: -6px;
-  left: 10px;
-  display: inline-block;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  border-left: 6px solid transparent;
-  content: '';
-}
-
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  top: auto;
-  bottom: -7px;
-  border-top: 7px solid #ccc;
-  border-bottom: 0;
-  border-top-color: rgba(0, 0, 0, 0.2);
-}
-
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  top: auto;
-  bottom: -6px;
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-}
-
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #bbbbbb;
-  border-bottom-color: #bbbbbb;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #ffffff;
-  background-color: transparent;
-}
-
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  right: 12px;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  right: 13px;
-  left: auto;
-}
-
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  right: 100%;
-  left: auto;
-  margin-right: -1px;
-  margin-left: 0;
-  -webkit-border-radius: 6px 0 6px 6px;
-     -moz-border-radius: 6px 0 6px 6px;
-          border-radius: 6px 0 6px 6px;
-}
-
-.navbar-inverse .navbar-inner {
-  background-color: #007fff;
-  background-image: -moz-linear-gradient(top, #007fff, #007fff);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#007fff), to(#007fff));
-  background-image: -webkit-linear-gradient(top, #007fff, #007fff);
-  background-image: -o-linear-gradient(top, #007fff, #007fff);
-  background-image: linear-gradient(to bottom, #007fff, #007fff);
-  background-repeat: repeat-x;
-  border-color: transparent;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff007fff', endColorstr='#ff007fff', GradientType=0);
-}
-
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-
-.navbar-inverse .brand {
-  color: #ffffff;
-}
-
-.navbar-inverse .navbar-text {
-  color: #ffffff;
-}
-
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  color: #ffffff;
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #007fff;
-}
-
-.navbar-inverse .navbar-link {
-  color: #ffffff;
-}
-
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-
-.navbar-inverse .divider-vertical {
-  border-right-color: #007fff;
-  border-left-color: #007fff;
-}
-
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #ffffff;
-  background-color: #007fff;
-}
-
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #80bfff;
-  border-color: #007fff;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-     -moz-transition: none;
-       -o-transition: none;
-          transition: none;
-}
-
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #999999;
-}
-
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #999999;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  outline: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-          box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-}
-
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0072e6;
-  *background-color: #0072e6;
-  background-image: -moz-linear-gradient(top, #0072e6, #0072e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0072e6), to(#0072e6));
-  background-image: -webkit-linear-gradient(top, #0072e6, #0072e6);
-  background-image: -o-linear-gradient(top, #0072e6, #0072e6);
-  background-image: linear-gradient(to bottom, #0072e6, #0072e6);
-  background-repeat: repeat-x;
-  border-color: #0072e6 #0072e6 #004c99;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0072e6', endColorstr='#ff0072e6', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-}
-
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #0072e6;
-  *background-color: #0066cc;
-}
-
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #0059b3 \9;
-}
-
-.breadcrumb {
-  padding: 8px 15px;
-  margin: 0 0 20px;
-  list-style: none;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.breadcrumb > li {
-  display: inline-block;
-  *display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-
-.breadcrumb > li > .divider {
-  padding: 0 5px;
-  color: #ccc;
-}
-
-.breadcrumb > .active {
-  color: #dfdfdf;
-}
-
-.pagination {
-  margin: 20px 0;
-}
-
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  margin-bottom: 0;
-  margin-left: 0;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  *zoom: 1;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.pagination ul > li {
-  display: inline;
-}
-
-.pagination ul > li > a,
-.pagination ul > li > span {
-  float: left;
-  padding: 4px 12px;
-  line-height: 20px;
-  text-decoration: none;
-  background-color: #dfdfdf;
-  border: 1px solid transparent;
-  border-left-width: 0;
-}
-
-.pagination ul > li > a:hover,
-.pagination ul > li > a:focus,
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  background-color: #007fff;
-}
-
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  color: #dfdfdf;
-  cursor: default;
-}
-
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover,
-.pagination ul > .disabled > a:focus {
-  color: #dfdfdf;
-  cursor: default;
-  background-color: transparent;
-}
-
-.pagination ul > li:first-child > a,
-.pagination ul > li:first-child > span {
-  border-left-width: 1px;
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-topright: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.pagination-centered {
-  text-align: center;
-}
-
-.pagination-right {
-  text-align: right;
-}
-
-.pagination-large ul > li > a,
-.pagination-large ul > li > span {
-  padding: 22px 30px;
-  font-size: 17.5px;
-}
-
-.pagination-large ul > li:first-child > a,
-.pagination-large ul > li:first-child > span {
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.pagination-large ul > li:last-child > a,
-.pagination-large ul > li:last-child > span {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-topright: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.pagination-mini ul > li:first-child > a,
-.pagination-small ul > li:first-child > a,
-.pagination-mini ul > li:first-child > span,
-.pagination-small ul > li:first-child > span {
-  -webkit-border-bottom-left-radius: 0;
-          border-bottom-left-radius: 0;
-  -webkit-border-top-left-radius: 0;
-          border-top-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  -moz-border-radius-topleft: 0;
-}
-
-.pagination-mini ul > li:last-child > a,
-.pagination-small ul > li:last-child > a,
-.pagination-mini ul > li:last-child > span,
-.pagination-small ul > li:last-child > span {
-  -webkit-border-top-right-radius: 0;
-          border-top-right-radius: 0;
-  -webkit-border-bottom-right-radius: 0;
-          border-bottom-right-radius: 0;
-  -moz-border-radius-topright: 0;
-  -moz-border-radius-bottomright: 0;
-}
-
-.pagination-small ul > li > a,
-.pagination-small ul > li > span {
-  padding: 2px 10px;
-  font-size: 11.9px;
-}
-
-.pagination-mini ul > li > a,
-.pagination-mini ul > li > span {
-  padding: 2px 6px;
-  font-size: 10.5px;
-}
-
-.pager {
-  margin: 20px 0;
-  text-align: center;
-  list-style: none;
-  *zoom: 1;
-}
-
-.pager:before,
-.pager:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.pager:after {
-  clear: both;
-}
-
-.pager li {
-  display: inline;
-}
-
-.pager li > a,
-.pager li > span {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-     -moz-border-radius: 15px;
-          border-radius: 15px;
-}
-
-.pager li > a:hover,
-.pager li > a:focus {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-
-.pager .next > a,
-.pager .next > span {
-  float: right;
-}
-
-.pager .previous > a,
-.pager .previous > span {
-  float: left;
-}
-
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
-  color: #dfdfdf;
-  cursor: default;
-  background-color: #fff;
-}
-
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-
-.modal-backdrop.fade {
-  opacity: 0;
-}
-
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  outline: none;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-     -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-          box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding-box;
-          background-clip: padding-box;
-}
-
-.modal.fade {
-  top: -25%;
-  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
-     -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
-       -o-transition: opacity 0.3s linear, top 0.3s ease-out;
-          transition: opacity 0.3s linear, top 0.3s ease-out;
-}
-
-.modal.fade.in {
-  top: 10%;
-}
-
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-
-.modal-header .close {
-  margin-top: 2px;
-}
-
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-
-.modal-body {
-  position: relative;
-  max-height: 400px;
-  padding: 15px;
-  overflow-y: auto;
-}
-
-.modal-form {
-  margin-bottom: 0;
-}
-
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-     -moz-border-radius: 0 0 6px 6px;
-          border-radius: 0 0 6px 6px;
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-     -moz-box-shadow: inset 0 1px 0 #ffffff;
-          box-shadow: inset 0 1px 0 #ffffff;
-}
-
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.modal-footer:after {
-  clear: both;
-}
-
-.modal-footer .btn + .btn {
-  margin-bottom: 0;
-  margin-left: 5px;
-}
-
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-
-.tooltip {
-  position: absolute;
-  z-index: 1030;
-  display: block;
-  font-size: 11px;
-  line-height: 1.4;
-  opacity: 0;
-  filter: alpha(opacity=0);
-  visibility: visible;
-}
-
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-
-.tooltip.top {
-  padding: 5px 0;
-  margin-top: -3px;
-}
-
-.tooltip.right {
-  padding: 0 5px;
-  margin-left: 3px;
-}
-
-.tooltip.bottom {
-  padding: 5px 0;
-  margin-top: 3px;
-}
-
-.tooltip.left {
-  padding: 0 5px;
-  margin-left: -3px;
-}
-
-.tooltip-inner {
-  max-width: 200px;
-  padding: 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-top-color: #000000;
-  border-width: 5px 5px 0;
-}
-
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-right-color: #000000;
-  border-width: 5px 5px 5px 0;
-}
-
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-left-color: #000000;
-  border-width: 5px 0 5px 5px;
-}
-
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-bottom-color: #000000;
-  border-width: 0 5px 5px;
-}
-
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  max-width: 276px;
-  padding: 1px;
-  text-align: left;
-  white-space: normal;
-  background-color: #ff7518;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-     -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-          box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-     -moz-background-clip: padding;
-          background-clip: padding-box;
-}
-
-.popover.top {
-  margin-top: -10px;
-}
-
-.popover.right {
-  margin-left: 10px;
-}
-
-.popover.bottom {
-  margin-top: 10px;
-}
-
-.popover.left {
-  margin-left: -10px;
-}
-
-.popover-title {
-  padding: 8px 14px;
-  margin: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 18px;
-  background-color: #ff7518;
-  border-bottom: 1px solid #fe6600;
-  -webkit-border-radius: 5px 5px 0 0;
-     -moz-border-radius: 5px 5px 0 0;
-          border-radius: 5px 5px 0 0;
-}
-
-.popover-title:empty {
-  display: none;
-}
-
-.popover-content {
-  padding: 9px 14px;
-}
-
-.popover .arrow,
-.popover .arrow:after {
-  position: absolute;
-  display: block;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-
-.popover .arrow {
-  border-width: 16px;
-}
-
-.popover .arrow:after {
-  border-width: 15px;
-  content: "";
-}
-
-.popover.top .arrow {
-  bottom: -16px;
-  left: 50%;
-  margin-left: -16px;
-  border-top-color: #999;
-  border-top-color: transparent;
-  border-bottom-width: 0;
-}
-
-.popover.top .arrow:after {
-  bottom: 1px;
-  margin-left: -15px;
-  border-top-color: #ff7518;
-  border-bottom-width: 0;
-}
-
-.popover.right .arrow {
-  top: 50%;
-  left: -16px;
-  margin-top: -16px;
-  border-right-color: #999;
-  border-right-color: transparent;
-  border-left-width: 0;
-}
-
-.popover.right .arrow:after {
-  bottom: -15px;
-  left: 1px;
-  border-right-color: #ff7518;
-  border-left-width: 0;
-}
-
-.popover.bottom .arrow {
-  top: -16px;
-  left: 50%;
-  margin-left: -16px;
-  border-bottom-color: #999;
-  border-bottom-color: transparent;
-  border-top-width: 0;
-}
-
-.popover.bottom .arrow:after {
-  top: 1px;
-  margin-left: -15px;
-  border-bottom-color: #ff7518;
-  border-top-width: 0;
-}
-
-.popover.left .arrow {
-  top: 50%;
-  right: -16px;
-  margin-top: -16px;
-  border-left-color: #999;
-  border-left-color: transparent;
-  border-right-width: 0;
-}
-
-.popover.left .arrow:after {
-  right: 1px;
-  bottom: -15px;
-  border-left-color: #ff7518;
-  border-right-width: 0;
-}
-
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  line-height: 0;
-  content: "";
-}
-
-.thumbnails:after {
-  clear: both;
-}
-
-.row-fluid .thumbnails {
-  margin-left: 0;
-}
-
-.thumbnails > li {
-  float: left;
-  margin-bottom: 20px;
-  margin-left: 20px;
-}
-
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 20px;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
-  -webkit-transition: all 0.2s ease-in-out;
-     -moz-transition: all 0.2s ease-in-out;
-       -o-transition: all 0.2s ease-in-out;
-          transition: all 0.2s ease-in-out;
-}
-
-a.thumbnail:hover,
-a.thumbnail:focus {
-  border-color: #007fff;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-     -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-          box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-.thumbnail .caption {
-  padding: 9px;
-  color: #bbbbbb;
-}
-
-.media,
-.media-body {
-  overflow: hidden;
-  *overflow: visible;
-  zoom: 1;
-}
-
-.media,
-.media .media {
-  margin-top: 15px;
-}
-
-.media:first-child {
-  margin-top: 0;
-}
-
-.media-object {
-  display: block;
-}
-
-.media-heading {
-  margin: 0 0 5px;
-}
-
-.media > .pull-left {
-  margin-right: 10px;
-}
-
-.media > .pull-right {
-  margin-left: 10px;
-}
-
-.media-list {
-  margin-left: 0;
-  list-style: none;
-}
-
-.label,
-.badge {
-  display: inline-block;
-  padding: 2px 4px;
-  font-size: 11.844px;
-  font-weight: bold;
-  line-height: 14px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  white-space: nowrap;
-  vertical-align: baseline;
-  background-color: #dfdfdf;
-}
-
-.label {
-  -webkit-border-radius: 3px;
-     -moz-border-radius: 3px;
-          border-radius: 3px;
-}
-
-.badge {
-  padding-right: 9px;
-  padding-left: 9px;
-  -webkit-border-radius: 9px;
-     -moz-border-radius: 9px;
-          border-radius: 9px;
-}
-
-.label:empty,
-.badge:empty {
-  display: none;
-}
-
-a.label:hover,
-a.label:focus,
-a.badge:hover,
-a.badge:focus {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.label-important,
-.badge-important {
-  background-color: #ffffff;
-}
-
-.label-important[href],
-.badge-important[href] {
-  background-color: #e6e6e6;
-}
-
-.label-warning,
-.badge-warning {
-  background-color: #ff7518;
-}
-
-.label-warning[href],
-.badge-warning[href] {
-  background-color: #e45c00;
-}
-
-.label-success,
-.badge-success {
-  background-color: #ffffff;
-}
-
-.label-success[href],
-.badge-success[href] {
-  background-color: #e6e6e6;
-}
-
-.label-info,
-.badge-info {
-  background-color: #ffffff;
-}
-
-.label-info[href],
-.badge-info[href] {
-  background-color: #e6e6e6;
-}
-
-.label-inverse,
-.badge-inverse {
-  background-color: #999999;
-}
-
-.label-inverse[href],
-.badge-inverse[href] {
-  background-color: #808080;
-}
-
-.btn .label,
-.btn .badge {
-  position: relative;
-  top: -1px;
-}
-
-.btn-mini .label,
-.btn-mini .badge {
-  top: 0;
-}
-
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-ms-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-.progress .bar {
-  float: left;
-  width: 0;
-  height: 100%;
-  font-size: 12px;
-  color: #ffffff;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(to bottom, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-     -moz-transition: width 0.6s ease;
-       -o-transition: width 0.6s ease;
-          transition: width 0.6s ease;
-}
-
-.progress .bar + .bar {
-  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-}
-
-.progress-striped .bar {
-  background-color: #149bdf;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-     -moz-background-size: 40px 40px;
-       -o-background-size: 40px 40px;
-          background-size: 40px 40px;
-}
-
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-     -moz-animation: progress-bar-stripes 2s linear infinite;
-      -ms-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-
-.progress-danger .bar,
-.progress .bar-danger {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
-}
-
-.progress-danger.progress-striped .bar,
-.progress-striped .bar-danger {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-success .bar,
-.progress .bar-success {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(to bottom, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
-}
-
-.progress-success.progress-striped .bar,
-.progress-striped .bar-success {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-info .bar,
-.progress .bar-info {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
-}
-
-.progress-info.progress-striped .bar,
-.progress-striped .bar-info {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-warning .bar,
-.progress .bar-warning {
-  background-color: #ff9046;
-  background-image: -moz-linear-gradient(top, #ffa365, #ff7518);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffa365), to(#ff7518));
-  background-image: -webkit-linear-gradient(top, #ffa365, #ff7518);
-  background-image: -o-linear-gradient(top, #ffa365, #ff7518);
-  background-image: linear-gradient(to bottom, #ffa365, #ff7518);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffa365', endColorstr='#ffff7518', GradientType=0);
-}
-
-.progress-warning.progress-striped .bar,
-.progress-striped .bar-warning {
-  background-color: #ffa365;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.accordion {
-  margin-bottom: 20px;
-}
-
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.accordion-heading {
-  border-bottom: 0;
-}
-
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-
-.accordion-toggle {
-  cursor: pointer;
-}
-
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-
-.carousel {
-  position: relative;
-  margin-bottom: 20px;
-  line-height: 1;
-}
-
-.carousel-inner {
-  position: relative;
-  width: 100%;
-  overflow: hidden;
-}
-
-.carousel-inner > .item {
-  position: relative;
-  display: none;
-  -webkit-transition: 0.6s ease-in-out left;
-     -moz-transition: 0.6s ease-in-out left;
-       -o-transition: 0.6s ease-in-out left;
-          transition: 0.6s ease-in-out left;
-}
-
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  line-height: 1;
-}
-
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  display: block;
-}
-
-.carousel-inner > .active {
-  left: 0;
-}
-
-.carousel-inner > .next,
-.carousel-inner > .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-
-.carousel-inner > .next {
-  left: 100%;
-}
-
-.carousel-inner > .prev {
-  left: -100%;
-}
-
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
-  left: 0;
-}
-
-.carousel-inner > .active.left {
-  left: -100%;
-}
-
-.carousel-inner > .active.right {
-  left: 100%;
-}
-
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #080808;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-     -moz-border-radius: 23px;
-          border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-
-.carousel-control.right {
-  right: 15px;
-  left: auto;
-}
-
-.carousel-control:hover,
-.carousel-control:focus {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-
-.carousel-indicators {
-  position: absolute;
-  top: 15px;
-  right: 15px;
-  z-index: 5;
-  margin: 0;
-  list-style: none;
-}
-
-.carousel-indicators li {
-  display: block;
-  float: left;
-  width: 10px;
-  height: 10px;
-  margin-left: 5px;
-  text-indent: -999px;
-  background-color: #ccc;
-  background-color: rgba(255, 255, 255, 0.25);
-  border-radius: 5px;
-}
-
-.carousel-indicators .active {
-  background-color: #fff;
-}
-
-.carousel-caption {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 15px;
-  background: #999999;
-  background: rgba(0, 0, 0, 0.75);
-}
-
-.carousel-caption h4,
-.carousel-caption p {
-  line-height: 20px;
-  color: #ffffff;
-}
-
-.carousel-caption h4 {
-  margin: 0 0 5px;
-}
-
-.carousel-caption p {
-  margin-bottom: 0;
-}
-
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 30px;
-  color: inherit;
-  background-color: #eeeeee;
-  -webkit-border-radius: 6px;
-     -moz-border-radius: 6px;
-          border-radius: 6px;
-}
-
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-  color: inherit;
-}
-
-.hero-unit li {
-  line-height: 30px;
-}
-
-.pull-right {
-  float: right;
-}
-
-.pull-left {
-  float: left;
-}
-
-.hide {
-  display: none;
-}
-
-.show {
-  display: block;
-}
-
-.invisible {
-  visibility: hidden;
-}
-
-.affix {
-  position: fixed;
-}
-
-body {
-  font-weight: 300;
-}
-
-h1 {
-  font-size: 50px;
-}
-
-h2,
-h3 {
-  font-size: 26px;
-}
-
-h4 {
-  font-size: 14px;
-}
-
-h5,
-h6 {
-  font-size: 11px;
-}
-
-blockquote {
-  padding: 10px 15px;
-  background-color: #eeeeee;
-  border-left-color: #bbbbbb;
-}
-
-blockquote.pull-right {
-  padding: 10px 15px;
-  border-right-color: #bbbbbb;
-}
-
-blockquote small {
-  color: #bbbbbb;
-}
-
-.muted {
-  color: #bbbbbb;
-}
-
-.text-warning {
-  color: #ff7518;
-}
-
-a.text-warning:hover {
-  color: #e45c00;
-}
-
-.text-error {
-  color: #ff0039;
-}
-
-a.text-error:hover {
-  color: #cc002e;
-}
-
-.text-info {
-  color: #9954bb;
-}
-
-a.text-info:hover {
-  color: #7e3f9d;
-}
-
-.text-success {
-  color: #3fb618;
-}
-
-a.text-success:hover {
-  color: #2f8912;
-}
-
-.navbar .navbar-inner {
-  background-image: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.navbar .brand:hover {
-  color: #bbbbbb;
-}
-
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  background-color: rgba(0, 0, 0, 0.05);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  color: #ffffff;
-}
-
-.navbar .nav li.dropdown.open > .dropdown-toggle:hover,
-.navbar .nav li.dropdown.active > .dropdown-toggle:hover,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle:hover {
-  color: #eeeeee;
-}
-
-.navbar .navbar-search .search-query {
-  line-height: normal;
-}
-
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  text-shadow: none;
-}
-
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > .active > a,
-.navbar-inverse .nav > .active > a:hover,
-.navbar-inverse .nav > .active > a:focus {
-  color: #ffffff;
-  background-color: rgba(0, 0, 0, 0.05);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.navbar-inverse .navbar-search .search-query {
-  color: #080808;
-}
-
-div.subnav {
-  margin: 0 1px;
-  background: #dfdfdf none;
-  border: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-div.subnav .nav {
-  background-color: transparent;
-}
-
-div.subnav .nav > li > a {
-  border-color: transparent;
-}
-
-div.subnav .nav > .active > a,
-div.subnav .nav > .active > a:hover {
-  color: #ffffff;
-  background-color: #000000;
-  border-color: transparent;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-div.subnav-fixed {
-  top: 51px;
-  margin: 0;
-}
-
-.nav .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover {
-  color: #007fff;
-}
-
-.nav-tabs > li > a {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-tabs.nav-stacked > li > a:hover {
-  color: #ffffff;
-  background-color: #007fff;
-}
-
-.nav-tabs.nav-stacked > .active > a,
-.nav-tabs.nav-stacked > .active > a:hover {
-  color: #bbbbbb;
-  background-color: #ffffff;
-}
-
-.nav-tabs.nav-stacked > li:first-child > a,
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.tabs-below > .nav-tabs > li > a,
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-pills > li > a {
-  color: #000000;
-  background-color: #dfdfdf;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.nav-pills > li > a:hover {
-  color: #ffffff;
-  background-color: #000000;
-}
-
-.nav-pills > .disabled > a,
-.nav-pills > .disabled > a:hover {
-  color: #999999;
-  background-color: #eeeeee;
-}
-
-.nav-list > li > a {
-  color: #080808;
-}
-
-.nav-list > li > a:hover {
-  color: #ffffff;
-  text-shadow: none;
-  background-color: #007fff;
-}
-
-.nav-list .nav-header {
-  color: #080808;
-}
-
-.nav-list .divider {
-  background-color: #bbbbbb;
-  border-bottom: none;
-}
-
-.pagination ul {
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.pagination ul > li > a,
-.pagination ul > li > span {
-  margin-right: 6px;
-  color: #080808;
-}
-
-.pagination ul > li > a:hover,
-.pagination ul > li > span:hover {
-  color: #ffffff;
-  background-color: #080808;
-}
-
-.pagination ul > li:last-child > a,
-.pagination ul > li:last-child > span {
-  margin-right: 0;
-}
-
-.pagination ul > .active > a,
-.pagination ul > .active > span {
-  color: #ffffff;
-}
-
-.pagination ul > .disabled > span,
-.pagination ul > .disabled > a,
-.pagination ul > .disabled > a:hover {
-  color: #999999;
-  background-color: #eeeeee;
-}
-
-.pager li > a,
-.pager li > span {
-  color: #080808;
-  background-color: #dfdfdf;
-  border: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.pager li > a:hover,
-.pager li > span:hover {
-  color: #ffffff;
-  background-color: #080808;
-}
-
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > span {
-  color: #999999;
-  background-color: #eeeeee;
-}
-
-.breadcrumb {
-  background-color: #dfdfdf;
-}
-
-.breadcrumb li {
-  text-shadow: none;
-}
-
-.breadcrumb .divider,
-.breadcrumb .active {
-  color: #080808;
-  text-shadow: none;
-}
-
-.btn {
-  padding: 5px 12px;
-  text-shadow: none;
-  background-image: none;
-  border: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.btn.disabled {
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn-large {
-  padding: 22px 30px;
-}
-
-.btn-small {
-  padding: 2px 10px;
-}
-
-.btn-mini {
-  padding: 2px 6px;
-}
-
-.btn-group > .btn:first-child,
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.btn-group > .btn + .dropdown-toggle {
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.table tbody tr.success td {
-  color: #ffffff;
-}
-
-.table tbody tr.error td {
-  color: #ffffff;
-}
-
-.table tbody tr.info td {
-  color: #ffffff;
-}
-
-.table-bordered {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child,
-.table-bordered tfoot:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"] {
-  color: #080808;
-}
-
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #ff7518;
-}
-
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #080808;
-  border-color: #ff7518;
-}
-
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #ff0039;
-}
-
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #080808;
-  border-color: #ff0039;
-}
-
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #3fb618;
-}
-
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #080808;
-  border-color: #3fb618;
-}
-
-legend {
-  color: #080808;
-  border-bottom: none;
-}
-
-.form-actions {
-  background-color: #eeeeee;
-  border-top: none;
-}
-
-.dropdown-menu {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.alert {
-  text-shadow: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.alert-heading,
-.alert h1,
-.alert h2,
-.alert h3,
-.alert h4,
-.alert h5,
-.alert h6 {
-  color: #ffffff;
-}
-
-.label {
-  min-width: 80px;
-  min-height: 80px;
-  font-weight: 300;
-  text-shadow: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.label-success {
-  background-color: #3fb618;
-}
-
-.label-important {
-  background-color: #ff0039;
-}
-
-.label-info {
-  background-color: #9954bb;
-}
-
-.label-inverse {
-  background-color: #000000;
-}
-
-.badge {
-  font-weight: 300;
-  text-shadow: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.badge-success {
-  background-color: #3fb618;
-}
-
-.badge-important {
-  background-color: #ff0039;
-}
-
-.badge-info {
-  background-color: #9954bb;
-}
-
-.badge-inverse {
-  background-color: #000000;
-}
-
-.hero-unit {
-  border: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.well {
-  border: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-[class^="icon-"],
-[class*=" icon-"] {
-  margin: 0 2px;
-  vertical-align: -2px;
-}
-
-a.thumbnail {
-  background-color: #dfdfdf;
-}
-
-a.thumbnail:hover {
-  background-color: #bbbbbb;
-  border-color: transparent;
-}
-
-.progress {
-  height: 6px;
-  background-color: #eeeeee;
-  background-image: none;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-.progress .bar {
-  background-color: #007fff;
-/*  background-image: none;*/
-}
-
-.progress-info {
-  background-color: #9954bb;
-}
-
-.progress-success {
-  background-color: #3fb618;
-}
-
-.progress-warning {
-  background-color: #ff7518;
-}
-
-.progress-danger {
-  background-color: #ff0039;
-}
-
-.modal {
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.modal-header {
-  border-bottom: none;
-}
-
-.modal-footer {
-  background-color: transparent;
-  border-top: none;
-}
-
-.popover {
-  color: #ffffff;
-  -webkit-border-radius: 0;
-     -moz-border-radius: 0;
-          border-radius: 0;
-}
-
-.popover-title {
-  color: #ffffff;
-  border-bottom: none;
-}
-
-.pull-right {
-  float: right;
-}
-
-.pull-left {
-  float: left;
-}
-
-.hide {
-  display: none;
-}
-
-.show {
-  display: block;
-}
-
-.invisible {
-  visibility: hidden;
-}
-
-.affix {
-  position: fixed;
-}

Fișier diff suprimat deoarece este prea mare
+ 0 - 8
website/lib/bootstrap-responsive.min.css


Fișier diff suprimat deoarece este prea mare
+ 0 - 5
website/lib/bootstrap.min.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 2
website/lib/jquery-1.9.1.min.js


+ 58 - 0
website/package.json

@@ -0,0 +1,58 @@
+{
+	"name": "my-application",
+	"version": "0.0.1",
+	"scripts": {
+		"dev": "webpack serve --hot --mode development",
+		"build-webpack": "webpack --mode production",
+		"build": "yarn typedoc && yarn build-webpack",
+		"dev-disk": "webpack --mode development --watch",
+		"typedoc": "typedoc --options ./typedoc/typedoc.json"
+	},
+	"dependencies": {
+		"@hediet/std": "0.6.0",
+		"@knuddels/mobx-logger": "^1.0.0",
+		"@popperjs/core": "^2.11.5",
+		"@types/base64-js": "^1.3.0",
+		"@types/bootstrap": "^5.2.0",
+		"@types/node": "^18.6.1",
+		"base64-js": "^1.5.1",
+		"bootstrap": "^5.2.0",
+		"bootstrap-icons": "^1.9.1",
+		"classnames": "^2.2.6",
+		"html-inline-css-webpack-plugin": "^1.11.1",
+		"lzma": "^2.3.2",
+		"messagepack": "^1.1.12",
+		"mini-css-extract-plugin": "^2.6.1",
+		"mobx": "^5.15.4",
+		"mobx-react": "^6.2.2",
+		"monaco-editor": "^0.35.0",
+		"react": "^17.0.2",
+		"react-bootstrap": "^2.4.0",
+		"react-dom": "^17.0.2",
+		"typedoc": "^0.23.24"
+	},
+	"devDependencies": {
+		"@types/classnames": "^2.3.1",
+		"@types/html-webpack-plugin": "^3.2.2",
+		"@types/react": "^17.0.3",
+		"@types/react-dom": "^17.0.3",
+		"@types/webpack": "^4.41.10",
+		"clean-webpack-plugin": "^3.0.0",
+		"copy-webpack-plugin": "^11.0.0",
+		"css-loader": "^3.5.1",
+		"file-loader": "^6.0.0",
+		"html-webpack-plugin": "^5.5.0",
+		"raw-loader": "^4.0.2",
+		"sass": "^1.32.8",
+		"sass-loader": "^11.0.1",
+		"script-loader": "^0.7.2",
+		"style-loader": "^1.1.3",
+		"ts-loader": "^9.3.1",
+		"ts-node": "^10.9.1",
+		"typescript": "^4.7.4",
+		"webpack": "^5.74.0",
+		"webpack-bundle-analyzer": "^4.5.0",
+		"webpack-cli": "^4.10.0",
+		"webpack-dev-server": "^4.9.3"
+	}
+}

+ 0 - 108
website/playground.html

@@ -1,108 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-		<meta name="viewport" content="width=device-width" />
-
-		<title>Monaco Editor Playground</title>
-
-		<link data-inline="yes-please" href="./lib/bootstrap-cosmo.css" rel="stylesheet" />
-		<link data-inline="yes-please" href="./lib/bootstrap-responsive.min.css" rel="stylesheet" />
-		<link data-inline="yes-please" href="./all.css" rel="stylesheet" type="text/css" />
-		<link data-inline="yes-please" href="./playground/spinner.css" rel="stylesheet" />
-		<link data-inline="yes-please" href="./playground/playground.css" rel="stylesheet" />
-
-		<link
-			data-name="vs/editor/editor.main"
-			rel="stylesheet"
-			href="../release/dev/vs/editor/editor.main.css"
-		/>
-	</head>
-	<body class="playground-page">
-		<pre data-preload="playground/new-samples/creating-the-editor/hello-world/sample.js"></pre>
-		<pre data-preload="playground/new-samples/creating-the-editor/hello-world/sample.css"></pre>
-		<pre data-preload="playground/new-samples/creating-the-editor/hello-world/sample.html"></pre>
-
-		<a id="gh-link" href="https://github.com/microsoft/monaco-editor"
-			><img width="149" height="149" alt="Fork me on GitHub" src="./fork.png"
-		/></a>
-
-		<nav class="navbar navbar-inverse navbar-fixed-top">
-			<div class="navbar-inner">
-				<div class="container">
-					<div class="logo">
-						<a href="index.html">Monaco Editor</a>
-					</div>
-					<!-- collapse button for smaller screens -->
-					<button
-						type="button"
-						class="btn btn-navbar"
-						data-toggle="collapse"
-						data-target=".nav-collapse"
-					>
-						<span class="icon-bar"></span>
-						<span class="icon-bar"></span>
-						<span class="icon-bar"></span>
-					</button>
-
-					<!-- navbar title -->
-					<div class="nav-collapse collapse">
-						<ul class="nav">
-							<li><a class="nav-item" href="index.html">Home</a></li>
-							<li><a class="nav-item" href="api/index.html">API Doc</a></li>
-							<li><a class="nav-item" href="playground.html">Playground</a></li>
-							<li><a class="nav-item" href="monarch.html">Monarch</a></li>
-							<li>
-								<a
-									class="nav-item"
-									target="_blank"
-									href="https://registry.npmjs.org/monaco-editor/-/monaco-editor-{{version}}.tgz"
-									>Download {{version}}</a
-								>
-							</li>
-						</ul>
-					</div>
-				</div>
-			</div>
-		</nav>
-		<div id="loading">
-			<div class="spinner">
-				<div class="rect1"></div>
-				<div class="rect2"></div>
-				<div class="rect3"></div>
-				<div class="rect4"></div>
-				<div class="rect5"></div>
-			</div>
-		</div>
-
-		<section id="playground"></section>
-
-		<footer class="container">
-			<hr />
-			<p class="text-center">
-				<small>&copy; {{year}} Microsoft</small>
-			</p>
-		</footer>
-
-		<script
-			src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"
-			integrity="sha256-wS9gmOZBqsqWxgIVgA8Y9WcQOa7PgSIX+rPA0VL2rbQ="
-			crossorigin="anonymous"
-		></script>
-		<script
-			src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.0/bootstrap.min.js"
-			integrity="sha256-u+l2mGjpmGK/mFgUncmMcFKdMijvV+J3odlDJZSNUu8="
-			crossorigin="anonymous"
-		></script>
-
-		<script>
-			var require = { paths: { vs: '../release/dev/vs' } };
-		</script>
-		<script src="../release/dev/vs/loader.js"></script>
-		<script src="../release/dev/vs/editor/editor.main.nls.js"></script>
-		<script src="../release/dev/vs/editor/editor.main.js"></script>
-
-		<script data-inline="yes-please" src="./playground/new-samples/all.js"></script>
-		<script data-inline="yes-please" src="./playground/playground.js"></script>
-	</body>
-</html>

+ 0 - 8567
website/playground/monaco.d.ts.txt

@@ -1,8567 +0,0 @@
-/*!-----------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Type definitions for monaco-editor
- * Released under the MIT license
-*-----------------------------------------------------------*/
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare let MonacoEnvironment: monaco.Environment | undefined;
-
-interface Window {
-    MonacoEnvironment?: monaco.Environment | undefined;
-}
-
-declare namespace monaco {
-
-    export type Thenable<T> = PromiseLike<T>;
-
-    export interface Environment {
-        globalAPI?: boolean;
-        baseUrl?: string;
-        getWorker?(workerId: string, label: string): Promise<Worker> | Worker;
-        getWorkerUrl?(workerId: string, label: string): string;
-    }
-
-    export interface IDisposable {
-        dispose(): void;
-    }
-
-    export interface IEvent<T> {
-        (listener: (e: T) => any, thisArg?: any): IDisposable;
-    }
-
-    /**
-     * A helper that allows to emit and listen to typed events
-     */
-    export class Emitter<T> {
-        constructor();
-        readonly event: IEvent<T>;
-        fire(event: T): void;
-        dispose(): void;
-    }
-
-
-    export enum MarkerTag {
-        Unnecessary = 1,
-        Deprecated = 2
-    }
-
-    export enum MarkerSeverity {
-        Hint = 1,
-        Info = 2,
-        Warning = 4,
-        Error = 8
-    }
-
-    export class CancellationTokenSource {
-        constructor(parent?: CancellationToken);
-        get token(): CancellationToken;
-        cancel(): void;
-        dispose(cancel?: boolean): void;
-    }
-
-    export interface CancellationToken {
-        /**
-         * A flag signalling is cancellation has been requested.
-         */
-        readonly isCancellationRequested: boolean;
-        /**
-         * An event which fires when cancellation is requested. This event
-         * only ever fires `once` as cancellation can only happen once. Listeners
-         * that are registered after cancellation will be called (next event loop run),
-         * but also only once.
-         *
-         * @event
-         */
-        readonly onCancellationRequested: (listener: (e: any) => any, thisArgs?: any, disposables?: IDisposable[]) => IDisposable;
-    }
-    /**
-     * Uniform Resource Identifier (Uri) http://tools.ietf.org/html/rfc3986.
-     * This class is a simple parser which creates the basic component parts
-     * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation
-     * and encoding.
-     *
-     * ```txt
-     *       foo://example.com:8042/over/there?name=ferret#nose
-     *       \_/   \______________/\_________/ \_________/ \__/
-     *        |           |            |            |        |
-     *     scheme     authority       path        query   fragment
-     *        |   _____________________|__
-     *       / \ /                        \
-     *       urn:example:animal:ferret:nose
-     * ```
-     */
-    export class Uri implements UriComponents {
-        static isUri(thing: any): thing is Uri;
-        /**
-         * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'.
-         * The part before the first colon.
-         */
-        readonly scheme: string;
-        /**
-         * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'.
-         * The part between the first double slashes and the next slash.
-         */
-        readonly authority: string;
-        /**
-         * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'.
-         */
-        readonly path: string;
-        /**
-         * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'.
-         */
-        readonly query: string;
-        /**
-         * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'.
-         */
-        readonly fragment: string;
-        /**
-         * Returns a string representing the corresponding file system path of this Uri.
-         * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the
-         * platform specific path separator.
-         *
-         * * Will *not* validate the path for invalid characters and semantics.
-         * * Will *not* look at the scheme of this Uri.
-         * * The result shall *not* be used for display purposes but for accessing a file on disk.
-         *
-         *
-         * The *difference* to `Uri#path` is the use of the platform specific separator and the handling
-         * of UNC paths. See the below sample of a file-uri with an authority (UNC path).
-         *
-         * ```ts
-            const u = Uri.parse('file://server/c$/folder/file.txt')
-            u.authority === 'server'
-            u.path === '/shares/c$/file.txt'
-            u.fsPath === '\\server\c$\folder\file.txt'
-        ```
-         *
-         * Using `Uri#path` to read a file (using fs-apis) would not be enough because parts of the path,
-         * namely the server name, would be missing. Therefore `Uri#fsPath` exists - it's sugar to ease working
-         * with URIs that represent files on disk (`file` scheme).
-         */
-        get fsPath(): string;
-        with(change: {
-            scheme?: string;
-            authority?: string | null;
-            path?: string | null;
-            query?: string | null;
-            fragment?: string | null;
-        }): Uri;
-        /**
-         * Creates a new Uri from a string, e.g. `http://www.example.com/some/path`,
-         * `file:///usr/home`, or `scheme:with/path`.
-         *
-         * @param value A string which represents an Uri (see `Uri#toString`).
-         */
-        static parse(value: string, _strict?: boolean): Uri;
-        /**
-         * Creates a new Uri from a file system path, e.g. `c:\my\files`,
-         * `/usr/home`, or `\\server\share\some\path`.
-         *
-         * The *difference* between `Uri#parse` and `Uri#file` is that the latter treats the argument
-         * as path, not as stringified-uri. E.g. `Uri.file(path)` is **not the same as**
-         * `Uri.parse('file://' + path)` because the path might contain characters that are
-         * interpreted (# and ?). See the following sample:
-         * ```ts
-        const good = Uri.file('/coding/c#/project1');
-        good.scheme === 'file';
-        good.path === '/coding/c#/project1';
-        good.fragment === '';
-        const bad = Uri.parse('file://' + '/coding/c#/project1');
-        bad.scheme === 'file';
-        bad.path === '/coding/c'; // path is now broken
-        bad.fragment === '/project1';
-        ```
-         *
-         * @param path A file system path (see `Uri#fsPath`)
-         */
-        static file(path: string): Uri;
-        static from(components: {
-            scheme: string;
-            authority?: string;
-            path?: string;
-            query?: string;
-            fragment?: string;
-        }): Uri;
-        /**
-         * Join a Uri path with path fragments and normalizes the resulting path.
-         *
-         * @param uri The input Uri.
-         * @param pathFragment The path fragment to add to the Uri path.
-         * @returns The resulting Uri.
-         */
-        static joinPath(uri: Uri, ...pathFragment: string[]): Uri;
-        /**
-         * Creates a string representation for this Uri. It's guaranteed that calling
-         * `Uri.parse` with the result of this function creates an Uri which is equal
-         * to this Uri.
-         *
-         * * The result shall *not* be used for display purposes but for externalization or transport.
-         * * The result will be encoded using the percentage encoding and encoding happens mostly
-         * ignore the scheme-specific encoding rules.
-         *
-         * @param skipEncoding Do not encode the result, default is `false`
-         */
-        toString(skipEncoding?: boolean): string;
-        toJSON(): UriComponents;
-        static revive(data: UriComponents | Uri): Uri;
-        static revive(data: UriComponents | Uri | undefined): Uri | undefined;
-        static revive(data: UriComponents | Uri | null): Uri | null;
-        static revive(data: UriComponents | Uri | undefined | null): Uri | undefined | null;
-    }
-
-    export interface UriComponents {
-        scheme: string;
-        authority: string;
-        path: string;
-        query: string;
-        fragment: string;
-    }
-    /**
-     * Virtual Key Codes, the value does not hold any inherent meaning.
-     * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
-     * But these are "more general", as they should work across browsers & OS`s.
-     */
-    export enum KeyCode {
-        DependsOnKbLayout = -1,
-        /**
-         * Placed first to cover the 0 value of the enum.
-         */
-        Unknown = 0,
-        Backspace = 1,
-        Tab = 2,
-        Enter = 3,
-        Shift = 4,
-        Ctrl = 5,
-        Alt = 6,
-        PauseBreak = 7,
-        CapsLock = 8,
-        Escape = 9,
-        Space = 10,
-        PageUp = 11,
-        PageDown = 12,
-        End = 13,
-        Home = 14,
-        LeftArrow = 15,
-        UpArrow = 16,
-        RightArrow = 17,
-        DownArrow = 18,
-        Insert = 19,
-        Delete = 20,
-        Digit0 = 21,
-        Digit1 = 22,
-        Digit2 = 23,
-        Digit3 = 24,
-        Digit4 = 25,
-        Digit5 = 26,
-        Digit6 = 27,
-        Digit7 = 28,
-        Digit8 = 29,
-        Digit9 = 30,
-        KeyA = 31,
-        KeyB = 32,
-        KeyC = 33,
-        KeyD = 34,
-        KeyE = 35,
-        KeyF = 36,
-        KeyG = 37,
-        KeyH = 38,
-        KeyI = 39,
-        KeyJ = 40,
-        KeyK = 41,
-        KeyL = 42,
-        KeyM = 43,
-        KeyN = 44,
-        KeyO = 45,
-        KeyP = 46,
-        KeyQ = 47,
-        KeyR = 48,
-        KeyS = 49,
-        KeyT = 50,
-        KeyU = 51,
-        KeyV = 52,
-        KeyW = 53,
-        KeyX = 54,
-        KeyY = 55,
-        KeyZ = 56,
-        Meta = 57,
-        ContextMenu = 58,
-        F1 = 59,
-        F2 = 60,
-        F3 = 61,
-        F4 = 62,
-        F5 = 63,
-        F6 = 64,
-        F7 = 65,
-        F8 = 66,
-        F9 = 67,
-        F10 = 68,
-        F11 = 69,
-        F12 = 70,
-        F13 = 71,
-        F14 = 72,
-        F15 = 73,
-        F16 = 74,
-        F17 = 75,
-        F18 = 76,
-        F19 = 77,
-        NumLock = 78,
-        ScrollLock = 79,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the ';:' key
-         */
-        Semicolon = 80,
-        /**
-         * For any country/region, the '+' key
-         * For the US standard keyboard, the '=+' key
-         */
-        Equal = 81,
-        /**
-         * For any country/region, the ',' key
-         * For the US standard keyboard, the ',<' key
-         */
-        Comma = 82,
-        /**
-         * For any country/region, the '-' key
-         * For the US standard keyboard, the '-_' key
-         */
-        Minus = 83,
-        /**
-         * For any country/region, the '.' key
-         * For the US standard keyboard, the '.>' key
-         */
-        Period = 84,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the '/?' key
-         */
-        Slash = 85,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the '`~' key
-         */
-        Backquote = 86,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the '[{' key
-         */
-        BracketLeft = 87,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the '\|' key
-         */
-        Backslash = 88,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the ']}' key
-         */
-        BracketRight = 89,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         * For the US standard keyboard, the ''"' key
-         */
-        Quote = 90,
-        /**
-         * Used for miscellaneous characters; it can vary by keyboard.
-         */
-        OEM_8 = 91,
-        /**
-         * Either the angle bracket key or the backslash key on the RT 102-key keyboard.
-         */
-        IntlBackslash = 92,
-        Numpad0 = 93,
-        Numpad1 = 94,
-        Numpad2 = 95,
-        Numpad3 = 96,
-        Numpad4 = 97,
-        Numpad5 = 98,
-        Numpad6 = 99,
-        Numpad7 = 100,
-        Numpad8 = 101,
-        Numpad9 = 102,
-        NumpadMultiply = 103,
-        NumpadAdd = 104,
-        NUMPAD_SEPARATOR = 105,
-        NumpadSubtract = 106,
-        NumpadDecimal = 107,
-        NumpadDivide = 108,
-        /**
-         * Cover all key codes when IME is processing input.
-         */
-        KEY_IN_COMPOSITION = 109,
-        ABNT_C1 = 110,
-        ABNT_C2 = 111,
-        AudioVolumeMute = 112,
-        AudioVolumeUp = 113,
-        AudioVolumeDown = 114,
-        BrowserSearch = 115,
-        BrowserHome = 116,
-        BrowserBack = 117,
-        BrowserForward = 118,
-        MediaTrackNext = 119,
-        MediaTrackPrevious = 120,
-        MediaStop = 121,
-        MediaPlayPause = 122,
-        LaunchMediaPlayer = 123,
-        LaunchMail = 124,
-        LaunchApp2 = 125,
-        /**
-         * VK_CLEAR, 0x0C, CLEAR key
-         */
-        Clear = 126,
-        /**
-         * Placed last to cover the length of the enum.
-         * Please do not depend on this value!
-         */
-        MAX_VALUE = 127
-    }
-    export class KeyMod {
-        static readonly CtrlCmd: number;
-        static readonly Shift: number;
-        static readonly Alt: number;
-        static readonly WinCtrl: number;
-        static chord(firstPart: number, secondPart: number): number;
-    }
-
-    export interface IMarkdownString {
-        readonly value: string;
-        readonly isTrusted?: boolean | MarkdownStringTrustedOptions;
-        readonly supportThemeIcons?: boolean;
-        readonly supportHtml?: boolean;
-        readonly baseUri?: UriComponents;
-        uris?: {
-            [href: string]: UriComponents;
-        };
-    }
-
-    export interface MarkdownStringTrustedOptions {
-        readonly enabledCommands: readonly string[];
-    }
-
-    export interface IKeyboardEvent {
-        readonly _standardKeyboardEventBrand: true;
-        readonly browserEvent: KeyboardEvent;
-        readonly target: HTMLElement;
-        readonly ctrlKey: boolean;
-        readonly shiftKey: boolean;
-        readonly altKey: boolean;
-        readonly metaKey: boolean;
-        readonly altGraphKey: boolean;
-        readonly keyCode: KeyCode;
-        readonly code: string;
-        equals(keybinding: number): boolean;
-        preventDefault(): void;
-        stopPropagation(): void;
-    }
-    export interface IMouseEvent {
-        readonly browserEvent: MouseEvent;
-        readonly leftButton: boolean;
-        readonly middleButton: boolean;
-        readonly rightButton: boolean;
-        readonly buttons: number;
-        readonly target: HTMLElement;
-        readonly detail: number;
-        readonly posx: number;
-        readonly posy: number;
-        readonly ctrlKey: boolean;
-        readonly shiftKey: boolean;
-        readonly altKey: boolean;
-        readonly metaKey: boolean;
-        readonly timestamp: number;
-        preventDefault(): void;
-        stopPropagation(): void;
-    }
-
-    export interface IScrollEvent {
-        readonly scrollTop: number;
-        readonly scrollLeft: number;
-        readonly scrollWidth: number;
-        readonly scrollHeight: number;
-        readonly scrollTopChanged: boolean;
-        readonly scrollLeftChanged: boolean;
-        readonly scrollWidthChanged: boolean;
-        readonly scrollHeightChanged: boolean;
-    }
-    /**
-     * A position in the editor. This interface is suitable for serialization.
-     */
-    export interface IPosition {
-        /**
-         * line number (starts at 1)
-         */
-        readonly lineNumber: number;
-        /**
-         * column (the first character in a line is between column 1 and column 2)
-         */
-        readonly column: number;
-    }
-
-    /**
-     * A position in the editor.
-     */
-    export class Position {
-        /**
-         * line number (starts at 1)
-         */
-        readonly lineNumber: number;
-        /**
-         * column (the first character in a line is between column 1 and column 2)
-         */
-        readonly column: number;
-        constructor(lineNumber: number, column: number);
-        /**
-         * Create a new position from this position.
-         *
-         * @param newLineNumber new line number
-         * @param newColumn new column
-         */
-        with(newLineNumber?: number, newColumn?: number): Position;
-        /**
-         * Derive a new position from this position.
-         *
-         * @param deltaLineNumber line number delta
-         * @param deltaColumn column delta
-         */
-        delta(deltaLineNumber?: number, deltaColumn?: number): Position;
-        /**
-         * Test if this position equals other position
-         */
-        equals(other: IPosition): boolean;
-        /**
-         * Test if position `a` equals position `b`
-         */
-        static equals(a: IPosition | null, b: IPosition | null): boolean;
-        /**
-         * Test if this position is before other position.
-         * If the two positions are equal, the result will be false.
-         */
-        isBefore(other: IPosition): boolean;
-        /**
-         * Test if position `a` is before position `b`.
-         * If the two positions are equal, the result will be false.
-         */
-        static isBefore(a: IPosition, b: IPosition): boolean;
-        /**
-         * Test if this position is before other position.
-         * If the two positions are equal, the result will be true.
-         */
-        isBeforeOrEqual(other: IPosition): boolean;
-        /**
-         * Test if position `a` is before position `b`.
-         * If the two positions are equal, the result will be true.
-         */
-        static isBeforeOrEqual(a: IPosition, b: IPosition): boolean;
-        /**
-         * A function that compares positions, useful for sorting
-         */
-        static compare(a: IPosition, b: IPosition): number;
-        /**
-         * Clone this position.
-         */
-        clone(): Position;
-        /**
-         * Convert to a human-readable representation.
-         */
-        toString(): string;
-        /**
-         * Create a `Position` from an `IPosition`.
-         */
-        static lift(pos: IPosition): Position;
-        /**
-         * Test if `obj` is an `IPosition`.
-         */
-        static isIPosition(obj: any): obj is IPosition;
-    }
-
-    /**
-     * A range in the editor. This interface is suitable for serialization.
-     */
-    export interface IRange {
-        /**
-         * Line number on which the range starts (starts at 1).
-         */
-        readonly startLineNumber: number;
-        /**
-         * Column on which the range starts in line `startLineNumber` (starts at 1).
-         */
-        readonly startColumn: number;
-        /**
-         * Line number on which the range ends.
-         */
-        readonly endLineNumber: number;
-        /**
-         * Column on which the range ends in line `endLineNumber`.
-         */
-        readonly endColumn: number;
-    }
-
-    /**
-     * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)
-     */
-    export class Range {
-        /**
-         * Line number on which the range starts (starts at 1).
-         */
-        readonly startLineNumber: number;
-        /**
-         * Column on which the range starts in line `startLineNumber` (starts at 1).
-         */
-        readonly startColumn: number;
-        /**
-         * Line number on which the range ends.
-         */
-        readonly endLineNumber: number;
-        /**
-         * Column on which the range ends in line `endLineNumber`.
-         */
-        readonly endColumn: number;
-        constructor(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number);
-        /**
-         * Test if this range is empty.
-         */
-        isEmpty(): boolean;
-        /**
-         * Test if `range` is empty.
-         */
-        static isEmpty(range: IRange): boolean;
-        /**
-         * Test if position is in this range. If the position is at the edges, will return true.
-         */
-        containsPosition(position: IPosition): boolean;
-        /**
-         * Test if `position` is in `range`. If the position is at the edges, will return true.
-         */
-        static containsPosition(range: IRange, position: IPosition): boolean;
-        /**
-         * Test if range is in this range. If the range is equal to this range, will return true.
-         */
-        containsRange(range: IRange): boolean;
-        /**
-         * Test if `otherRange` is in `range`. If the ranges are equal, will return true.
-         */
-        static containsRange(range: IRange, otherRange: IRange): boolean;
-        /**
-         * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.
-         */
-        strictContainsRange(range: IRange): boolean;
-        /**
-         * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.
-         */
-        static strictContainsRange(range: IRange, otherRange: IRange): boolean;
-        /**
-         * A reunion of the two ranges.
-         * The smallest position will be used as the start point, and the largest one as the end point.
-         */
-        plusRange(range: IRange): Range;
-        /**
-         * A reunion of the two ranges.
-         * The smallest position will be used as the start point, and the largest one as the end point.
-         */
-        static plusRange(a: IRange, b: IRange): Range;
-        /**
-         * A intersection of the two ranges.
-         */
-        intersectRanges(range: IRange): Range | null;
-        /**
-         * A intersection of the two ranges.
-         */
-        static intersectRanges(a: IRange, b: IRange): Range | null;
-        /**
-         * Test if this range equals other.
-         */
-        equalsRange(other: IRange | null | undefined): boolean;
-        /**
-         * Test if range `a` equals `b`.
-         */
-        static equalsRange(a: IRange | null | undefined, b: IRange | null | undefined): boolean;
-        /**
-         * Return the end position (which will be after or equal to the start position)
-         */
-        getEndPosition(): Position;
-        /**
-         * Return the end position (which will be after or equal to the start position)
-         */
-        static getEndPosition(range: IRange): Position;
-        /**
-         * Return the start position (which will be before or equal to the end position)
-         */
-        getStartPosition(): Position;
-        /**
-         * Return the start position (which will be before or equal to the end position)
-         */
-        static getStartPosition(range: IRange): Position;
-        /**
-         * Transform to a user presentable string representation.
-         */
-        toString(): string;
-        /**
-         * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.
-         */
-        setEndPosition(endLineNumber: number, endColumn: number): Range;
-        /**
-         * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.
-         */
-        setStartPosition(startLineNumber: number, startColumn: number): Range;
-        /**
-         * Create a new empty range using this range's start position.
-         */
-        collapseToStart(): Range;
-        /**
-         * Create a new empty range using this range's start position.
-         */
-        static collapseToStart(range: IRange): Range;
-        /**
-         * Create a new empty range using this range's end position.
-         */
-        collapseToEnd(): Range;
-        /**
-         * Create a new empty range using this range's end position.
-         */
-        static collapseToEnd(range: IRange): Range;
-        /**
-         * Moves the range by the given amount of lines.
-         */
-        delta(lineCount: number): Range;
-        static fromPositions(start: IPosition, end?: IPosition): Range;
-        /**
-         * Create a `Range` from an `IRange`.
-         */
-        static lift(range: undefined | null): null;
-        static lift(range: IRange): Range;
-        static lift(range: IRange | undefined | null): Range | null;
-        /**
-         * Test if `obj` is an `IRange`.
-         */
-        static isIRange(obj: any): obj is IRange;
-        /**
-         * Test if the two ranges are touching in any way.
-         */
-        static areIntersectingOrTouching(a: IRange, b: IRange): boolean;
-        /**
-         * Test if the two ranges are intersecting. If the ranges are touching it returns true.
-         */
-        static areIntersecting(a: IRange, b: IRange): boolean;
-        /**
-         * A function that compares ranges, useful for sorting ranges
-         * It will first compare ranges on the startPosition and then on the endPosition
-         */
-        static compareRangesUsingStarts(a: IRange | null | undefined, b: IRange | null | undefined): number;
-        /**
-         * A function that compares ranges, useful for sorting ranges
-         * It will first compare ranges on the endPosition and then on the startPosition
-         */
-        static compareRangesUsingEnds(a: IRange, b: IRange): number;
-        /**
-         * Test if the range spans multiple lines.
-         */
-        static spansMultipleLines(range: IRange): boolean;
-        toJSON(): IRange;
-    }
-
-    /**
-     * A selection in the editor.
-     * The selection is a range that has an orientation.
-     */
-    export interface ISelection {
-        /**
-         * The line number on which the selection has started.
-         */
-        readonly selectionStartLineNumber: number;
-        /**
-         * The column on `selectionStartLineNumber` where the selection has started.
-         */
-        readonly selectionStartColumn: number;
-        /**
-         * The line number on which the selection has ended.
-         */
-        readonly positionLineNumber: number;
-        /**
-         * The column on `positionLineNumber` where the selection has ended.
-         */
-        readonly positionColumn: number;
-    }
-
-    /**
-     * A selection in the editor.
-     * The selection is a range that has an orientation.
-     */
-    export class Selection extends Range {
-        /**
-         * The line number on which the selection has started.
-         */
-        readonly selectionStartLineNumber: number;
-        /**
-         * The column on `selectionStartLineNumber` where the selection has started.
-         */
-        readonly selectionStartColumn: number;
-        /**
-         * The line number on which the selection has ended.
-         */
-        readonly positionLineNumber: number;
-        /**
-         * The column on `positionLineNumber` where the selection has ended.
-         */
-        readonly positionColumn: number;
-        constructor(selectionStartLineNumber: number, selectionStartColumn: number, positionLineNumber: number, positionColumn: number);
-        /**
-         * Transform to a human-readable representation.
-         */
-        toString(): string;
-        /**
-         * Test if equals other selection.
-         */
-        equalsSelection(other: ISelection): boolean;
-        /**
-         * Test if the two selections are equal.
-         */
-        static selectionsEqual(a: ISelection, b: ISelection): boolean;
-        /**
-         * Get directions (LTR or RTL).
-         */
-        getDirection(): SelectionDirection;
-        /**
-         * Create a new selection with a different `positionLineNumber` and `positionColumn`.
-         */
-        setEndPosition(endLineNumber: number, endColumn: number): Selection;
-        /**
-         * Get the position at `positionLineNumber` and `positionColumn`.
-         */
-        getPosition(): Position;
-        /**
-         * Get the position at the start of the selection.
-        */
-        getSelectionStart(): Position;
-        /**
-         * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.
-         */
-        setStartPosition(startLineNumber: number, startColumn: number): Selection;
-        /**
-         * Create a `Selection` from one or two positions
-         */
-        static fromPositions(start: IPosition, end?: IPosition): Selection;
-        /**
-         * Creates a `Selection` from a range, given a direction.
-         */
-        static fromRange(range: Range, direction: SelectionDirection): Selection;
-        /**
-         * Create a `Selection` from an `ISelection`.
-         */
-        static liftSelection(sel: ISelection): Selection;
-        /**
-         * `a` equals `b`.
-         */
-        static selectionsArrEqual(a: ISelection[], b: ISelection[]): boolean;
-        /**
-         * Test if `obj` is an `ISelection`.
-         */
-        static isISelection(obj: any): obj is ISelection;
-        /**
-         * Create with a direction.
-         */
-        static createWithDirection(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, direction: SelectionDirection): Selection;
-    }
-
-    /**
-     * The direction of a selection.
-     */
-    export enum SelectionDirection {
-        /**
-         * The selection starts above where it ends.
-         */
-        LTR = 0,
-        /**
-         * The selection starts below where it ends.
-         */
-        RTL = 1
-    }
-
-    export class Token {
-        _tokenBrand: void;
-        readonly offset: number;
-        readonly type: string;
-        readonly language: string;
-        constructor(offset: number, type: string, language: string);
-        toString(): string;
-    }
-}
-
-declare namespace monaco.editor {
-
-    export interface IDiffNavigator {
-        canNavigate(): boolean;
-        next(): void;
-        previous(): void;
-        dispose(): void;
-    }
-
-    /**
-     * Create a new editor under `domElement`.
-     * `domElement` should be empty (not contain other dom nodes).
-     * The editor will read the size of `domElement`.
-     */
-    export function create(domElement: HTMLElement, options?: IStandaloneEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneCodeEditor;
-
-    /**
-     * Emitted when an editor is created.
-     * Creating a diff editor might cause this listener to be invoked with the two editors.
-     * @event
-     */
-    export function onDidCreateEditor(listener: (codeEditor: ICodeEditor) => void): IDisposable;
-
-    /**
-     * Emitted when an diff editor is created.
-     * @event
-     */
-    export function onDidCreateDiffEditor(listener: (diffEditor: IDiffEditor) => void): IDisposable;
-
-    /**
-     * Get all the created editors.
-     */
-    export function getEditors(): readonly ICodeEditor[];
-
-    /**
-     * Get all the created diff editors.
-     */
-    export function getDiffEditors(): readonly IDiffEditor[];
-
-    /**
-     * Create a new diff editor under `domElement`.
-     * `domElement` should be empty (not contain other dom nodes).
-     * The editor will read the size of `domElement`.
-     */
-    export function createDiffEditor(domElement: HTMLElement, options?: IStandaloneDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;
-
-    export interface IDiffNavigatorOptions {
-        readonly followsCaret?: boolean;
-        readonly ignoreCharChanges?: boolean;
-        readonly alwaysRevealFirst?: boolean;
-    }
-
-    export function createDiffNavigator(diffEditor: IStandaloneDiffEditor, opts?: IDiffNavigatorOptions): IDiffNavigator;
-
-    /**
-     * Description of a command contribution
-     */
-    export interface ICommandDescriptor {
-        /**
-         * An unique identifier of the contributed command.
-         */
-        id: string;
-        /**
-         * Callback that will be executed when the command is triggered.
-         */
-        run: ICommandHandler;
-    }
-
-    /**
-     * Add a command.
-     */
-    export function addCommand(descriptor: ICommandDescriptor): IDisposable;
-
-    /**
-     * Add an action to all editors.
-     */
-    export function addEditorAction(descriptor: IActionDescriptor): IDisposable;
-
-    /**
-     * A keybinding rule.
-     */
-    export interface IKeybindingRule {
-        keybinding: number;
-        command?: string | null;
-        commandArgs?: any;
-        when?: string | null;
-    }
-
-    /**
-     * Add a keybinding rule.
-     */
-    export function addKeybindingRule(rule: IKeybindingRule): IDisposable;
-
-    /**
-     * Add keybinding rules.
-     */
-    export function addKeybindingRules(rules: IKeybindingRule[]): IDisposable;
-
-    /**
-     * Create a new editor model.
-     * You can specify the language that should be set for this model or let the language be inferred from the `uri`.
-     */
-    export function createModel(value: string, language?: string, uri?: Uri): ITextModel;
-
-    /**
-     * Change the language for a model.
-     */
-    export function setModelLanguage(model: ITextModel, mimeTypeOrLanguageId: string): void;
-
-    /**
-     * Set the markers for a model.
-     */
-    export function setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void;
-
-    /**
-     * Remove all markers of an owner.
-     */
-    export function removeAllMarkers(owner: string): void;
-
-    /**
-     * Get markers for owner and/or resource
-     *
-     * @returns list of markers
-     */
-    export function getModelMarkers(filter: {
-        owner?: string;
-        resource?: Uri;
-        take?: number;
-    }): IMarker[];
-
-    /**
-     * Emitted when markers change for a model.
-     * @event
-     */
-    export function onDidChangeMarkers(listener: (e: readonly Uri[]) => void): IDisposable;
-
-    /**
-     * Get the model that has `uri` if it exists.
-     */
-    export function getModel(uri: Uri): ITextModel | null;
-
-    /**
-     * Get all the created models.
-     */
-    export function getModels(): ITextModel[];
-
-    /**
-     * Emitted when a model is created.
-     * @event
-     */
-    export function onDidCreateModel(listener: (model: ITextModel) => void): IDisposable;
-
-    /**
-     * Emitted right before a model is disposed.
-     * @event
-     */
-    export function onWillDisposeModel(listener: (model: ITextModel) => void): IDisposable;
-
-    /**
-     * Emitted when a different language is set to a model.
-     * @event
-     */
-    export function onDidChangeModelLanguage(listener: (e: {
-        readonly model: ITextModel;
-        readonly oldLanguage: string;
-    }) => void): IDisposable;
-
-    /**
-     * Create a new web worker that has model syncing capabilities built in.
-     * Specify an AMD module to load that will `create` an object that will be proxied.
-     */
-    export function createWebWorker<T extends object>(opts: IWebWorkerOptions): MonacoWebWorker<T>;
-
-    /**
-     * Colorize the contents of `domNode` using attribute `data-lang`.
-     */
-    export function colorizeElement(domNode: HTMLElement, options: IColorizerElementOptions): Promise<void>;
-
-    /**
-     * Colorize `text` using language `languageId`.
-     */
-    export function colorize(text: string, languageId: string, options: IColorizerOptions): Promise<string>;
-
-    /**
-     * Colorize a line in a model.
-     */
-    export function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize?: number): string;
-
-    /**
-     * Tokenize `text` using language `languageId`
-     */
-    export function tokenize(text: string, languageId: string): Token[][];
-
-    /**
-     * Define a new theme or update an existing theme.
-     */
-    export function defineTheme(themeName: string, themeData: IStandaloneThemeData): void;
-
-    /**
-     * Switches to a theme.
-     */
-    export function setTheme(themeName: string): void;
-
-    /**
-     * Clears all cached font measurements and triggers re-measurement.
-     */
-    export function remeasureFonts(): void;
-
-    /**
-     * Register a command.
-     */
-    export function registerCommand(id: string, handler: (accessor: any, ...args: any[]) => void): IDisposable;
-
-    export type BuiltinTheme = 'vs' | 'vs-dark' | 'hc-black' | 'hc-light';
-
-    export interface IStandaloneThemeData {
-        base: BuiltinTheme;
-        inherit: boolean;
-        rules: ITokenThemeRule[];
-        encodedTokensColors?: string[];
-        colors: IColors;
-    }
-
-    export type IColors = {
-        [colorId: string]: string;
-    };
-
-    export interface ITokenThemeRule {
-        token: string;
-        foreground?: string;
-        background?: string;
-        fontStyle?: string;
-    }
-
-    /**
-     * A web worker that can provide a proxy to an arbitrary file.
-     */
-    export interface MonacoWebWorker<T> {
-        /**
-         * Terminate the web worker, thus invalidating the returned proxy.
-         */
-        dispose(): void;
-        /**
-         * Get a proxy to the arbitrary loaded code.
-         */
-        getProxy(): Promise<T>;
-        /**
-         * Synchronize (send) the models at `resources` to the web worker,
-         * making them available in the monaco.worker.getMirrorModels().
-         */
-        withSyncedResources(resources: Uri[]): Promise<T>;
-    }
-
-    export interface IWebWorkerOptions {
-        /**
-         * The AMD moduleId to load.
-         * It should export a function `create` that should return the exported proxy.
-         */
-        moduleId: string;
-        /**
-         * The data to send over when calling create on the module.
-         */
-        createData?: any;
-        /**
-         * A label to be used to identify the web worker for debugging purposes.
-         */
-        label?: string;
-        /**
-         * An object that can be used by the web worker to make calls back to the main thread.
-         */
-        host?: any;
-        /**
-         * Keep idle models.
-         * Defaults to false, which means that idle models will stop syncing after a while.
-         */
-        keepIdleModels?: boolean;
-    }
-
-    /**
-     * Description of an action contribution
-     */
-    export interface IActionDescriptor {
-        /**
-         * An unique identifier of the contributed action.
-         */
-        id: string;
-        /**
-         * A label of the action that will be presented to the user.
-         */
-        label: string;
-        /**
-         * Precondition rule.
-         */
-        precondition?: string;
-        /**
-         * An array of keybindings for the action.
-         */
-        keybindings?: number[];
-        /**
-         * The keybinding rule (condition on top of precondition).
-         */
-        keybindingContext?: string;
-        /**
-         * Control if the action should show up in the context menu and where.
-         * The context menu of the editor has these default:
-         *   navigation - The navigation group comes first in all cases.
-         *   1_modification - This group comes next and contains commands that modify your code.
-         *   9_cutcopypaste - The last default group with the basic editing commands.
-         * You can also create your own group.
-         * Defaults to null (don't show in context menu).
-         */
-        contextMenuGroupId?: string;
-        /**
-         * Control the order in the context menu group.
-         */
-        contextMenuOrder?: number;
-        /**
-         * Method that will be executed when the action is triggered.
-         * @param editor The editor instance is passed in as a convenience
-         */
-        run(editor: ICodeEditor, ...args: any[]): void | Promise<void>;
-    }
-
-    /**
-     * Options which apply for all editors.
-     */
-    export interface IGlobalEditorOptions {
-        /**
-         * The number of spaces a tab is equal to.
-         * This setting is overridden based on the file contents when `detectIndentation` is on.
-         * Defaults to 4.
-         */
-        tabSize?: number;
-        /**
-         * Insert spaces when pressing `Tab`.
-         * This setting is overridden based on the file contents when `detectIndentation` is on.
-         * Defaults to true.
-         */
-        insertSpaces?: boolean;
-        /**
-         * Controls whether `tabSize` and `insertSpaces` will be automatically detected when a file is opened based on the file contents.
-         * Defaults to true.
-         */
-        detectIndentation?: boolean;
-        /**
-         * Remove trailing auto inserted whitespace.
-         * Defaults to true.
-         */
-        trimAutoWhitespace?: boolean;
-        /**
-         * Special handling for large files to disable certain memory intensive features.
-         * Defaults to true.
-         */
-        largeFileOptimizations?: boolean;
-        /**
-         * Controls whether completions should be computed based on words in the document.
-         * Defaults to true.
-         */
-        wordBasedSuggestions?: boolean;
-        /**
-         * Controls whether word based completions should be included from opened documents of the same language or any language.
-         */
-        wordBasedSuggestionsOnlySameLanguage?: boolean;
-        /**
-         * Controls whether the semanticHighlighting is shown for the languages that support it.
-         * true: semanticHighlighting is enabled for all themes
-         * false: semanticHighlighting is disabled for all themes
-         * 'configuredByTheme': semanticHighlighting is controlled by the current color theme's semanticHighlighting setting.
-         * Defaults to 'byTheme'.
-         */
-        'semanticHighlighting.enabled'?: true | false | 'configuredByTheme';
-        /**
-         * Keep peek editors open even when double-clicking their content or when hitting `Escape`.
-         * Defaults to false.
-         */
-        stablePeek?: boolean;
-        /**
-         * Lines above this length will not be tokenized for performance reasons.
-         * Defaults to 20000.
-         */
-        maxTokenizationLineLength?: number;
-        /**
-         * Theme to be used for rendering.
-         * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light'.
-         * You can create custom themes via `monaco.editor.defineTheme`.
-         * To switch a theme, use `monaco.editor.setTheme`.
-         * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false.
-         */
-        theme?: string;
-        /**
-         * If enabled, will automatically change to high contrast theme if the OS is using a high contrast theme.
-         * Defaults to true.
-         */
-        autoDetectHighContrast?: boolean;
-    }
-
-    /**
-     * The options to create an editor.
-     */
-    export interface IStandaloneEditorConstructionOptions extends IEditorConstructionOptions, IGlobalEditorOptions {
-        /**
-         * The initial model associated with this code editor.
-         */
-        model?: ITextModel | null;
-        /**
-         * The initial value of the auto created model in the editor.
-         * To not automatically create a model, use `model: null`.
-         */
-        value?: string;
-        /**
-         * The initial language of the auto created model in the editor.
-         * To not automatically create a model, use `model: null`.
-         */
-        language?: string;
-        /**
-         * Initial theme to be used for rendering.
-         * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light.
-         * You can create custom themes via `monaco.editor.defineTheme`.
-         * To switch a theme, use `monaco.editor.setTheme`.
-         * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false.
-         */
-        theme?: string;
-        /**
-         * If enabled, will automatically change to high contrast theme if the OS is using a high contrast theme.
-         * Defaults to true.
-         */
-        autoDetectHighContrast?: boolean;
-        /**
-         * An URL to open when Ctrl+H (Windows and Linux) or Cmd+H (OSX) is pressed in
-         * the accessibility help dialog in the editor.
-         *
-         * Defaults to "https://go.microsoft.com/fwlink/?linkid=852450"
-         */
-        accessibilityHelpUrl?: string;
-        /**
-         * Container element to use for ARIA messages.
-         * Defaults to document.body.
-         */
-        ariaContainerElement?: HTMLElement;
-    }
-
-    /**
-     * The options to create a diff editor.
-     */
-    export interface IStandaloneDiffEditorConstructionOptions extends IDiffEditorConstructionOptions {
-        /**
-         * Initial theme to be used for rendering.
-         * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light.
-         * You can create custom themes via `monaco.editor.defineTheme`.
-         * To switch a theme, use `monaco.editor.setTheme`.
-         * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false.
-         */
-        theme?: string;
-        /**
-         * If enabled, will automatically change to high contrast theme if the OS is using a high contrast theme.
-         * Defaults to true.
-         */
-        autoDetectHighContrast?: boolean;
-    }
-
-    export interface IStandaloneCodeEditor extends ICodeEditor {
-        updateOptions(newOptions: IEditorOptions & IGlobalEditorOptions): void;
-        addCommand(keybinding: number, handler: ICommandHandler, context?: string): string | null;
-        createContextKey<T extends ContextKeyValue = ContextKeyValue>(key: string, defaultValue: T): IContextKey<T>;
-        addAction(descriptor: IActionDescriptor): IDisposable;
-    }
-
-    export interface IStandaloneDiffEditor extends IDiffEditor {
-        addCommand(keybinding: number, handler: ICommandHandler, context?: string): string | null;
-        createContextKey<T extends ContextKeyValue = ContextKeyValue>(key: string, defaultValue: T): IContextKey<T>;
-        addAction(descriptor: IActionDescriptor): IDisposable;
-        getOriginalEditor(): IStandaloneCodeEditor;
-        getModifiedEditor(): IStandaloneCodeEditor;
-    }
-    export interface ICommandHandler {
-        (...args: any[]): void;
-    }
-
-    export interface IContextKey<T extends ContextKeyValue = ContextKeyValue> {
-        set(value: T): void;
-        reset(): void;
-        get(): T | undefined;
-    }
-
-    export type ContextKeyValue = null | undefined | boolean | number | string | Array<null | undefined | boolean | number | string> | Record<string, null | undefined | boolean | number | string>;
-
-    export interface IEditorOverrideServices {
-        [index: string]: any;
-    }
-
-    export interface IMarker {
-        owner: string;
-        resource: Uri;
-        severity: MarkerSeverity;
-        code?: string | {
-            value: string;
-            target: Uri;
-        };
-        message: string;
-        source?: string;
-        startLineNumber: number;
-        startColumn: number;
-        endLineNumber: number;
-        endColumn: number;
-        modelVersionId?: number;
-        relatedInformation?: IRelatedInformation[];
-        tags?: MarkerTag[];
-    }
-
-    /**
-     * A structure defining a problem/warning/etc.
-     */
-    export interface IMarkerData {
-        code?: string | {
-            value: string;
-            target: Uri;
-        };
-        severity: MarkerSeverity;
-        message: string;
-        source?: string;
-        startLineNumber: number;
-        startColumn: number;
-        endLineNumber: number;
-        endColumn: number;
-        modelVersionId?: number;
-        relatedInformation?: IRelatedInformation[];
-        tags?: MarkerTag[];
-    }
-
-    /**
-     *
-     */
-    export interface IRelatedInformation {
-        resource: Uri;
-        message: string;
-        startLineNumber: number;
-        startColumn: number;
-        endLineNumber: number;
-        endColumn: number;
-    }
-
-    export interface IColorizerOptions {
-        tabSize?: number;
-    }
-
-    export interface IColorizerElementOptions extends IColorizerOptions {
-        theme?: string;
-        mimeType?: string;
-    }
-
-    export enum ScrollbarVisibility {
-        Auto = 1,
-        Hidden = 2,
-        Visible = 3
-    }
-
-    export interface ThemeColor {
-        id: string;
-    }
-
-    /**
-     * A single edit operation, that acts as a simple replace.
-     * i.e. Replace text at `range` with `text` in model.
-     */
-    export interface ISingleEditOperation {
-        /**
-         * The range to replace. This can be empty to emulate a simple insert.
-         */
-        range: IRange;
-        /**
-         * The text to replace with. This can be null to emulate a simple delete.
-         */
-        text: string | null;
-        /**
-         * This indicates that this operation has "insert" semantics.
-         * i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.
-         */
-        forceMoveMarkers?: boolean;
-    }
-
-    /**
-     * Word inside a model.
-     */
-    export interface IWordAtPosition {
-        /**
-         * The word.
-         */
-        readonly word: string;
-        /**
-         * The column where the word starts.
-         */
-        readonly startColumn: number;
-        /**
-         * The column where the word ends.
-         */
-        readonly endColumn: number;
-    }
-
-    /**
-     * Vertical Lane in the overview ruler of the editor.
-     */
-    export enum OverviewRulerLane {
-        Left = 1,
-        Center = 2,
-        Right = 4,
-        Full = 7
-    }
-
-    /**
-     * Position in the minimap to render the decoration.
-     */
-    export enum MinimapPosition {
-        Inline = 1,
-        Gutter = 2
-    }
-
-    export interface IDecorationOptions {
-        /**
-         * CSS color to render.
-         * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry
-         */
-        color: string | ThemeColor | undefined;
-        /**
-         * CSS color to render.
-         * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry
-         */
-        darkColor?: string | ThemeColor;
-    }
-
-    /**
-     * Options for rendering a model decoration in the overview ruler.
-     */
-    export interface IModelDecorationOverviewRulerOptions extends IDecorationOptions {
-        /**
-         * The position in the overview ruler.
-         */
-        position: OverviewRulerLane;
-    }
-
-    /**
-     * Options for rendering a model decoration in the overview ruler.
-     */
-    export interface IModelDecorationMinimapOptions extends IDecorationOptions {
-        /**
-         * The position in the overview ruler.
-         */
-        position: MinimapPosition;
-    }
-
-    /**
-     * Options for a model decoration.
-     */
-    export interface IModelDecorationOptions {
-        /**
-         * Customize the growing behavior of the decoration when typing at the edges of the decoration.
-         * Defaults to TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges
-         */
-        stickiness?: TrackedRangeStickiness;
-        /**
-         * CSS class name describing the decoration.
-         */
-        className?: string | null;
-        blockClassName?: string | null;
-        /**
-         * Indicates if this block should be rendered after the last line.
-         * In this case, the range must be empty and set to the last line.
-         */
-        blockIsAfterEnd?: boolean | null;
-        /**
-         * Message to be rendered when hovering over the glyph margin decoration.
-         */
-        glyphMarginHoverMessage?: IMarkdownString | IMarkdownString[] | null;
-        /**
-         * Array of MarkdownString to render as the decoration message.
-         */
-        hoverMessage?: IMarkdownString | IMarkdownString[] | null;
-        /**
-         * Should the decoration expand to encompass a whole line.
-         */
-        isWholeLine?: boolean;
-        /**
-         * Always render the decoration (even when the range it encompasses is collapsed).
-         */
-        showIfCollapsed?: boolean;
-        /**
-         * Specifies the stack order of a decoration.
-         * A decoration with greater stack order is always in front of a decoration with
-         * a lower stack order when the decorations are on the same line.
-         */
-        zIndex?: number;
-        /**
-         * If set, render this decoration in the overview ruler.
-         */
-        overviewRuler?: IModelDecorationOverviewRulerOptions | null;
-        /**
-         * If set, render this decoration in the minimap.
-         */
-        minimap?: IModelDecorationMinimapOptions | null;
-        /**
-         * If set, the decoration will be rendered in the glyph margin with this CSS class name.
-         */
-        glyphMarginClassName?: string | null;
-        /**
-         * If set, the decoration will be rendered in the lines decorations with this CSS class name.
-         */
-        linesDecorationsClassName?: string | null;
-        /**
-         * If set, the decoration will be rendered in the lines decorations with this CSS class name, but only for the first line in case of line wrapping.
-         */
-        firstLineDecorationClassName?: string | null;
-        /**
-         * If set, the decoration will be rendered in the margin (covering its full width) with this CSS class name.
-         */
-        marginClassName?: string | null;
-        /**
-         * If set, the decoration will be rendered inline with the text with this CSS class name.
-         * Please use this only for CSS rules that must impact the text. For example, use `className`
-         * to have a background color decoration.
-         */
-        inlineClassName?: string | null;
-        /**
-         * If there is an `inlineClassName` which affects letter spacing.
-         */
-        inlineClassNameAffectsLetterSpacing?: boolean;
-        /**
-         * If set, the decoration will be rendered before the text with this CSS class name.
-         */
-        beforeContentClassName?: string | null;
-        /**
-         * If set, the decoration will be rendered after the text with this CSS class name.
-         */
-        afterContentClassName?: string | null;
-        /**
-         * If set, text will be injected in the view after the range.
-         */
-        after?: InjectedTextOptions | null;
-        /**
-         * If set, text will be injected in the view before the range.
-         */
-        before?: InjectedTextOptions | null;
-    }
-
-    /**
-     * Configures text that is injected into the view without changing the underlying document.
-    */
-    export interface InjectedTextOptions {
-        /**
-         * Sets the text to inject. Must be a single line.
-         */
-        readonly content: string;
-        /**
-         * If set, the decoration will be rendered inline with the text with this CSS class name.
-         */
-        readonly inlineClassName?: string | null;
-        /**
-         * If there is an `inlineClassName` which affects letter spacing.
-         */
-        readonly inlineClassNameAffectsLetterSpacing?: boolean;
-        /**
-         * This field allows to attach data to this injected text.
-         * The data can be read when injected texts at a given position are queried.
-         */
-        readonly attachedData?: unknown;
-        /**
-         * Configures cursor stops around injected text.
-         * Defaults to {@link InjectedTextCursorStops.Both}.
-        */
-        readonly cursorStops?: InjectedTextCursorStops | null;
-    }
-
-    export enum InjectedTextCursorStops {
-        Both = 0,
-        Right = 1,
-        Left = 2,
-        None = 3
-    }
-
-    /**
-     * New model decorations.
-     */
-    export interface IModelDeltaDecoration {
-        /**
-         * Range that this decoration covers.
-         */
-        range: IRange;
-        /**
-         * Options associated with this decoration.
-         */
-        options: IModelDecorationOptions;
-    }
-
-    /**
-     * A decoration in the model.
-     */
-    export interface IModelDecoration {
-        /**
-         * Identifier for a decoration.
-         */
-        readonly id: string;
-        /**
-         * Identifier for a decoration's owner.
-         */
-        readonly ownerId: number;
-        /**
-         * Range that this decoration covers.
-         */
-        readonly range: Range;
-        /**
-         * Options associated with this decoration.
-         */
-        readonly options: IModelDecorationOptions;
-    }
-
-    /**
-     * End of line character preference.
-     */
-    export enum EndOfLinePreference {
-        /**
-         * Use the end of line character identified in the text buffer.
-         */
-        TextDefined = 0,
-        /**
-         * Use line feed (\n) as the end of line character.
-         */
-        LF = 1,
-        /**
-         * Use carriage return and line feed (\r\n) as the end of line character.
-         */
-        CRLF = 2
-    }
-
-    /**
-     * The default end of line to use when instantiating models.
-     */
-    export enum DefaultEndOfLine {
-        /**
-         * Use line feed (\n) as the end of line character.
-         */
-        LF = 1,
-        /**
-         * Use carriage return and line feed (\r\n) as the end of line character.
-         */
-        CRLF = 2
-    }
-
-    /**
-     * End of line character preference.
-     */
-    export enum EndOfLineSequence {
-        /**
-         * Use line feed (\n) as the end of line character.
-         */
-        LF = 0,
-        /**
-         * Use carriage return and line feed (\r\n) as the end of line character.
-         */
-        CRLF = 1
-    }
-
-    /**
-     * A single edit operation, that has an identifier.
-     */
-    export interface IIdentifiedSingleEditOperation extends ISingleEditOperation {
-    }
-
-    export interface IValidEditOperation {
-        /**
-         * The range to replace. This can be empty to emulate a simple insert.
-         */
-        range: Range;
-        /**
-         * The text to replace with. This can be empty to emulate a simple delete.
-         */
-        text: string;
-    }
-
-    /**
-     * A callback that can compute the cursor state after applying a series of edit operations.
-     */
-    export interface ICursorStateComputer {
-        /**
-         * A callback that can compute the resulting cursors state after some edit operations have been executed.
-         */
-        (inverseEditOperations: IValidEditOperation[]): Selection[] | null;
-    }
-
-    export class TextModelResolvedOptions {
-        _textModelResolvedOptionsBrand: void;
-        readonly tabSize: number;
-        readonly indentSize: number;
-        readonly insertSpaces: boolean;
-        readonly defaultEOL: DefaultEndOfLine;
-        readonly trimAutoWhitespace: boolean;
-        readonly bracketPairColorizationOptions: BracketPairColorizationOptions;
-        get originalIndentSize(): number | 'tabSize';
-    }
-
-    export interface BracketPairColorizationOptions {
-        enabled: boolean;
-        independentColorPoolPerBracketType: boolean;
-    }
-
-    export interface ITextModelUpdateOptions {
-        tabSize?: number;
-        indentSize?: number | 'tabSize';
-        insertSpaces?: boolean;
-        trimAutoWhitespace?: boolean;
-        bracketColorizationOptions?: BracketPairColorizationOptions;
-    }
-
-    export class FindMatch {
-        _findMatchBrand: void;
-        readonly range: Range;
-        readonly matches: string[] | null;
-    }
-
-    /**
-     * Describes the behavior of decorations when typing/editing near their edges.
-     * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`
-     */
-    export enum TrackedRangeStickiness {
-        AlwaysGrowsWhenTypingAtEdges = 0,
-        NeverGrowsWhenTypingAtEdges = 1,
-        GrowsOnlyWhenTypingBefore = 2,
-        GrowsOnlyWhenTypingAfter = 3
-    }
-
-    /**
-     * Text snapshot that works like an iterator.
-     * Will try to return chunks of roughly ~64KB size.
-     * Will return null when finished.
-     */
-    export interface ITextSnapshot {
-        read(): string | null;
-    }
-
-    /**
-     * A model.
-     */
-    export interface ITextModel {
-        /**
-         * Gets the resource associated with this editor model.
-         */
-        readonly uri: Uri;
-        /**
-         * A unique identifier associated with this model.
-         */
-        readonly id: string;
-        /**
-         * Get the resolved options for this model.
-         */
-        getOptions(): TextModelResolvedOptions;
-        /**
-         * Get the current version id of the model.
-         * Anytime a change happens to the model (even undo/redo),
-         * the version id is incremented.
-         */
-        getVersionId(): number;
-        /**
-         * Get the alternative version id of the model.
-         * This alternative version id is not always incremented,
-         * it will return the same values in the case of undo-redo.
-         */
-        getAlternativeVersionId(): number;
-        /**
-         * Replace the entire text buffer value contained in this model.
-         */
-        setValue(newValue: string | ITextSnapshot): void;
-        /**
-         * Get the text stored in this model.
-         * @param eol The end of line character preference. Defaults to `EndOfLinePreference.TextDefined`.
-         * @param preserverBOM Preserve a BOM character if it was detected when the model was constructed.
-         * @return The text.
-         */
-        getValue(eol?: EndOfLinePreference, preserveBOM?: boolean): string;
-        /**
-         * Get the text stored in this model.
-         * @param preserverBOM Preserve a BOM character if it was detected when the model was constructed.
-         * @return The text snapshot (it is safe to consume it asynchronously).
-         */
-        createSnapshot(preserveBOM?: boolean): ITextSnapshot;
-        /**
-         * Get the length of the text stored in this model.
-         */
-        getValueLength(eol?: EndOfLinePreference, preserveBOM?: boolean): number;
-        /**
-         * Get the text in a certain range.
-         * @param range The range describing what text to get.
-         * @param eol The end of line character preference. This will only be used for multiline ranges. Defaults to `EndOfLinePreference.TextDefined`.
-         * @return The text.
-         */
-        getValueInRange(range: IRange, eol?: EndOfLinePreference): string;
-        /**
-         * Get the length of text in a certain range.
-         * @param range The range describing what text length to get.
-         * @return The text length.
-         */
-        getValueLengthInRange(range: IRange, eol?: EndOfLinePreference): number;
-        /**
-         * Get the character count of text in a certain range.
-         * @param range The range describing what text length to get.
-         */
-        getCharacterCountInRange(range: IRange, eol?: EndOfLinePreference): number;
-        /**
-         * Get the number of lines in the model.
-         */
-        getLineCount(): number;
-        /**
-         * Get the text for a certain line.
-         */
-        getLineContent(lineNumber: number): string;
-        /**
-         * Get the text length for a certain line.
-         */
-        getLineLength(lineNumber: number): number;
-        /**
-         * Get the text for all lines.
-         */
-        getLinesContent(): string[];
-        /**
-         * Get the end of line sequence predominantly used in the text buffer.
-         * @return EOL char sequence (e.g.: '\n' or '\r\n').
-         */
-        getEOL(): string;
-        /**
-         * Get the end of line sequence predominantly used in the text buffer.
-         */
-        getEndOfLineSequence(): EndOfLineSequence;
-        /**
-         * Get the minimum legal column for line at `lineNumber`
-         */
-        getLineMinColumn(lineNumber: number): number;
-        /**
-         * Get the maximum legal column for line at `lineNumber`
-         */
-        getLineMaxColumn(lineNumber: number): number;
-        /**
-         * Returns the column before the first non whitespace character for line at `lineNumber`.
-         * Returns 0 if line is empty or contains only whitespace.
-         */
-        getLineFirstNonWhitespaceColumn(lineNumber: number): number;
-        /**
-         * Returns the column after the last non whitespace character for line at `lineNumber`.
-         * Returns 0 if line is empty or contains only whitespace.
-         */
-        getLineLastNonWhitespaceColumn(lineNumber: number): number;
-        /**
-         * Create a valid position.
-         */
-        validatePosition(position: IPosition): Position;
-        /**
-         * Advances the given position by the given offset (negative offsets are also accepted)
-         * and returns it as a new valid position.
-         *
-         * If the offset and position are such that their combination goes beyond the beginning or
-         * end of the model, throws an exception.
-         *
-         * If the offset is such that the new position would be in the middle of a multi-byte
-         * line terminator, throws an exception.
-         */
-        modifyPosition(position: IPosition, offset: number): Position;
-        /**
-         * Create a valid range.
-         */
-        validateRange(range: IRange): Range;
-        /**
-         * Converts the position to a zero-based offset.
-         *
-         * The position will be [adjusted](#TextDocument.validatePosition).
-         *
-         * @param position A position.
-         * @return A valid zero-based offset.
-         */
-        getOffsetAt(position: IPosition): number;
-        /**
-         * Converts a zero-based offset to a position.
-         *
-         * @param offset A zero-based offset.
-         * @return A valid [position](#Position).
-         */
-        getPositionAt(offset: number): Position;
-        /**
-         * Get a range covering the entire model.
-         */
-        getFullModelRange(): Range;
-        /**
-         * Returns if the model was disposed or not.
-         */
-        isDisposed(): boolean;
-        /**
-         * Search the model.
-         * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
-         * @param searchOnlyEditableRange Limit the searching to only search inside the editable range of the model.
-         * @param isRegex Used to indicate that `searchString` is a regular expression.
-         * @param matchCase Force the matching to match lower/upper case exactly.
-         * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
-         * @param captureMatches The result will contain the captured groups.
-         * @param limitResultCount Limit the number of results
-         * @return The ranges where the matches are. It is empty if not matches have been found.
-         */
-        findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
-        /**
-         * Search the model.
-         * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
-         * @param searchScope Limit the searching to only search inside these ranges.
-         * @param isRegex Used to indicate that `searchString` is a regular expression.
-         * @param matchCase Force the matching to match lower/upper case exactly.
-         * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
-         * @param captureMatches The result will contain the captured groups.
-         * @param limitResultCount Limit the number of results
-         * @return The ranges where the matches are. It is empty if no matches have been found.
-         */
-        findMatches(searchString: string, searchScope: IRange | IRange[], isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
-        /**
-         * Search the model for the next match. Loops to the beginning of the model if needed.
-         * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
-         * @param searchStart Start the searching at the specified position.
-         * @param isRegex Used to indicate that `searchString` is a regular expression.
-         * @param matchCase Force the matching to match lower/upper case exactly.
-         * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
-         * @param captureMatches The result will contain the captured groups.
-         * @return The range where the next match is. It is null if no next match has been found.
-         */
-        findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch | null;
-        /**
-         * Search the model for the previous match. Loops to the end of the model if needed.
-         * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
-         * @param searchStart Start the searching at the specified position.
-         * @param isRegex Used to indicate that `searchString` is a regular expression.
-         * @param matchCase Force the matching to match lower/upper case exactly.
-         * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
-         * @param captureMatches The result will contain the captured groups.
-         * @return The range where the previous match is. It is null if no previous match has been found.
-         */
-        findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch | null;
-        /**
-         * Get the language associated with this model.
-         */
-        getLanguageId(): string;
-        /**
-         * Get the word under or besides `position`.
-         * @param position The position to look for a word.
-         * @return The word under or besides `position`. Might be null.
-         */
-        getWordAtPosition(position: IPosition): IWordAtPosition | null;
-        /**
-         * Get the word under or besides `position` trimmed to `position`.column
-         * @param position The position to look for a word.
-         * @return The word under or besides `position`. Will never be null.
-         */
-        getWordUntilPosition(position: IPosition): IWordAtPosition;
-        /**
-         * Perform a minimum amount of operations, in order to transform the decorations
-         * identified by `oldDecorations` to the decorations described by `newDecorations`
-         * and returns the new identifiers associated with the resulting decorations.
-         *
-         * @param oldDecorations Array containing previous decorations identifiers.
-         * @param newDecorations Array describing what decorations should result after the call.
-         * @param ownerId Identifies the editor id in which these decorations should appear. If no `ownerId` is provided, the decorations will appear in all editors that attach this model.
-         * @return An array containing the new decorations identifiers.
-         */
-        deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[], ownerId?: number): string[];
-        /**
-         * Get the options associated with a decoration.
-         * @param id The decoration id.
-         * @return The decoration options or null if the decoration was not found.
-         */
-        getDecorationOptions(id: string): IModelDecorationOptions | null;
-        /**
-         * Get the range associated with a decoration.
-         * @param id The decoration id.
-         * @return The decoration range or null if the decoration was not found.
-         */
-        getDecorationRange(id: string): Range | null;
-        /**
-         * Gets all the decorations for the line `lineNumber` as an array.
-         * @param lineNumber The line number
-         * @param ownerId If set, it will ignore decorations belonging to other owners.
-         * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
-         * @return An array with the decorations
-         */
-        getLineDecorations(lineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
-        /**
-         * Gets all the decorations for the lines between `startLineNumber` and `endLineNumber` as an array.
-         * @param startLineNumber The start line number
-         * @param endLineNumber The end line number
-         * @param ownerId If set, it will ignore decorations belonging to other owners.
-         * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
-         * @return An array with the decorations
-         */
-        getLinesDecorations(startLineNumber: number, endLineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
-        /**
-         * Gets all the decorations in a range as an array. Only `startLineNumber` and `endLineNumber` from `range` are used for filtering.
-         * So for now it returns all the decorations on the same line as `range`.
-         * @param range The range to search in
-         * @param ownerId If set, it will ignore decorations belonging to other owners.
-         * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
-         * @return An array with the decorations
-         */
-        getDecorationsInRange(range: IRange, ownerId?: number, filterOutValidation?: boolean, onlyMinimapDecorations?: boolean): IModelDecoration[];
-        /**
-         * Gets all the decorations as an array.
-         * @param ownerId If set, it will ignore decorations belonging to other owners.
-         * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
-         */
-        getAllDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
-        /**
-         * Gets all the decorations that should be rendered in the overview ruler as an array.
-         * @param ownerId If set, it will ignore decorations belonging to other owners.
-         * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
-         */
-        getOverviewRulerDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
-        /**
-         * Gets all the decorations that contain injected text.
-         * @param ownerId If set, it will ignore decorations belonging to other owners.
-         */
-        getInjectedTextDecorations(ownerId?: number): IModelDecoration[];
-        /**
-         * Normalize a string containing whitespace according to indentation rules (converts to spaces or to tabs).
-         */
-        normalizeIndentation(str: string): string;
-        /**
-         * Change the options of this model.
-         */
-        updateOptions(newOpts: ITextModelUpdateOptions): void;
-        /**
-         * Detect the indentation options for this model from its content.
-         */
-        detectIndentation(defaultInsertSpaces: boolean, defaultTabSize: number): void;
-        /**
-         * Close the current undo-redo element.
-         * This offers a way to create an undo/redo stop point.
-         */
-        pushStackElement(): void;
-        /**
-         * Open the current undo-redo element.
-         * This offers a way to remove the current undo/redo stop point.
-         */
-        popStackElement(): void;
-        /**
-         * Push edit operations, basically editing the model. This is the preferred way
-         * of editing the model. The edit operations will land on the undo stack.
-         * @param beforeCursorState The cursor state before the edit operations. This cursor state will be returned when `undo` or `redo` are invoked.
-         * @param editOperations The edit operations.
-         * @param cursorStateComputer A callback that can compute the resulting cursors state after the edit operations have been executed.
-         * @return The cursor state returned by the `cursorStateComputer`.
-         */
-        pushEditOperations(beforeCursorState: Selection[] | null, editOperations: IIdentifiedSingleEditOperation[], cursorStateComputer: ICursorStateComputer): Selection[] | null;
-        /**
-         * Change the end of line sequence. This is the preferred way of
-         * changing the eol sequence. This will land on the undo stack.
-         */
-        pushEOL(eol: EndOfLineSequence): void;
-        /**
-         * Edit the model without adding the edits to the undo stack.
-         * This can have dire consequences on the undo stack! See @pushEditOperations for the preferred way.
-         * @param operations The edit operations.
-         * @return If desired, the inverse edit operations, that, when applied, will bring the model back to the previous state.
-         */
-        applyEdits(operations: IIdentifiedSingleEditOperation[]): void;
-        applyEdits(operations: IIdentifiedSingleEditOperation[], computeUndoEdits: false): void;
-        applyEdits(operations: IIdentifiedSingleEditOperation[], computeUndoEdits: true): IValidEditOperation[];
-        /**
-         * Change the end of line sequence without recording in the undo stack.
-         * This can have dire consequences on the undo stack! See @pushEOL for the preferred way.
-         */
-        setEOL(eol: EndOfLineSequence): void;
-        /**
-         * An event emitted when the contents of the model have changed.
-         * @event
-         */
-        onDidChangeContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;
-        /**
-         * An event emitted when decorations of the model have changed.
-         * @event
-         */
-        readonly onDidChangeDecorations: IEvent<IModelDecorationsChangedEvent>;
-        /**
-         * An event emitted when the model options have changed.
-         * @event
-         */
-        readonly onDidChangeOptions: IEvent<IModelOptionsChangedEvent>;
-        /**
-         * An event emitted when the language associated with the model has changed.
-         * @event
-         */
-        readonly onDidChangeLanguage: IEvent<IModelLanguageChangedEvent>;
-        /**
-         * An event emitted when the language configuration associated with the model has changed.
-         * @event
-         */
-        readonly onDidChangeLanguageConfiguration: IEvent<IModelLanguageConfigurationChangedEvent>;
-        /**
-         * An event emitted when the model has been attached to the first editor or detached from the last editor.
-         * @event
-         */
-        readonly onDidChangeAttached: IEvent<void>;
-        /**
-         * An event emitted right before disposing the model.
-         * @event
-         */
-        readonly onWillDispose: IEvent<void>;
-        /**
-         * Destroy this model.
-         */
-        dispose(): void;
-        /**
-         * Returns if this model is attached to an editor or not.
-         */
-        isAttachedToEditor(): boolean;
-    }
-
-    export enum PositionAffinity {
-        /**
-         * Prefers the left most position.
-        */
-        Left = 0,
-        /**
-         * Prefers the right most position.
-        */
-        Right = 1,
-        /**
-         * No preference.
-        */
-        None = 2,
-        /**
-         * If the given position is on injected text, prefers the position left of it.
-        */
-        LeftOfInjectedText = 3,
-        /**
-         * If the given position is on injected text, prefers the position right of it.
-        */
-        RightOfInjectedText = 4
-    }
-
-    /**
-     * A change
-     */
-    export interface IChange {
-        readonly originalStartLineNumber: number;
-        readonly originalEndLineNumber: number;
-        readonly modifiedStartLineNumber: number;
-        readonly modifiedEndLineNumber: number;
-    }
-
-    /**
-     * A character level change.
-     */
-    export interface ICharChange extends IChange {
-        readonly originalStartColumn: number;
-        readonly originalEndColumn: number;
-        readonly modifiedStartColumn: number;
-        readonly modifiedEndColumn: number;
-    }
-
-    /**
-     * A line change
-     */
-    export interface ILineChange extends IChange {
-        readonly charChanges: ICharChange[] | undefined;
-    }
-
-    /**
-     * A document diff provider computes the diff between two text models.
-     */
-    export interface IDocumentDiffProvider {
-        /**
-         * Computes the diff between the text models `original` and `modified`.
-         */
-        computeDiff(original: ITextModel, modified: ITextModel, options: IDocumentDiffProviderOptions): Promise<IDocumentDiff>;
-        /**
-         * Is fired when settings of the diff algorithm change that could alter the result of the diffing computation.
-         * Any user of this provider should recompute the diff when this event is fired.
-         */
-        onDidChange: IEvent<void>;
-    }
-
-    /**
-     * Options for the diff computation.
-     */
-    export interface IDocumentDiffProviderOptions {
-        /**
-         * When set to true, the diff should ignore whitespace changes.i
-         */
-        ignoreTrimWhitespace: boolean;
-        /**
-         * A diff computation should throw if it takes longer than this value.
-         */
-        maxComputationTimeMs: number;
-    }
-
-    /**
-     * Represents a diff between two text models.
-     */
-    export interface IDocumentDiff {
-        /**
-         * If true, both text models are identical (byte-wise).
-         */
-        readonly identical: boolean;
-        /**
-         * If true, the diff computation timed out and the diff might not be accurate.
-         */
-        readonly quitEarly: boolean;
-        /**
-         * Maps all modified line ranges in the original to the corresponding line ranges in the modified text model.
-         */
-        readonly changes: LineRangeMapping[];
-    }
-
-    /**
-     * Maps a line range in the original text model to a line range in the modified text model.
-     */
-    export class LineRangeMapping {
-        /**
-         * The line range in the original text model.
-         */
-        readonly originalRange: LineRange;
-        /**
-         * The line range in the modified text model.
-         */
-        readonly modifiedRange: LineRange;
-        /**
-         * If inner changes have not been computed, this is set to undefined.
-         * Otherwise, it represents the character-level diff in this line range.
-         * The original range of each range mapping should be contained in the original line range (same for modified).
-         * Must not be an empty array.
-         */
-        readonly innerChanges: RangeMapping[] | undefined;
-        constructor(originalRange: LineRange, modifiedRange: LineRange, innerChanges: RangeMapping[] | undefined);
-        toString(): string;
-    }
-
-    /**
-     * A range of lines (1-based).
-     */
-    export class LineRange {
-        /**
-         * The start line number.
-         */
-        readonly startLineNumber: number;
-        /**
-         * The end line number (exclusive).
-         */
-        readonly endLineNumberExclusive: number;
-        constructor(startLineNumber: number, endLineNumberExclusive: number);
-        /**
-         * Indicates if this line range is empty.
-         */
-        get isEmpty(): boolean;
-        /**
-         * Moves this line range by the given offset of line numbers.
-         */
-        delta(offset: number): LineRange;
-        /**
-         * The number of lines this line range spans.
-         */
-        get length(): number;
-        /**
-         * Creates a line range that combines this and the given line range.
-         */
-        join(other: LineRange): LineRange;
-        toString(): string;
-    }
-
-    /**
-     * Maps a range in the original text model to a range in the modified text model.
-     */
-    export class RangeMapping {
-        /**
-         * The original range.
-         */
-        readonly originalRange: Range;
-        /**
-         * The modified range.
-         */
-        readonly modifiedRange: Range;
-        constructor(originalRange: Range, modifiedRange: Range);
-        toString(): string;
-    }
-    export interface IDimension {
-        width: number;
-        height: number;
-    }
-
-    /**
-     * A builder and helper for edit operations for a command.
-     */
-    export interface IEditOperationBuilder {
-        /**
-         * Add a new edit operation (a replace operation).
-         * @param range The range to replace (delete). May be empty to represent a simple insert.
-         * @param text The text to replace with. May be null to represent a simple delete.
-         */
-        addEditOperation(range: IRange, text: string | null, forceMoveMarkers?: boolean): void;
-        /**
-         * Add a new edit operation (a replace operation).
-         * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`
-         * @param range The range to replace (delete). May be empty to represent a simple insert.
-         * @param text The text to replace with. May be null to represent a simple delete.
-         */
-        addTrackedEditOperation(range: IRange, text: string | null, forceMoveMarkers?: boolean): void;
-        /**
-         * Track `selection` when applying edit operations.
-         * A best effort will be made to not grow/expand the selection.
-         * An empty selection will clamp to a nearby character.
-         * @param selection The selection to track.
-         * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection
-         *           should clamp to the previous or the next character.
-         * @return A unique identifier.
-         */
-        trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;
-    }
-
-    /**
-     * A helper for computing cursor state after a command.
-     */
-    export interface ICursorStateComputerData {
-        /**
-         * Get the inverse edit operations of the added edit operations.
-         */
-        getInverseEditOperations(): IValidEditOperation[];
-        /**
-         * Get a previously tracked selection.
-         * @param id The unique identifier returned by `trackSelection`.
-         * @return The selection.
-         */
-        getTrackedSelection(id: string): Selection;
-    }
-
-    /**
-     * A command that modifies text / cursor state on a model.
-     */
-    export interface ICommand {
-        /**
-         * Get the edit operations needed to execute this command.
-         * @param model The model the command will execute on.
-         * @param builder A helper to collect the needed edit operations and to track selections.
-         */
-        getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void;
-        /**
-         * Compute the cursor state after the edit operations were applied.
-         * @param model The model the command has executed on.
-         * @param helper A helper to get inverse edit operations and to get previously tracked selections.
-         * @return The cursor state after the command executed.
-         */
-        computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection;
-    }
-
-    /**
-     * A model for the diff editor.
-     */
-    export interface IDiffEditorModel {
-        /**
-         * Original model.
-         */
-        original: ITextModel;
-        /**
-         * Modified model.
-         */
-        modified: ITextModel;
-    }
-
-    /**
-     * An event describing that an editor has had its model reset (i.e. `editor.setModel()`).
-     */
-    export interface IModelChangedEvent {
-        /**
-         * The `uri` of the previous model or null.
-         */
-        readonly oldModelUrl: Uri | null;
-        /**
-         * The `uri` of the new model or null.
-         */
-        readonly newModelUrl: Uri | null;
-    }
-
-    export interface IContentSizeChangedEvent {
-        readonly contentWidth: number;
-        readonly contentHeight: number;
-        readonly contentWidthChanged: boolean;
-        readonly contentHeightChanged: boolean;
-    }
-
-    export interface INewScrollPosition {
-        scrollLeft?: number;
-        scrollTop?: number;
-    }
-
-    export interface IEditorAction {
-        readonly id: string;
-        readonly label: string;
-        readonly alias: string;
-        isSupported(): boolean;
-        run(): Promise<void>;
-    }
-
-    export type IEditorModel = ITextModel | IDiffEditorModel;
-
-    /**
-     * A (serializable) state of the cursors.
-     */
-    export interface ICursorState {
-        inSelectionMode: boolean;
-        selectionStart: IPosition;
-        position: IPosition;
-    }
-
-    /**
-     * A (serializable) state of the view.
-     */
-    export interface IViewState {
-        /** written by previous versions */
-        scrollTop?: number;
-        /** written by previous versions */
-        scrollTopWithoutViewZones?: number;
-        scrollLeft: number;
-        firstPosition: IPosition;
-        firstPositionDeltaTop: number;
-    }
-
-    /**
-     * A (serializable) state of the code editor.
-     */
-    export interface ICodeEditorViewState {
-        cursorState: ICursorState[];
-        viewState: IViewState;
-        contributionsState: {
-            [id: string]: any;
-        };
-    }
-
-    /**
-     * (Serializable) View state for the diff editor.
-     */
-    export interface IDiffEditorViewState {
-        original: ICodeEditorViewState | null;
-        modified: ICodeEditorViewState | null;
-    }
-
-    /**
-     * An editor view state.
-     */
-    export type IEditorViewState = ICodeEditorViewState | IDiffEditorViewState;
-
-    export enum ScrollType {
-        Smooth = 0,
-        Immediate = 1
-    }
-
-    /**
-     * An editor.
-     */
-    export interface IEditor {
-        /**
-         * An event emitted when the editor has been disposed.
-         * @event
-         */
-        onDidDispose(listener: () => void): IDisposable;
-        /**
-         * Dispose the editor.
-         */
-        dispose(): void;
-        /**
-         * Get a unique id for this editor instance.
-         */
-        getId(): string;
-        /**
-         * Get the editor type. Please see `EditorType`.
-         * This is to avoid an instanceof check
-         */
-        getEditorType(): string;
-        /**
-         * Update the editor's options after the editor has been created.
-         */
-        updateOptions(newOptions: IEditorOptions): void;
-        /**
-         * Instructs the editor to remeasure its container. This method should
-         * be called when the container of the editor gets resized.
-         *
-         * If a dimension is passed in, the passed in value will be used.
-         */
-        layout(dimension?: IDimension): void;
-        /**
-         * Brings browser focus to the editor text
-         */
-        focus(): void;
-        /**
-         * Returns true if the text inside this editor is focused (i.e. cursor is blinking).
-         */
-        hasTextFocus(): boolean;
-        /**
-         * Returns all actions associated with this editor.
-         */
-        getSupportedActions(): IEditorAction[];
-        /**
-         * Saves current view state of the editor in a serializable object.
-         */
-        saveViewState(): IEditorViewState | null;
-        /**
-         * Restores the view state of the editor from a serializable object generated by `saveViewState`.
-         */
-        restoreViewState(state: IEditorViewState | null): void;
-        /**
-         * Given a position, returns a column number that takes tab-widths into account.
-         */
-        getVisibleColumnFromPosition(position: IPosition): number;
-        /**
-         * Returns the primary position of the cursor.
-         */
-        getPosition(): Position | null;
-        /**
-         * Set the primary position of the cursor. This will remove any secondary cursors.
-         * @param position New primary cursor's position
-         * @param source Source of the call that caused the position
-         */
-        setPosition(position: IPosition, source?: string): void;
-        /**
-         * Scroll vertically as necessary and reveal a line.
-         */
-        revealLine(lineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically as necessary and reveal a line centered vertically.
-         */
-        revealLineInCenter(lineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically as necessary and reveal a line centered vertically only if it lies outside the viewport.
-         */
-        revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically as necessary and reveal a line close to the top of the viewport,
-         * optimized for viewing a code definition.
-         */
-        revealLineNearTop(lineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a position.
-         */
-        revealPosition(position: IPosition, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a position centered vertically.
-         */
-        revealPositionInCenter(position: IPosition, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a position centered vertically only if it lies outside the viewport.
-         */
-        revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a position close to the top of the viewport,
-         * optimized for viewing a code definition.
-         */
-        revealPositionNearTop(position: IPosition, scrollType?: ScrollType): void;
-        /**
-         * Returns the primary selection of the editor.
-         */
-        getSelection(): Selection | null;
-        /**
-         * Returns all the selections of the editor.
-         */
-        getSelections(): Selection[] | null;
-        /**
-         * Set the primary selection of the editor. This will remove any secondary cursors.
-         * @param selection The new selection
-         * @param source Source of the call that caused the selection
-         */
-        setSelection(selection: IRange, source?: string): void;
-        /**
-         * Set the primary selection of the editor. This will remove any secondary cursors.
-         * @param selection The new selection
-         * @param source Source of the call that caused the selection
-         */
-        setSelection(selection: Range, source?: string): void;
-        /**
-         * Set the primary selection of the editor. This will remove any secondary cursors.
-         * @param selection The new selection
-         * @param source Source of the call that caused the selection
-         */
-        setSelection(selection: ISelection, source?: string): void;
-        /**
-         * Set the primary selection of the editor. This will remove any secondary cursors.
-         * @param selection The new selection
-         * @param source Source of the call that caused the selection
-         */
-        setSelection(selection: Selection, source?: string): void;
-        /**
-         * Set the selections for all the cursors of the editor.
-         * Cursors will be removed or added, as necessary.
-         * @param selections The new selection
-         * @param source Source of the call that caused the selection
-         */
-        setSelections(selections: readonly ISelection[], source?: string): void;
-        /**
-         * Scroll vertically as necessary and reveal lines.
-         */
-        revealLines(startLineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically as necessary and reveal lines centered vertically.
-         */
-        revealLinesInCenter(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically as necessary and reveal lines centered vertically only if it lies outside the viewport.
-         */
-        revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically as necessary and reveal lines close to the top of the viewport,
-         * optimized for viewing a code definition.
-         */
-        revealLinesNearTop(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a range.
-         */
-        revealRange(range: IRange, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a range centered vertically.
-         */
-        revealRangeInCenter(range: IRange, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a range at the top of the viewport.
-         */
-        revealRangeAtTop(range: IRange, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.
-         */
-        revealRangeInCenterIfOutsideViewport(range: IRange, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a range close to the top of the viewport,
-         * optimized for viewing a code definition.
-         */
-        revealRangeNearTop(range: IRange, scrollType?: ScrollType): void;
-        /**
-         * Scroll vertically or horizontally as necessary and reveal a range close to the top of the viewport,
-         * optimized for viewing a code definition. Only if it lies outside the viewport.
-         */
-        revealRangeNearTopIfOutsideViewport(range: IRange, scrollType?: ScrollType): void;
-        /**
-         * Directly trigger a handler or an editor action.
-         * @param source The source of the call.
-         * @param handlerId The id of the handler or the id of a contribution.
-         * @param payload Extra data to be sent to the handler.
-         */
-        trigger(source: string | null | undefined, handlerId: string, payload: any): void;
-        /**
-         * Gets the current model attached to this editor.
-         */
-        getModel(): IEditorModel | null;
-        /**
-         * Sets the current model attached to this editor.
-         * If the previous model was created by the editor via the value key in the options
-         * literal object, it will be destroyed. Otherwise, if the previous model was set
-         * via setModel, or the model key in the options literal object, the previous model
-         * will not be destroyed.
-         * It is safe to call setModel(null) to simply detach the current model from the editor.
-         */
-        setModel(model: IEditorModel | null): void;
-        /**
-         * Create a collection of decorations. All decorations added through this collection
-         * will get the ownerId of the editor (meaning they will not show up in other editors).
-         * These decorations will be automatically cleared when the editor's model changes.
-         */
-        createDecorationsCollection(decorations?: IModelDeltaDecoration[]): IEditorDecorationsCollection;
-    }
-
-    /**
-     * A collection of decorations
-     */
-    export interface IEditorDecorationsCollection {
-        /**
-         * An event emitted when decorations change in the editor,
-         * but the change is not caused by us setting or clearing the collection.
-         */
-        onDidChange: IEvent<IModelDecorationsChangedEvent>;
-        /**
-         * Get the decorations count.
-         */
-        length: number;
-        /**
-         * Get the range for a decoration.
-         */
-        getRange(index: number): Range | null;
-        /**
-         * Get all ranges for decorations.
-         */
-        getRanges(): Range[];
-        /**
-         * Determine if a decoration is in this collection.
-         */
-        has(decoration: IModelDecoration): boolean;
-        /**
-         * Replace all previous decorations with `newDecorations`.
-         */
-        set(newDecorations: IModelDeltaDecoration[]): void;
-        /**
-         * Remove all previous decorations.
-         */
-        clear(): void;
-    }
-
-    /**
-     * An editor contribution that gets created every time a new editor gets created and gets disposed when the editor gets disposed.
-     */
-    export interface IEditorContribution {
-        /**
-         * Dispose this contribution.
-         */
-        dispose(): void;
-        /**
-         * Store view state.
-         */
-        saveViewState?(): any;
-        /**
-         * Restore view state.
-         */
-        restoreViewState?(state: any): void;
-    }
-
-    /**
-     * The type of the `IEditor`.
-     */
-    export const EditorType: {
-        ICodeEditor: string;
-        IDiffEditor: string;
-    };
-
-    /**
-     * An event describing that the current language associated with a model has changed.
-     */
-    export interface IModelLanguageChangedEvent {
-        /**
-         * Previous language
-         */
-        readonly oldLanguage: string;
-        /**
-         * New language
-         */
-        readonly newLanguage: string;
-        /**
-         * Source of the call that caused the event.
-         */
-        readonly source: string;
-    }
-
-    /**
-     * An event describing that the language configuration associated with a model has changed.
-     */
-    export interface IModelLanguageConfigurationChangedEvent {
-    }
-
-    export interface IModelContentChange {
-        /**
-         * The range that got replaced.
-         */
-        readonly range: IRange;
-        /**
-         * The offset of the range that got replaced.
-         */
-        readonly rangeOffset: number;
-        /**
-         * The length of the range that got replaced.
-         */
-        readonly rangeLength: number;
-        /**
-         * The new text for the range.
-         */
-        readonly text: string;
-    }
-
-    /**
-     * An event describing a change in the text of a model.
-     */
-    export interface IModelContentChangedEvent {
-        readonly changes: IModelContentChange[];
-        /**
-         * The (new) end-of-line character.
-         */
-        readonly eol: string;
-        /**
-         * The new version id the model has transitioned to.
-         */
-        readonly versionId: number;
-        /**
-         * Flag that indicates that this event was generated while undoing.
-         */
-        readonly isUndoing: boolean;
-        /**
-         * Flag that indicates that this event was generated while redoing.
-         */
-        readonly isRedoing: boolean;
-        /**
-         * Flag that indicates that all decorations were lost with this edit.
-         * The model has been reset to a new value.
-         */
-        readonly isFlush: boolean;
-    }
-
-    /**
-     * An event describing that model decorations have changed.
-     */
-    export interface IModelDecorationsChangedEvent {
-        readonly affectsMinimap: boolean;
-        readonly affectsOverviewRuler: boolean;
-    }
-
-    export interface IModelOptionsChangedEvent {
-        readonly tabSize: boolean;
-        readonly indentSize: boolean;
-        readonly insertSpaces: boolean;
-        readonly trimAutoWhitespace: boolean;
-    }
-
-    /**
-     * Describes the reason the cursor has changed its position.
-     */
-    export enum CursorChangeReason {
-        /**
-         * Unknown or not set.
-         */
-        NotSet = 0,
-        /**
-         * A `model.setValue()` was called.
-         */
-        ContentFlush = 1,
-        /**
-         * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.
-         */
-        RecoverFromMarkers = 2,
-        /**
-         * There was an explicit user gesture.
-         */
-        Explicit = 3,
-        /**
-         * There was a Paste.
-         */
-        Paste = 4,
-        /**
-         * There was an Undo.
-         */
-        Undo = 5,
-        /**
-         * There was a Redo.
-         */
-        Redo = 6
-    }
-
-    /**
-     * An event describing that the cursor position has changed.
-     */
-    export interface ICursorPositionChangedEvent {
-        /**
-         * Primary cursor's position.
-         */
-        readonly position: Position;
-        /**
-         * Secondary cursors' position.
-         */
-        readonly secondaryPositions: Position[];
-        /**
-         * Reason.
-         */
-        readonly reason: CursorChangeReason;
-        /**
-         * Source of the call that caused the event.
-         */
-        readonly source: string;
-    }
-
-    /**
-     * An event describing that the cursor selection has changed.
-     */
-    export interface ICursorSelectionChangedEvent {
-        /**
-         * The primary selection.
-         */
-        readonly selection: Selection;
-        /**
-         * The secondary selections.
-         */
-        readonly secondarySelections: Selection[];
-        /**
-         * The model version id.
-         */
-        readonly modelVersionId: number;
-        /**
-         * The old selections.
-         */
-        readonly oldSelections: Selection[] | null;
-        /**
-         * The model version id the that `oldSelections` refer to.
-         */
-        readonly oldModelVersionId: number;
-        /**
-         * Source of the call that caused the event.
-         */
-        readonly source: string;
-        /**
-         * Reason.
-         */
-        readonly reason: CursorChangeReason;
-    }
-
-    export enum AccessibilitySupport {
-        /**
-         * This should be the browser case where it is not known if a screen reader is attached or no.
-         */
-        Unknown = 0,
-        Disabled = 1,
-        Enabled = 2
-    }
-
-    /**
-     * Configuration options for auto closing quotes and brackets
-     */
-    export type EditorAutoClosingStrategy = 'always' | 'languageDefined' | 'beforeWhitespace' | 'never';
-
-    /**
-     * Configuration options for auto wrapping quotes and brackets
-     */
-    export type EditorAutoSurroundStrategy = 'languageDefined' | 'quotes' | 'brackets' | 'never';
-
-    /**
-     * Configuration options for typing over closing quotes or brackets
-     */
-    export type EditorAutoClosingEditStrategy = 'always' | 'auto' | 'never';
-
-    /**
-     * Configuration options for auto indentation in the editor
-     */
-    export enum EditorAutoIndentStrategy {
-        None = 0,
-        Keep = 1,
-        Brackets = 2,
-        Advanced = 3,
-        Full = 4
-    }
-
-    /**
-     * Configuration options for the editor.
-     */
-    export interface IEditorOptions {
-        /**
-         * This editor is used inside a diff editor.
-         */
-        inDiffEditor?: boolean;
-        /**
-         * The aria label for the editor's textarea (when it is focused).
-         */
-        ariaLabel?: string;
-        /**
-         * The `tabindex` property of the editor's textarea
-         */
-        tabIndex?: number;
-        /**
-         * Render vertical lines at the specified columns.
-         * Defaults to empty array.
-         */
-        rulers?: (number | IRulerOption)[];
-        /**
-         * A string containing the word separators used when doing word navigation.
-         * Defaults to `~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?
-         */
-        wordSeparators?: string;
-        /**
-         * Enable Linux primary clipboard.
-         * Defaults to true.
-         */
-        selectionClipboard?: boolean;
-        /**
-         * Control the rendering of line numbers.
-         * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.
-         * Otherwise, if it is a truthy, line numbers will be rendered normally (equivalent of using an identity function).
-         * Otherwise, line numbers will not be rendered.
-         * Defaults to `on`.
-         */
-        lineNumbers?: LineNumbersType;
-        /**
-         * Controls the minimal number of visible leading and trailing lines surrounding the cursor.
-         * Defaults to 0.
-        */
-        cursorSurroundingLines?: number;
-        /**
-         * Controls when `cursorSurroundingLines` should be enforced
-         * Defaults to `default`, `cursorSurroundingLines` is not enforced when cursor position is changed
-         * by mouse.
-        */
-        cursorSurroundingLinesStyle?: 'default' | 'all';
-        /**
-         * Render last line number when the file ends with a newline.
-         * Defaults to 'on' for Windows and macOS and 'dimmed' for Linux.
-        */
-        renderFinalNewline?: 'on' | 'off' | 'dimmed';
-        /**
-         * Remove unusual line terminators like LINE SEPARATOR (LS), PARAGRAPH SEPARATOR (PS).
-         * Defaults to 'prompt'.
-         */
-        unusualLineTerminators?: 'auto' | 'off' | 'prompt';
-        /**
-         * Should the corresponding line be selected when clicking on the line number?
-         * Defaults to true.
-         */
-        selectOnLineNumbers?: boolean;
-        /**
-         * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.
-         * Defaults to 5.
-         */
-        lineNumbersMinChars?: number;
-        /**
-         * Enable the rendering of the glyph margin.
-         * Defaults to true in vscode and to false in monaco-editor.
-         */
-        glyphMargin?: boolean;
-        /**
-         * The width reserved for line decorations (in px).
-         * Line decorations are placed between line numbers and the editor content.
-         * You can pass in a string in the format floating point followed by "ch". e.g. 1.3ch.
-         * Defaults to 10.
-         */
-        lineDecorationsWidth?: number | string;
-        /**
-         * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.
-         * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.
-         * Defaults to 30 (px).
-         */
-        revealHorizontalRightPadding?: number;
-        /**
-         * Render the editor selection with rounded borders.
-         * Defaults to true.
-         */
-        roundedSelection?: boolean;
-        /**
-         * Class name to be added to the editor.
-         */
-        extraEditorClassName?: string;
-        /**
-         * Should the editor be read only. See also `domReadOnly`.
-         * Defaults to false.
-         */
-        readOnly?: boolean;
-        /**
-         * Should the textarea used for input use the DOM `readonly` attribute.
-         * Defaults to false.
-         */
-        domReadOnly?: boolean;
-        /**
-         * Enable linked editing.
-         * Defaults to false.
-         */
-        linkedEditing?: boolean;
-        /**
-         * deprecated, use linkedEditing instead
-         */
-        renameOnType?: boolean;
-        /**
-         * Should the editor render validation decorations.
-         * Defaults to editable.
-         */
-        renderValidationDecorations?: 'editable' | 'on' | 'off';
-        /**
-         * Control the behavior and rendering of the scrollbars.
-         */
-        scrollbar?: IEditorScrollbarOptions;
-        /**
-         * Control the behavior of sticky scroll options
-         */
-        stickyScroll?: IEditorStickyScrollOptions;
-        /**
-         * Control the behavior and rendering of the minimap.
-         */
-        minimap?: IEditorMinimapOptions;
-        /**
-         * Control the behavior of the find widget.
-         */
-        find?: IEditorFindOptions;
-        /**
-         * Display overflow widgets as `fixed`.
-         * Defaults to `false`.
-         */
-        fixedOverflowWidgets?: boolean;
-        /**
-         * The number of vertical lanes the overview ruler should render.
-         * Defaults to 3.
-         */
-        overviewRulerLanes?: number;
-        /**
-         * Controls if a border should be drawn around the overview ruler.
-         * Defaults to `true`.
-         */
-        overviewRulerBorder?: boolean;
-        /**
-         * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.
-         * Defaults to 'blink'.
-         */
-        cursorBlinking?: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid';
-        /**
-         * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.
-         * Defaults to false.
-         */
-        mouseWheelZoom?: boolean;
-        /**
-         * Control the mouse pointer style, either 'text' or 'default' or 'copy'
-         * Defaults to 'text'
-         */
-        mouseStyle?: 'text' | 'default' | 'copy';
-        /**
-         * Enable smooth caret animation.
-         * Defaults to 'off'.
-         */
-        cursorSmoothCaretAnimation?: 'off' | 'explicit' | 'on';
-        /**
-         * Control the cursor style, either 'block' or 'line'.
-         * Defaults to 'line'.
-         */
-        cursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';
-        /**
-         * Control the width of the cursor when cursorStyle is set to 'line'
-         */
-        cursorWidth?: number;
-        /**
-         * Enable font ligatures.
-         * Defaults to false.
-         */
-        fontLigatures?: boolean | string;
-        /**
-         * Enable font variations.
-         * Defaults to false.
-         */
-        fontVariations?: boolean | string;
-        /**
-         * Disable the use of `transform: translate3d(0px, 0px, 0px)` for the editor margin and lines layers.
-         * The usage of `transform: translate3d(0px, 0px, 0px)` acts as a hint for browsers to create an extra layer.
-         * Defaults to false.
-         */
-        disableLayerHinting?: boolean;
-        /**
-         * Disable the optimizations for monospace fonts.
-         * Defaults to false.
-         */
-        disableMonospaceOptimizations?: boolean;
-        /**
-         * Should the cursor be hidden in the overview ruler.
-         * Defaults to false.
-         */
-        hideCursorInOverviewRuler?: boolean;
-        /**
-         * Enable that scrolling can go one screen size after the last line.
-         * Defaults to true.
-         */
-        scrollBeyondLastLine?: boolean;
-        /**
-         * Enable that scrolling can go beyond the last column by a number of columns.
-         * Defaults to 5.
-         */
-        scrollBeyondLastColumn?: number;
-        /**
-         * Enable that the editor animates scrolling to a position.
-         * Defaults to false.
-         */
-        smoothScrolling?: boolean;
-        /**
-         * Enable that the editor will install a ResizeObserver to check if its container dom node size has changed.
-         * Defaults to false.
-         */
-        automaticLayout?: boolean;
-        /**
-         * Control the wrapping of the editor.
-         * When `wordWrap` = "off", the lines will never wrap.
-         * When `wordWrap` = "on", the lines will wrap at the viewport width.
-         * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`.
-         * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn).
-         * Defaults to "off".
-         */
-        wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';
-        /**
-         * Override the `wordWrap` setting.
-         */
-        wordWrapOverride1?: 'off' | 'on' | 'inherit';
-        /**
-         * Override the `wordWrapOverride1` setting.
-         */
-        wordWrapOverride2?: 'off' | 'on' | 'inherit';
-        /**
-         * Control the wrapping of the editor.
-         * When `wordWrap` = "off", the lines will never wrap.
-         * When `wordWrap` = "on", the lines will wrap at the viewport width.
-         * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`.
-         * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn).
-         * Defaults to 80.
-         */
-        wordWrapColumn?: number;
-        /**
-         * Control indentation of wrapped lines. Can be: 'none', 'same', 'indent' or 'deepIndent'.
-         * Defaults to 'same' in vscode and to 'none' in monaco-editor.
-         */
-        wrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent';
-        /**
-         * Controls the wrapping strategy to use.
-         * Defaults to 'simple'.
-         */
-        wrappingStrategy?: 'simple' | 'advanced';
-        /**
-         * Configure word wrapping characters. A break will be introduced before these characters.
-         */
-        wordWrapBreakBeforeCharacters?: string;
-        /**
-         * Configure word wrapping characters. A break will be introduced after these characters.
-         */
-        wordWrapBreakAfterCharacters?: string;
-        /**
-         * Sets whether line breaks appear wherever the text would otherwise overflow its content box.
-         * When wordBreak = 'normal', Use the default line break rule.
-         * When wordBreak = 'keepAll', Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.
-         */
-        wordBreak?: 'normal' | 'keepAll';
-        /**
-         * Performance guard: Stop rendering a line after x characters.
-         * Defaults to 10000.
-         * Use -1 to never stop rendering
-         */
-        stopRenderingLineAfter?: number;
-        /**
-         * Configure the editor's hover.
-         */
-        hover?: IEditorHoverOptions;
-        /**
-         * Enable detecting links and making them clickable.
-         * Defaults to true.
-         */
-        links?: boolean;
-        /**
-         * Enable inline color decorators and color picker rendering.
-         */
-        colorDecorators?: boolean;
-        /**
-         * Controls the max number of color decorators that can be rendered in an editor at once.
-         */
-        colorDecoratorsLimit?: number;
-        /**
-         * Control the behaviour of comments in the editor.
-         */
-        comments?: IEditorCommentsOptions;
-        /**
-         * Enable custom contextmenu.
-         * Defaults to true.
-         */
-        contextmenu?: boolean;
-        /**
-         * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.
-         * Defaults to 1.
-         */
-        mouseWheelScrollSensitivity?: number;
-        /**
-         * FastScrolling mulitplier speed when pressing `Alt`
-         * Defaults to 5.
-         */
-        fastScrollSensitivity?: number;
-        /**
-         * Enable that the editor scrolls only the predominant axis. Prevents horizontal drift when scrolling vertically on a trackpad.
-         * Defaults to true.
-         */
-        scrollPredominantAxis?: boolean;
-        /**
-         * Enable that the selection with the mouse and keys is doing column selection.
-         * Defaults to false.
-         */
-        columnSelection?: boolean;
-        /**
-         * The modifier to be used to add multiple cursors with the mouse.
-         * Defaults to 'alt'
-         */
-        multiCursorModifier?: 'ctrlCmd' | 'alt';
-        /**
-         * Merge overlapping selections.
-         * Defaults to true
-         */
-        multiCursorMergeOverlapping?: boolean;
-        /**
-         * Configure the behaviour when pasting a text with the line count equal to the cursor count.
-         * Defaults to 'spread'.
-         */
-        multiCursorPaste?: 'spread' | 'full';
-        /**
-         * Controls the max number of text cursors that can be in an active editor at once.
-         */
-        multiCursorLimit?: number;
-        /**
-         * Configure the editor's accessibility support.
-         * Defaults to 'auto'. It is best to leave this to 'auto'.
-         */
-        accessibilitySupport?: 'auto' | 'off' | 'on';
-        /**
-         * Controls the number of lines in the editor that can be read out by a screen reader
-         */
-        accessibilityPageSize?: number;
-        /**
-         * Suggest options.
-         */
-        suggest?: ISuggestOptions;
-        inlineSuggest?: IInlineSuggestOptions;
-        /**
-         * Smart select options.
-         */
-        smartSelect?: ISmartSelectOptions;
-        /**
-         *
-         */
-        gotoLocation?: IGotoLocationOptions;
-        /**
-         * Enable quick suggestions (shadow suggestions)
-         * Defaults to true.
-         */
-        quickSuggestions?: boolean | IQuickSuggestionsOptions;
-        /**
-         * Quick suggestions show delay (in ms)
-         * Defaults to 10 (ms)
-         */
-        quickSuggestionsDelay?: number;
-        /**
-         * Controls the spacing around the editor.
-         */
-        padding?: IEditorPaddingOptions;
-        /**
-         * Parameter hint options.
-         */
-        parameterHints?: IEditorParameterHintOptions;
-        /**
-         * Options for auto closing brackets.
-         * Defaults to language defined behavior.
-         */
-        autoClosingBrackets?: EditorAutoClosingStrategy;
-        /**
-         * Options for auto closing quotes.
-         * Defaults to language defined behavior.
-         */
-        autoClosingQuotes?: EditorAutoClosingStrategy;
-        /**
-         * Options for pressing backspace near quotes or bracket pairs.
-         */
-        autoClosingDelete?: EditorAutoClosingEditStrategy;
-        /**
-         * Options for typing over closing quotes or brackets.
-         */
-        autoClosingOvertype?: EditorAutoClosingEditStrategy;
-        /**
-         * Options for auto surrounding.
-         * Defaults to always allowing auto surrounding.
-         */
-        autoSurround?: EditorAutoSurroundStrategy;
-        /**
-         * Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.
-         * Defaults to advanced.
-         */
-        autoIndent?: 'none' | 'keep' | 'brackets' | 'advanced' | 'full';
-        /**
-         * Emulate selection behaviour of tab characters when using spaces for indentation.
-         * This means selection will stick to tab stops.
-         */
-        stickyTabStops?: boolean;
-        /**
-         * Enable format on type.
-         * Defaults to false.
-         */
-        formatOnType?: boolean;
-        /**
-         * Enable format on paste.
-         * Defaults to false.
-         */
-        formatOnPaste?: boolean;
-        /**
-         * Controls if the editor should allow to move selections via drag and drop.
-         * Defaults to false.
-         */
-        dragAndDrop?: boolean;
-        /**
-         * Enable the suggestion box to pop-up on trigger characters.
-         * Defaults to true.
-         */
-        suggestOnTriggerCharacters?: boolean;
-        /**
-         * Accept suggestions on ENTER.
-         * Defaults to 'on'.
-         */
-        acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';
-        /**
-         * Accept suggestions on provider defined characters.
-         * Defaults to true.
-         */
-        acceptSuggestionOnCommitCharacter?: boolean;
-        /**
-         * Enable snippet suggestions. Default to 'true'.
-         */
-        snippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';
-        /**
-         * Copying without a selection copies the current line.
-         */
-        emptySelectionClipboard?: boolean;
-        /**
-         * Syntax highlighting is copied.
-         */
-        copyWithSyntaxHighlighting?: boolean;
-        /**
-         * The history mode for suggestions.
-         */
-        suggestSelection?: 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix';
-        /**
-         * The font size for the suggest widget.
-         * Defaults to the editor font size.
-         */
-        suggestFontSize?: number;
-        /**
-         * The line height for the suggest widget.
-         * Defaults to the editor line height.
-         */
-        suggestLineHeight?: number;
-        /**
-         * Enable tab completion.
-         */
-        tabCompletion?: 'on' | 'off' | 'onlySnippets';
-        /**
-         * Enable selection highlight.
-         * Defaults to true.
-         */
-        selectionHighlight?: boolean;
-        /**
-         * Enable semantic occurrences highlight.
-         * Defaults to true.
-         */
-        occurrencesHighlight?: boolean;
-        /**
-         * Show code lens
-         * Defaults to true.
-         */
-        codeLens?: boolean;
-        /**
-         * Code lens font family. Defaults to editor font family.
-         */
-        codeLensFontFamily?: string;
-        /**
-         * Code lens font size. Default to 90% of the editor font size
-         */
-        codeLensFontSize?: number;
-        /**
-         * Control the behavior and rendering of the code action lightbulb.
-         */
-        lightbulb?: IEditorLightbulbOptions;
-        /**
-         * Timeout for running code actions on save.
-         */
-        codeActionsOnSaveTimeout?: number;
-        /**
-         * Enable code folding.
-         * Defaults to true.
-         */
-        folding?: boolean;
-        /**
-         * Selects the folding strategy. 'auto' uses the strategies contributed for the current document, 'indentation' uses the indentation based folding strategy.
-         * Defaults to 'auto'.
-         */
-        foldingStrategy?: 'auto' | 'indentation';
-        /**
-         * Enable highlight for folded regions.
-         * Defaults to true.
-         */
-        foldingHighlight?: boolean;
-        /**
-         * Auto fold imports folding regions.
-         * Defaults to true.
-         */
-        foldingImportsByDefault?: boolean;
-        /**
-         * Maximum number of foldable regions.
-         * Defaults to 5000.
-         */
-        foldingMaximumRegions?: number;
-        /**
-         * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.
-         * Defaults to 'mouseover'.
-         */
-        showFoldingControls?: 'always' | 'never' | 'mouseover';
-        /**
-         * Controls whether clicking on the empty content after a folded line will unfold the line.
-         * Defaults to false.
-         */
-        unfoldOnClickAfterEndOfLine?: boolean;
-        /**
-         * Enable highlighting of matching brackets.
-         * Defaults to 'always'.
-         */
-        matchBrackets?: 'never' | 'near' | 'always';
-        /**
-         * Enable experimental whitespace rendering.
-         * Defaults to 'svg'.
-         */
-        experimentalWhitespaceRendering?: 'svg' | 'font' | 'off';
-        /**
-         * Enable rendering of whitespace.
-         * Defaults to 'selection'.
-         */
-        renderWhitespace?: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';
-        /**
-         * Enable rendering of control characters.
-         * Defaults to true.
-         */
-        renderControlCharacters?: boolean;
-        /**
-         * Enable rendering of current line highlight.
-         * Defaults to all.
-         */
-        renderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';
-        /**
-         * Control if the current line highlight should be rendered only the editor is focused.
-         * Defaults to false.
-         */
-        renderLineHighlightOnlyWhenFocus?: boolean;
-        /**
-         * Inserting and deleting whitespace follows tab stops.
-         */
-        useTabStops?: boolean;
-        /**
-         * The font family
-         */
-        fontFamily?: string;
-        /**
-         * The font weight
-         */
-        fontWeight?: string;
-        /**
-         * The font size
-         */
-        fontSize?: number;
-        /**
-         * The line height
-         */
-        lineHeight?: number;
-        /**
-         * The letter spacing
-         */
-        letterSpacing?: number;
-        /**
-         * Controls fading out of unused variables.
-         */
-        showUnused?: boolean;
-        /**
-         * Controls whether to focus the inline editor in the peek widget by default.
-         * Defaults to false.
-         */
-        peekWidgetDefaultFocus?: 'tree' | 'editor';
-        /**
-         * Controls whether the definition link opens element in the peek widget.
-         * Defaults to false.
-         */
-        definitionLinkOpensInPeek?: boolean;
-        /**
-         * Controls strikethrough deprecated variables.
-         */
-        showDeprecated?: boolean;
-        /**
-         * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning
-         */
-        matchOnWordStartOnly?: boolean;
-        /**
-         * Control the behavior and rendering of the inline hints.
-         */
-        inlayHints?: IEditorInlayHintsOptions;
-        /**
-         * Control if the editor should use shadow DOM.
-         */
-        useShadowDOM?: boolean;
-        /**
-         * Controls the behavior of editor guides.
-        */
-        guides?: IGuidesOptions;
-        /**
-         * Controls the behavior of the unicode highlight feature
-         * (by default, ambiguous and invisible characters are highlighted).
-         */
-        unicodeHighlight?: IUnicodeHighlightOptions;
-        /**
-         * Configures bracket pair colorization (disabled by default).
-        */
-        bracketPairColorization?: IBracketPairColorizationOptions;
-        /**
-         * Controls dropping into the editor from an external source.
-         *
-         * When enabled, this shows a preview of the drop location and triggers an `onDropIntoEditor` event.
-         */
-        dropIntoEditor?: IDropIntoEditorOptions;
-    }
-
-    export interface IDiffEditorBaseOptions {
-        /**
-         * Allow the user to resize the diff editor split view.
-         * Defaults to true.
-         */
-        enableSplitViewResizing?: boolean;
-        /**
-         * Render the differences in two side-by-side editors.
-         * Defaults to true.
-         */
-        renderSideBySide?: boolean;
-        /**
-         * Timeout in milliseconds after which diff computation is cancelled.
-         * Defaults to 5000.
-         */
-        maxComputationTime?: number;
-        /**
-         * Maximum supported file size in MB.
-         * Defaults to 50.
-         */
-        maxFileSize?: number;
-        /**
-         * Compute the diff by ignoring leading/trailing whitespace
-         * Defaults to true.
-         */
-        ignoreTrimWhitespace?: boolean;
-        /**
-         * Render +/- indicators for added/deleted changes.
-         * Defaults to true.
-         */
-        renderIndicators?: boolean;
-        /**
-         * Shows icons in the glyph margin to revert changes.
-         * Default to true.
-         */
-        renderMarginRevertIcon?: boolean;
-        /**
-         * Original model should be editable?
-         * Defaults to false.
-         */
-        originalEditable?: boolean;
-        /**
-         * Should the diff editor enable code lens?
-         * Defaults to false.
-         */
-        diffCodeLens?: boolean;
-        /**
-         * Is the diff editor should render overview ruler
-         * Defaults to true
-         */
-        renderOverviewRuler?: boolean;
-        /**
-         * Control the wrapping of the diff editor.
-         */
-        diffWordWrap?: 'off' | 'on' | 'inherit';
-        /**
-         * Diff Algorithm
-        */
-        diffAlgorithm?: 'smart' | 'experimental' | IDocumentDiffProvider;
-    }
-
-    /**
-     * Configuration options for the diff editor.
-     */
-    export interface IDiffEditorOptions extends IEditorOptions, IDiffEditorBaseOptions {
-    }
-
-    /**
-     * An event describing that the configuration of the editor has changed.
-     */
-    export class ConfigurationChangedEvent {
-        hasChanged(id: EditorOption): boolean;
-    }
-
-    /**
-     * All computed editor options.
-     */
-    export interface IComputedEditorOptions {
-        get<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;
-    }
-
-    export interface IEditorOption<K extends EditorOption, V> {
-        readonly id: K;
-        readonly name: string;
-        defaultValue: V;
-        /**
-         * Might modify `value`.
-        */
-        applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V>;
-    }
-
-    export class ApplyUpdateResult<T> {
-        readonly newValue: T;
-        readonly didChange: boolean;
-        constructor(newValue: T, didChange: boolean);
-    }
-
-    /**
-     * Configuration options for editor comments
-     */
-    export interface IEditorCommentsOptions {
-        /**
-         * Insert a space after the line comment token and inside the block comments tokens.
-         * Defaults to true.
-         */
-        insertSpace?: boolean;
-        /**
-         * Ignore empty lines when inserting line comments.
-         * Defaults to true.
-         */
-        ignoreEmptyLines?: boolean;
-    }
-
-    /**
-     * The kind of animation in which the editor's cursor should be rendered.
-     */
-    export enum TextEditorCursorBlinkingStyle {
-        /**
-         * Hidden
-         */
-        Hidden = 0,
-        /**
-         * Blinking
-         */
-        Blink = 1,
-        /**
-         * Blinking with smooth fading
-         */
-        Smooth = 2,
-        /**
-         * Blinking with prolonged filled state and smooth fading
-         */
-        Phase = 3,
-        /**
-         * Expand collapse animation on the y axis
-         */
-        Expand = 4,
-        /**
-         * No-Blinking
-         */
-        Solid = 5
-    }
-
-    /**
-     * The style in which the editor's cursor should be rendered.
-     */
-    export enum TextEditorCursorStyle {
-        /**
-         * As a vertical line (sitting between two characters).
-         */
-        Line = 1,
-        /**
-         * As a block (sitting on top of a character).
-         */
-        Block = 2,
-        /**
-         * As a horizontal line (sitting under a character).
-         */
-        Underline = 3,
-        /**
-         * As a thin vertical line (sitting between two characters).
-         */
-        LineThin = 4,
-        /**
-         * As an outlined block (sitting on top of a character).
-         */
-        BlockOutline = 5,
-        /**
-         * As a thin horizontal line (sitting under a character).
-         */
-        UnderlineThin = 6
-    }
-
-    /**
-     * Configuration options for editor find widget
-     */
-    export interface IEditorFindOptions {
-        /**
-        * Controls whether the cursor should move to find matches while typing.
-        */
-        cursorMoveOnType?: boolean;
-        /**
-         * Controls if we seed search string in the Find Widget with editor selection.
-         */
-        seedSearchStringFromSelection?: 'never' | 'always' | 'selection';
-        /**
-         * Controls if Find in Selection flag is turned on in the editor.
-         */
-        autoFindInSelection?: 'never' | 'always' | 'multiline';
-        addExtraSpaceOnTop?: boolean;
-        /**
-         * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found
-         */
-        loop?: boolean;
-    }
-
-    export type GoToLocationValues = 'peek' | 'gotoAndPeek' | 'goto';
-
-    /**
-     * Configuration options for go to location
-     */
-    export interface IGotoLocationOptions {
-        multiple?: GoToLocationValues;
-        multipleDefinitions?: GoToLocationValues;
-        multipleTypeDefinitions?: GoToLocationValues;
-        multipleDeclarations?: GoToLocationValues;
-        multipleImplementations?: GoToLocationValues;
-        multipleReferences?: GoToLocationValues;
-        alternativeDefinitionCommand?: string;
-        alternativeTypeDefinitionCommand?: string;
-        alternativeDeclarationCommand?: string;
-        alternativeImplementationCommand?: string;
-        alternativeReferenceCommand?: string;
-    }
-
-    /**
-     * Configuration options for editor hover
-     */
-    export interface IEditorHoverOptions {
-        /**
-         * Enable the hover.
-         * Defaults to true.
-         */
-        enabled?: boolean;
-        /**
-         * Delay for showing the hover.
-         * Defaults to 300.
-         */
-        delay?: number;
-        /**
-         * Is the hover sticky such that it can be clicked and its contents selected?
-         * Defaults to true.
-         */
-        sticky?: boolean;
-        /**
-         * Should the hover be shown above the line if possible?
-         * Defaults to false.
-         */
-        above?: boolean;
-    }
-
-    /**
-     * A description for the overview ruler position.
-     */
-    export interface OverviewRulerPosition {
-        /**
-         * Width of the overview ruler
-         */
-        readonly width: number;
-        /**
-         * Height of the overview ruler
-         */
-        readonly height: number;
-        /**
-         * Top position for the overview ruler
-         */
-        readonly top: number;
-        /**
-         * Right position for the overview ruler
-         */
-        readonly right: number;
-    }
-
-    export enum RenderMinimap {
-        None = 0,
-        Text = 1,
-        Blocks = 2
-    }
-
-    /**
-     * The internal layout details of the editor.
-     */
-    export interface EditorLayoutInfo {
-        /**
-         * Full editor width.
-         */
-        readonly width: number;
-        /**
-         * Full editor height.
-         */
-        readonly height: number;
-        /**
-         * Left position for the glyph margin.
-         */
-        readonly glyphMarginLeft: number;
-        /**
-         * The width of the glyph margin.
-         */
-        readonly glyphMarginWidth: number;
-        /**
-         * Left position for the line numbers.
-         */
-        readonly lineNumbersLeft: number;
-        /**
-         * The width of the line numbers.
-         */
-        readonly lineNumbersWidth: number;
-        /**
-         * Left position for the line decorations.
-         */
-        readonly decorationsLeft: number;
-        /**
-         * The width of the line decorations.
-         */
-        readonly decorationsWidth: number;
-        /**
-         * Left position for the content (actual text)
-         */
-        readonly contentLeft: number;
-        /**
-         * The width of the content (actual text)
-         */
-        readonly contentWidth: number;
-        /**
-         * Layout information for the minimap
-         */
-        readonly minimap: EditorMinimapLayoutInfo;
-        /**
-         * The number of columns (of typical characters) fitting on a viewport line.
-         */
-        readonly viewportColumn: number;
-        readonly isWordWrapMinified: boolean;
-        readonly isViewportWrapping: boolean;
-        readonly wrappingColumn: number;
-        /**
-         * The width of the vertical scrollbar.
-         */
-        readonly verticalScrollbarWidth: number;
-        /**
-         * The height of the horizontal scrollbar.
-         */
-        readonly horizontalScrollbarHeight: number;
-        /**
-         * The position of the overview ruler.
-         */
-        readonly overviewRuler: OverviewRulerPosition;
-    }
-
-    /**
-     * The internal layout details of the editor.
-     */
-    export interface EditorMinimapLayoutInfo {
-        readonly renderMinimap: RenderMinimap;
-        readonly minimapLeft: number;
-        readonly minimapWidth: number;
-        readonly minimapHeightIsEditorHeight: boolean;
-        readonly minimapIsSampling: boolean;
-        readonly minimapScale: number;
-        readonly minimapLineHeight: number;
-        readonly minimapCanvasInnerWidth: number;
-        readonly minimapCanvasInnerHeight: number;
-        readonly minimapCanvasOuterWidth: number;
-        readonly minimapCanvasOuterHeight: number;
-    }
-
-    /**
-     * Configuration options for editor lightbulb
-     */
-    export interface IEditorLightbulbOptions {
-        /**
-         * Enable the lightbulb code action.
-         * Defaults to true.
-         */
-        enabled?: boolean;
-    }
-
-    export interface IEditorStickyScrollOptions {
-        /**
-         * Enable the sticky scroll
-         */
-        enabled?: boolean;
-        /**
-         * Maximum number of sticky lines to show
-         */
-        maxLineCount?: number;
-    }
-
-    /**
-     * Configuration options for editor inlayHints
-     */
-    export interface IEditorInlayHintsOptions {
-        /**
-         * Enable the inline hints.
-         * Defaults to true.
-         */
-        enabled?: 'on' | 'off' | 'offUnlessPressed' | 'onUnlessPressed';
-        /**
-         * Font size of inline hints.
-         * Default to 90% of the editor font size.
-         */
-        fontSize?: number;
-        /**
-         * Font family of inline hints.
-         * Defaults to editor font family.
-         */
-        fontFamily?: string;
-        /**
-         * Enables the padding around the inlay hint.
-         * Defaults to false.
-         */
-        padding?: boolean;
-    }
-
-    /**
-     * Configuration options for editor minimap
-     */
-    export interface IEditorMinimapOptions {
-        /**
-         * Enable the rendering of the minimap.
-         * Defaults to true.
-         */
-        enabled?: boolean;
-        /**
-         * Control the rendering of minimap.
-         */
-        autohide?: boolean;
-        /**
-         * Control the side of the minimap in editor.
-         * Defaults to 'right'.
-         */
-        side?: 'right' | 'left';
-        /**
-         * Control the minimap rendering mode.
-         * Defaults to 'actual'.
-         */
-        size?: 'proportional' | 'fill' | 'fit';
-        /**
-         * Control the rendering of the minimap slider.
-         * Defaults to 'mouseover'.
-         */
-        showSlider?: 'always' | 'mouseover';
-        /**
-         * Render the actual text on a line (as opposed to color blocks).
-         * Defaults to true.
-         */
-        renderCharacters?: boolean;
-        /**
-         * Limit the width of the minimap to render at most a certain number of columns.
-         * Defaults to 120.
-         */
-        maxColumn?: number;
-        /**
-         * Relative size of the font in the minimap. Defaults to 1.
-         */
-        scale?: number;
-    }
-
-    /**
-     * Configuration options for editor padding
-     */
-    export interface IEditorPaddingOptions {
-        /**
-         * Spacing between top edge of editor and first line.
-         */
-        top?: number;
-        /**
-         * Spacing between bottom edge of editor and last line.
-         */
-        bottom?: number;
-    }
-
-    /**
-     * Configuration options for parameter hints
-     */
-    export interface IEditorParameterHintOptions {
-        /**
-         * Enable parameter hints.
-         * Defaults to true.
-         */
-        enabled?: boolean;
-        /**
-         * Enable cycling of parameter hints.
-         * Defaults to false.
-         */
-        cycle?: boolean;
-    }
-
-    export type QuickSuggestionsValue = 'on' | 'inline' | 'off';
-
-    /**
-     * Configuration options for quick suggestions
-     */
-    export interface IQuickSuggestionsOptions {
-        other?: boolean | QuickSuggestionsValue;
-        comments?: boolean | QuickSuggestionsValue;
-        strings?: boolean | QuickSuggestionsValue;
-    }
-
-    export interface InternalQuickSuggestionsOptions {
-        readonly other: QuickSuggestionsValue;
-        readonly comments: QuickSuggestionsValue;
-        readonly strings: QuickSuggestionsValue;
-    }
-
-    export type LineNumbersType = 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
-
-    export enum RenderLineNumbersType {
-        Off = 0,
-        On = 1,
-        Relative = 2,
-        Interval = 3,
-        Custom = 4
-    }
-
-    export interface InternalEditorRenderLineNumbersOptions {
-        readonly renderType: RenderLineNumbersType;
-        readonly renderFn: ((lineNumber: number) => string) | null;
-    }
-
-    export interface IRulerOption {
-        readonly column: number;
-        readonly color: string | null;
-    }
-
-    /**
-     * Configuration options for editor scrollbars
-     */
-    export interface IEditorScrollbarOptions {
-        /**
-         * The size of arrows (if displayed).
-         * Defaults to 11.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        arrowSize?: number;
-        /**
-         * Render vertical scrollbar.
-         * Defaults to 'auto'.
-         */
-        vertical?: 'auto' | 'visible' | 'hidden';
-        /**
-         * Render horizontal scrollbar.
-         * Defaults to 'auto'.
-         */
-        horizontal?: 'auto' | 'visible' | 'hidden';
-        /**
-         * Cast horizontal and vertical shadows when the content is scrolled.
-         * Defaults to true.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        useShadows?: boolean;
-        /**
-         * Render arrows at the top and bottom of the vertical scrollbar.
-         * Defaults to false.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        verticalHasArrows?: boolean;
-        /**
-         * Render arrows at the left and right of the horizontal scrollbar.
-         * Defaults to false.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        horizontalHasArrows?: boolean;
-        /**
-         * Listen to mouse wheel events and react to them by scrolling.
-         * Defaults to true.
-         */
-        handleMouseWheel?: boolean;
-        /**
-         * Always consume mouse wheel events (always call preventDefault() and stopPropagation() on the browser events).
-         * Defaults to true.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        alwaysConsumeMouseWheel?: boolean;
-        /**
-         * Height in pixels for the horizontal scrollbar.
-         * Defaults to 10 (px).
-         */
-        horizontalScrollbarSize?: number;
-        /**
-         * Width in pixels for the vertical scrollbar.
-         * Defaults to 10 (px).
-         */
-        verticalScrollbarSize?: number;
-        /**
-         * Width in pixels for the vertical slider.
-         * Defaults to `verticalScrollbarSize`.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        verticalSliderSize?: number;
-        /**
-         * Height in pixels for the horizontal slider.
-         * Defaults to `horizontalScrollbarSize`.
-         * **NOTE**: This option cannot be updated using `updateOptions()`
-         */
-        horizontalSliderSize?: number;
-        /**
-         * Scroll gutter clicks move by page vs jump to position.
-         * Defaults to false.
-         */
-        scrollByPage?: boolean;
-    }
-
-    export interface InternalEditorScrollbarOptions {
-        readonly arrowSize: number;
-        readonly vertical: ScrollbarVisibility;
-        readonly horizontal: ScrollbarVisibility;
-        readonly useShadows: boolean;
-        readonly verticalHasArrows: boolean;
-        readonly horizontalHasArrows: boolean;
-        readonly handleMouseWheel: boolean;
-        readonly alwaysConsumeMouseWheel: boolean;
-        readonly horizontalScrollbarSize: number;
-        readonly horizontalSliderSize: number;
-        readonly verticalScrollbarSize: number;
-        readonly verticalSliderSize: number;
-        readonly scrollByPage: boolean;
-    }
-
-    export type InUntrustedWorkspace = 'inUntrustedWorkspace';
-
-    /**
-     * Configuration options for unicode highlighting.
-     */
-    export interface IUnicodeHighlightOptions {
-        /**
-         * Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.
-         */
-        nonBasicASCII?: boolean | InUntrustedWorkspace;
-        /**
-         * Controls whether characters that just reserve space or have no width at all are highlighted.
-         */
-        invisibleCharacters?: boolean;
-        /**
-         * Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.
-         */
-        ambiguousCharacters?: boolean;
-        /**
-         * Controls whether characters in comments should also be subject to unicode highlighting.
-         */
-        includeComments?: boolean | InUntrustedWorkspace;
-        /**
-         * Controls whether characters in strings should also be subject to unicode highlighting.
-         */
-        includeStrings?: boolean | InUntrustedWorkspace;
-        /**
-         * Defines allowed characters that are not being highlighted.
-         */
-        allowedCharacters?: Record<string, true>;
-        /**
-         * Unicode characters that are common in allowed locales are not being highlighted.
-         */
-        allowedLocales?: Record<string | '_os' | '_vscode', true>;
-    }
-
-    export interface IInlineSuggestOptions {
-        /**
-         * Enable or disable the rendering of automatic inline completions.
-        */
-        enabled?: boolean;
-        /**
-         * Configures the mode.
-         * Use `prefix` to only show ghost text if the text to replace is a prefix of the suggestion text.
-         * Use `subword` to only show ghost text if the replace text is a subword of the suggestion text.
-         * Use `subwordSmart` to only show ghost text if the replace text is a subword of the suggestion text, but the subword must start after the cursor position.
-         * Defaults to `prefix`.
-        */
-        mode?: 'prefix' | 'subword' | 'subwordSmart';
-        showToolbar?: 'always' | 'onHover';
-    }
-
-    export interface IBracketPairColorizationOptions {
-        /**
-         * Enable or disable bracket pair colorization.
-        */
-        enabled?: boolean;
-        /**
-         * Use independent color pool per bracket type.
-        */
-        independentColorPoolPerBracketType?: boolean;
-    }
-
-    export interface IGuidesOptions {
-        /**
-         * Enable rendering of bracket pair guides.
-         * Defaults to false.
-        */
-        bracketPairs?: boolean | 'active';
-        /**
-         * Enable rendering of vertical bracket pair guides.
-         * Defaults to 'active'.
-         */
-        bracketPairsHorizontal?: boolean | 'active';
-        /**
-         * Enable highlighting of the active bracket pair.
-         * Defaults to true.
-        */
-        highlightActiveBracketPair?: boolean;
-        /**
-         * Enable rendering of indent guides.
-         * Defaults to true.
-         */
-        indentation?: boolean;
-        /**
-         * Enable highlighting of the active indent guide.
-         * Defaults to true.
-         */
-        highlightActiveIndentation?: boolean | 'always';
-    }
-
-    /**
-     * Configuration options for editor suggest widget
-     */
-    export interface ISuggestOptions {
-        /**
-         * Overwrite word ends on accept. Default to false.
-         */
-        insertMode?: 'insert' | 'replace';
-        /**
-         * Enable graceful matching. Defaults to true.
-         */
-        filterGraceful?: boolean;
-        /**
-         * Prevent quick suggestions when a snippet is active. Defaults to true.
-         */
-        snippetsPreventQuickSuggestions?: boolean;
-        /**
-         * Favors words that appear close to the cursor.
-         */
-        localityBonus?: boolean;
-        /**
-         * Enable using global storage for remembering suggestions.
-         */
-        shareSuggestSelections?: boolean;
-        /**
-         * Select suggestions when triggered via quick suggest or trigger characters
-         */
-        selectionMode?: 'always' | 'never' | 'whenTriggerCharacter' | 'whenQuickSuggestion';
-        /**
-         * Enable or disable icons in suggestions. Defaults to true.
-         */
-        showIcons?: boolean;
-        /**
-         * Enable or disable the suggest status bar.
-         */
-        showStatusBar?: boolean;
-        /**
-         * Enable or disable the rendering of the suggestion preview.
-         */
-        preview?: boolean;
-        /**
-         * Configures the mode of the preview.
-        */
-        previewMode?: 'prefix' | 'subword' | 'subwordSmart';
-        /**
-         * Show details inline with the label. Defaults to true.
-         */
-        showInlineDetails?: boolean;
-        /**
-         * Show method-suggestions.
-         */
-        showMethods?: boolean;
-        /**
-         * Show function-suggestions.
-         */
-        showFunctions?: boolean;
-        /**
-         * Show constructor-suggestions.
-         */
-        showConstructors?: boolean;
-        /**
-         * Show deprecated-suggestions.
-         */
-        showDeprecated?: boolean;
-        /**
-         * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning
-         */
-        matchOnWordStartOnly?: boolean;
-        /**
-         * Show field-suggestions.
-         */
-        showFields?: boolean;
-        /**
-         * Show variable-suggestions.
-         */
-        showVariables?: boolean;
-        /**
-         * Show class-suggestions.
-         */
-        showClasses?: boolean;
-        /**
-         * Show struct-suggestions.
-         */
-        showStructs?: boolean;
-        /**
-         * Show interface-suggestions.
-         */
-        showInterfaces?: boolean;
-        /**
-         * Show module-suggestions.
-         */
-        showModules?: boolean;
-        /**
-         * Show property-suggestions.
-         */
-        showProperties?: boolean;
-        /**
-         * Show event-suggestions.
-         */
-        showEvents?: boolean;
-        /**
-         * Show operator-suggestions.
-         */
-        showOperators?: boolean;
-        /**
-         * Show unit-suggestions.
-         */
-        showUnits?: boolean;
-        /**
-         * Show value-suggestions.
-         */
-        showValues?: boolean;
-        /**
-         * Show constant-suggestions.
-         */
-        showConstants?: boolean;
-        /**
-         * Show enum-suggestions.
-         */
-        showEnums?: boolean;
-        /**
-         * Show enumMember-suggestions.
-         */
-        showEnumMembers?: boolean;
-        /**
-         * Show keyword-suggestions.
-         */
-        showKeywords?: boolean;
-        /**
-         * Show text-suggestions.
-         */
-        showWords?: boolean;
-        /**
-         * Show color-suggestions.
-         */
-        showColors?: boolean;
-        /**
-         * Show file-suggestions.
-         */
-        showFiles?: boolean;
-        /**
-         * Show reference-suggestions.
-         */
-        showReferences?: boolean;
-        /**
-         * Show folder-suggestions.
-         */
-        showFolders?: boolean;
-        /**
-         * Show typeParameter-suggestions.
-         */
-        showTypeParameters?: boolean;
-        /**
-         * Show issue-suggestions.
-         */
-        showIssues?: boolean;
-        /**
-         * Show user-suggestions.
-         */
-        showUsers?: boolean;
-        /**
-         * Show snippet-suggestions.
-         */
-        showSnippets?: boolean;
-    }
-
-    export interface ISmartSelectOptions {
-        selectLeadingAndTrailingWhitespace?: boolean;
-    }
-
-    /**
-     * Describes how to indent wrapped lines.
-     */
-    export enum WrappingIndent {
-        /**
-         * No indentation => wrapped lines begin at column 1.
-         */
-        None = 0,
-        /**
-         * Same => wrapped lines get the same indentation as the parent.
-         */
-        Same = 1,
-        /**
-         * Indent => wrapped lines get +1 indentation toward the parent.
-         */
-        Indent = 2,
-        /**
-         * DeepIndent => wrapped lines get +2 indentation toward the parent.
-         */
-        DeepIndent = 3
-    }
-
-    export interface EditorWrappingInfo {
-        readonly isDominatedByLongLines: boolean;
-        readonly isWordWrapMinified: boolean;
-        readonly isViewportWrapping: boolean;
-        readonly wrappingColumn: number;
-    }
-
-    /**
-     * Configuration options for editor drop into behavior
-     */
-    export interface IDropIntoEditorOptions {
-        /**
-         * Enable the dropping into editor.
-         * Defaults to true.
-         */
-        enabled?: boolean;
-    }
-
-    export enum EditorOption {
-        acceptSuggestionOnCommitCharacter = 0,
-        acceptSuggestionOnEnter = 1,
-        accessibilitySupport = 2,
-        accessibilityPageSize = 3,
-        ariaLabel = 4,
-        autoClosingBrackets = 5,
-        autoClosingDelete = 6,
-        autoClosingOvertype = 7,
-        autoClosingQuotes = 8,
-        autoIndent = 9,
-        automaticLayout = 10,
-        autoSurround = 11,
-        bracketPairColorization = 12,
-        guides = 13,
-        codeLens = 14,
-        codeLensFontFamily = 15,
-        codeLensFontSize = 16,
-        colorDecorators = 17,
-        colorDecoratorsLimit = 18,
-        columnSelection = 19,
-        comments = 20,
-        contextmenu = 21,
-        copyWithSyntaxHighlighting = 22,
-        cursorBlinking = 23,
-        cursorSmoothCaretAnimation = 24,
-        cursorStyle = 25,
-        cursorSurroundingLines = 26,
-        cursorSurroundingLinesStyle = 27,
-        cursorWidth = 28,
-        disableLayerHinting = 29,
-        disableMonospaceOptimizations = 30,
-        domReadOnly = 31,
-        dragAndDrop = 32,
-        dropIntoEditor = 33,
-        emptySelectionClipboard = 34,
-        experimentalWhitespaceRendering = 35,
-        extraEditorClassName = 36,
-        fastScrollSensitivity = 37,
-        find = 38,
-        fixedOverflowWidgets = 39,
-        folding = 40,
-        foldingStrategy = 41,
-        foldingHighlight = 42,
-        foldingImportsByDefault = 43,
-        foldingMaximumRegions = 44,
-        unfoldOnClickAfterEndOfLine = 45,
-        fontFamily = 46,
-        fontInfo = 47,
-        fontLigatures = 48,
-        fontSize = 49,
-        fontWeight = 50,
-        fontVariations = 51,
-        formatOnPaste = 52,
-        formatOnType = 53,
-        glyphMargin = 54,
-        gotoLocation = 55,
-        hideCursorInOverviewRuler = 56,
-        hover = 57,
-        inDiffEditor = 58,
-        inlineSuggest = 59,
-        letterSpacing = 60,
-        lightbulb = 61,
-        lineDecorationsWidth = 62,
-        lineHeight = 63,
-        lineNumbers = 64,
-        lineNumbersMinChars = 65,
-        linkedEditing = 66,
-        links = 67,
-        matchBrackets = 68,
-        minimap = 69,
-        mouseStyle = 70,
-        mouseWheelScrollSensitivity = 71,
-        mouseWheelZoom = 72,
-        multiCursorMergeOverlapping = 73,
-        multiCursorModifier = 74,
-        multiCursorPaste = 75,
-        multiCursorLimit = 76,
-        occurrencesHighlight = 77,
-        overviewRulerBorder = 78,
-        overviewRulerLanes = 79,
-        padding = 80,
-        parameterHints = 81,
-        peekWidgetDefaultFocus = 82,
-        definitionLinkOpensInPeek = 83,
-        quickSuggestions = 84,
-        quickSuggestionsDelay = 85,
-        readOnly = 86,
-        renameOnType = 87,
-        renderControlCharacters = 88,
-        renderFinalNewline = 89,
-        renderLineHighlight = 90,
-        renderLineHighlightOnlyWhenFocus = 91,
-        renderValidationDecorations = 92,
-        renderWhitespace = 93,
-        revealHorizontalRightPadding = 94,
-        roundedSelection = 95,
-        rulers = 96,
-        scrollbar = 97,
-        scrollBeyondLastColumn = 98,
-        scrollBeyondLastLine = 99,
-        scrollPredominantAxis = 100,
-        selectionClipboard = 101,
-        selectionHighlight = 102,
-        selectOnLineNumbers = 103,
-        showFoldingControls = 104,
-        showUnused = 105,
-        snippetSuggestions = 106,
-        smartSelect = 107,
-        smoothScrolling = 108,
-        stickyScroll = 109,
-        stickyTabStops = 110,
-        stopRenderingLineAfter = 111,
-        suggest = 112,
-        suggestFontSize = 113,
-        suggestLineHeight = 114,
-        suggestOnTriggerCharacters = 115,
-        suggestSelection = 116,
-        tabCompletion = 117,
-        tabIndex = 118,
-        unicodeHighlighting = 119,
-        unusualLineTerminators = 120,
-        useShadowDOM = 121,
-        useTabStops = 122,
-        wordBreak = 123,
-        wordSeparators = 124,
-        wordWrap = 125,
-        wordWrapBreakAfterCharacters = 126,
-        wordWrapBreakBeforeCharacters = 127,
-        wordWrapColumn = 128,
-        wordWrapOverride1 = 129,
-        wordWrapOverride2 = 130,
-        wrappingIndent = 131,
-        wrappingStrategy = 132,
-        showDeprecated = 133,
-        inlayHints = 134,
-        editorClassName = 135,
-        pixelRatio = 136,
-        tabFocusMode = 137,
-        layoutInfo = 138,
-        wrappingInfo = 139
-    }
-
-    export const EditorOptions: {
-        acceptSuggestionOnCommitCharacter: IEditorOption<EditorOption.acceptSuggestionOnCommitCharacter, boolean>;
-        acceptSuggestionOnEnter: IEditorOption<EditorOption.acceptSuggestionOnEnter, 'on' | 'off' | 'smart'>;
-        accessibilitySupport: IEditorOption<EditorOption.accessibilitySupport, AccessibilitySupport>;
-        accessibilityPageSize: IEditorOption<EditorOption.accessibilityPageSize, number>;
-        ariaLabel: IEditorOption<EditorOption.ariaLabel, string>;
-        autoClosingBrackets: IEditorOption<EditorOption.autoClosingBrackets, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
-        autoClosingDelete: IEditorOption<EditorOption.autoClosingDelete, 'always' | 'never' | 'auto'>;
-        autoClosingOvertype: IEditorOption<EditorOption.autoClosingOvertype, 'always' | 'never' | 'auto'>;
-        autoClosingQuotes: IEditorOption<EditorOption.autoClosingQuotes, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
-        autoIndent: IEditorOption<EditorOption.autoIndent, EditorAutoIndentStrategy>;
-        automaticLayout: IEditorOption<EditorOption.automaticLayout, boolean>;
-        autoSurround: IEditorOption<EditorOption.autoSurround, 'languageDefined' | 'never' | 'quotes' | 'brackets'>;
-        bracketPairColorization: IEditorOption<EditorOption.bracketPairColorization, Readonly<Required<IBracketPairColorizationOptions>>>;
-        bracketPairGuides: IEditorOption<EditorOption.guides, Readonly<Required<IGuidesOptions>>>;
-        stickyTabStops: IEditorOption<EditorOption.stickyTabStops, boolean>;
-        codeLens: IEditorOption<EditorOption.codeLens, boolean>;
-        codeLensFontFamily: IEditorOption<EditorOption.codeLensFontFamily, string>;
-        codeLensFontSize: IEditorOption<EditorOption.codeLensFontSize, number>;
-        colorDecorators: IEditorOption<EditorOption.colorDecorators, boolean>;
-        colorDecoratorsLimit: IEditorOption<EditorOption.colorDecoratorsLimit, number>;
-        columnSelection: IEditorOption<EditorOption.columnSelection, boolean>;
-        comments: IEditorOption<EditorOption.comments, Readonly<Required<IEditorCommentsOptions>>>;
-        contextmenu: IEditorOption<EditorOption.contextmenu, boolean>;
-        copyWithSyntaxHighlighting: IEditorOption<EditorOption.copyWithSyntaxHighlighting, boolean>;
-        cursorBlinking: IEditorOption<EditorOption.cursorBlinking, TextEditorCursorBlinkingStyle>;
-        cursorSmoothCaretAnimation: IEditorOption<EditorOption.cursorSmoothCaretAnimation, 'on' | 'off' | 'explicit'>;
-        cursorStyle: IEditorOption<EditorOption.cursorStyle, TextEditorCursorStyle>;
-        cursorSurroundingLines: IEditorOption<EditorOption.cursorSurroundingLines, number>;
-        cursorSurroundingLinesStyle: IEditorOption<EditorOption.cursorSurroundingLinesStyle, 'default' | 'all'>;
-        cursorWidth: IEditorOption<EditorOption.cursorWidth, number>;
-        disableLayerHinting: IEditorOption<EditorOption.disableLayerHinting, boolean>;
-        disableMonospaceOptimizations: IEditorOption<EditorOption.disableMonospaceOptimizations, boolean>;
-        domReadOnly: IEditorOption<EditorOption.domReadOnly, boolean>;
-        dragAndDrop: IEditorOption<EditorOption.dragAndDrop, boolean>;
-        emptySelectionClipboard: IEditorOption<EditorOption.emptySelectionClipboard, boolean>;
-        dropIntoEditor: IEditorOption<EditorOption.dropIntoEditor, Readonly<Required<IDropIntoEditorOptions>>>;
-        stickyScroll: IEditorOption<EditorOption.stickyScroll, Readonly<Required<IEditorStickyScrollOptions>>>;
-        experimentalWhitespaceRendering: IEditorOption<EditorOption.experimentalWhitespaceRendering, 'off' | 'svg' | 'font'>;
-        extraEditorClassName: IEditorOption<EditorOption.extraEditorClassName, string>;
-        fastScrollSensitivity: IEditorOption<EditorOption.fastScrollSensitivity, number>;
-        find: IEditorOption<EditorOption.find, Readonly<Required<IEditorFindOptions>>>;
-        fixedOverflowWidgets: IEditorOption<EditorOption.fixedOverflowWidgets, boolean>;
-        folding: IEditorOption<EditorOption.folding, boolean>;
-        foldingStrategy: IEditorOption<EditorOption.foldingStrategy, 'auto' | 'indentation'>;
-        foldingHighlight: IEditorOption<EditorOption.foldingHighlight, boolean>;
-        foldingImportsByDefault: IEditorOption<EditorOption.foldingImportsByDefault, boolean>;
-        foldingMaximumRegions: IEditorOption<EditorOption.foldingMaximumRegions, number>;
-        unfoldOnClickAfterEndOfLine: IEditorOption<EditorOption.unfoldOnClickAfterEndOfLine, boolean>;
-        fontFamily: IEditorOption<EditorOption.fontFamily, string>;
-        fontInfo: IEditorOption<EditorOption.fontInfo, FontInfo>;
-        fontLigatures2: IEditorOption<EditorOption.fontLigatures, string>;
-        fontSize: IEditorOption<EditorOption.fontSize, number>;
-        fontWeight: IEditorOption<EditorOption.fontWeight, string>;
-        fontVariations: IEditorOption<EditorOption.fontVariations, string>;
-        formatOnPaste: IEditorOption<EditorOption.formatOnPaste, boolean>;
-        formatOnType: IEditorOption<EditorOption.formatOnType, boolean>;
-        glyphMargin: IEditorOption<EditorOption.glyphMargin, boolean>;
-        gotoLocation: IEditorOption<EditorOption.gotoLocation, Readonly<Required<IGotoLocationOptions>>>;
-        hideCursorInOverviewRuler: IEditorOption<EditorOption.hideCursorInOverviewRuler, boolean>;
-        hover: IEditorOption<EditorOption.hover, Readonly<Required<IEditorHoverOptions>>>;
-        inDiffEditor: IEditorOption<EditorOption.inDiffEditor, boolean>;
-        letterSpacing: IEditorOption<EditorOption.letterSpacing, number>;
-        lightbulb: IEditorOption<EditorOption.lightbulb, Readonly<Required<IEditorLightbulbOptions>>>;
-        lineDecorationsWidth: IEditorOption<EditorOption.lineDecorationsWidth, number>;
-        lineHeight: IEditorOption<EditorOption.lineHeight, number>;
-        lineNumbers: IEditorOption<EditorOption.lineNumbers, InternalEditorRenderLineNumbersOptions>;
-        lineNumbersMinChars: IEditorOption<EditorOption.lineNumbersMinChars, number>;
-        linkedEditing: IEditorOption<EditorOption.linkedEditing, boolean>;
-        links: IEditorOption<EditorOption.links, boolean>;
-        matchBrackets: IEditorOption<EditorOption.matchBrackets, 'always' | 'never' | 'near'>;
-        minimap: IEditorOption<EditorOption.minimap, Readonly<Required<IEditorMinimapOptions>>>;
-        mouseStyle: IEditorOption<EditorOption.mouseStyle, 'default' | 'text' | 'copy'>;
-        mouseWheelScrollSensitivity: IEditorOption<EditorOption.mouseWheelScrollSensitivity, number>;
-        mouseWheelZoom: IEditorOption<EditorOption.mouseWheelZoom, boolean>;
-        multiCursorMergeOverlapping: IEditorOption<EditorOption.multiCursorMergeOverlapping, boolean>;
-        multiCursorModifier: IEditorOption<EditorOption.multiCursorModifier, 'altKey' | 'metaKey' | 'ctrlKey'>;
-        multiCursorPaste: IEditorOption<EditorOption.multiCursorPaste, 'spread' | 'full'>;
-        multiCursorLimit: IEditorOption<EditorOption.multiCursorLimit, number>;
-        occurrencesHighlight: IEditorOption<EditorOption.occurrencesHighlight, boolean>;
-        overviewRulerBorder: IEditorOption<EditorOption.overviewRulerBorder, boolean>;
-        overviewRulerLanes: IEditorOption<EditorOption.overviewRulerLanes, number>;
-        padding: IEditorOption<EditorOption.padding, Readonly<Required<IEditorPaddingOptions>>>;
-        parameterHints: IEditorOption<EditorOption.parameterHints, Readonly<Required<IEditorParameterHintOptions>>>;
-        peekWidgetDefaultFocus: IEditorOption<EditorOption.peekWidgetDefaultFocus, 'tree' | 'editor'>;
-        definitionLinkOpensInPeek: IEditorOption<EditorOption.definitionLinkOpensInPeek, boolean>;
-        quickSuggestions: IEditorOption<EditorOption.quickSuggestions, InternalQuickSuggestionsOptions>;
-        quickSuggestionsDelay: IEditorOption<EditorOption.quickSuggestionsDelay, number>;
-        readOnly: IEditorOption<EditorOption.readOnly, boolean>;
-        renameOnType: IEditorOption<EditorOption.renameOnType, boolean>;
-        renderControlCharacters: IEditorOption<EditorOption.renderControlCharacters, boolean>;
-        renderFinalNewline: IEditorOption<EditorOption.renderFinalNewline, 'on' | 'off' | 'dimmed'>;
-        renderLineHighlight: IEditorOption<EditorOption.renderLineHighlight, 'all' | 'line' | 'none' | 'gutter'>;
-        renderLineHighlightOnlyWhenFocus: IEditorOption<EditorOption.renderLineHighlightOnlyWhenFocus, boolean>;
-        renderValidationDecorations: IEditorOption<EditorOption.renderValidationDecorations, 'on' | 'off' | 'editable'>;
-        renderWhitespace: IEditorOption<EditorOption.renderWhitespace, 'all' | 'none' | 'boundary' | 'selection' | 'trailing'>;
-        revealHorizontalRightPadding: IEditorOption<EditorOption.revealHorizontalRightPadding, number>;
-        roundedSelection: IEditorOption<EditorOption.roundedSelection, boolean>;
-        rulers: IEditorOption<EditorOption.rulers, {}>;
-        scrollbar: IEditorOption<EditorOption.scrollbar, InternalEditorScrollbarOptions>;
-        scrollBeyondLastColumn: IEditorOption<EditorOption.scrollBeyondLastColumn, number>;
-        scrollBeyondLastLine: IEditorOption<EditorOption.scrollBeyondLastLine, boolean>;
-        scrollPredominantAxis: IEditorOption<EditorOption.scrollPredominantAxis, boolean>;
-        selectionClipboard: IEditorOption<EditorOption.selectionClipboard, boolean>;
-        selectionHighlight: IEditorOption<EditorOption.selectionHighlight, boolean>;
-        selectOnLineNumbers: IEditorOption<EditorOption.selectOnLineNumbers, boolean>;
-        showFoldingControls: IEditorOption<EditorOption.showFoldingControls, 'always' | 'never' | 'mouseover'>;
-        showUnused: IEditorOption<EditorOption.showUnused, boolean>;
-        showDeprecated: IEditorOption<EditorOption.showDeprecated, boolean>;
-        inlayHints: IEditorOption<EditorOption.inlayHints, Readonly<Required<IEditorInlayHintsOptions>>>;
-        snippetSuggestions: IEditorOption<EditorOption.snippetSuggestions, 'none' | 'top' | 'bottom' | 'inline'>;
-        smartSelect: IEditorOption<EditorOption.smartSelect, Readonly<Required<ISmartSelectOptions>>>;
-        smoothScrolling: IEditorOption<EditorOption.smoothScrolling, boolean>;
-        stopRenderingLineAfter: IEditorOption<EditorOption.stopRenderingLineAfter, number>;
-        suggest: IEditorOption<EditorOption.suggest, Readonly<Required<ISuggestOptions>>>;
-        inlineSuggest: IEditorOption<EditorOption.inlineSuggest, Readonly<Required<IInlineSuggestOptions>>>;
-        suggestFontSize: IEditorOption<EditorOption.suggestFontSize, number>;
-        suggestLineHeight: IEditorOption<EditorOption.suggestLineHeight, number>;
-        suggestOnTriggerCharacters: IEditorOption<EditorOption.suggestOnTriggerCharacters, boolean>;
-        suggestSelection: IEditorOption<EditorOption.suggestSelection, 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix'>;
-        tabCompletion: IEditorOption<EditorOption.tabCompletion, 'on' | 'off' | 'onlySnippets'>;
-        tabIndex: IEditorOption<EditorOption.tabIndex, number>;
-        unicodeHighlight: IEditorOption<EditorOption.unicodeHighlighting, any>;
-        unusualLineTerminators: IEditorOption<EditorOption.unusualLineTerminators, 'auto' | 'off' | 'prompt'>;
-        useShadowDOM: IEditorOption<EditorOption.useShadowDOM, boolean>;
-        useTabStops: IEditorOption<EditorOption.useTabStops, boolean>;
-        wordBreak: IEditorOption<EditorOption.wordBreak, 'normal' | 'keepAll'>;
-        wordSeparators: IEditorOption<EditorOption.wordSeparators, string>;
-        wordWrap: IEditorOption<EditorOption.wordWrap, 'on' | 'off' | 'wordWrapColumn' | 'bounded'>;
-        wordWrapBreakAfterCharacters: IEditorOption<EditorOption.wordWrapBreakAfterCharacters, string>;
-        wordWrapBreakBeforeCharacters: IEditorOption<EditorOption.wordWrapBreakBeforeCharacters, string>;
-        wordWrapColumn: IEditorOption<EditorOption.wordWrapColumn, number>;
-        wordWrapOverride1: IEditorOption<EditorOption.wordWrapOverride1, 'on' | 'off' | 'inherit'>;
-        wordWrapOverride2: IEditorOption<EditorOption.wordWrapOverride2, 'on' | 'off' | 'inherit'>;
-        editorClassName: IEditorOption<EditorOption.editorClassName, string>;
-        pixelRatio: IEditorOption<EditorOption.pixelRatio, number>;
-        tabFocusMode: IEditorOption<EditorOption.tabFocusMode, boolean>;
-        layoutInfo: IEditorOption<EditorOption.layoutInfo, EditorLayoutInfo>;
-        wrappingInfo: IEditorOption<EditorOption.wrappingInfo, EditorWrappingInfo>;
-        wrappingIndent: IEditorOption<EditorOption.wrappingIndent, WrappingIndent>;
-        wrappingStrategy: IEditorOption<EditorOption.wrappingStrategy, 'simple' | 'advanced'>;
-    };
-
-    type EditorOptionsType = typeof EditorOptions;
-
-    type FindEditorOptionsKeyById<T extends EditorOption> = {
-        [K in keyof EditorOptionsType]: EditorOptionsType[K]['id'] extends T ? K : never;
-    }[keyof EditorOptionsType];
-
-    type ComputedEditorOptionValue<T extends IEditorOption<any, any>> = T extends IEditorOption<any, infer R> ? R : never;
-
-    export type FindComputedEditorOptionValueById<T extends EditorOption> = NonNullable<ComputedEditorOptionValue<EditorOptionsType[FindEditorOptionsKeyById<T>]>>;
-
-    export interface IEditorConstructionOptions extends IEditorOptions {
-        /**
-         * The initial editor dimension (to avoid measuring the container).
-         */
-        dimension?: IDimension;
-        /**
-         * Place overflow widgets inside an external DOM node.
-         * Defaults to an internal DOM node.
-         */
-        overflowWidgetsDomNode?: HTMLElement;
-    }
-
-    /**
-     * A view zone is a full horizontal rectangle that 'pushes' text down.
-     * The editor reserves space for view zones when rendering.
-     */
-    export interface IViewZone {
-        /**
-         * The line number after which this zone should appear.
-         * Use 0 to place a view zone before the first line number.
-         */
-        afterLineNumber: number;
-        /**
-         * The column after which this zone should appear.
-         * If not set, the maxLineColumn of `afterLineNumber` will be used.
-         * This is relevant for wrapped lines.
-         */
-        afterColumn?: number;
-        /**
-         * If the `afterColumn` has multiple view columns, the affinity specifies which one to use. Defaults to `none`.
-        */
-        afterColumnAffinity?: PositionAffinity;
-        /**
-         * Suppress mouse down events.
-         * If set, the editor will attach a mouse down listener to the view zone and .preventDefault on it.
-         * Defaults to false
-         */
-        suppressMouseDown?: boolean;
-        /**
-         * The height in lines of the view zone.
-         * If specified, `heightInPx` will be used instead of this.
-         * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.
-         */
-        heightInLines?: number;
-        /**
-         * The height in px of the view zone.
-         * If this is set, the editor will give preference to it rather than `heightInLines` above.
-         * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.
-         */
-        heightInPx?: number;
-        /**
-         * The minimum width in px of the view zone.
-         * If this is set, the editor will ensure that the scroll width is >= than this value.
-         */
-        minWidthInPx?: number;
-        /**
-         * The dom node of the view zone
-         */
-        domNode: HTMLElement;
-        /**
-         * An optional dom node for the view zone that will be placed in the margin area.
-         */
-        marginDomNode?: HTMLElement | null;
-        /**
-         * Callback which gives the relative top of the view zone as it appears (taking scrolling into account).
-         */
-        onDomNodeTop?: (top: number) => void;
-        /**
-         * Callback which gives the height in pixels of the view zone.
-         */
-        onComputedHeight?: (height: number) => void;
-    }
-
-    /**
-     * An accessor that allows for zones to be added or removed.
-     */
-    export interface IViewZoneChangeAccessor {
-        /**
-         * Create a new view zone.
-         * @param zone Zone to create
-         * @return A unique identifier to the view zone.
-         */
-        addZone(zone: IViewZone): string;
-        /**
-         * Remove a zone
-         * @param id A unique identifier to the view zone, as returned by the `addZone` call.
-         */
-        removeZone(id: string): void;
-        /**
-         * Change a zone's position.
-         * The editor will rescan the `afterLineNumber` and `afterColumn` properties of a view zone.
-         */
-        layoutZone(id: string): void;
-    }
-
-    /**
-     * A positioning preference for rendering content widgets.
-     */
-    export enum ContentWidgetPositionPreference {
-        /**
-         * Place the content widget exactly at a position
-         */
-        EXACT = 0,
-        /**
-         * Place the content widget above a position
-         */
-        ABOVE = 1,
-        /**
-         * Place the content widget below a position
-         */
-        BELOW = 2
-    }
-
-    /**
-     * A position for rendering content widgets.
-     */
-    export interface IContentWidgetPosition {
-        /**
-         * Desired position for the content widget.
-         * `preference` will also affect the placement.
-         */
-        position: IPosition | null;
-        /**
-         * Optionally, a secondary position can be provided to further
-         * define the position of the content widget. The secondary position
-         * must have the same line number as the primary position.
-         */
-        secondaryPosition?: IPosition | null;
-        /**
-         * Placement preference for position, in order of preference.
-         */
-        preference: ContentWidgetPositionPreference[];
-        /**
-         * Placement preference when multiple view positions refer to the same (model) position.
-         * This plays a role when injected text is involved.
-        */
-        positionAffinity?: PositionAffinity;
-    }
-
-    /**
-     * A content widget renders inline with the text and can be easily placed 'near' an editor position.
-     */
-    export interface IContentWidget {
-        /**
-         * Render this content widget in a location where it could overflow the editor's view dom node.
-         */
-        allowEditorOverflow?: boolean;
-        /**
-         * Call preventDefault() on mousedown events that target the content widget.
-         */
-        suppressMouseDown?: boolean;
-        /**
-         * Get a unique identifier of the content widget.
-         */
-        getId(): string;
-        /**
-         * Get the dom node of the content widget.
-         */
-        getDomNode(): HTMLElement;
-        /**
-         * Get the placement of the content widget.
-         * If null is returned, the content widget will be placed off screen.
-         */
-        getPosition(): IContentWidgetPosition | null;
-        /**
-         * Optional function that is invoked before rendering
-         * the content widget. If a dimension is returned the editor will
-         * attempt to use it.
-         */
-        beforeRender?(): IDimension | null;
-        /**
-         * Optional function that is invoked after rendering the content
-         * widget. Is being invoked with the selected position preference
-         * or `null` if not rendered.
-         */
-        afterRender?(position: ContentWidgetPositionPreference | null): void;
-    }
-
-    /**
-     * A positioning preference for rendering overlay widgets.
-     */
-    export enum OverlayWidgetPositionPreference {
-        /**
-         * Position the overlay widget in the top right corner
-         */
-        TOP_RIGHT_CORNER = 0,
-        /**
-         * Position the overlay widget in the bottom right corner
-         */
-        BOTTOM_RIGHT_CORNER = 1,
-        /**
-         * Position the overlay widget in the top center
-         */
-        TOP_CENTER = 2
-    }
-
-    /**
-     * A position for rendering overlay widgets.
-     */
-    export interface IOverlayWidgetPosition {
-        /**
-         * The position preference for the overlay widget.
-         */
-        preference: OverlayWidgetPositionPreference | null;
-    }
-
-    /**
-     * An overlay widgets renders on top of the text.
-     */
-    export interface IOverlayWidget {
-        /**
-         * Get a unique identifier of the overlay widget.
-         */
-        getId(): string;
-        /**
-         * Get the dom node of the overlay widget.
-         */
-        getDomNode(): HTMLElement;
-        /**
-         * Get the placement of the overlay widget.
-         * If null is returned, the overlay widget is responsible to place itself.
-         */
-        getPosition(): IOverlayWidgetPosition | null;
-    }
-
-    /**
-     * Type of hit element with the mouse in the editor.
-     */
-    export enum MouseTargetType {
-        /**
-         * Mouse is on top of an unknown element.
-         */
-        UNKNOWN = 0,
-        /**
-         * Mouse is on top of the textarea used for input.
-         */
-        TEXTAREA = 1,
-        /**
-         * Mouse is on top of the glyph margin
-         */
-        GUTTER_GLYPH_MARGIN = 2,
-        /**
-         * Mouse is on top of the line numbers
-         */
-        GUTTER_LINE_NUMBERS = 3,
-        /**
-         * Mouse is on top of the line decorations
-         */
-        GUTTER_LINE_DECORATIONS = 4,
-        /**
-         * Mouse is on top of the whitespace left in the gutter by a view zone.
-         */
-        GUTTER_VIEW_ZONE = 5,
-        /**
-         * Mouse is on top of text in the content.
-         */
-        CONTENT_TEXT = 6,
-        /**
-         * Mouse is on top of empty space in the content (e.g. after line text or below last line)
-         */
-        CONTENT_EMPTY = 7,
-        /**
-         * Mouse is on top of a view zone in the content.
-         */
-        CONTENT_VIEW_ZONE = 8,
-        /**
-         * Mouse is on top of a content widget.
-         */
-        CONTENT_WIDGET = 9,
-        /**
-         * Mouse is on top of the decorations overview ruler.
-         */
-        OVERVIEW_RULER = 10,
-        /**
-         * Mouse is on top of a scrollbar.
-         */
-        SCROLLBAR = 11,
-        /**
-         * Mouse is on top of an overlay widget.
-         */
-        OVERLAY_WIDGET = 12,
-        /**
-         * Mouse is outside of the editor.
-         */
-        OUTSIDE_EDITOR = 13
-    }
-
-    export interface IBaseMouseTarget {
-        /**
-         * The target element
-         */
-        readonly element: Element | null;
-        /**
-         * The 'approximate' editor position
-         */
-        readonly position: Position | null;
-        /**
-         * Desired mouse column (e.g. when position.column gets clamped to text length -- clicking after text on a line).
-         */
-        readonly mouseColumn: number;
-        /**
-         * The 'approximate' editor range
-         */
-        readonly range: Range | null;
-    }
-
-    export interface IMouseTargetUnknown extends IBaseMouseTarget {
-        readonly type: MouseTargetType.UNKNOWN;
-    }
-
-    export interface IMouseTargetTextarea extends IBaseMouseTarget {
-        readonly type: MouseTargetType.TEXTAREA;
-        readonly position: null;
-        readonly range: null;
-    }
-
-    export interface IMouseTargetMarginData {
-        readonly isAfterLines: boolean;
-        readonly glyphMarginLeft: number;
-        readonly glyphMarginWidth: number;
-        readonly lineNumbersWidth: number;
-        readonly offsetX: number;
-    }
-
-    export interface IMouseTargetMargin extends IBaseMouseTarget {
-        readonly type: MouseTargetType.GUTTER_GLYPH_MARGIN | MouseTargetType.GUTTER_LINE_NUMBERS | MouseTargetType.GUTTER_LINE_DECORATIONS;
-        readonly position: Position;
-        readonly range: Range;
-        readonly detail: IMouseTargetMarginData;
-    }
-
-    export interface IMouseTargetViewZoneData {
-        readonly viewZoneId: string;
-        readonly positionBefore: Position | null;
-        readonly positionAfter: Position | null;
-        readonly position: Position;
-        readonly afterLineNumber: number;
-    }
-
-    export interface IMouseTargetViewZone extends IBaseMouseTarget {
-        readonly type: MouseTargetType.GUTTER_VIEW_ZONE | MouseTargetType.CONTENT_VIEW_ZONE;
-        readonly position: Position;
-        readonly range: Range;
-        readonly detail: IMouseTargetViewZoneData;
-    }
-
-    export interface IMouseTargetContentTextData {
-        readonly mightBeForeignElement: boolean;
-    }
-
-    export interface IMouseTargetContentText extends IBaseMouseTarget {
-        readonly type: MouseTargetType.CONTENT_TEXT;
-        readonly position: Position;
-        readonly range: Range;
-        readonly detail: IMouseTargetContentTextData;
-    }
-
-    export interface IMouseTargetContentEmptyData {
-        readonly isAfterLines: boolean;
-        readonly horizontalDistanceToText?: number;
-    }
-
-    export interface IMouseTargetContentEmpty extends IBaseMouseTarget {
-        readonly type: MouseTargetType.CONTENT_EMPTY;
-        readonly position: Position;
-        readonly range: Range;
-        readonly detail: IMouseTargetContentEmptyData;
-    }
-
-    export interface IMouseTargetContentWidget extends IBaseMouseTarget {
-        readonly type: MouseTargetType.CONTENT_WIDGET;
-        readonly position: null;
-        readonly range: null;
-        readonly detail: string;
-    }
-
-    export interface IMouseTargetOverlayWidget extends IBaseMouseTarget {
-        readonly type: MouseTargetType.OVERLAY_WIDGET;
-        readonly position: null;
-        readonly range: null;
-        readonly detail: string;
-    }
-
-    export interface IMouseTargetScrollbar extends IBaseMouseTarget {
-        readonly type: MouseTargetType.SCROLLBAR;
-        readonly position: Position;
-        readonly range: Range;
-    }
-
-    export interface IMouseTargetOverviewRuler extends IBaseMouseTarget {
-        readonly type: MouseTargetType.OVERVIEW_RULER;
-    }
-
-    export interface IMouseTargetOutsideEditor extends IBaseMouseTarget {
-        readonly type: MouseTargetType.OUTSIDE_EDITOR;
-        readonly outsidePosition: 'above' | 'below' | 'left' | 'right';
-        readonly outsideDistance: number;
-    }
-
-    /**
-     * Target hit with the mouse in the editor.
-     */
-    export type IMouseTarget = (IMouseTargetUnknown | IMouseTargetTextarea | IMouseTargetMargin | IMouseTargetViewZone | IMouseTargetContentText | IMouseTargetContentEmpty | IMouseTargetContentWidget | IMouseTargetOverlayWidget | IMouseTargetScrollbar | IMouseTargetOverviewRuler | IMouseTargetOutsideEditor);
-
-    /**
-     * A mouse event originating from the editor.
-     */
-    export interface IEditorMouseEvent {
-        readonly event: IMouseEvent;
-        readonly target: IMouseTarget;
-    }
-
-    export interface IPartialEditorMouseEvent {
-        readonly event: IMouseEvent;
-        readonly target: IMouseTarget | null;
-    }
-
-    /**
-     * A paste event originating from the editor.
-     */
-    export interface IPasteEvent {
-        readonly range: Range;
-        readonly languageId: string | null;
-    }
-
-    export interface IDiffEditorConstructionOptions extends IDiffEditorOptions {
-        /**
-         * The initial editor dimension (to avoid measuring the container).
-         */
-        dimension?: IDimension;
-        /**
-         * Place overflow widgets inside an external DOM node.
-         * Defaults to an internal DOM node.
-         */
-        overflowWidgetsDomNode?: HTMLElement;
-        /**
-         * Aria label for original editor.
-         */
-        originalAriaLabel?: string;
-        /**
-         * Aria label for modified editor.
-         */
-        modifiedAriaLabel?: string;
-        /**
-         * Is the diff editor inside another editor
-         * Defaults to false
-         */
-        isInEmbeddedEditor?: boolean;
-    }
-
-    /**
-     * A rich code editor.
-     */
-    export interface ICodeEditor extends IEditor {
-        /**
-         * An event emitted when the content of the current model has changed.
-         * @event
-         */
-        readonly onDidChangeModelContent: IEvent<IModelContentChangedEvent>;
-        /**
-         * An event emitted when the language of the current model has changed.
-         * @event
-         */
-        readonly onDidChangeModelLanguage: IEvent<IModelLanguageChangedEvent>;
-        /**
-         * An event emitted when the language configuration of the current model has changed.
-         * @event
-         */
-        readonly onDidChangeModelLanguageConfiguration: IEvent<IModelLanguageConfigurationChangedEvent>;
-        /**
-         * An event emitted when the options of the current model has changed.
-         * @event
-         */
-        readonly onDidChangeModelOptions: IEvent<IModelOptionsChangedEvent>;
-        /**
-         * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)
-         * @event
-         */
-        readonly onDidChangeConfiguration: IEvent<ConfigurationChangedEvent>;
-        /**
-         * An event emitted when the cursor position has changed.
-         * @event
-         */
-        readonly onDidChangeCursorPosition: IEvent<ICursorPositionChangedEvent>;
-        /**
-         * An event emitted when the cursor selection has changed.
-         * @event
-         */
-        readonly onDidChangeCursorSelection: IEvent<ICursorSelectionChangedEvent>;
-        /**
-         * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).
-         * @event
-         */
-        readonly onDidChangeModel: IEvent<IModelChangedEvent>;
-        /**
-         * An event emitted when the decorations of the current model have changed.
-         * @event
-         */
-        readonly onDidChangeModelDecorations: IEvent<IModelDecorationsChangedEvent>;
-        /**
-         * An event emitted when the text inside this editor gained focus (i.e. cursor starts blinking).
-         * @event
-         */
-        readonly onDidFocusEditorText: IEvent<void>;
-        /**
-         * An event emitted when the text inside this editor lost focus (i.e. cursor stops blinking).
-         * @event
-         */
-        readonly onDidBlurEditorText: IEvent<void>;
-        /**
-         * An event emitted when the text inside this editor or an editor widget gained focus.
-         * @event
-         */
-        readonly onDidFocusEditorWidget: IEvent<void>;
-        /**
-         * An event emitted when the text inside this editor or an editor widget lost focus.
-         * @event
-         */
-        readonly onDidBlurEditorWidget: IEvent<void>;
-        /**
-         * An event emitted after composition has started.
-         */
-        readonly onDidCompositionStart: IEvent<void>;
-        /**
-         * An event emitted after composition has ended.
-         */
-        readonly onDidCompositionEnd: IEvent<void>;
-        /**
-         * An event emitted when editing failed because the editor is read-only.
-         * @event
-         */
-        readonly onDidAttemptReadOnlyEdit: IEvent<void>;
-        /**
-         * An event emitted when users paste text in the editor.
-         * @event
-         */
-        readonly onDidPaste: IEvent<IPasteEvent>;
-        /**
-         * An event emitted on a "mouseup".
-         * @event
-         */
-        readonly onMouseUp: IEvent<IEditorMouseEvent>;
-        /**
-         * An event emitted on a "mousedown".
-         * @event
-         */
-        readonly onMouseDown: IEvent<IEditorMouseEvent>;
-        /**
-         * An event emitted on a "contextmenu".
-         * @event
-         */
-        readonly onContextMenu: IEvent<IEditorMouseEvent>;
-        /**
-         * An event emitted on a "mousemove".
-         * @event
-         */
-        readonly onMouseMove: IEvent<IEditorMouseEvent>;
-        /**
-         * An event emitted on a "mouseleave".
-         * @event
-         */
-        readonly onMouseLeave: IEvent<IPartialEditorMouseEvent>;
-        /**
-         * An event emitted on a "keyup".
-         * @event
-         */
-        readonly onKeyUp: IEvent<IKeyboardEvent>;
-        /**
-         * An event emitted on a "keydown".
-         * @event
-         */
-        readonly onKeyDown: IEvent<IKeyboardEvent>;
-        /**
-         * An event emitted when the layout of the editor has changed.
-         * @event
-         */
-        readonly onDidLayoutChange: IEvent<EditorLayoutInfo>;
-        /**
-         * An event emitted when the content width or content height in the editor has changed.
-         * @event
-         */
-        readonly onDidContentSizeChange: IEvent<IContentSizeChangedEvent>;
-        /**
-         * An event emitted when the scroll in the editor has changed.
-         * @event
-         */
-        readonly onDidScrollChange: IEvent<IScrollEvent>;
-        /**
-         * An event emitted when hidden areas change in the editor (e.g. due to folding).
-         * @event
-         */
-        readonly onDidChangeHiddenAreas: IEvent<void>;
-        /**
-         * Saves current view state of the editor in a serializable object.
-         */
-        saveViewState(): ICodeEditorViewState | null;
-        /**
-         * Restores the view state of the editor from a serializable object generated by `saveViewState`.
-         */
-        restoreViewState(state: ICodeEditorViewState | null): void;
-        /**
-         * Returns true if the text inside this editor or an editor widget has focus.
-         */
-        hasWidgetFocus(): boolean;
-        /**
-         * Get a contribution of this editor.
-         * @id Unique identifier of the contribution.
-         * @return The contribution or null if contribution not found.
-         */
-        getContribution<T extends IEditorContribution>(id: string): T | null;
-        /**
-         * Type the getModel() of IEditor.
-         */
-        getModel(): ITextModel | null;
-        /**
-         * Sets the current model attached to this editor.
-         * If the previous model was created by the editor via the value key in the options
-         * literal object, it will be destroyed. Otherwise, if the previous model was set
-         * via setModel, or the model key in the options literal object, the previous model
-         * will not be destroyed.
-         * It is safe to call setModel(null) to simply detach the current model from the editor.
-         */
-        setModel(model: ITextModel | null): void;
-        /**
-         * Gets all the editor computed options.
-         */
-        getOptions(): IComputedEditorOptions;
-        /**
-         * Gets a specific editor option.
-         */
-        getOption<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;
-        /**
-         * Returns the editor's configuration (without any validation or defaults).
-         */
-        getRawOptions(): IEditorOptions;
-        /**
-         * Get value of the current model attached to this editor.
-         * @see {@link ITextModel.getValue}
-         */
-        getValue(options?: {
-            preserveBOM: boolean;
-            lineEnding: string;
-        }): string;
-        /**
-         * Set the value of the current model attached to this editor.
-         * @see {@link ITextModel.setValue}
-         */
-        setValue(newValue: string): void;
-        /**
-         * Get the width of the editor's content.
-         * This is information that is "erased" when computing `scrollWidth = Math.max(contentWidth, width)`
-         */
-        getContentWidth(): number;
-        /**
-         * Get the scrollWidth of the editor's viewport.
-         */
-        getScrollWidth(): number;
-        /**
-         * Get the scrollLeft of the editor's viewport.
-         */
-        getScrollLeft(): number;
-        /**
-         * Get the height of the editor's content.
-         * This is information that is "erased" when computing `scrollHeight = Math.max(contentHeight, height)`
-         */
-        getContentHeight(): number;
-        /**
-         * Get the scrollHeight of the editor's viewport.
-         */
-        getScrollHeight(): number;
-        /**
-         * Get the scrollTop of the editor's viewport.
-         */
-        getScrollTop(): number;
-        /**
-         * Change the scrollLeft of the editor's viewport.
-         */
-        setScrollLeft(newScrollLeft: number, scrollType?: ScrollType): void;
-        /**
-         * Change the scrollTop of the editor's viewport.
-         */
-        setScrollTop(newScrollTop: number, scrollType?: ScrollType): void;
-        /**
-         * Change the scroll position of the editor's viewport.
-         */
-        setScrollPosition(position: INewScrollPosition, scrollType?: ScrollType): void;
-        /**
-         * Get an action that is a contribution to this editor.
-         * @id Unique identifier of the contribution.
-         * @return The action or null if action not found.
-         */
-        getAction(id: string): IEditorAction | null;
-        /**
-         * Execute a command on the editor.
-         * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
-         * @param source The source of the call.
-         * @param command The command to execute
-         */
-        executeCommand(source: string | null | undefined, command: ICommand): void;
-        /**
-         * Create an "undo stop" in the undo-redo stack.
-         */
-        pushUndoStop(): boolean;
-        /**
-         * Remove the "undo stop" in the undo-redo stack.
-         */
-        popUndoStop(): boolean;
-        /**
-         * Execute edits on the editor.
-         * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
-         * @param source The source of the call.
-         * @param edits The edits to execute.
-         * @param endCursorState Cursor state after the edits were applied.
-         */
-        executeEdits(source: string | null | undefined, edits: IIdentifiedSingleEditOperation[], endCursorState?: ICursorStateComputer | Selection[]): boolean;
-        /**
-         * Execute multiple (concomitant) commands on the editor.
-         * @param source The source of the call.
-         * @param command The commands to execute
-         */
-        executeCommands(source: string | null | undefined, commands: (ICommand | null)[]): void;
-        /**
-         * Get all the decorations on a line (filtering out decorations from other editors).
-         */
-        getLineDecorations(lineNumber: number): IModelDecoration[] | null;
-        /**
-         * Get all the decorations for a range (filtering out decorations from other editors).
-         */
-        getDecorationsInRange(range: Range): IModelDecoration[] | null;
-        /**
-         * All decorations added through this call will get the ownerId of this editor.
-         * @deprecated
-         */
-        deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
-        /**
-         * Remove previously added decorations.
-         */
-        removeDecorations(decorationIds: string[]): void;
-        /**
-         * Get the layout info for the editor.
-         */
-        getLayoutInfo(): EditorLayoutInfo;
-        /**
-         * Returns the ranges that are currently visible.
-         * Does not account for horizontal scrolling.
-         */
-        getVisibleRanges(): Range[];
-        /**
-         * Get the vertical position (top offset) for the line's top w.r.t. to the first line.
-         */
-        getTopForLineNumber(lineNumber: number): number;
-        /**
-         * Get the vertical position (top offset) for the line's bottom w.r.t. to the first line.
-         */
-        getBottomForLineNumber(lineNumber: number): number;
-        /**
-         * Get the vertical position (top offset) for the position w.r.t. to the first line.
-         */
-        getTopForPosition(lineNumber: number, column: number): number;
-        /**
-         * Write the screen reader content to be the current selection
-         */
-        writeScreenReaderContent(reason: string): void;
-        /**
-         * Returns the editor's container dom node
-         */
-        getContainerDomNode(): HTMLElement;
-        /**
-         * Returns the editor's dom node
-         */
-        getDomNode(): HTMLElement | null;
-        /**
-         * Add a content widget. Widgets must have unique ids, otherwise they will be overwritten.
-         */
-        addContentWidget(widget: IContentWidget): void;
-        /**
-         * Layout/Reposition a content widget. This is a ping to the editor to call widget.getPosition()
-         * and update appropriately.
-         */
-        layoutContentWidget(widget: IContentWidget): void;
-        /**
-         * Remove a content widget.
-         */
-        removeContentWidget(widget: IContentWidget): void;
-        /**
-         * Add an overlay widget. Widgets must have unique ids, otherwise they will be overwritten.
-         */
-        addOverlayWidget(widget: IOverlayWidget): void;
-        /**
-         * Layout/Reposition an overlay widget. This is a ping to the editor to call widget.getPosition()
-         * and update appropriately.
-         */
-        layoutOverlayWidget(widget: IOverlayWidget): void;
-        /**
-         * Remove an overlay widget.
-         */
-        removeOverlayWidget(widget: IOverlayWidget): void;
-        /**
-         * Change the view zones. View zones are lost when a new model is attached to the editor.
-         */
-        changeViewZones(callback: (accessor: IViewZoneChangeAccessor) => void): void;
-        /**
-         * Get the horizontal position (left offset) for the column w.r.t to the beginning of the line.
-         * This method works only if the line `lineNumber` is currently rendered (in the editor's viewport).
-         * Use this method with caution.
-         */
-        getOffsetForColumn(lineNumber: number, column: number): number;
-        /**
-         * Force an editor render now.
-         */
-        render(forceRedraw?: boolean): void;
-        /**
-         * Get the hit test target at coordinates `clientX` and `clientY`.
-         * The coordinates are relative to the top-left of the viewport.
-         *
-         * @returns Hit test target or null if the coordinates fall outside the editor or the editor has no model.
-         */
-        getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null;
-        /**
-         * Get the visible position for `position`.
-         * The result position takes scrolling into account and is relative to the top left corner of the editor.
-         * Explanation 1: the results of this method will change for the same `position` if the user scrolls the editor.
-         * Explanation 2: the results of this method will not change if the container of the editor gets repositioned.
-         * Warning: the results of this method are inaccurate for positions that are outside the current editor viewport.
-         */
-        getScrolledVisiblePosition(position: IPosition): {
-            top: number;
-            left: number;
-            height: number;
-        } | null;
-        /**
-         * Apply the same font settings as the editor to `target`.
-         */
-        applyFontInfo(target: HTMLElement): void;
-        setBanner(bannerDomNode: HTMLElement | null, height: number): void;
-    }
-
-    /**
-     * Information about a line in the diff editor
-     */
-    export interface IDiffLineInformation {
-        readonly equivalentLineNumber: number;
-    }
-
-    /**
-     * A rich diff editor.
-     */
-    export interface IDiffEditor extends IEditor {
-        /**
-         * @see {@link ICodeEditor.getContainerDomNode}
-         */
-        getContainerDomNode(): HTMLElement;
-        /**
-         * An event emitted when the diff information computed by this diff editor has been updated.
-         * @event
-         */
-        readonly onDidUpdateDiff: IEvent<void>;
-        /**
-         * An event emitted when the diff model is changed (i.e. the diff editor shows new content).
-         * @event
-         */
-        readonly onDidChangeModel: IEvent<void>;
-        /**
-         * Saves current view state of the editor in a serializable object.
-         */
-        saveViewState(): IDiffEditorViewState | null;
-        /**
-         * Restores the view state of the editor from a serializable object generated by `saveViewState`.
-         */
-        restoreViewState(state: IDiffEditorViewState | null): void;
-        /**
-         * Type the getModel() of IEditor.
-         */
-        getModel(): IDiffEditorModel | null;
-        /**
-         * Sets the current model attached to this editor.
-         * If the previous model was created by the editor via the value key in the options
-         * literal object, it will be destroyed. Otherwise, if the previous model was set
-         * via setModel, or the model key in the options literal object, the previous model
-         * will not be destroyed.
-         * It is safe to call setModel(null) to simply detach the current model from the editor.
-         */
-        setModel(model: IDiffEditorModel | null): void;
-        /**
-         * Get the `original` editor.
-         */
-        getOriginalEditor(): ICodeEditor;
-        /**
-         * Get the `modified` editor.
-         */
-        getModifiedEditor(): ICodeEditor;
-        /**
-         * Get the computed diff information.
-         */
-        getLineChanges(): ILineChange[] | null;
-        /**
-         * Get information based on computed diff about a line number from the original model.
-         * If the diff computation is not finished or the model is missing, will return null.
-         */
-        getDiffLineInformationForOriginal(lineNumber: number): IDiffLineInformation | null;
-        /**
-         * Get information based on computed diff about a line number from the modified model.
-         * If the diff computation is not finished or the model is missing, will return null.
-         */
-        getDiffLineInformationForModified(lineNumber: number): IDiffLineInformation | null;
-        /**
-         * Update the editor's options after the editor has been created.
-         */
-        updateOptions(newOptions: IDiffEditorOptions): void;
-    }
-
-    export class FontInfo extends BareFontInfo {
-        readonly _editorStylingBrand: void;
-        readonly version: number;
-        readonly isTrusted: boolean;
-        readonly isMonospace: boolean;
-        readonly typicalHalfwidthCharacterWidth: number;
-        readonly typicalFullwidthCharacterWidth: number;
-        readonly canUseHalfwidthRightwardsArrow: boolean;
-        readonly spaceWidth: number;
-        readonly middotWidth: number;
-        readonly wsmiddotWidth: number;
-        readonly maxDigitWidth: number;
-    }
-
-    export class BareFontInfo {
-        readonly _bareFontInfoBrand: void;
-        readonly pixelRatio: number;
-        readonly fontFamily: string;
-        readonly fontWeight: string;
-        readonly fontSize: number;
-        readonly fontFeatureSettings: string;
-        readonly fontVariationSettings: string;
-        readonly lineHeight: number;
-        readonly letterSpacing: number;
-    }
-
-    //compatibility:
-    export type IReadOnlyModel = ITextModel;
-    export type IModel = ITextModel;
-}
-
-declare namespace monaco.languages {
-
-    export interface IRelativePattern {
-        /**
-         * A base file path to which this pattern will be matched against relatively.
-         */
-        readonly base: string;
-        /**
-         * A file glob pattern like `*.{ts,js}` that will be matched on file paths
-         * relative to the base path.
-         *
-         * Example: Given a base of `/home/work/folder` and a file path of `/home/work/folder/index.js`,
-         * the file glob pattern will match on `index.js`.
-         */
-        readonly pattern: string;
-    }
-
-    export type LanguageSelector = string | LanguageFilter | ReadonlyArray<string | LanguageFilter>;
-
-    export interface LanguageFilter {
-        readonly language?: string;
-        readonly scheme?: string;
-        readonly pattern?: string | IRelativePattern;
-        readonly notebookType?: string;
-        /**
-         * This provider is implemented in the UI thread.
-         */
-        readonly hasAccessToAllModels?: boolean;
-        readonly exclusive?: boolean;
-    }
-
-    /**
-     * Register information about a new language.
-     */
-    export function register(language: ILanguageExtensionPoint): void;
-
-    /**
-     * Get the information of all the registered languages.
-     */
-    export function getLanguages(): ILanguageExtensionPoint[];
-
-    export function getEncodedLanguageId(languageId: string): number;
-
-    /**
-     * An event emitted when a language is needed for the first time (e.g. a model has it set).
-     * @event
-     */
-    export function onLanguage(languageId: string, callback: () => void): IDisposable;
-
-    /**
-     * Set the editing configuration for a language.
-     */
-    export function setLanguageConfiguration(languageId: string, configuration: LanguageConfiguration): IDisposable;
-
-    /**
-     * A token.
-     */
-    export interface IToken {
-        startIndex: number;
-        scopes: string;
-    }
-
-    /**
-     * The result of a line tokenization.
-     */
-    export interface ILineTokens {
-        /**
-         * The list of tokens on the line.
-         */
-        tokens: IToken[];
-        /**
-         * The tokenization end state.
-         * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned.
-         */
-        endState: IState;
-    }
-
-    /**
-     * The result of a line tokenization.
-     */
-    export interface IEncodedLineTokens {
-        /**
-         * The tokens on the line in a binary, encoded format. Each token occupies two array indices. For token i:
-         *  - at offset 2*i => startIndex
-         *  - at offset 2*i + 1 => metadata
-         * Meta data is in binary format:
-         * - -------------------------------------------
-         *     3322 2222 2222 1111 1111 1100 0000 0000
-         *     1098 7654 3210 9876 5432 1098 7654 3210
-         * - -------------------------------------------
-         *     bbbb bbbb bfff ffff ffFF FFTT LLLL LLLL
-         * - -------------------------------------------
-         *  - L = EncodedLanguageId (8 bits): Use `getEncodedLanguageId` to get the encoded ID of a language.
-         *  - T = StandardTokenType (2 bits): Other = 0, Comment = 1, String = 2, RegEx = 3.
-         *  - F = FontStyle (4 bits): None = 0, Italic = 1, Bold = 2, Underline = 4, Strikethrough = 8.
-         *  - f = foreground ColorId (9 bits)
-         *  - b = background ColorId (9 bits)
-         *  - The color value for each colorId is defined in IStandaloneThemeData.customTokenColors:
-         * e.g. colorId = 1 is stored in IStandaloneThemeData.customTokenColors[1]. Color id = 0 means no color,
-         * id = 1 is for the default foreground color, id = 2 for the default background.
-         */
-        tokens: Uint32Array;
-        /**
-         * The tokenization end state.
-         * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned.
-         */
-        endState: IState;
-    }
-
-    /**
-     * A factory for token providers.
-     */
-    export interface TokensProviderFactory {
-        create(): ProviderResult<TokensProvider | EncodedTokensProvider | IMonarchLanguage>;
-    }
-
-    /**
-     * A "manual" provider of tokens.
-     */
-    export interface TokensProvider {
-        /**
-         * The initial state of a language. Will be the state passed in to tokenize the first line.
-         */
-        getInitialState(): IState;
-        /**
-         * Tokenize a line given the state at the beginning of the line.
-         */
-        tokenize(line: string, state: IState): ILineTokens;
-    }
-
-    /**
-     * A "manual" provider of tokens, returning tokens in a binary form.
-     */
-    export interface EncodedTokensProvider {
-        /**
-         * The initial state of a language. Will be the state passed in to tokenize the first line.
-         */
-        getInitialState(): IState;
-        /**
-         * Tokenize a line given the state at the beginning of the line.
-         */
-        tokenizeEncoded(line: string, state: IState): IEncodedLineTokens;
-        /**
-         * Tokenize a line given the state at the beginning of the line.
-         */
-        tokenize?(line: string, state: IState): ILineTokens;
-    }
-
-    /**
-     * Change the color map that is used for token colors.
-     * Supported formats (hex): #RRGGBB, $RRGGBBAA, #RGB, #RGBA
-     */
-    export function setColorMap(colorMap: string[] | null): void;
-
-    /**
-     * Register a tokens provider factory for a language. This tokenizer will be exclusive with a tokenizer
-     * set using `setTokensProvider` or one created using `setMonarchTokensProvider`, but will work together
-     * with a tokens provider set using `registerDocumentSemanticTokensProvider` or `registerDocumentRangeSemanticTokensProvider`.
-     */
-    export function registerTokensProviderFactory(languageId: string, factory: TokensProviderFactory): IDisposable;
-
-    /**
-     * Set the tokens provider for a language (manual implementation). This tokenizer will be exclusive
-     * with a tokenizer created using `setMonarchTokensProvider`, or with `registerTokensProviderFactory`,
-     * but will work together with a tokens provider set using `registerDocumentSemanticTokensProvider`
-     * or `registerDocumentRangeSemanticTokensProvider`.
-     */
-    export function setTokensProvider(languageId: string, provider: TokensProvider | EncodedTokensProvider | Thenable<TokensProvider | EncodedTokensProvider>): IDisposable;
-
-    /**
-     * Set the tokens provider for a language (monarch implementation). This tokenizer will be exclusive
-     * with a tokenizer set using `setTokensProvider`, or with `registerTokensProviderFactory`, but will
-     * work together with a tokens provider set using `registerDocumentSemanticTokensProvider` or
-     * `registerDocumentRangeSemanticTokensProvider`.
-     */
-    export function setMonarchTokensProvider(languageId: string, languageDef: IMonarchLanguage | Thenable<IMonarchLanguage>): IDisposable;
-
-    /**
-     * Register a reference provider (used by e.g. reference search).
-     */
-    export function registerReferenceProvider(languageSelector: LanguageSelector, provider: ReferenceProvider): IDisposable;
-
-    /**
-     * Register a rename provider (used by e.g. rename symbol).
-     */
-    export function registerRenameProvider(languageSelector: LanguageSelector, provider: RenameProvider): IDisposable;
-
-    /**
-     * Register a signature help provider (used by e.g. parameter hints).
-     */
-    export function registerSignatureHelpProvider(languageSelector: LanguageSelector, provider: SignatureHelpProvider): IDisposable;
-
-    /**
-     * Register a hover provider (used by e.g. editor hover).
-     */
-    export function registerHoverProvider(languageSelector: LanguageSelector, provider: HoverProvider): IDisposable;
-
-    /**
-     * Register a document symbol provider (used by e.g. outline).
-     */
-    export function registerDocumentSymbolProvider(languageSelector: LanguageSelector, provider: DocumentSymbolProvider): IDisposable;
-
-    /**
-     * Register a document highlight provider (used by e.g. highlight occurrences).
-     */
-    export function registerDocumentHighlightProvider(languageSelector: LanguageSelector, provider: DocumentHighlightProvider): IDisposable;
-
-    /**
-     * Register an linked editing range provider.
-     */
-    export function registerLinkedEditingRangeProvider(languageSelector: LanguageSelector, provider: LinkedEditingRangeProvider): IDisposable;
-
-    /**
-     * Register a definition provider (used by e.g. go to definition).
-     */
-    export function registerDefinitionProvider(languageSelector: LanguageSelector, provider: DefinitionProvider): IDisposable;
-
-    /**
-     * Register a implementation provider (used by e.g. go to implementation).
-     */
-    export function registerImplementationProvider(languageSelector: LanguageSelector, provider: ImplementationProvider): IDisposable;
-
-    /**
-     * Register a type definition provider (used by e.g. go to type definition).
-     */
-    export function registerTypeDefinitionProvider(languageSelector: LanguageSelector, provider: TypeDefinitionProvider): IDisposable;
-
-    /**
-     * Register a code lens provider (used by e.g. inline code lenses).
-     */
-    export function registerCodeLensProvider(languageSelector: LanguageSelector, provider: CodeLensProvider): IDisposable;
-
-    /**
-     * Register a code action provider (used by e.g. quick fix).
-     */
-    export function registerCodeActionProvider(languageSelector: LanguageSelector, provider: CodeActionProvider, metadata?: CodeActionProviderMetadata): IDisposable;
-
-    /**
-     * Register a formatter that can handle only entire models.
-     */
-    export function registerDocumentFormattingEditProvider(languageSelector: LanguageSelector, provider: DocumentFormattingEditProvider): IDisposable;
-
-    /**
-     * Register a formatter that can handle a range inside a model.
-     */
-    export function registerDocumentRangeFormattingEditProvider(languageSelector: LanguageSelector, provider: DocumentRangeFormattingEditProvider): IDisposable;
-
-    /**
-     * Register a formatter than can do formatting as the user types.
-     */
-    export function registerOnTypeFormattingEditProvider(languageSelector: LanguageSelector, provider: OnTypeFormattingEditProvider): IDisposable;
-
-    /**
-     * Register a link provider that can find links in text.
-     */
-    export function registerLinkProvider(languageSelector: LanguageSelector, provider: LinkProvider): IDisposable;
-
-    /**
-     * Register a completion item provider (use by e.g. suggestions).
-     */
-    export function registerCompletionItemProvider(languageSelector: LanguageSelector, provider: CompletionItemProvider): IDisposable;
-
-    /**
-     * Register a document color provider (used by Color Picker, Color Decorator).
-     */
-    export function registerColorProvider(languageSelector: LanguageSelector, provider: DocumentColorProvider): IDisposable;
-
-    /**
-     * Register a folding range provider
-     */
-    export function registerFoldingRangeProvider(languageSelector: LanguageSelector, provider: FoldingRangeProvider): IDisposable;
-
-    /**
-     * Register a declaration provider
-     */
-    export function registerDeclarationProvider(languageSelector: LanguageSelector, provider: DeclarationProvider): IDisposable;
-
-    /**
-     * Register a selection range provider
-     */
-    export function registerSelectionRangeProvider(languageSelector: LanguageSelector, provider: SelectionRangeProvider): IDisposable;
-
-    /**
-     * Register a document semantic tokens provider. A semantic tokens provider will complement and enhance a
-     * simple top-down tokenizer. Simple top-down tokenizers can be set either via `setMonarchTokensProvider`
-     * or `setTokensProvider`.
-     *
-     * For the best user experience, register both a semantic tokens provider and a top-down tokenizer.
-     */
-    export function registerDocumentSemanticTokensProvider(languageSelector: LanguageSelector, provider: DocumentSemanticTokensProvider): IDisposable;
-
-    /**
-     * Register a document range semantic tokens provider. A semantic tokens provider will complement and enhance a
-     * simple top-down tokenizer. Simple top-down tokenizers can be set either via `setMonarchTokensProvider`
-     * or `setTokensProvider`.
-     *
-     * For the best user experience, register both a semantic tokens provider and a top-down tokenizer.
-     */
-    export function registerDocumentRangeSemanticTokensProvider(languageSelector: LanguageSelector, provider: DocumentRangeSemanticTokensProvider): IDisposable;
-
-    /**
-     * Register an inline completions provider.
-     */
-    export function registerInlineCompletionsProvider(languageSelector: LanguageSelector, provider: InlineCompletionsProvider): IDisposable;
-
-    /**
-     * Register an inlay hints provider.
-     */
-    export function registerInlayHintsProvider(languageSelector: LanguageSelector, provider: InlayHintsProvider): IDisposable;
-
-    /**
-     * Contains additional diagnostic information about the context in which
-     * a [code action](#CodeActionProvider.provideCodeActions) is run.
-     */
-    export interface CodeActionContext {
-        /**
-         * An array of diagnostics.
-         */
-        readonly markers: editor.IMarkerData[];
-        /**
-         * Requested kind of actions to return.
-         */
-        readonly only?: string;
-        /**
-         * The reason why code actions were requested.
-         */
-        readonly trigger: CodeActionTriggerType;
-    }
-
-    /**
-     * The code action interface defines the contract between extensions and
-     * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature.
-     */
-    export interface CodeActionProvider {
-        /**
-         * Provide commands for the given document and range.
-         */
-        provideCodeActions(model: editor.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): ProviderResult<CodeActionList>;
-        /**
-         * Given a code action fill in the edit. Will only invoked when missing.
-         */
-        resolveCodeAction?(codeAction: CodeAction, token: CancellationToken): ProviderResult<CodeAction>;
-    }
-
-    /**
-     * Metadata about the type of code actions that a {@link CodeActionProvider} provides.
-     */
-    export interface CodeActionProviderMetadata {
-        /**
-         * List of code action kinds that a {@link CodeActionProvider} may return.
-         *
-         * This list is used to determine if a given `CodeActionProvider` should be invoked or not.
-         * To avoid unnecessary computation, every `CodeActionProvider` should list use `providedCodeActionKinds`. The
-         * list of kinds may either be generic, such as `["quickfix", "refactor", "source"]`, or list out every kind provided,
-         * such as `["quickfix.removeLine", "source.fixAll" ...]`.
-         */
-        readonly providedCodeActionKinds?: readonly string[];
-        readonly documentation?: ReadonlyArray<{
-            readonly kind: string;
-            readonly command: Command;
-        }>;
-    }
-
-    /**
-     * Describes how comments for a language work.
-     */
-    export interface CommentRule {
-        /**
-         * The line comment token, like `// this is a comment`
-         */
-        lineComment?: string | null;
-        /**
-         * The block comment character pair, like `/* block comment *&#47;`
-         */
-        blockComment?: CharacterPair | null;
-    }
-
-    /**
-     * The language configuration interface defines the contract between extensions and
-     * various editor features, like automatic bracket insertion, automatic indentation etc.
-     */
-    export interface LanguageConfiguration {
-        /**
-         * The language's comment settings.
-         */
-        comments?: CommentRule;
-        /**
-         * The language's brackets.
-         * This configuration implicitly affects pressing Enter around these brackets.
-         */
-        brackets?: CharacterPair[];
-        /**
-         * The language's word definition.
-         * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable
-         * to provide a word definition that uses exclusion of known separators.
-         * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number):
-         *   /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g
-         */
-        wordPattern?: RegExp;
-        /**
-         * The language's indentation settings.
-         */
-        indentationRules?: IndentationRule;
-        /**
-         * The language's rules to be evaluated when pressing Enter.
-         */
-        onEnterRules?: OnEnterRule[];
-        /**
-         * The language's auto closing pairs. The 'close' character is automatically inserted with the
-         * 'open' character is typed. If not set, the configured brackets will be used.
-         */
-        autoClosingPairs?: IAutoClosingPairConditional[];
-        /**
-         * The language's surrounding pairs. When the 'open' character is typed on a selection, the
-         * selected string is surrounded by the open and close characters. If not set, the autoclosing pairs
-         * settings will be used.
-         */
-        surroundingPairs?: IAutoClosingPair[];
-        /**
-         * Defines a list of bracket pairs that are colorized depending on their nesting level.
-         * If not set, the configured brackets will be used.
-        */
-        colorizedBracketPairs?: CharacterPair[];
-        /**
-         * Defines what characters must be after the cursor for bracket or quote autoclosing to occur when using the \'languageDefined\' autoclosing setting.
-         *
-         * This is typically the set of characters which can not start an expression, such as whitespace, closing brackets, non-unary operators, etc.
-         */
-        autoCloseBefore?: string;
-        /**
-         * The language's folding rules.
-         */
-        folding?: FoldingRules;
-        /**
-         * **Deprecated** Do not use.
-         *
-         * @deprecated Will be replaced by a better API soon.
-         */
-        __electricCharacterSupport?: {
-            docComment?: IDocComment;
-        };
-    }
-
-    /**
-     * Describes indentation rules for a language.
-     */
-    export interface IndentationRule {
-        /**
-         * If a line matches this pattern, then all the lines after it should be unindented once (until another rule matches).
-         */
-        decreaseIndentPattern: RegExp;
-        /**
-         * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).
-         */
-        increaseIndentPattern: RegExp;
-        /**
-         * If a line matches this pattern, then **only the next line** after it should be indented once.
-         */
-        indentNextLinePattern?: RegExp | null;
-        /**
-         * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.
-         */
-        unIndentedLinePattern?: RegExp | null;
-    }
-
-    /**
-     * Describes language specific folding markers such as '#region' and '#endregion'.
-     * The start and end regexes will be tested against the contents of all lines and must be designed efficiently:
-     * - the regex should start with '^'
-     * - regexp flags (i, g) are ignored
-     */
-    export interface FoldingMarkers {
-        start: RegExp;
-        end: RegExp;
-    }
-
-    /**
-     * Describes folding rules for a language.
-     */
-    export interface FoldingRules {
-        /**
-         * Used by the indentation based strategy to decide whether empty lines belong to the previous or the next block.
-         * A language adheres to the off-side rule if blocks in that language are expressed by their indentation.
-         * See [wikipedia](https://en.wikipedia.org/wiki/Off-side_rule) for more information.
-         * If not set, `false` is used and empty lines belong to the previous block.
-         */
-        offSide?: boolean;
-        /**
-         * Region markers used by the language.
-         */
-        markers?: FoldingMarkers;
-    }
-
-    /**
-     * Describes a rule to be evaluated when pressing Enter.
-     */
-    export interface OnEnterRule {
-        /**
-         * This rule will only execute if the text before the cursor matches this regular expression.
-         */
-        beforeText: RegExp;
-        /**
-         * This rule will only execute if the text after the cursor matches this regular expression.
-         */
-        afterText?: RegExp;
-        /**
-         * This rule will only execute if the text above the this line matches this regular expression.
-         */
-        previousLineText?: RegExp;
-        /**
-         * The action to execute.
-         */
-        action: EnterAction;
-    }
-
-    /**
-     * Definition of documentation comments (e.g. Javadoc/JSdoc)
-     */
-    export interface IDocComment {
-        /**
-         * The string that starts a doc comment (e.g. '/**')
-         */
-        open: string;
-        /**
-         * The string that appears on the last line and closes the doc comment (e.g. ' * /').
-         */
-        close?: string;
-    }
-
-    /**
-     * A tuple of two characters, like a pair of
-     * opening and closing brackets.
-     */
-    export type CharacterPair = [string, string];
-
-    export interface IAutoClosingPair {
-        open: string;
-        close: string;
-    }
-
-    export interface IAutoClosingPairConditional extends IAutoClosingPair {
-        notIn?: string[];
-    }
-
-    /**
-     * Describes what to do with the indentation when pressing Enter.
-     */
-    export enum IndentAction {
-        /**
-         * Insert new line and copy the previous line's indentation.
-         */
-        None = 0,
-        /**
-         * Insert new line and indent once (relative to the previous line's indentation).
-         */
-        Indent = 1,
-        /**
-         * Insert two new lines:
-         *  - the first one indented which will hold the cursor
-         *  - the second one at the same indentation level
-         */
-        IndentOutdent = 2,
-        /**
-         * Insert new line and outdent once (relative to the previous line's indentation).
-         */
-        Outdent = 3
-    }
-
-    /**
-     * Describes what to do when pressing Enter.
-     */
-    export interface EnterAction {
-        /**
-         * Describe what to do with the indentation.
-         */
-        indentAction: IndentAction;
-        /**
-         * Describes text to be appended after the new line and after the indentation.
-         */
-        appendText?: string;
-        /**
-         * Describes the number of characters to remove from the new line's indentation.
-         */
-        removeText?: number;
-    }
-
-    /**
-     * The state of the tokenizer between two lines.
-     * It is useful to store flags such as in multiline comment, etc.
-     * The model will clone the previous line's state and pass it in to tokenize the next line.
-     */
-    export interface IState {
-        clone(): IState;
-        equals(other: IState): boolean;
-    }
-
-    /**
-     * A provider result represents the values a provider, like the {@link HoverProvider},
-     * may return. For once this is the actual result type `T`, like `Hover`, or a thenable that resolves
-     * to that type `T`. In addition, `null` and `undefined` can be returned - either directly or from a
-     * thenable.
-     */
-    export type ProviderResult<T> = T | undefined | null | Thenable<T | undefined | null>;
-
-    /**
-     * A hover represents additional information for a symbol or word. Hovers are
-     * rendered in a tooltip-like widget.
-     */
-    export interface Hover {
-        /**
-         * The contents of this hover.
-         */
-        contents: IMarkdownString[];
-        /**
-         * The range to which this hover applies. When missing, the
-         * editor will use the range at the current position or the
-         * current position itself.
-         */
-        range?: IRange;
-    }
-
-    /**
-     * The hover provider interface defines the contract between extensions and
-     * the [hover](https://code.visualstudio.com/docs/editor/intellisense)-feature.
-     */
-    export interface HoverProvider {
-        /**
-         * Provide a hover for the given position and document. Multiple hovers at the same
-         * position will be merged by the editor. A hover can have a range which defaults
-         * to the word range at the position when omitted.
-         */
-        provideHover(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Hover>;
-    }
-
-    export enum CompletionItemKind {
-        Method = 0,
-        Function = 1,
-        Constructor = 2,
-        Field = 3,
-        Variable = 4,
-        Class = 5,
-        Struct = 6,
-        Interface = 7,
-        Module = 8,
-        Property = 9,
-        Event = 10,
-        Operator = 11,
-        Unit = 12,
-        Value = 13,
-        Constant = 14,
-        Enum = 15,
-        EnumMember = 16,
-        Keyword = 17,
-        Text = 18,
-        Color = 19,
-        File = 20,
-        Reference = 21,
-        Customcolor = 22,
-        Folder = 23,
-        TypeParameter = 24,
-        User = 25,
-        Issue = 26,
-        Snippet = 27
-    }
-
-    export interface CompletionItemLabel {
-        label: string;
-        detail?: string;
-        description?: string;
-    }
-
-    export enum CompletionItemTag {
-        Deprecated = 1
-    }
-
-    export enum CompletionItemInsertTextRule {
-        None = 0,
-        /**
-         * Adjust whitespace/indentation of multiline insert texts to
-         * match the current line indentation.
-         */
-        KeepWhitespace = 1,
-        /**
-         * `insertText` is a snippet.
-         */
-        InsertAsSnippet = 4
-    }
-
-    export interface CompletionItemRanges {
-        insert: IRange;
-        replace: IRange;
-    }
-
-    /**
-     * A completion item represents a text snippet that is
-     * proposed to complete text that is being typed.
-     */
-    export interface CompletionItem {
-        /**
-         * The label of this completion item. By default
-         * this is also the text that is inserted when selecting
-         * this completion.
-         */
-        label: string | CompletionItemLabel;
-        /**
-         * The kind of this completion item. Based on the kind
-         * an icon is chosen by the editor.
-         */
-        kind: CompletionItemKind;
-        /**
-         * A modifier to the `kind` which affect how the item
-         * is rendered, e.g. Deprecated is rendered with a strikeout
-         */
-        tags?: ReadonlyArray<CompletionItemTag>;
-        /**
-         * A human-readable string with additional information
-         * about this item, like type or symbol information.
-         */
-        detail?: string;
-        /**
-         * A human-readable string that represents a doc-comment.
-         */
-        documentation?: string | IMarkdownString;
-        /**
-         * A string that should be used when comparing this item
-         * with other items. When `falsy` the {@link CompletionItem.label label}
-         * is used.
-         */
-        sortText?: string;
-        /**
-         * A string that should be used when filtering a set of
-         * completion items. When `falsy` the {@link CompletionItem.label label}
-         * is used.
-         */
-        filterText?: string;
-        /**
-         * Select this item when showing. *Note* that only one completion item can be selected and
-         * that the editor decides which item that is. The rule is that the *first* item of those
-         * that match best is selected.
-         */
-        preselect?: boolean;
-        /**
-         * A string or snippet that should be inserted in a document when selecting
-         * this completion.
-         */
-        insertText: string;
-        /**
-         * Additional rules (as bitmask) that should be applied when inserting
-         * this completion.
-         */
-        insertTextRules?: CompletionItemInsertTextRule;
-        /**
-         * A range of text that should be replaced by this completion item.
-         *
-         * Defaults to a range from the start of the {@link TextDocument.getWordRangeAtPosition current word} to the
-         * current position.
-         *
-         * *Note:* The range must be a {@link Range.isSingleLine single line} and it must
-         * {@link Range.contains contain} the position at which completion has been {@link CompletionItemProvider.provideCompletionItems requested}.
-         */
-        range: IRange | CompletionItemRanges;
-        /**
-         * An optional set of characters that when pressed while this completion is active will accept it first and
-         * then type that character. *Note* that all commit characters should have `length=1` and that superfluous
-         * characters will be ignored.
-         */
-        commitCharacters?: string[];
-        /**
-         * An optional array of additional text edits that are applied when
-         * selecting this completion. Edits must not overlap with the main edit
-         * nor with themselves.
-         */
-        additionalTextEdits?: editor.ISingleEditOperation[];
-        /**
-         * A command that should be run upon acceptance of this item.
-         */
-        command?: Command;
-    }
-
-    export interface CompletionList {
-        suggestions: CompletionItem[];
-        incomplete?: boolean;
-        dispose?(): void;
-    }
-
-    /**
-     * How a suggest provider was triggered.
-     */
-    export enum CompletionTriggerKind {
-        Invoke = 0,
-        TriggerCharacter = 1,
-        TriggerForIncompleteCompletions = 2
-    }
-
-    /**
-     * Contains additional information about the context in which
-     * {@link CompletionItemProvider.provideCompletionItems completion provider} is triggered.
-     */
-    export interface CompletionContext {
-        /**
-         * How the completion was triggered.
-         */
-        triggerKind: CompletionTriggerKind;
-        /**
-         * Character that triggered the completion item provider.
-         *
-         * `undefined` if provider was not triggered by a character.
-         */
-        triggerCharacter?: string;
-    }
-
-    /**
-     * The completion item provider interface defines the contract between extensions and
-     * the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).
-     *
-     * When computing *complete* completion items is expensive, providers can optionally implement
-     * the `resolveCompletionItem`-function. In that case it is enough to return completion
-     * items with a {@link CompletionItem.label label} from the
-     * {@link CompletionItemProvider.provideCompletionItems provideCompletionItems}-function. Subsequently,
-     * when a completion item is shown in the UI and gains focus this provider is asked to resolve
-     * the item, like adding {@link CompletionItem.documentation doc-comment} or {@link CompletionItem.detail details}.
-     */
-    export interface CompletionItemProvider {
-        triggerCharacters?: string[];
-        /**
-         * Provide completion items for the given position and document.
-         */
-        provideCompletionItems(model: editor.ITextModel, position: Position, context: CompletionContext, token: CancellationToken): ProviderResult<CompletionList>;
-        /**
-         * Given a completion item fill in more data, like {@link CompletionItem.documentation doc-comment}
-         * or {@link CompletionItem.detail details}.
-         *
-         * The editor will only resolve a completion item once.
-         */
-        resolveCompletionItem?(item: CompletionItem, token: CancellationToken): ProviderResult<CompletionItem>;
-    }
-
-    /**
-     * How an {@link InlineCompletionsProvider inline completion provider} was triggered.
-     */
-    export enum InlineCompletionTriggerKind {
-        /**
-         * Completion was triggered automatically while editing.
-         * It is sufficient to return a single completion item in this case.
-         */
-        Automatic = 0,
-        /**
-         * Completion was triggered explicitly by a user gesture.
-         * Return multiple completion items to enable cycling through them.
-         */
-        Explicit = 1
-    }
-
-    export interface InlineCompletionContext {
-        /**
-         * How the completion was triggered.
-         */
-        readonly triggerKind: InlineCompletionTriggerKind;
-        readonly selectedSuggestionInfo: SelectedSuggestionInfo | undefined;
-    }
-
-    export interface SelectedSuggestionInfo {
-        range: IRange;
-        text: string;
-        isSnippetText: boolean;
-        completionKind: CompletionItemKind;
-    }
-
-    export interface InlineCompletion {
-        /**
-         * The text to insert.
-         * If the text contains a line break, the range must end at the end of a line.
-         * If existing text should be replaced, the existing text must be a prefix of the text to insert.
-         *
-         * The text can also be a snippet. In that case, a preview with default parameters is shown.
-         * When accepting the suggestion, the full snippet is inserted.
-        */
-        readonly insertText: string | {
-            snippet: string;
-        };
-        /**
-         * A text that is used to decide if this inline completion should be shown.
-         * An inline completion is shown if the text to replace is a subword of the filter text.
-         */
-        readonly filterText?: string;
-        /**
-         * An optional array of additional text edits that are applied when
-         * selecting this completion. Edits must not overlap with the main edit
-         * nor with themselves.
-         */
-        readonly additionalTextEdits?: editor.ISingleEditOperation[];
-        /**
-         * The range to replace.
-         * Must begin and end on the same line.
-        */
-        readonly range?: IRange;
-        readonly command?: Command;
-        /**
-         * If set to `true`, unopened closing brackets are removed and unclosed opening brackets are closed.
-         * Defaults to `false`.
-        */
-        readonly completeBracketPairs?: boolean;
-    }
-
-    export interface InlineCompletions<TItem extends InlineCompletion = InlineCompletion> {
-        readonly items: readonly TItem[];
-        /**
-         * A list of commands associated with the inline completions of this list.
-         */
-        readonly commands?: Command[];
-    }
-
-    export interface InlineCompletionsProvider<T extends InlineCompletions = InlineCompletions> {
-        provideInlineCompletions(model: editor.ITextModel, position: Position, context: InlineCompletionContext, token: CancellationToken): ProviderResult<T>;
-        /**
-         * Will be called when an item is shown.
-        */
-        handleItemDidShow?(completions: T, item: T['items'][number]): void;
-        /**
-         * Will be called when a completions list is no longer in use and can be garbage-collected.
-        */
-        freeInlineCompletions(completions: T): void;
-    }
-
-    export interface CodeAction {
-        title: string;
-        command?: Command;
-        edit?: WorkspaceEdit;
-        diagnostics?: editor.IMarkerData[];
-        kind?: string;
-        isPreferred?: boolean;
-        disabled?: string;
-    }
-
-    export enum CodeActionTriggerType {
-        Invoke = 1,
-        Auto = 2
-    }
-
-    export interface CodeActionList extends IDisposable {
-        readonly actions: ReadonlyArray<CodeAction>;
-    }
-
-    /**
-     * Represents a parameter of a callable-signature. A parameter can
-     * have a label and a doc-comment.
-     */
-    export interface ParameterInformation {
-        /**
-         * The label of this signature. Will be shown in
-         * the UI.
-         */
-        label: string | [number, number];
-        /**
-         * The human-readable doc-comment of this signature. Will be shown
-         * in the UI but can be omitted.
-         */
-        documentation?: string | IMarkdownString;
-    }
-
-    /**
-     * Represents the signature of something callable. A signature
-     * can have a label, like a function-name, a doc-comment, and
-     * a set of parameters.
-     */
-    export interface SignatureInformation {
-        /**
-         * The label of this signature. Will be shown in
-         * the UI.
-         */
-        label: string;
-        /**
-         * The human-readable doc-comment of this signature. Will be shown
-         * in the UI but can be omitted.
-         */
-        documentation?: string | IMarkdownString;
-        /**
-         * The parameters of this signature.
-         */
-        parameters: ParameterInformation[];
-        /**
-         * Index of the active parameter.
-         *
-         * If provided, this is used in place of `SignatureHelp.activeSignature`.
-         */
-        activeParameter?: number;
-    }
-
-    /**
-     * Signature help represents the signature of something
-     * callable. There can be multiple signatures but only one
-     * active and only one active parameter.
-     */
-    export interface SignatureHelp {
-        /**
-         * One or more signatures.
-         */
-        signatures: SignatureInformation[];
-        /**
-         * The active signature.
-         */
-        activeSignature: number;
-        /**
-         * The active parameter of the active signature.
-         */
-        activeParameter: number;
-    }
-
-    export interface SignatureHelpResult extends IDisposable {
-        value: SignatureHelp;
-    }
-
-    export enum SignatureHelpTriggerKind {
-        Invoke = 1,
-        TriggerCharacter = 2,
-        ContentChange = 3
-    }
-
-    export interface SignatureHelpContext {
-        readonly triggerKind: SignatureHelpTriggerKind;
-        readonly triggerCharacter?: string;
-        readonly isRetrigger: boolean;
-        readonly activeSignatureHelp?: SignatureHelp;
-    }
-
-    /**
-     * The signature help provider interface defines the contract between extensions and
-     * the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature.
-     */
-    export interface SignatureHelpProvider {
-        readonly signatureHelpTriggerCharacters?: ReadonlyArray<string>;
-        readonly signatureHelpRetriggerCharacters?: ReadonlyArray<string>;
-        /**
-         * Provide help for the signature at the given position and document.
-         */
-        provideSignatureHelp(model: editor.ITextModel, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelpResult>;
-    }
-
-    /**
-     * A document highlight kind.
-     */
-    export enum DocumentHighlightKind {
-        /**
-         * A textual occurrence.
-         */
-        Text = 0,
-        /**
-         * Read-access of a symbol, like reading a variable.
-         */
-        Read = 1,
-        /**
-         * Write-access of a symbol, like writing to a variable.
-         */
-        Write = 2
-    }
-
-    /**
-     * A document highlight is a range inside a text document which deserves
-     * special attention. Usually a document highlight is visualized by changing
-     * the background color of its range.
-     */
-    export interface DocumentHighlight {
-        /**
-         * The range this highlight applies to.
-         */
-        range: IRange;
-        /**
-         * The highlight kind, default is {@link DocumentHighlightKind.Text text}.
-         */
-        kind?: DocumentHighlightKind;
-    }
-
-    /**
-     * The document highlight provider interface defines the contract between extensions and
-     * the word-highlight-feature.
-     */
-    export interface DocumentHighlightProvider {
-        /**
-         * Provide a set of document highlights, like all occurrences of a variable or
-         * all exit-points of a function.
-         */
-        provideDocumentHighlights(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<DocumentHighlight[]>;
-    }
-
-    /**
-     * The linked editing range provider interface defines the contract between extensions and
-     * the linked editing feature.
-     */
-    export interface LinkedEditingRangeProvider {
-        /**
-         * Provide a list of ranges that can be edited together.
-         */
-        provideLinkedEditingRanges(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<LinkedEditingRanges>;
-    }
-
-    /**
-     * Represents a list of ranges that can be edited together along with a word pattern to describe valid contents.
-     */
-    export interface LinkedEditingRanges {
-        /**
-         * A list of ranges that can be edited together. The ranges must have
-         * identical length and text content. The ranges cannot overlap
-         */
-        ranges: IRange[];
-        /**
-         * An optional word pattern that describes valid contents for the given ranges.
-         * If no pattern is provided, the language configuration's word pattern will be used.
-         */
-        wordPattern?: RegExp;
-    }
-
-    /**
-     * Value-object that contains additional information when
-     * requesting references.
-     */
-    export interface ReferenceContext {
-        /**
-         * Include the declaration of the current symbol.
-         */
-        includeDeclaration: boolean;
-    }
-
-    /**
-     * The reference provider interface defines the contract between extensions and
-     * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature.
-     */
-    export interface ReferenceProvider {
-        /**
-         * Provide a set of project-wide references for the given position and document.
-         */
-        provideReferences(model: editor.ITextModel, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>;
-    }
-
-    /**
-     * Represents a location inside a resource, such as a line
-     * inside a text file.
-     */
-    export interface Location {
-        /**
-         * The resource identifier of this location.
-         */
-        uri: Uri;
-        /**
-         * The document range of this locations.
-         */
-        range: IRange;
-    }
-
-    export interface LocationLink {
-        /**
-         * A range to select where this link originates from.
-         */
-        originSelectionRange?: IRange;
-        /**
-         * The target uri this link points to.
-         */
-        uri: Uri;
-        /**
-         * The full range this link points to.
-         */
-        range: IRange;
-        /**
-         * A range to select this link points to. Must be contained
-         * in `LocationLink.range`.
-         */
-        targetSelectionRange?: IRange;
-    }
-
-    export type Definition = Location | Location[] | LocationLink[];
-
-    /**
-     * The definition provider interface defines the contract between extensions and
-     * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
-     * and peek definition features.
-     */
-    export interface DefinitionProvider {
-        /**
-         * Provide the definition of the symbol at the given position and document.
-         */
-        provideDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
-    }
-
-    /**
-     * The definition provider interface defines the contract between extensions and
-     * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
-     * and peek definition features.
-     */
-    export interface DeclarationProvider {
-        /**
-         * Provide the declaration of the symbol at the given position and document.
-         */
-        provideDeclaration(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
-    }
-
-    /**
-     * The implementation provider interface defines the contract between extensions and
-     * the go to implementation feature.
-     */
-    export interface ImplementationProvider {
-        /**
-         * Provide the implementation of the symbol at the given position and document.
-         */
-        provideImplementation(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
-    }
-
-    /**
-     * The type definition provider interface defines the contract between extensions and
-     * the go to type definition feature.
-     */
-    export interface TypeDefinitionProvider {
-        /**
-         * Provide the type definition of the symbol at the given position and document.
-         */
-        provideTypeDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
-    }
-
-    /**
-     * A symbol kind.
-     */
-    export enum SymbolKind {
-        File = 0,
-        Module = 1,
-        Namespace = 2,
-        Package = 3,
-        Class = 4,
-        Method = 5,
-        Property = 6,
-        Field = 7,
-        Constructor = 8,
-        Enum = 9,
-        Interface = 10,
-        Function = 11,
-        Variable = 12,
-        Constant = 13,
-        String = 14,
-        Number = 15,
-        Boolean = 16,
-        Array = 17,
-        Object = 18,
-        Key = 19,
-        Null = 20,
-        EnumMember = 21,
-        Struct = 22,
-        Event = 23,
-        Operator = 24,
-        TypeParameter = 25
-    }
-
-    export enum SymbolTag {
-        Deprecated = 1
-    }
-
-    export interface DocumentSymbol {
-        name: string;
-        detail: string;
-        kind: SymbolKind;
-        tags: ReadonlyArray<SymbolTag>;
-        containerName?: string;
-        range: IRange;
-        selectionRange: IRange;
-        children?: DocumentSymbol[];
-    }
-
-    /**
-     * The document symbol provider interface defines the contract between extensions and
-     * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-symbol)-feature.
-     */
-    export interface DocumentSymbolProvider {
-        displayName?: string;
-        /**
-         * Provide symbol information for the given document.
-         */
-        provideDocumentSymbols(model: editor.ITextModel, token: CancellationToken): ProviderResult<DocumentSymbol[]>;
-    }
-
-    export interface TextEdit {
-        range: IRange;
-        text: string;
-        eol?: editor.EndOfLineSequence;
-    }
-
-    /**
-     * Interface used to format a model
-     */
-    export interface FormattingOptions {
-        /**
-         * Size of a tab in spaces.
-         */
-        tabSize: number;
-        /**
-         * Prefer spaces over tabs.
-         */
-        insertSpaces: boolean;
-    }
-
-    /**
-     * The document formatting provider interface defines the contract between extensions and
-     * the formatting-feature.
-     */
-    export interface DocumentFormattingEditProvider {
-        readonly displayName?: string;
-        /**
-         * Provide formatting edits for a whole document.
-         */
-        provideDocumentFormattingEdits(model: editor.ITextModel, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
-    }
-
-    /**
-     * The document formatting provider interface defines the contract between extensions and
-     * the formatting-feature.
-     */
-    export interface DocumentRangeFormattingEditProvider {
-        readonly displayName?: string;
-        /**
-         * Provide formatting edits for a range in a document.
-         *
-         * The given range is a hint and providers can decide to format a smaller
-         * or larger range. Often this is done by adjusting the start and end
-         * of the range to full syntax nodes.
-         */
-        provideDocumentRangeFormattingEdits(model: editor.ITextModel, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
-    }
-
-    /**
-     * The document formatting provider interface defines the contract between extensions and
-     * the formatting-feature.
-     */
-    export interface OnTypeFormattingEditProvider {
-        autoFormatTriggerCharacters: string[];
-        /**
-         * Provide formatting edits after a character has been typed.
-         *
-         * The given position and character should hint to the provider
-         * what range the position to expand to, like find the matching `{`
-         * when `}` has been entered.
-         */
-        provideOnTypeFormattingEdits(model: editor.ITextModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
-    }
-
-    /**
-     * A link inside the editor.
-     */
-    export interface ILink {
-        range: IRange;
-        url?: Uri | string;
-        tooltip?: string;
-    }
-
-    export interface ILinksList {
-        links: ILink[];
-        dispose?(): void;
-    }
-
-    /**
-     * A provider of links.
-     */
-    export interface LinkProvider {
-        provideLinks(model: editor.ITextModel, token: CancellationToken): ProviderResult<ILinksList>;
-        resolveLink?: (link: ILink, token: CancellationToken) => ProviderResult<ILink>;
-    }
-
-    /**
-     * A color in RGBA format.
-     */
-    export interface IColor {
-        /**
-         * The red component in the range [0-1].
-         */
-        readonly red: number;
-        /**
-         * The green component in the range [0-1].
-         */
-        readonly green: number;
-        /**
-         * The blue component in the range [0-1].
-         */
-        readonly blue: number;
-        /**
-         * The alpha component in the range [0-1].
-         */
-        readonly alpha: number;
-    }
-
-    /**
-     * String representations for a color
-     */
-    export interface IColorPresentation {
-        /**
-         * The label of this color presentation. It will be shown on the color
-         * picker header. By default this is also the text that is inserted when selecting
-         * this color presentation.
-         */
-        label: string;
-        /**
-         * An {@link TextEdit edit} which is applied to a document when selecting
-         * this presentation for the color.
-         */
-        textEdit?: TextEdit;
-        /**
-         * An optional array of additional {@link TextEdit text edits} that are applied when
-         * selecting this color presentation.
-         */
-        additionalTextEdits?: TextEdit[];
-    }
-
-    /**
-     * A color range is a range in a text model which represents a color.
-     */
-    export interface IColorInformation {
-        /**
-         * The range within the model.
-         */
-        range: IRange;
-        /**
-         * The color represented in this range.
-         */
-        color: IColor;
-    }
-
-    /**
-     * A provider of colors for editor models.
-     */
-    export interface DocumentColorProvider {
-        /**
-         * Provides the color ranges for a specific model.
-         */
-        provideDocumentColors(model: editor.ITextModel, token: CancellationToken): ProviderResult<IColorInformation[]>;
-        /**
-         * Provide the string representations for a color.
-         */
-        provideColorPresentations(model: editor.ITextModel, colorInfo: IColorInformation, token: CancellationToken): ProviderResult<IColorPresentation[]>;
-    }
-
-    export interface SelectionRange {
-        range: IRange;
-    }
-
-    export interface SelectionRangeProvider {
-        /**
-         * Provide ranges that should be selected from the given position.
-         */
-        provideSelectionRanges(model: editor.ITextModel, positions: Position[], token: CancellationToken): ProviderResult<SelectionRange[][]>;
-    }
-
-    export interface FoldingContext {
-    }
-
-    /**
-     * A provider of folding ranges for editor models.
-     */
-    export interface FoldingRangeProvider {
-        /**
-         * An optional event to signal that the folding ranges from this provider have changed.
-         */
-        onDidChange?: IEvent<this>;
-        /**
-         * Provides the folding ranges for a specific model.
-         */
-        provideFoldingRanges(model: editor.ITextModel, context: FoldingContext, token: CancellationToken): ProviderResult<FoldingRange[]>;
-    }
-
-    export interface FoldingRange {
-        /**
-         * The one-based start line of the range to fold. The folded area starts after the line's last character.
-         */
-        start: number;
-        /**
-         * The one-based end line of the range to fold. The folded area ends with the line's last character.
-         */
-        end: number;
-        /**
-         * Describes the {@link FoldingRangeKind Kind} of the folding range such as {@link FoldingRangeKind.Comment Comment} or
-         * {@link FoldingRangeKind.Region Region}. The kind is used to categorize folding ranges and used by commands
-         * like 'Fold all comments'. See
-         * {@link FoldingRangeKind} for an enumeration of standardized kinds.
-         */
-        kind?: FoldingRangeKind;
-    }
-
-    export class FoldingRangeKind {
-        value: string;
-        /**
-         * Kind for folding range representing a comment. The value of the kind is 'comment'.
-         */
-        static readonly Comment: FoldingRangeKind;
-        /**
-         * Kind for folding range representing a import. The value of the kind is 'imports'.
-         */
-        static readonly Imports: FoldingRangeKind;
-        /**
-         * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).
-         * The value of the kind is 'region'.
-         */
-        static readonly Region: FoldingRangeKind;
-        /**
-         * Creates a new {@link FoldingRangeKind}.
-         *
-         * @param value of the kind.
-         */
-        constructor(value: string);
-    }
-
-    export interface WorkspaceEditMetadata {
-        needsConfirmation: boolean;
-        label: string;
-        description?: string;
-    }
-
-    export interface WorkspaceFileEditOptions {
-        overwrite?: boolean;
-        ignoreIfNotExists?: boolean;
-        ignoreIfExists?: boolean;
-        recursive?: boolean;
-        copy?: boolean;
-        folder?: boolean;
-        skipTrashBin?: boolean;
-        maxSize?: number;
-        contentsBase64?: string;
-    }
-
-    export interface IWorkspaceFileEdit {
-        oldResource?: Uri;
-        newResource?: Uri;
-        options?: WorkspaceFileEditOptions;
-        metadata?: WorkspaceEditMetadata;
-    }
-
-    export interface IWorkspaceTextEdit {
-        resource: Uri;
-        textEdit: TextEdit & {
-            insertAsSnippet?: boolean;
-        };
-        versionId: number | undefined;
-        metadata?: WorkspaceEditMetadata;
-    }
-
-    export interface WorkspaceEdit {
-        edits: Array<IWorkspaceTextEdit | IWorkspaceFileEdit>;
-    }
-
-    export interface Rejection {
-        rejectReason?: string;
-    }
-
-    export interface RenameLocation {
-        range: IRange;
-        text: string;
-    }
-
-    export interface RenameProvider {
-        provideRenameEdits(model: editor.ITextModel, position: Position, newName: string, token: CancellationToken): ProviderResult<WorkspaceEdit & Rejection>;
-        resolveRenameLocation?(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<RenameLocation & Rejection>;
-    }
-
-    export interface Command {
-        id: string;
-        title: string;
-        tooltip?: string;
-        arguments?: any[];
-    }
-
-    export interface CodeLens {
-        range: IRange;
-        id?: string;
-        command?: Command;
-    }
-
-    export interface CodeLensList {
-        lenses: CodeLens[];
-        dispose(): void;
-    }
-
-    export interface CodeLensProvider {
-        onDidChange?: IEvent<this>;
-        provideCodeLenses(model: editor.ITextModel, token: CancellationToken): ProviderResult<CodeLensList>;
-        resolveCodeLens?(model: editor.ITextModel, codeLens: CodeLens, token: CancellationToken): ProviderResult<CodeLens>;
-    }
-
-    export enum InlayHintKind {
-        Type = 1,
-        Parameter = 2
-    }
-
-    export interface InlayHintLabelPart {
-        label: string;
-        tooltip?: string | IMarkdownString;
-        command?: Command;
-        location?: Location;
-    }
-
-    export interface InlayHint {
-        label: string | InlayHintLabelPart[];
-        tooltip?: string | IMarkdownString;
-        textEdits?: TextEdit[];
-        position: IPosition;
-        kind?: InlayHintKind;
-        paddingLeft?: boolean;
-        paddingRight?: boolean;
-    }
-
-    export interface InlayHintList {
-        hints: InlayHint[];
-        dispose(): void;
-    }
-
-    export interface InlayHintsProvider {
-        displayName?: string;
-        onDidChangeInlayHints?: IEvent<void>;
-        provideInlayHints(model: editor.ITextModel, range: Range, token: CancellationToken): ProviderResult<InlayHintList>;
-        resolveInlayHint?(hint: InlayHint, token: CancellationToken): ProviderResult<InlayHint>;
-    }
-
-    export interface SemanticTokensLegend {
-        readonly tokenTypes: string[];
-        readonly tokenModifiers: string[];
-    }
-
-    export interface SemanticTokens {
-        readonly resultId?: string;
-        readonly data: Uint32Array;
-    }
-
-    export interface SemanticTokensEdit {
-        readonly start: number;
-        readonly deleteCount: number;
-        readonly data?: Uint32Array;
-    }
-
-    export interface SemanticTokensEdits {
-        readonly resultId?: string;
-        readonly edits: SemanticTokensEdit[];
-    }
-
-    export interface DocumentSemanticTokensProvider {
-        onDidChange?: IEvent<void>;
-        getLegend(): SemanticTokensLegend;
-        provideDocumentSemanticTokens(model: editor.ITextModel, lastResultId: string | null, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits>;
-        releaseDocumentSemanticTokens(resultId: string | undefined): void;
-    }
-
-    export interface DocumentRangeSemanticTokensProvider {
-        getLegend(): SemanticTokensLegend;
-        provideDocumentRangeSemanticTokens(model: editor.ITextModel, range: Range, token: CancellationToken): ProviderResult<SemanticTokens>;
-    }
-
-    export interface ILanguageExtensionPoint {
-        id: string;
-        extensions?: string[];
-        filenames?: string[];
-        filenamePatterns?: string[];
-        firstLine?: string;
-        aliases?: string[];
-        mimetypes?: string[];
-        configuration?: Uri;
-    }
-    /**
-     * A Monarch language definition
-     */
-    export interface IMonarchLanguage {
-        /**
-         * map from string to ILanguageRule[]
-         */
-        tokenizer: {
-            [name: string]: IMonarchLanguageRule[];
-        };
-        /**
-         * is the language case insensitive?
-         */
-        ignoreCase?: boolean;
-        /**
-         * is the language unicode-aware? (i.e., /\u{1D306}/)
-         */
-        unicode?: boolean;
-        /**
-         * if no match in the tokenizer assign this token class (default 'source')
-         */
-        defaultToken?: string;
-        /**
-         * for example [['{','}','delimiter.curly']]
-         */
-        brackets?: IMonarchLanguageBracket[];
-        /**
-         * start symbol in the tokenizer (by default the first entry is used)
-         */
-        start?: string;
-        /**
-         * attach this to every token class (by default '.' + name)
-         */
-        tokenPostfix?: string;
-        /**
-         * include line feeds (in the form of a \n character) at the end of lines
-         * Defaults to false
-         */
-        includeLF?: boolean;
-        /**
-         * Other keys that can be referred to by the tokenizer.
-         */
-        [key: string]: any;
-    }
-
-    /**
-     * A rule is either a regular expression and an action
-     * 		shorthands: [reg,act] == { regex: reg, action: act}
-     *		and       : [reg,act,nxt] == { regex: reg, action: act{ next: nxt }}
-     */
-    export type IShortMonarchLanguageRule1 = [string | RegExp, IMonarchLanguageAction];
-
-    export type IShortMonarchLanguageRule2 = [string | RegExp, IMonarchLanguageAction, string];
-
-    export interface IExpandedMonarchLanguageRule {
-        /**
-         * match tokens
-         */
-        regex?: string | RegExp;
-        /**
-         * action to take on match
-         */
-        action?: IMonarchLanguageAction;
-        /**
-         * or an include rule. include all rules from the included state
-         */
-        include?: string;
-    }
-
-    export type IMonarchLanguageRule = IShortMonarchLanguageRule1 | IShortMonarchLanguageRule2 | IExpandedMonarchLanguageRule;
-
-    /**
-     * An action is either an array of actions...
-     * ... or a case statement with guards...
-     * ... or a basic action with a token value.
-     */
-    export type IShortMonarchLanguageAction = string;
-
-    export interface IExpandedMonarchLanguageAction {
-        /**
-         * array of actions for each parenthesized match group
-         */
-        group?: IMonarchLanguageAction[];
-        /**
-         * map from string to ILanguageAction
-         */
-        cases?: Object;
-        /**
-         * token class (ie. css class) (or "@brackets" or "@rematch")
-         */
-        token?: string;
-        /**
-         * the next state to push, or "@push", "@pop", "@popall"
-         */
-        next?: string;
-        /**
-         * switch to this state
-         */
-        switchTo?: string;
-        /**
-         * go back n characters in the stream
-         */
-        goBack?: number;
-        /**
-         * @open or @close
-         */
-        bracket?: string;
-        /**
-         * switch to embedded language (using the mimetype) or get out using "@pop"
-         */
-        nextEmbedded?: string;
-        /**
-         * log a message to the browser console window
-         */
-        log?: string;
-    }
-
-    export type IMonarchLanguageAction = IShortMonarchLanguageAction | IExpandedMonarchLanguageAction | (IShortMonarchLanguageAction | IExpandedMonarchLanguageAction)[];
-
-    /**
-     * This interface can be shortened as an array, ie. ['{','}','delimiter.curly']
-     */
-    export interface IMonarchLanguageBracket {
-        /**
-         * open bracket
-         */
-        open: string;
-        /**
-         * closing bracket
-         */
-        close: string;
-        /**
-         * token class
-         */
-        token: string;
-    }
-
-}
-
-declare namespace monaco.worker {
-
-
-    export interface IMirrorTextModel {
-        readonly version: number;
-    }
-
-    export interface IMirrorModel extends IMirrorTextModel {
-        readonly uri: Uri;
-        readonly version: number;
-        getValue(): string;
-    }
-
-    export interface IWorkerContext<H = undefined> {
-        /**
-         * A proxy to the main thread host object.
-         */
-        host: H;
-        /**
-         * Get all available mirror models in this worker.
-         */
-        getMirrorModels(): IMirrorModel[];
-    }
-
-}
-
-//dtsv=3
-
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare namespace monaco.languages.css {
-    export interface CSSFormatConfiguration {
-        /** separate selectors with newline (e.g. "a,\nbr" or "a, br"): Default: true */
-        newlineBetweenSelectors?: boolean;
-        /** add a new line after every css rule: Default: true */
-        newlineBetweenRules?: boolean;
-        /** ensure space around selector separators:  '>', '+', '~' (e.g. "a>b" -> "a > b"): Default: false */
-        spaceAroundSelectorSeparator?: boolean;
-        /** put braces on the same line as rules (`collapse`), or put braces on own line, Allman / ANSI style (`expand`). Default `collapse` */
-        braceStyle?: 'collapse' | 'expand';
-        /** whether existing line breaks before elements should be preserved. Default: true */
-        preserveNewLines?: boolean;
-        /** maximum number of line breaks to be preserved in one chunk. Default: unlimited */
-        maxPreserveNewLines?: number;
-    }
-    export interface Options {
-        readonly validate?: boolean;
-        readonly lint?: {
-            readonly compatibleVendorPrefixes?: 'ignore' | 'warning' | 'error';
-            readonly vendorPrefix?: 'ignore' | 'warning' | 'error';
-            readonly duplicateProperties?: 'ignore' | 'warning' | 'error';
-            readonly emptyRules?: 'ignore' | 'warning' | 'error';
-            readonly importStatement?: 'ignore' | 'warning' | 'error';
-            readonly boxModel?: 'ignore' | 'warning' | 'error';
-            readonly universalSelector?: 'ignore' | 'warning' | 'error';
-            readonly zeroUnits?: 'ignore' | 'warning' | 'error';
-            readonly fontFaceProperties?: 'ignore' | 'warning' | 'error';
-            readonly hexColorLength?: 'ignore' | 'warning' | 'error';
-            readonly argumentsInColorFunction?: 'ignore' | 'warning' | 'error';
-            readonly unknownProperties?: 'ignore' | 'warning' | 'error';
-            readonly ieHack?: 'ignore' | 'warning' | 'error';
-            readonly unknownVendorSpecificProperties?: 'ignore' | 'warning' | 'error';
-            readonly propertyIgnoredDueToDisplay?: 'ignore' | 'warning' | 'error';
-            readonly important?: 'ignore' | 'warning' | 'error';
-            readonly float?: 'ignore' | 'warning' | 'error';
-            readonly idSelector?: 'ignore' | 'warning' | 'error';
-        };
-        /**
-         * Configures the CSS data types known by the langauge service.
-         */
-        readonly data?: CSSDataConfiguration;
-        /**
-         * Settings for the CSS formatter.
-         */
-        readonly format?: CSSFormatConfiguration;
-    }
-    export interface ModeConfiguration {
-        /**
-         * Defines whether the built-in completionItemProvider is enabled.
-         */
-        readonly completionItems?: boolean;
-        /**
-         * Defines whether the built-in hoverProvider is enabled.
-         */
-        readonly hovers?: boolean;
-        /**
-         * Defines whether the built-in documentSymbolProvider is enabled.
-         */
-        readonly documentSymbols?: boolean;
-        /**
-         * Defines whether the built-in definitions provider is enabled.
-         */
-        readonly definitions?: boolean;
-        /**
-         * Defines whether the built-in references provider is enabled.
-         */
-        readonly references?: boolean;
-        /**
-         * Defines whether the built-in references provider is enabled.
-         */
-        readonly documentHighlights?: boolean;
-        /**
-         * Defines whether the built-in rename provider is enabled.
-         */
-        readonly rename?: boolean;
-        /**
-         * Defines whether the built-in color provider is enabled.
-         */
-        readonly colors?: boolean;
-        /**
-         * Defines whether the built-in foldingRange provider is enabled.
-         */
-        readonly foldingRanges?: boolean;
-        /**
-         * Defines whether the built-in diagnostic provider is enabled.
-         */
-        readonly diagnostics?: boolean;
-        /**
-         * Defines whether the built-in selection range provider is enabled.
-         */
-        readonly selectionRanges?: boolean;
-        /**
-         * Defines whether the built-in document formatting edit provider is enabled.
-         */
-        readonly documentFormattingEdits?: boolean;
-        /**
-         * Defines whether the built-in document formatting range edit provider is enabled.
-         */
-        readonly documentRangeFormattingEdits?: boolean;
-    }
-    export interface LanguageServiceDefaults {
-        readonly languageId: string;
-        readonly onDidChange: IEvent<LanguageServiceDefaults>;
-        readonly modeConfiguration: ModeConfiguration;
-        readonly options: Options;
-        setOptions(options: Options): void;
-        setModeConfiguration(modeConfiguration: ModeConfiguration): void;
-        /** @deprecated Use options instead */
-        readonly diagnosticsOptions: DiagnosticsOptions;
-        /** @deprecated Use setOptions instead */
-        setDiagnosticsOptions(options: DiagnosticsOptions): void;
-    }
-    /** @deprecated Use Options instead */
-    export type DiagnosticsOptions = Options;
-    export const cssDefaults: LanguageServiceDefaults;
-    export const scssDefaults: LanguageServiceDefaults;
-    export const lessDefaults: LanguageServiceDefaults;
-    export interface CSSDataConfiguration {
-        /**
-         * Defines whether the standard CSS properties, at-directives, pseudoClasses and pseudoElements are shown.
-         */
-        useDefaultDataProvider?: boolean;
-        /**
-         * Provides a set of custom data providers.
-         */
-        dataProviders?: {
-            [providerId: string]: CSSDataV1;
-        };
-    }
-    /**
-     * Custom CSS properties, at-directives, pseudoClasses and pseudoElements
-     * https://github.com/microsoft/vscode-css-languageservice/blob/main/docs/customData.md
-     */
-    export interface CSSDataV1 {
-        version: 1 | 1.1;
-        properties?: IPropertyData[];
-        atDirectives?: IAtDirectiveData[];
-        pseudoClasses?: IPseudoClassData[];
-        pseudoElements?: IPseudoElementData[];
-    }
-    export type EntryStatus = 'standard' | 'experimental' | 'nonstandard' | 'obsolete';
-    export interface IReference {
-        name: string;
-        url: string;
-    }
-    export interface IPropertyData {
-        name: string;
-        description?: string | MarkupContent;
-        browsers?: string[];
-        restrictions?: string[];
-        status?: EntryStatus;
-        syntax?: string;
-        values?: IValueData[];
-        references?: IReference[];
-        relevance?: number;
-    }
-    export interface IAtDirectiveData {
-        name: string;
-        description?: string | MarkupContent;
-        browsers?: string[];
-        status?: EntryStatus;
-        references?: IReference[];
-    }
-    export interface IPseudoClassData {
-        name: string;
-        description?: string | MarkupContent;
-        browsers?: string[];
-        status?: EntryStatus;
-        references?: IReference[];
-    }
-    export interface IPseudoElementData {
-        name: string;
-        description?: string | MarkupContent;
-        browsers?: string[];
-        status?: EntryStatus;
-        references?: IReference[];
-    }
-    export interface IValueData {
-        name: string;
-        description?: string | MarkupContent;
-        browsers?: string[];
-        status?: EntryStatus;
-        references?: IReference[];
-    }
-    export interface MarkupContent {
-        kind: MarkupKind;
-        value: string;
-    }
-    export type MarkupKind = 'plaintext' | 'markdown';
-}
-
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare namespace monaco.languages.html {
-    export interface HTMLFormatConfiguration {
-        readonly tabSize: number;
-        readonly insertSpaces: boolean;
-        readonly wrapLineLength: number;
-        readonly unformatted: string;
-        readonly contentUnformatted: string;
-        readonly indentInnerHtml: boolean;
-        readonly preserveNewLines: boolean;
-        readonly maxPreserveNewLines: number | undefined;
-        readonly indentHandlebars: boolean;
-        readonly endWithNewline: boolean;
-        readonly extraLiners: string;
-        readonly wrapAttributes: 'auto' | 'force' | 'force-aligned' | 'force-expand-multiline';
-    }
-    export interface CompletionConfiguration {
-        readonly [providerId: string]: boolean;
-    }
-    export interface Options {
-        /**
-         * Settings for the HTML formatter.
-         */
-        readonly format?: HTMLFormatConfiguration;
-        /**
-         * Code completion settings.
-         */
-        readonly suggest?: CompletionConfiguration;
-        /**
-         * Configures the HTML data types known by the HTML langauge service.
-         */
-        readonly data?: HTMLDataConfiguration;
-    }
-    export interface ModeConfiguration {
-        /**
-         * Defines whether the built-in completionItemProvider is enabled.
-         */
-        readonly completionItems?: boolean;
-        /**
-         * Defines whether the built-in hoverProvider is enabled.
-         */
-        readonly hovers?: boolean;
-        /**
-         * Defines whether the built-in documentSymbolProvider is enabled.
-         */
-        readonly documentSymbols?: boolean;
-        /**
-         * Defines whether the built-in definitions provider is enabled.
-         */
-        readonly links?: boolean;
-        /**
-         * Defines whether the built-in references provider is enabled.
-         */
-        readonly documentHighlights?: boolean;
-        /**
-         * Defines whether the built-in rename provider is enabled.
-         */
-        readonly rename?: boolean;
-        /**
-         * Defines whether the built-in color provider is enabled.
-         */
-        readonly colors?: boolean;
-        /**
-         * Defines whether the built-in foldingRange provider is enabled.
-         */
-        readonly foldingRanges?: boolean;
-        /**
-         * Defines whether the built-in diagnostic provider is enabled.
-         */
-        readonly diagnostics?: boolean;
-        /**
-         * Defines whether the built-in selection range provider is enabled.
-         */
-        readonly selectionRanges?: boolean;
-        /**
-         * Defines whether the built-in documentFormattingEdit provider is enabled.
-         */
-        readonly documentFormattingEdits?: boolean;
-        /**
-         * Defines whether the built-in documentRangeFormattingEdit provider is enabled.
-         */
-        readonly documentRangeFormattingEdits?: boolean;
-    }
-    export interface LanguageServiceDefaults {
-        readonly languageId: string;
-        readonly modeConfiguration: ModeConfiguration;
-        readonly onDidChange: IEvent<LanguageServiceDefaults>;
-        readonly options: Options;
-        setOptions(options: Options): void;
-        setModeConfiguration(modeConfiguration: ModeConfiguration): void;
-    }
-    export const htmlLanguageService: LanguageServiceRegistration;
-    export const htmlDefaults: LanguageServiceDefaults;
-    export const handlebarLanguageService: LanguageServiceRegistration;
-    export const handlebarDefaults: LanguageServiceDefaults;
-    export const razorLanguageService: LanguageServiceRegistration;
-    export const razorDefaults: LanguageServiceDefaults;
-    export interface LanguageServiceRegistration extends IDisposable {
-        readonly defaults: LanguageServiceDefaults;
-    }
-    /**
-     * Registers a new HTML language service for the languageId.
-     * Note: 'html', 'handlebar' and 'razor' are registered by default.
-     *
-     * Use this method to register additional language ids with a HTML service.
-     * The language server has to be registered before an editor model is opened.
-     */
-    export function registerHTMLLanguageService(languageId: string, options?: Options, modeConfiguration?: ModeConfiguration): LanguageServiceRegistration;
-    export interface HTMLDataConfiguration {
-        /**
-         * Defines whether the standard HTML tags and attributes are shown
-         */
-        readonly useDefaultDataProvider?: boolean;
-        /**
-         * Provides a set of custom data providers.
-         */
-        readonly dataProviders?: {
-            [providerId: string]: HTMLDataV1;
-        };
-    }
-    /**
-     * Custom HTML tags attributes and attribute values
-     * https://github.com/microsoft/vscode-html-languageservice/blob/main/docs/customData.md
-     */
-    export interface HTMLDataV1 {
-        readonly version: 1 | 1.1;
-        readonly tags?: ITagData[];
-        readonly globalAttributes?: IAttributeData[];
-        readonly valueSets?: IValueSet[];
-    }
-    export interface IReference {
-        readonly name: string;
-        readonly url: string;
-    }
-    export interface ITagData {
-        readonly name: string;
-        readonly description?: string | MarkupContent;
-        readonly attributes: IAttributeData[];
-        readonly references?: IReference[];
-    }
-    export interface IAttributeData {
-        readonly name: string;
-        readonly description?: string | MarkupContent;
-        readonly valueSet?: string;
-        readonly values?: IValueData[];
-        readonly references?: IReference[];
-    }
-    export interface IValueData {
-        readonly name: string;
-        readonly description?: string | MarkupContent;
-        readonly references?: IReference[];
-    }
-    export interface IValueSet {
-        readonly name: string;
-        readonly values: IValueData[];
-    }
-    export interface MarkupContent {
-        readonly kind: MarkupKind;
-        readonly value: string;
-    }
-    export type MarkupKind = 'plaintext' | 'markdown';
-}
-
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare namespace monaco.languages.json {
-    export interface DiagnosticsOptions {
-        /**
-         * If set, the validator will be enabled and perform syntax and schema based validation,
-         * unless `DiagnosticsOptions.schemaValidation` is set to `ignore`.
-         */
-        readonly validate?: boolean;
-        /**
-         * If set, comments are tolerated. If set to false, syntax errors will be emitted for comments.
-         * `DiagnosticsOptions.allowComments` will override this setting.
-         */
-        readonly allowComments?: boolean;
-        /**
-         * A list of known schemas and/or associations of schemas to file names.
-         */
-        readonly schemas?: {
-            /**
-             * The URI of the schema, which is also the identifier of the schema.
-             */
-            readonly uri: string;
-            /**
-             * A list of glob patterns that describe for which file URIs the JSON schema will be used.
-             * '*' and '**' wildcards are supported. Exclusion patterns start with '!'.
-             * For example '*.schema.json', 'package.json', '!foo*.schema.json', 'foo/**\/BADRESP.json'.
-             * A match succeeds when there is at least one pattern matching and last matching pattern does not start with '!'.
-             */
-            readonly fileMatch?: string[];
-            /**
-             * The schema for the given URI.
-             */
-            readonly schema?: any;
-        }[];
-        /**
-         *  If set, the schema service would load schema content on-demand with 'fetch' if available
-         */
-        readonly enableSchemaRequest?: boolean;
-        /**
-         * The severity of problems from schema validation. If set to 'ignore', schema validation will be skipped. If not set, 'warning' is used.
-         */
-        readonly schemaValidation?: SeverityLevel;
-        /**
-         * The severity of problems that occurred when resolving and loading schemas. If set to 'ignore', schema resolving problems are not reported. If not set, 'warning' is used.
-         */
-        readonly schemaRequest?: SeverityLevel;
-        /**
-         * The severity of reported trailing commas. If not set, trailing commas will be reported as errors.
-         */
-        readonly trailingCommas?: SeverityLevel;
-        /**
-         * The severity of reported comments. If not set, 'DiagnosticsOptions.allowComments' defines whether comments are ignored or reported as errors.
-         */
-        readonly comments?: SeverityLevel;
-    }
-    export type SeverityLevel = 'error' | 'warning' | 'ignore';
-    export interface ModeConfiguration {
-        /**
-         * Defines whether the built-in documentFormattingEdit provider is enabled.
-         */
-        readonly documentFormattingEdits?: boolean;
-        /**
-         * Defines whether the built-in documentRangeFormattingEdit provider is enabled.
-         */
-        readonly documentRangeFormattingEdits?: boolean;
-        /**
-         * Defines whether the built-in completionItemProvider is enabled.
-         */
-        readonly completionItems?: boolean;
-        /**
-         * Defines whether the built-in hoverProvider is enabled.
-         */
-        readonly hovers?: boolean;
-        /**
-         * Defines whether the built-in documentSymbolProvider is enabled.
-         */
-        readonly documentSymbols?: boolean;
-        /**
-         * Defines whether the built-in tokens provider is enabled.
-         */
-        readonly tokens?: boolean;
-        /**
-         * Defines whether the built-in color provider is enabled.
-         */
-        readonly colors?: boolean;
-        /**
-         * Defines whether the built-in foldingRange provider is enabled.
-         */
-        readonly foldingRanges?: boolean;
-        /**
-         * Defines whether the built-in diagnostic provider is enabled.
-         */
-        readonly diagnostics?: boolean;
-        /**
-         * Defines whether the built-in selection range provider is enabled.
-         */
-        readonly selectionRanges?: boolean;
-    }
-    export interface LanguageServiceDefaults {
-        readonly languageId: string;
-        readonly onDidChange: IEvent<LanguageServiceDefaults>;
-        readonly diagnosticsOptions: DiagnosticsOptions;
-        readonly modeConfiguration: ModeConfiguration;
-        setDiagnosticsOptions(options: DiagnosticsOptions): void;
-        setModeConfiguration(modeConfiguration: ModeConfiguration): void;
-    }
-    export const jsonDefaults: LanguageServiceDefaults;
-}
-
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare namespace monaco.languages.typescript {
-    export enum ModuleKind {
-        None = 0,
-        CommonJS = 1,
-        AMD = 2,
-        UMD = 3,
-        System = 4,
-        ES2015 = 5,
-        ESNext = 99
-    }
-    export enum JsxEmit {
-        None = 0,
-        Preserve = 1,
-        React = 2,
-        ReactNative = 3,
-        ReactJSX = 4,
-        ReactJSXDev = 5
-    }
-    export enum NewLineKind {
-        CarriageReturnLineFeed = 0,
-        LineFeed = 1
-    }
-    export enum ScriptTarget {
-        ES3 = 0,
-        ES5 = 1,
-        ES2015 = 2,
-        ES2016 = 3,
-        ES2017 = 4,
-        ES2018 = 5,
-        ES2019 = 6,
-        ES2020 = 7,
-        ESNext = 99,
-        JSON = 100,
-        Latest = 99
-    }
-    export enum ModuleResolutionKind {
-        Classic = 1,
-        NodeJs = 2
-    }
-    interface MapLike<T> {
-        [index: string]: T;
-    }
-    type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[] | MapLike<string[]> | null | undefined;
-    interface CompilerOptions {
-        allowJs?: boolean;
-        allowSyntheticDefaultImports?: boolean;
-        allowUmdGlobalAccess?: boolean;
-        allowUnreachableCode?: boolean;
-        allowUnusedLabels?: boolean;
-        alwaysStrict?: boolean;
-        baseUrl?: string;
-        charset?: string;
-        checkJs?: boolean;
-        declaration?: boolean;
-        declarationMap?: boolean;
-        emitDeclarationOnly?: boolean;
-        declarationDir?: string;
-        disableSizeLimit?: boolean;
-        disableSourceOfProjectReferenceRedirect?: boolean;
-        downlevelIteration?: boolean;
-        emitBOM?: boolean;
-        emitDecoratorMetadata?: boolean;
-        experimentalDecorators?: boolean;
-        forceConsistentCasingInFileNames?: boolean;
-        importHelpers?: boolean;
-        inlineSourceMap?: boolean;
-        inlineSources?: boolean;
-        isolatedModules?: boolean;
-        jsx?: JsxEmit;
-        keyofStringsOnly?: boolean;
-        lib?: string[];
-        locale?: string;
-        mapRoot?: string;
-        maxNodeModuleJsDepth?: number;
-        module?: ModuleKind;
-        moduleResolution?: ModuleResolutionKind;
-        newLine?: NewLineKind;
-        noEmit?: boolean;
-        noEmitHelpers?: boolean;
-        noEmitOnError?: boolean;
-        noErrorTruncation?: boolean;
-        noFallthroughCasesInSwitch?: boolean;
-        noImplicitAny?: boolean;
-        noImplicitReturns?: boolean;
-        noImplicitThis?: boolean;
-        noStrictGenericChecks?: boolean;
-        noUnusedLocals?: boolean;
-        noUnusedParameters?: boolean;
-        noImplicitUseStrict?: boolean;
-        noLib?: boolean;
-        noResolve?: boolean;
-        out?: string;
-        outDir?: string;
-        outFile?: string;
-        paths?: MapLike<string[]>;
-        preserveConstEnums?: boolean;
-        preserveSymlinks?: boolean;
-        project?: string;
-        reactNamespace?: string;
-        jsxFactory?: string;
-        composite?: boolean;
-        removeComments?: boolean;
-        rootDir?: string;
-        rootDirs?: string[];
-        skipLibCheck?: boolean;
-        skipDefaultLibCheck?: boolean;
-        sourceMap?: boolean;
-        sourceRoot?: string;
-        strict?: boolean;
-        strictFunctionTypes?: boolean;
-        strictBindCallApply?: boolean;
-        strictNullChecks?: boolean;
-        strictPropertyInitialization?: boolean;
-        stripInternal?: boolean;
-        suppressExcessPropertyErrors?: boolean;
-        suppressImplicitAnyIndexErrors?: boolean;
-        target?: ScriptTarget;
-        traceResolution?: boolean;
-        resolveJsonModule?: boolean;
-        types?: string[];
-        /** Paths used to compute primary types search locations */
-        typeRoots?: string[];
-        esModuleInterop?: boolean;
-        useDefineForClassFields?: boolean;
-        [option: string]: CompilerOptionsValue | undefined;
-    }
-    export interface DiagnosticsOptions {
-        noSemanticValidation?: boolean;
-        noSyntaxValidation?: boolean;
-        noSuggestionDiagnostics?: boolean;
-        /**
-         * Limit diagnostic computation to only visible files.
-         * Defaults to false.
-         */
-        onlyVisible?: boolean;
-        diagnosticCodesToIgnore?: number[];
-    }
-    export interface WorkerOptions {
-        /** A full HTTP path to a JavaScript file which adds a function `customTSWorkerFactory` to the self inside a web-worker */
-        customWorkerPath?: string;
-    }
-    interface InlayHintsOptions {
-        readonly includeInlayParameterNameHints?: 'none' | 'literals' | 'all';
-        readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
-        readonly includeInlayFunctionParameterTypeHints?: boolean;
-        readonly includeInlayVariableTypeHints?: boolean;
-        readonly includeInlayPropertyDeclarationTypeHints?: boolean;
-        readonly includeInlayFunctionLikeReturnTypeHints?: boolean;
-        readonly includeInlayEnumMemberValueHints?: boolean;
-    }
-    interface IExtraLib {
-        content: string;
-        version: number;
-    }
-    export interface IExtraLibs {
-        [path: string]: IExtraLib;
-    }
-    /**
-     * A linked list of formatted diagnostic messages to be used as part of a multiline message.
-     * It is built from the bottom up, leaving the head to be the "main" diagnostic.
-     */
-    interface DiagnosticMessageChain {
-        messageText: string;
-        /** Diagnostic category: warning = 0, error = 1, suggestion = 2, message = 3 */
-        category: 0 | 1 | 2 | 3;
-        code: number;
-        next?: DiagnosticMessageChain[];
-    }
-    export interface Diagnostic extends DiagnosticRelatedInformation {
-        /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
-        reportsUnnecessary?: {};
-        reportsDeprecated?: {};
-        source?: string;
-        relatedInformation?: DiagnosticRelatedInformation[];
-    }
-    export interface DiagnosticRelatedInformation {
-        /** Diagnostic category: warning = 0, error = 1, suggestion = 2, message = 3 */
-        category: 0 | 1 | 2 | 3;
-        code: number;
-        /** TypeScriptWorker removes all but the `fileName` property to avoid serializing circular JSON structures. */
-        file: {
-            fileName: string;
-        } | undefined;
-        start: number | undefined;
-        length: number | undefined;
-        messageText: string | DiagnosticMessageChain;
-    }
-    interface EmitOutput {
-        outputFiles: OutputFile[];
-        emitSkipped: boolean;
-    }
-    interface OutputFile {
-        name: string;
-        writeByteOrderMark: boolean;
-        text: string;
-    }
-    export interface ModeConfiguration {
-        /**
-         * Defines whether the built-in completionItemProvider is enabled.
-         */
-        readonly completionItems?: boolean;
-        /**
-         * Defines whether the built-in hoverProvider is enabled.
-         */
-        readonly hovers?: boolean;
-        /**
-         * Defines whether the built-in documentSymbolProvider is enabled.
-         */
-        readonly documentSymbols?: boolean;
-        /**
-         * Defines whether the built-in definitions provider is enabled.
-         */
-        readonly definitions?: boolean;
-        /**
-         * Defines whether the built-in references provider is enabled.
-         */
-        readonly references?: boolean;
-        /**
-         * Defines whether the built-in references provider is enabled.
-         */
-        readonly documentHighlights?: boolean;
-        /**
-         * Defines whether the built-in rename provider is enabled.
-         */
-        readonly rename?: boolean;
-        /**
-         * Defines whether the built-in diagnostic provider is enabled.
-         */
-        readonly diagnostics?: boolean;
-        /**
-         * Defines whether the built-in document formatting range edit provider is enabled.
-         */
-        readonly documentRangeFormattingEdits?: boolean;
-        /**
-         * Defines whether the built-in signature help provider is enabled.
-         */
-        readonly signatureHelp?: boolean;
-        /**
-         * Defines whether the built-in onType formatting edit provider is enabled.
-         */
-        readonly onTypeFormattingEdits?: boolean;
-        /**
-         * Defines whether the built-in code actions provider is enabled.
-         */
-        readonly codeActions?: boolean;
-        /**
-         * Defines whether the built-in inlay hints provider is enabled.
-         */
-        readonly inlayHints?: boolean;
-    }
-    export interface LanguageServiceDefaults {
-        /**
-         * Event fired when compiler options or diagnostics options are changed.
-         */
-        readonly onDidChange: IEvent<void>;
-        /**
-         * Event fired when extra libraries registered with the language service change.
-         */
-        readonly onDidExtraLibsChange: IEvent<void>;
-        readonly workerOptions: WorkerOptions;
-        readonly inlayHintsOptions: InlayHintsOptions;
-        readonly modeConfiguration: ModeConfiguration;
-        setModeConfiguration(modeConfiguration: ModeConfiguration): void;
-        /**
-         * Get the current extra libs registered with the language service.
-         */
-        getExtraLibs(): IExtraLibs;
-        /**
-         * Add an additional source file to the language service. Use this
-         * for typescript (definition) files that won't be loaded as editor
-         * documents, like `jquery.d.ts`.
-         *
-         * @param content The file content
-         * @param filePath An optional file path
-         * @returns A disposable which will remove the file from the
-         * language service upon disposal.
-         */
-        addExtraLib(content: string, filePath?: string): IDisposable;
-        /**
-         * Remove all existing extra libs and set the additional source
-         * files to the language service. Use this for typescript definition
-         * files that won't be loaded as editor documents, like `jquery.d.ts`.
-         * @param libs An array of entries to register.
-         */
-        setExtraLibs(libs: {
-            content: string;
-            filePath?: string;
-        }[]): void;
-        /**
-         * Get current TypeScript compiler options for the language service.
-         */
-        getCompilerOptions(): CompilerOptions;
-        /**
-         * Set TypeScript compiler options.
-         */
-        setCompilerOptions(options: CompilerOptions): void;
-        /**
-         * Get the current diagnostics options for the language service.
-         */
-        getDiagnosticsOptions(): DiagnosticsOptions;
-        /**
-         * Configure whether syntactic and/or semantic validation should
-         * be performed
-         */
-        setDiagnosticsOptions(options: DiagnosticsOptions): void;
-        /**
-         * Configure webworker options
-         */
-        setWorkerOptions(options: WorkerOptions): void;
-        /**
-         * No-op.
-         */
-        setMaximumWorkerIdleTime(value: number): void;
-        /**
-         * Configure if all existing models should be eagerly sync'd
-         * to the worker on start or restart.
-         */
-        setEagerModelSync(value: boolean): void;
-        /**
-         * Get the current setting for whether all existing models should be eagerly sync'd
-         * to the worker on start or restart.
-         */
-        getEagerModelSync(): boolean;
-        /**
-         * Configure inlay hints options.
-         */
-        setInlayHintsOptions(options: InlayHintsOptions): void;
-    }
-    export interface TypeScriptWorker {
-        /**
-         * Get diagnostic messages for any syntax issues in the given file.
-         */
-        getSyntacticDiagnostics(fileName: string): Promise<Diagnostic[]>;
-        /**
-         * Get diagnostic messages for any semantic issues in the given file.
-         */
-        getSemanticDiagnostics(fileName: string): Promise<Diagnostic[]>;
-        /**
-         * Get diagnostic messages for any suggestions related to the given file.
-         */
-        getSuggestionDiagnostics(fileName: string): Promise<Diagnostic[]>;
-        /**
-         * Get the content of a given file.
-         */
-        getScriptText(fileName: string): Promise<string | undefined>;
-        /**
-         * Get diagnostic messages related to the current compiler options.
-         * @param fileName Not used
-         */
-        getCompilerOptionsDiagnostics(fileName: string): Promise<Diagnostic[]>;
-        /**
-         * Get code completions for the given file and position.
-         * @returns `Promise<typescript.CompletionInfo | undefined>`
-         */
-        getCompletionsAtPosition(fileName: string, position: number): Promise<any | undefined>;
-        /**
-         * Get code completion details for the given file, position, and entry.
-         * @returns `Promise<typescript.CompletionEntryDetails | undefined>`
-         */
-        getCompletionEntryDetails(fileName: string, position: number, entry: string): Promise<any | undefined>;
-        /**
-         * Get signature help items for the item at the given file and position.
-         * @returns `Promise<typescript.SignatureHelpItems | undefined>`
-         */
-        getSignatureHelpItems(fileName: string, position: number, options: any): Promise<any | undefined>;
-        /**
-         * Get quick info for the item at the given position in the file.
-         * @returns `Promise<typescript.QuickInfo | undefined>`
-         */
-        getQuickInfoAtPosition(fileName: string, position: number): Promise<any | undefined>;
-        /**
-         * Get other ranges which are related to the item at the given position in the file (often used for highlighting).
-         * @returns `Promise<ReadonlyArray<typescript.ReferenceEntry> | undefined>`
-         */
-        getOccurrencesAtPosition(fileName: string, position: number): Promise<ReadonlyArray<any> | undefined>;
-        /**
-         * Get the definition of the item at the given position in the file.
-         * @returns `Promise<ReadonlyArray<typescript.DefinitionInfo> | undefined>`
-         */
-        getDefinitionAtPosition(fileName: string, position: number): Promise<ReadonlyArray<any> | undefined>;
-        /**
-         * Get references to the item at the given position in the file.
-         * @returns `Promise<typescript.ReferenceEntry[] | undefined>`
-         */
-        getReferencesAtPosition(fileName: string, position: number): Promise<any[] | undefined>;
-        /**
-         * Get outline entries for the item at the given position in the file.
-         * @returns `Promise<typescript.NavigationBarItem[]>`
-         */
-        getNavigationBarItems(fileName: string): Promise<any[]>;
-        /**
-         * Get changes which should be applied to format the given file.
-         * @param options `typescript.FormatCodeOptions`
-         * @returns `Promise<typescript.TextChange[]>`
-         */
-        getFormattingEditsForDocument(fileName: string, options: any): Promise<any[]>;
-        /**
-         * Get changes which should be applied to format the given range in the file.
-         * @param options `typescript.FormatCodeOptions`
-         * @returns `Promise<typescript.TextChange[]>`
-         */
-        getFormattingEditsForRange(fileName: string, start: number, end: number, options: any): Promise<any[]>;
-        /**
-         * Get formatting changes which should be applied after the given keystroke.
-         * @param options `typescript.FormatCodeOptions`
-         * @returns `Promise<typescript.TextChange[]>`
-         */
-        getFormattingEditsAfterKeystroke(fileName: string, postion: number, ch: string, options: any): Promise<any[]>;
-        /**
-         * Get other occurrences which should be updated when renaming the item at the given file and position.
-         * @returns `Promise<readonly typescript.RenameLocation[] | undefined>`
-         */
-        findRenameLocations(fileName: string, positon: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename: boolean): Promise<readonly any[] | undefined>;
-        /**
-         * Get edits which should be applied to rename the item at the given file and position (or a failure reason).
-         * @param options `typescript.RenameInfoOptions`
-         * @returns `Promise<typescript.RenameInfo>`
-         */
-        getRenameInfo(fileName: string, positon: number, options: any): Promise<any>;
-        /**
-         * Get transpiled output for the given file.
-         * @returns `typescript.EmitOutput`
-         */
-        getEmitOutput(fileName: string): Promise<EmitOutput>;
-        /**
-         * Get possible code fixes at the given position in the file.
-         * @param formatOptions `typescript.FormatCodeOptions`
-         * @returns `Promise<ReadonlyArray<typescript.CodeFixAction>>`
-         */
-        getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: number[], formatOptions: any): Promise<ReadonlyArray<any>>;
-        /**
-         * Get inlay hints in the range of the file.
-         * @param fileName
-         * @returns `Promise<typescript.InlayHint[]>`
-         */
-        provideInlayHints(fileName: string, start: number, end: number): Promise<ReadonlyArray<any>>;
-    }
-    export const typescriptVersion: string;
-    export const typescriptDefaults: LanguageServiceDefaults;
-    export const javascriptDefaults: LanguageServiceDefaults;
-    export const getTypeScriptWorker: () => Promise<(...uris: Uri[]) => Promise<TypeScriptWorker>>;
-    export const getJavaScriptWorker: () => Promise<(...uris: Uri[]) => Promise<TypeScriptWorker>>;
-}

+ 0 - 190
website/playground/new-samples/all.js

@@ -1,190 +0,0 @@
-(function () {
-	var PLAY_SAMPLES = [
-		{
-			chapter: 'Creating the editor',
-			name: 'Hello world!',
-			id: 'creating-the-editor-hello-world',
-			path: 'creating-the-editor/hello-world'
-		},
-		{
-			chapter: 'Creating the editor',
-			name: 'Editor basic options',
-			id: 'creating-the-editor-editor-basic-options',
-			path: 'creating-the-editor/editor-basic-options'
-		},
-		{
-			chapter: 'Creating the editor',
-			name: 'Hard wrapping',
-			id: 'creating-the-editor-hard-wrapping',
-			path: 'creating-the-editor/hard-wrapping'
-		},
-		{
-			chapter: 'Creating the editor',
-			name: 'Syntax highlighting for HTML elements',
-			id: 'creating-the-editor-syntax-highlighting-for-html-elements',
-			path: 'creating-the-editor/syntax-highlighting-for-html-elements'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Adding a command to an editor instance',
-			id: 'interacting-with-the-editor-adding-a-command-to-an-editor-instance',
-			path: 'interacting-with-the-editor/adding-a-command-to-an-editor-instance'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Adding an action to an editor instance',
-			id: 'interacting-with-the-editor-adding-an-action-to-an-editor-instance',
-			path: 'interacting-with-the-editor/adding-an-action-to-an-editor-instance'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Revealing a position',
-			id: 'interacting-with-the-editor-revealing-a-position',
-			path: 'interacting-with-the-editor/revealing-a-position'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Rendering glyphs in the margin',
-			id: 'interacting-with-the-editor-rendering-glyphs-in-the-margin',
-			path: 'interacting-with-the-editor/rendering-glyphs-in-the-margin'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Line and Inline decorations',
-			id: 'interacting-with-the-editor-line-and-inline-decorations',
-			path: 'interacting-with-the-editor/line-and-inline-decorations'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Customizing the line numbers',
-			id: 'interacting-with-the-editor-customizing-the-line-numbers',
-			path: 'interacting-with-the-editor/customizing-the-line-numbers'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Listening to mouse events',
-			id: 'interacting-with-the-editor-listening-to-mouse-events',
-			path: 'interacting-with-the-editor/listening-to-mouse-events'
-		},
-		{
-			chapter: 'Interacting with the editor',
-			name: 'Listening to key events',
-			id: 'interacting-with-the-editor-listening-to-key-events',
-			path: 'interacting-with-the-editor/listening-to-key-events'
-		},
-		{
-			chapter: 'Customizing the appearence',
-			name: 'Exposed colors',
-			id: 'customizing-the-appearence-exposed-colors',
-			path: 'customizing-the-appearence/exposed-colors'
-		},
-		{
-			chapter: 'Customizing the appearence',
-			name: 'Scrollbars',
-			id: 'customizing-the-appearence-scrollbars',
-			path: 'customizing-the-appearence/scrollbars'
-		},
-		{
-			chapter: 'Customizing the appearence',
-			name: 'Tokens and colors',
-			id: 'customizing-the-appearence-tokens-and-colors',
-			path: 'customizing-the-appearence/tokens-and-colors'
-		},
-		{
-			chapter: 'Creating the DiffEditor',
-			name: 'Hello diff world!',
-			id: 'creating-the-diffeditor-hello-diff-world',
-			path: 'creating-the-diffeditor/hello-diff-world'
-		},
-		{
-			chapter: 'Creating the DiffEditor',
-			name: 'Multi-line example',
-			id: 'creating-the-diffeditor-multi-line-example',
-			path: 'creating-the-diffeditor/multi-line-example'
-		},
-		{
-			chapter: 'Creating the DiffEditor',
-			name: 'Inline Diff Example',
-			id: 'creating-the-diffeditor-inline-diff-example',
-			path: 'creating-the-diffeditor/inline-diff-example'
-		},
-		{
-			chapter: 'Creating the DiffEditor',
-			name: 'Navigating a Diff',
-			id: 'creating-the-diffeditor-navigating-a-diff',
-			path: 'creating-the-diffeditor/navigating-a-diff'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Custom languages',
-			id: 'extending-language-services-custom-languages',
-			path: 'extending-language-services/custom-languages'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Completion provider example',
-			id: 'extending-language-services-completion-provider-example',
-			path: 'extending-language-services/completion-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Codelens provider example',
-			id: 'extending-language-services-codelens-provider-example',
-			path: 'extending-language-services/codelens-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Color provider example',
-			id: 'extending-language-services-color-provider-example',
-			path: 'extending-language-services/color-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Symbols provider example',
-			id: 'extending-language-services-symbols-provider-example',
-			path: 'extending-language-services/symbols-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Folding provider example',
-			id: 'extending-language-services-folding-provider-example',
-			path: 'extending-language-services/folding-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Hover provider example',
-			id: 'extending-language-services-hover-provider-example',
-			path: 'extending-language-services/hover-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Model markers example',
-			id: 'extending-language-services-model-markers-example',
-			path: 'extending-language-services/model-markers-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Semantic tokens provider example',
-			id: 'extending-language-services-semantic-tokens-provider-example',
-			path: 'extending-language-services/semantic-tokens-provider-example'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Configure JavaScript defaults',
-			id: 'extending-language-services-configure-javascript-defaults',
-			path: 'extending-language-services/configure-javascript-defaults'
-		},
-		{
-			chapter: 'Extending Language Services',
-			name: 'Configure JSON defaults',
-			id: 'extending-language-services-configure-json-defaults',
-			path: 'extending-language-services/configure-json-defaults'
-		}
-	];
-
-	if (typeof exports !== 'undefined') {
-		exports.PLAY_SAMPLES = PLAY_SAMPLES;
-	} else {
-		self.PLAY_SAMPLES = PLAY_SAMPLES;
-	}
-})();

+ 0 - 8
website/playground/new-samples/creating-the-diffeditor/hello-diff-world/sample.js

@@ -1,8 +0,0 @@
-var originalModel = monaco.editor.createModel('heLLo world!', 'text/plain');
-var modifiedModel = monaco.editor.createModel('hello orlando!', 'text/plain');
-
-var diffEditor = monaco.editor.createDiffEditor(document.getElementById('container'));
-diffEditor.setModel({
-	original: originalModel,
-	modified: modifiedModel
-});

+ 0 - 20
website/playground/new-samples/creating-the-diffeditor/inline-diff-example/sample.js

@@ -1,20 +0,0 @@
-var originalModel = monaco.editor.createModel(
-	'This line is removed on the right.\njust some text\nabcd\nefgh\nSome more text',
-	'text/plain'
-);
-var modifiedModel = monaco.editor.createModel(
-	'just some text\nabcz\nzzzzefgh\nSome more text\nThis line is removed on the left.',
-	'text/plain'
-);
-
-var diffEditor = monaco.editor.createDiffEditor(document.getElementById('container'), {
-	// You can optionally disable the resizing
-	enableSplitViewResizing: false,
-
-	// Render the diff inline
-	renderSideBySide: false
-});
-diffEditor.setModel({
-	original: originalModel,
-	modified: modifiedModel
-});

+ 0 - 17
website/playground/new-samples/creating-the-diffeditor/multi-line-example/sample.js

@@ -1,17 +0,0 @@
-var originalModel = monaco.editor.createModel(
-	'This line is removed on the right.\njust some text\nabcd\nefgh\nSome more text',
-	'text/plain'
-);
-var modifiedModel = monaco.editor.createModel(
-	'just some text\nabcz\nzzzzefgh\nSome more text.\nThis line is removed on the left.',
-	'text/plain'
-);
-
-var diffEditor = monaco.editor.createDiffEditor(document.getElementById('container'), {
-	// You can optionally disable the resizing
-	enableSplitViewResizing: false
-});
-diffEditor.setModel({
-	original: originalModel,
-	modified: modifiedModel
-});

+ 0 - 150
website/playground/new-samples/customizing-the-appearence/exposed-colors/sample.js

@@ -1,150 +0,0 @@
-// The editor colors can be customized through CSS or through JS
-
-monaco.editor.defineTheme('myTheme', {
-	base: 'vs',
-	inherit: true,
-	rules: [{ background: 'EDF9FA' }],
-	colors: {
-		'editor.foreground': '#000000',
-		'editor.background': '#EDF9FA',
-		'editorCursor.foreground': '#8B0000',
-		'editor.lineHighlightBackground': '#0000FF20',
-		'editorLineNumber.foreground': '#008800',
-		'editor.selectionBackground': '#88000030',
-		'editor.inactiveSelectionBackground': '#88000015'
-	}
-});
-monaco.editor.setTheme('myTheme');
-
-monaco.editor.create(document.getElementById('container'), {
-	value: 'My to-do list:\n* buy milk\n* buy coffee\n* write awesome code',
-	language: 'text/plain',
-	fontFamily: 'Arial',
-	fontSize: 20
-});
-
-// A list of color names:
-('foreground'); // Overall foreground color. This color is only used if not overridden by a component.
-('errorForeground'); // Overall foreground color for error messages. This color is only used if not overridden by a component.
-('descriptionForeground'); // Foreground color for description text providing additional information, for example for a label.
-('focusBorder'); // Overall border color for focused elements. This color is only used if not overridden by a component.
-('contrastBorder'); // An extra border around elements to separate them from others for greater contrast.
-('contrastActiveBorder'); // An extra border around active elements to separate them from others for greater contrast.
-('selection.background'); // The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.
-('textSeparator.foreground'); // Color for text separators.
-('textLink.foreground'); // Foreground color for links in text.
-('textLink.activeForeground'); // Foreground color for active links in text.
-('textPreformat.foreground'); // Foreground color for preformatted text segments.
-('textBlockQuote.background'); // Background color for block quotes in text.
-('textBlockQuote.border'); // Border color for block quotes in text.
-('textCodeBlock.background'); // Background color for code blocks in text.
-('widget.shadow'); // Shadow color of widgets such as find/replace inside the editor.
-('input.background'); // Input box background.
-('input.foreground'); // Input box foreground.
-('input.border'); // Input box border.
-('inputOption.activeBorder'); // Border color of activated options in input fields.
-('input.placeholderForeground'); // Input box foreground color for placeholder text.
-('inputValidation.infoBackground'); // Input validation background color for information severity.
-('inputValidation.infoBorder'); // Input validation border color for information severity.
-('inputValidation.warningBackground'); // Input validation background color for information warning.
-('inputValidation.warningBorder'); // Input validation border color for warning severity.
-('inputValidation.errorBackground'); // Input validation background color for error severity.
-('inputValidation.errorBorder'); // Input validation border color for error severity.
-('dropdown.background'); // Dropdown background.
-('dropdown.foreground'); // Dropdown foreground.
-('dropdown.border'); // Dropdown border.
-('list.focusBackground'); // List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.
-('list.focusForeground'); // List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.
-('list.activeSelectionBackground'); // List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.
-('list.activeSelectionForeground'); // List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.
-('list.inactiveSelectionBackground'); // List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.
-('list.inactiveSelectionForeground'); // List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.
-('list.hoverBackground'); // List/Tree background when hovering over items using the mouse.
-('list.hoverForeground'); // List/Tree foreground when hovering over items using the mouse.
-('list.dropBackground'); // List/Tree drag and drop background when moving items around using the mouse.
-('list.highlightForeground'); // List/Tree foreground color of the match highlights when searching inside the list/tree.
-('pickerGroup.foreground'); // Quick picker color for grouping labels.
-('pickerGroup.border'); // Quick picker color for grouping borders.
-('button.foreground'); // Button foreground color.
-('button.background'); // Button background color.
-('button.hoverBackground'); // Button background color when hovering.
-('badge.background'); // Badge background color. Badges are small information labels, e.g. for search results count.
-('badge.foreground'); // Badge foreground color. Badges are small information labels, e.g. for search results count.
-('scrollbar.shadow'); // Scrollbar shadow to indicate that the view is scrolled.
-('scrollbarSlider.background'); // Slider background color.
-('scrollbarSlider.hoverBackground'); // Slider background color when hovering.
-('scrollbarSlider.activeBackground'); // Slider background color when active.
-('progressBar.background'); // Background color of the progress bar that can show for long running operations.
-('editor.background'); // Editor background color.
-('editor.foreground'); // Editor default foreground color.
-('editorWidget.background'); // Background color of editor widgets, such as find/replace.
-('editorWidget.border'); // Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.
-('editor.selectionBackground'); // Color of the editor selection.
-('editor.selectionForeground'); // Color of the selected text for high contrast.
-('editor.inactiveSelectionBackground'); // Color of the selection in an inactive editor.
-('editor.selectionHighlightBackground'); // Color for regions with the same content as the selection.
-('editor.findMatchBackground'); // Color of the current search match.
-('editor.findMatchHighlightBackground'); // Color of the other search matches.
-('editor.findRangeHighlightBackground'); // Color the range limiting the search.
-('editor.hoverHighlightBackground'); // Highlight below the word for which a hover is shown.
-('editorHoverWidget.background'); // Background color of the editor hover.
-('editorHoverWidget.border'); // Border color of the editor hover.
-('editorLink.activeForeground'); // Color of active links.
-('diffEditor.insertedTextBackground'); // Background color for text that got inserted.
-('diffEditor.removedTextBackground'); // Background color for text that got removed.
-('diffEditor.insertedTextBorder'); // Outline color for the text that got inserted.
-('diffEditor.removedTextBorder'); // Outline color for text that got removed.
-('editorOverviewRuler.currentContentForeground'); // Current overview ruler foreground for inline merge-conflicts.
-('editorOverviewRuler.incomingContentForeground'); // Incoming overview ruler foreground for inline merge-conflicts.
-('editorOverviewRuler.commonContentForeground'); // Common ancestor overview ruler foreground for inline merge-conflicts.
-('editor.lineHighlightBackground'); // Background color for the highlight of line at the cursor position.
-('editor.lineHighlightBorder'); // Background color for the border around the line at the cursor position.
-('editor.rangeHighlightBackground'); // Background color of highlighted ranges, like by quick open and find features.
-('editorCursor.foreground'); // Color of the editor cursor.
-('editorWhitespace.foreground'); // Color of whitespace characters in the editor.
-('editorIndentGuide.background'); // Color of the editor indentation guides.
-('editorLineNumber.foreground'); // Color of editor line numbers.
-('editorLineNumber.activeForeground'); // Color of editor active line number.
-('editorRuler.foreground'); // Color of the editor rulers.
-('editorCodeLens.foreground'); // Foreground color of editor code lenses
-('editorInlayHint.foreground'); // Foreground color of editor inlay hints
-('editorInlayHint.background'); // Background color of editor inlay hints
-('editorBracketMatch.background'); // Background color behind matching brackets
-('editorBracketMatch.border'); // Color for matching brackets boxes
-('editorOverviewRuler.border'); // Color of the overview ruler border.
-('editorGutter.background'); // Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.
-('editorError.foreground'); // Foreground color of error squigglies in the editor.
-('editorError.border'); // Border color of error squigglies in the editor.
-('editorWarning.foreground'); // Foreground color of warning squigglies in the editor.
-('editorWarning.border'); // Border color of warning squigglies in the editor.
-('editorMarkerNavigationError.background'); // Editor marker navigation widget error color.
-('editorMarkerNavigationWarning.background'); // Editor marker navigation widget warning color.
-('editorMarkerNavigation.background'); // Editor marker navigation widget background.
-('editorSuggestWidget.background'); // Background color of the suggest widget.
-('editorSuggestWidget.border'); // Border color of the suggest widget.
-('editorSuggestWidget.foreground'); // Foreground color of the suggest widget.
-('editorSuggestWidget.selectedBackground'); // Background color of the selected entry in the suggest widget.
-('editorSuggestWidget.highlightForeground'); // Color of the match highlights in the suggest widget.
-('editor.wordHighlightBackground'); // Background color of a symbol during read-access, like reading a variable.
-('editor.wordHighlightStrongBackground'); // Background color of a symbol during write-access, like writing to a variable.
-('peekViewTitle.background'); // Background color of the peek view title area.
-('peekViewTitleLabel.foreground'); // Color of the peek view title.
-('peekViewTitleDescription.foreground'); // Color of the peek view title info.
-('peekView.border'); // Color of the peek view borders and arrow.
-('peekViewResult.background'); // Background color of the peek view result list.
-('peekViewResult.lineForeground'); // Foreground color for line nodes in the peek view result list.
-('peekViewResult.fileForeground'); // Foreground color for file nodes in the peek view result list.
-('peekViewResult.selectionBackground'); // Background color of the selected entry in the peek view result list.
-('peekViewResult.selectionForeground'); // Foreground color of the selected entry in the peek view result list.
-('peekViewEditor.background'); // Background color of the peek view editor.
-('peekViewEditorGutter.background'); // Background color of the gutter in the peek view editor.
-('peekViewResult.matchHighlightBackground'); // Match highlight color in the peek view result list.
-('peekViewEditor.matchHighlightBackground'); // Match highlight color in the peek view editor.
-
-/*
-var colors = require('vs/platform/registry/common/platform').Registry.data.get('base.contributions.colors').colorSchema.properties
-Object.keys(colors).forEach(function(key) {
-    var val = colors[key];
-    console.log( '//' + val.description + '\n' + key);
-})
-*/

+ 0 - 42
website/playground/new-samples/extending-language-services/configure-json-defaults/sample.js

@@ -1,42 +0,0 @@
-// Configures two JSON schemas, with references.
-
-var jsonCode = ['{', '    "p1": "v3",', '    "p2": false', '}'].join('\n');
-var modelUri = monaco.Uri.parse('a://b/foo.json'); // a made up unique URI for our model
-var model = monaco.editor.createModel(jsonCode, 'json', modelUri);
-
-// configure the JSON language support with schemas and schema associations
-monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
-	validate: true,
-	schemas: [
-		{
-			uri: 'http://myserver/foo-schema.json', // id of the first schema
-			fileMatch: [modelUri.toString()], // associate with our model
-			schema: {
-				type: 'object',
-				properties: {
-					p1: {
-						enum: ['v1', 'v2']
-					},
-					p2: {
-						$ref: 'http://myserver/bar-schema.json' // reference the second schema
-					}
-				}
-			}
-		},
-		{
-			uri: 'http://myserver/bar-schema.json', // id of the second schema
-			schema: {
-				type: 'object',
-				properties: {
-					q1: {
-						enum: ['x1', 'x2']
-					}
-				}
-			}
-		}
-	]
-});
-
-monaco.editor.create(document.getElementById('container'), {
-	model: model
-});

+ 0 - 117
website/playground/new-samples/extending-language-services/custom-languages/sample.js

@@ -1,117 +0,0 @@
-// Register a new language
-monaco.languages.register({ id: 'mySpecialLanguage' });
-
-// Register a tokens provider for the language
-monaco.languages.setMonarchTokensProvider('mySpecialLanguage', {
-	tokenizer: {
-		root: [
-			[/\[error.*/, 'custom-error'],
-			[/\[notice.*/, 'custom-notice'],
-			[/\[info.*/, 'custom-info'],
-			[/\[[a-zA-Z 0-9:]+\]/, 'custom-date']
-		]
-	}
-});
-
-// Define a new theme that contains only rules that match this language
-monaco.editor.defineTheme('myCoolTheme', {
-	base: 'vs',
-	inherit: false,
-	rules: [
-		{ token: 'custom-info', foreground: '808080' },
-		{ token: 'custom-error', foreground: 'ff0000', fontStyle: 'bold' },
-		{ token: 'custom-notice', foreground: 'FFA500' },
-		{ token: 'custom-date', foreground: '008800' }
-	],
-	colors: {
-		'editor.foreground': '#000000'
-	}
-});
-
-// Register a completion item provider for the new language
-monaco.languages.registerCompletionItemProvider('mySpecialLanguage', {
-	provideCompletionItems: () => {
-		var suggestions = [
-			{
-				label: 'simpleText',
-				kind: monaco.languages.CompletionItemKind.Text,
-				insertText: 'simpleText'
-			},
-			{
-				label: 'testing',
-				kind: monaco.languages.CompletionItemKind.Keyword,
-				insertText: 'testing(${1:condition})',
-				insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
-			},
-			{
-				label: 'ifelse',
-				kind: monaco.languages.CompletionItemKind.Snippet,
-				insertText: ['if (${1:condition}) {', '\t$0', '} else {', '\t', '}'].join('\n'),
-				insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
-				documentation: 'If-Else Statement'
-			}
-		];
-		return { suggestions: suggestions };
-	}
-});
-
-monaco.editor.create(document.getElementById('container'), {
-	theme: 'myCoolTheme',
-	value: getCode(),
-	language: 'mySpecialLanguage'
-});
-
-function getCode() {
-	return [
-		'[Sun Mar 7 16:02:00 2004] [notice] Apache/1.3.29 (Unix) configured -- resuming normal operations',
-		'[Sun Mar 7 16:02:00 2004] [info] Server built: Feb 27 2004 13:56:37',
-		'[Sun Mar 7 16:02:00 2004] [notice] Accept mutex: sysvsem (Default: sysvsem)',
-		'[Sun Mar 7 16:05:49 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 16:45:56 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 17:13:50 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 17:21:44 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 17:23:53 2004] statistics: Use of uninitialized value in concatenation (.) or string at /home/httpd/twiki/lib/TWiki.pm line 528.',
-		"[Sun Mar 7 17:23:53 2004] statistics: Can't create file /home/httpd/twiki/data/Main/WebStatistics.txt - Permission denied",
-		'[Sun Mar 7 17:27:37 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 17:31:39 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 17:58:00 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 18:00:09 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 18:10:09 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 18:19:01 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 18:42:29 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 18:52:30 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 18:58:52 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 19:03:58 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 19:08:55 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 20:04:35 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 20:11:33 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 20:12:55 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 20:25:31 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 20:44:48 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 20:58:27 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 21:16:17 2004] [error] [client xx.xx.xx.xx] File does not exist: /home/httpd/twiki/view/Main/WebHome',
-		'[Sun Mar 7 21:20:14 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 21:31:12 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 21:39:55 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Sun Mar 7 21:44:10 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 01:35:13 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 01:47:06 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 01:59:13 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 02:12:24 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 02:54:54 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 03:46:27 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 03:48:18 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 03:52:17 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 03:55:09 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 04:22:55 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 04:24:47 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 04:40:32 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 04:55:40 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 04:59:13 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 05:22:57 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 05:24:29 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'[Mon Mar 8 05:31:47 2004] [info] [client xx.xx.xx.xx] (104)Connection reset by peer: client stopped connection before send body completed',
-		'<11>httpd[31628]: [error] [client xx.xx.xx.xx] File does not exist: /usr/local/installed/apache/htdocs/squirrelmail/_vti_inf.html in 29-Mar 15:18:20.50 from xx.xx.xx.xx',
-		'<11>httpd[25859]: [error] [client xx.xx.xx.xx] File does not exist: /usr/local/installed/apache/htdocs/squirrelmail/_vti_bin/shtml.exe/_vti_rpc in 29-Mar 15:18:20.54 from xx.xx.xx.xx'
-	].join('\n');
-}

+ 0 - 166
website/playground/new-samples/extending-language-services/semantic-tokens-provider-example/sample.js

@@ -1,166 +0,0 @@
-/** @type {monaco.languages.SemanticTokensLegend} */
-const legend = {
-	tokenTypes: [
-		'comment',
-		'string',
-		'keyword',
-		'number',
-		'regexp',
-		'operator',
-		'namespace',
-		'type',
-		'struct',
-		'class',
-		'interface',
-		'enum',
-		'typeParameter',
-		'function',
-		'member',
-		'macro',
-		'variable',
-		'parameter',
-		'property',
-		'label'
-	],
-	tokenModifiers: [
-		'declaration',
-		'documentation',
-		'readonly',
-		'static',
-		'abstract',
-		'deprecated',
-		'modification',
-		'async'
-	]
-};
-
-/** @type {(type: string)=>number} */
-function getType(type) {
-	return legend.tokenTypes.indexOf(type);
-}
-
-/** @type {(modifier: string[]|string|null)=>number} */
-function getModifier(modifiers) {
-	if (typeof modifiers === 'string') {
-		modifiers = [modifiers];
-	}
-	if (Array.isArray(modifiers)) {
-		let nModifiers = 0;
-		for (let modifier of modifiers) {
-			const nModifier = legend.tokenModifiers.indexOf(modifier);
-			if (nModifier > -1) {
-				nModifiers |= (1 << nModifier) >>> 0;
-			}
-		}
-		return nModifiers;
-	} else {
-		return 0;
-	}
-}
-
-const tokenPattern = new RegExp('([a-zA-Z]+)((?:\\.[a-zA-Z]+)*)', 'g');
-
-monaco.languages.registerDocumentSemanticTokensProvider('plaintext', {
-	getLegend: function () {
-		return legend;
-	},
-	provideDocumentSemanticTokens: function (model, lastResultId, token) {
-		const lines = model.getLinesContent();
-
-		/** @type {number[]} */
-		const data = [];
-
-		let prevLine = 0;
-		let prevChar = 0;
-
-		for (let i = 0; i < lines.length; i++) {
-			const line = lines[i];
-
-			for (let match = null; (match = tokenPattern.exec(line)); ) {
-				// translate token and modifiers to number representations
-				let type = getType(match[1]);
-				if (type === -1) {
-					continue;
-				}
-				let modifier = match[2].length ? getModifier(match[2].split('.').slice(1)) : 0;
-
-				data.push(
-					// translate line to deltaLine
-					i - prevLine,
-					// for the same line, translate start to deltaStart
-					prevLine === i ? match.index - prevChar : match.index,
-					match[0].length,
-					type,
-					modifier
-				);
-
-				prevLine = i;
-				prevChar = match.index;
-			}
-		}
-		return {
-			data: new Uint32Array(data),
-			resultId: null
-		};
-	},
-	releaseDocumentSemanticTokens: function (resultId) {}
-});
-
-// add some missing tokens
-monaco.editor.defineTheme('myCustomTheme', {
-	base: 'vs',
-	inherit: true,
-	colors: {},
-	rules: [
-		{ token: 'comment', foreground: 'aaaaaa', fontStyle: 'italic' },
-		{ token: 'keyword', foreground: 'ce63eb' },
-		{ token: 'operator', foreground: '000000' },
-		{ token: 'namespace', foreground: '66afce' },
-
-		{ token: 'type', foreground: '1db010' },
-		{ token: 'struct', foreground: '0000ff' },
-		{ token: 'class', foreground: '0000ff', fontStyle: 'bold' },
-		{ token: 'interface', foreground: '007700', fontStyle: 'bold' },
-		{ token: 'enum', foreground: '0077ff', fontStyle: 'bold' },
-		{ token: 'typeParameter', foreground: '1db010' },
-		{ token: 'function', foreground: '94763a' },
-
-		{ token: 'member', foreground: '94763a' },
-		{ token: 'macro', foreground: '615a60' },
-		{ token: 'variable', foreground: '3e5bbf' },
-		{ token: 'parameter', foreground: '3e5bbf' },
-		{ token: 'property', foreground: '3e5bbf' },
-		{ token: 'label', foreground: '615a60' },
-
-		{ token: 'type.static', fontStyle: 'bold' },
-		{ token: 'class.static', foreground: 'ff0000', fontStyle: 'bold' }
-	]
-});
-
-const editor = monaco.editor.create(document.getElementById('container'), {
-	value: [
-		'Available token types:',
-		'    [comment] [string] [keyword] [number] [regexp] [operator] [namespace]',
-		'    [type] [struct] [class] [interface] [enum] [typeParameter] [function]',
-		'    [member] [macro] [variable] [parameter] [property] [label]',
-		'',
-		'Available token modifiers:',
-		'    [type.declaration] [type.documentation] [type.member] [type.static]',
-		'    [type.abstract] [type.deprecated] [type.modification] [type.async]',
-		'',
-		'Some examples:',
-		'    [class.static.token]     [type.static.abstract]',
-		'    [class.static.token]     [type.static]',
-		'',
-		'    [struct]',
-		'',
-		'    [function.private]',
-		'',
-		'An error case:',
-		'    [notInLegend]'
-	].join('\n'),
-	language: 'plaintext',
-	theme: 'myCustomTheme',
-	// semantic tokens provider is disabled by default
-	'semanticHighlighting.enabled': true
-});

+ 0 - 36
website/playground/new-samples/interacting-with-the-editor/adding-a-command-to-an-editor-instance/sample.js

@@ -1,36 +0,0 @@
-var jsCode = [
-	'"use strict";',
-	'function Person(age) {',
-	'	if (age) {',
-	'		this.age = age;',
-	'	}',
-	'}',
-	'Person.prototype.getAge = function () {',
-	'	return this.age;',
-	'};'
-].join('\n');
-
-var editor = monaco.editor.create(document.getElementById('container'), {
-	value: jsCode,
-	language: 'javascript'
-});
-
-var myCondition1 = editor.createContextKey(/*key name*/ 'myCondition1', /*default value*/ false);
-var myCondition2 = editor.createContextKey(/*key name*/ 'myCondition2', /*default value*/ false);
-
-editor.addCommand(
-	monaco.KeyCode.Tab,
-	function () {
-		// services available in `ctx`
-		alert('my command is executing!');
-	},
-	'myCondition1 && myCondition2'
-);
-
-myCondition1.set(true);
-
-setTimeout(function () {
-	alert('now enabling also myCondition2, try pressing Tab!');
-	myCondition2.set(true);
-	// you can use myCondition2.reset() to go back to the default
-}, 2000);

+ 0 - 25
website/playground/new-samples/interacting-with-the-editor/customizing-the-line-numbers/sample.js

@@ -1,25 +0,0 @@
-function lineNumbersFunc(originalLineNumber) {
-	var map = ['O', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'];
-	if (originalLineNumber < map.length) {
-		return map[originalLineNumber];
-	}
-	return originalLineNumber;
-}
-
-var jsCode = [
-	'"use strict";',
-	'function Person(age) {',
-	'	if (age) {',
-	'		this.age = age;',
-	'	}',
-	'}',
-	'Person.prototype.getAge = function () {',
-	'	return this.age;',
-	'};'
-].join('\n');
-
-var editor = monaco.editor.create(document.getElementById('container'), {
-	value: jsCode,
-	language: 'javascript',
-	lineNumbers: lineNumbersFunc
-});

+ 0 - 33
website/playground/new-samples/interacting-with-the-editor/line-and-inline-decorations/sample.js

@@ -1,33 +0,0 @@
-var jsCode = [
-	'"use strict";',
-	'function Person(age) {',
-	'	if (age) {',
-	'		this.age = age;',
-	'	}',
-	'}',
-	'Person.prototype.getAge = function () {',
-	'	return this.age;',
-	'};'
-].join('\n');
-
-var editor = monaco.editor.create(document.getElementById('container'), {
-	value: jsCode,
-	language: 'javascript'
-});
-
-var decorations = editor.deltaDecorations(
-	[],
-	[
-		{
-			range: new monaco.Range(3, 1, 5, 1),
-			options: {
-				isWholeLine: true,
-				linesDecorationsClassName: 'myLineDecoration'
-			}
-		},
-		{
-			range: new monaco.Range(7, 1, 7, 24),
-			options: { inlineClassName: 'myInlineDecoration' }
-		}
-	]
-);

+ 0 - 33
website/playground/new-samples/interacting-with-the-editor/rendering-glyphs-in-the-margin/sample.js

@@ -1,33 +0,0 @@
-var jsCode = [
-	'"use strict";',
-	'function Person(age) {',
-	'	if (age) {',
-	'		this.age = age;',
-	'	}',
-	'}',
-	'Person.prototype.getAge = function () {',
-	'	return this.age;',
-	'};'
-].join('\n');
-
-var editor = monaco.editor.create(document.getElementById('container'), {
-	value: jsCode,
-	language: 'javascript',
-	glyphMargin: true
-});
-
-var decorations = editor.deltaDecorations(
-	[],
-	[
-		{
-			range: new monaco.Range(3, 1, 3, 1),
-			options: {
-				isWholeLine: true,
-				className: 'myContentClass',
-				glyphMarginClassName: 'myGlyphMarginClass'
-			}
-		}
-	]
-);
-
-// You can now use `decorations` to change or remove the decoration

+ 0 - 91
website/playground/playground-runner.html

@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html style="height: 100%">
-	<head>
-		<link data-inline="yes-please" href="./spinner.css" rel="stylesheet" />
-
-		<link
-			data-name="vs/editor/editor.main"
-			rel="stylesheet"
-			href="../../release/dev/vs/editor/editor.main.css"
-		/>
-
-		<style type="text/css">
-			body {
-				margin: 0;
-				padding: 0;
-				border: 0;
-				overflow: hidden;
-			}
-		</style>
-	</head>
-	<body>
-		<div id="loading">
-			<div class="spinner">
-				<div class="rect1"></div>
-				<div class="rect2"></div>
-				<div class="rect3"></div>
-				<div class="rect4"></div>
-				<div class="rect5"></div>
-			</div>
-		</div>
-
-		<script>
-			var require = { paths: { vs: '../../release/dev/vs' } };
-		</script>
-		<script src="../../release/dev/vs/loader.js"></script>
-		<script src="../../release/dev/vs/editor/editor.main.nls.js"></script>
-		<script src="../../release/dev/vs/editor/editor.main.js"></script>
-
-		<script type="text/javascript">
-			var receivedCall = null;
-			window.load = function (js, html, css) {
-				receivedCall = {
-					js: js,
-					html: html,
-					css: css
-				};
-			};
-		</script>
-
-		<script type="text/javascript">
-			var geval = eval;
-
-			require(['require', 'vs/editor/editor.main'], function (require) {
-				'use strict';
-
-				var loading = document.getElementById('loading');
-				loading.parentNode.removeChild(loading);
-				document.body.style.height = '100%';
-
-				// Switch `automaticLayout` property to true by default
-				//TODO: var config = require('vs/editor/common/config/config');
-				//config.getActiveEditor().automaticLayout = true;
-
-				window.load = function (js, html, css) {
-					if (css) {
-						var style = document.createElement('style');
-						style.type = 'text/css';
-						style.innerHTML = css;
-						document.body.appendChild(style);
-					}
-					if (html) {
-						document.body.innerHTML += html;
-					}
-					if (js) {
-						try {
-							geval(js);
-						} catch (err) {
-							var pre = document.createElement('pre');
-							pre.appendChild(document.createTextNode(err));
-							document.body.insertBefore(pre, document.body.firstChild);
-						}
-					}
-				};
-
-				if (receivedCall) {
-					window.load(receivedCall.js, receivedCall.html, receivedCall.css);
-				}
-			});
-		</script>
-	</body>
-</html>

+ 0 - 59
website/playground/playground.css

@@ -1,59 +0,0 @@
-body {
-	margin: 0;
-	padding: 0;
-	font-family: 'Segoe UI', Arial, 'HelveticaNeue-Light', sans-serif;
-	font-size: 13px;
-	overflow: hidden;
-}
-
-select {
-	width: initial;
-}
-
-.playground-page .title {
-	font-family: 'Segoe UI Light', 'HelveticaNeue-UltraLight', sans-serif;
-	font-weight: 100;
-	font-size: 1.8em;
-}
-
-.playground-page .tabArea {
-	height: 20px;
-	box-sizing: border-box;
-	border-bottom: 1px solid #999;
-}
-.playground-page .tab {
-	height: 20px;
-	line-height: 20px;
-	box-sizing: border-box;
-	color: #999;
-	padding: 0 8px;
-	border: 1px solid #999;
-	border-bottom: 0;
-	cursor: pointer;
-	float: left;
-}
-.playground-page .tab.active {
-	color: black;
-	border-bottom: 1px solid white;
-}
-.playground-page .action {
-	height: 20px;
-	line-height: 20px;
-	box-sizing: border-box;
-	color: black;
-	padding: 0 5px;
-	border: 1px solid #999;
-	border-bottom: 0;
-	cursor: pointer;
-	float: right;
-	font: inherit;
-	padding-left: 16px;
-}
-.playground-page .action.run {
-	background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAE1JREFUOE9jKCsrY6AEU6QZZPHgNeA/0Hn7gdiBUPjg8gLIABjGaxAxBuA1iBQDYAalIXuLFAOweoUYA8gOA4pigegERrRCXOlhGBgAAGmggVf7bEk0AAAAAElFTkSuQmCC')
-		no-repeat left center;
-}
-.playground-page .editor-container {
-	border: 1px solid #999;
-	border-top: 0;
-}

+ 0 - 427
website/playground/playground.js

@@ -1,427 +0,0 @@
-/// <reference path="../../release/monaco.d.ts" />
-
-(function () {
-	'use strict';
-
-	var isMac = /Mac/i.test(navigator.userAgent);
-	window.onload = function () {
-		require(['vs/editor/editor.main'], function () {
-			xhr('playground/monaco.d.ts.txt').then(function (response) {
-				monaco.languages.typescript.javascriptDefaults.addExtraLib(
-					response.responseText,
-					'ts:monaco.d.ts'
-				);
-				monaco.languages.typescript.javascriptDefaults.addExtraLib(
-					[
-						'declare var require: {',
-						'	toUrl(path: string): string;',
-						'	(moduleName: string): any;',
-						'	(dependencies: string[], callback: (...args: any[]) => any, errorback?: (err: any) => void): any;',
-						'	config(data: any): any;',
-						'	onError: Function;',
-						'};'
-					].join('\n'),
-					'ts:require.d.ts'
-				);
-			});
-
-			var loading = document.getElementById('loading');
-			loading.parentNode.removeChild(loading);
-			load();
-		});
-	};
-
-	var editor = null;
-	var data = {
-		js: {
-			model: null,
-			state: null
-		},
-		css: {
-			model: null,
-			state: null
-		},
-		html: {
-			model: null,
-			state: null
-		}
-	};
-
-	function load() {
-		function layout() {
-			var GLOBAL_PADDING = 20;
-
-			var WIDTH = window.innerWidth - 2 * GLOBAL_PADDING;
-			var HEIGHT = window.innerHeight;
-
-			var TITLE_HEIGHT = 110;
-			var FOOTER_HEIGHT = 80;
-			var TABS_HEIGHT = 20;
-			var INNER_PADDING = 20;
-			var SWITCHER_HEIGHT = 30;
-
-			var HALF_WIDTH = Math.floor((WIDTH - INNER_PADDING) / 2);
-			var REMAINING_HEIGHT = HEIGHT - TITLE_HEIGHT - FOOTER_HEIGHT - SWITCHER_HEIGHT;
-
-			playgroundContainer.style.width = WIDTH + 'px';
-			playgroundContainer.style.height = HEIGHT - FOOTER_HEIGHT + 'px';
-			playgroundContainer.style.position = 'relative';
-
-			sampleSwitcher.style.position = 'absolute';
-			sampleSwitcher.style.top = TITLE_HEIGHT + 'px';
-			sampleSwitcher.style.left = GLOBAL_PADDING + 'px';
-
-			typingContainer.style.position = 'absolute';
-			typingContainer.style.top = GLOBAL_PADDING + TITLE_HEIGHT + SWITCHER_HEIGHT + 'px';
-			typingContainer.style.left = GLOBAL_PADDING + 'px';
-			typingContainer.style.width = HALF_WIDTH + 'px';
-			typingContainer.style.height = REMAINING_HEIGHT + 'px';
-
-			tabArea.style.position = 'absolute';
-			tabArea.style.boxSizing = 'border-box';
-			tabArea.style.top = 0;
-			tabArea.style.left = 0;
-			tabArea.style.width = HALF_WIDTH + 'px';
-			tabArea.style.height = TABS_HEIGHT + 'px';
-
-			editorContainer.style.position = 'absolute';
-			editorContainer.style.boxSizing = 'border-box';
-			editorContainer.style.top = TABS_HEIGHT + 'px';
-			editorContainer.style.left = 0;
-			editorContainer.style.width = HALF_WIDTH + 'px';
-			editorContainer.style.height = REMAINING_HEIGHT - TABS_HEIGHT + 'px';
-
-			if (editor) {
-				editor.layout({
-					width: HALF_WIDTH - 2,
-					height: REMAINING_HEIGHT - TABS_HEIGHT - 1
-				});
-			}
-
-			runContainer.style.position = 'absolute';
-			runContainer.style.top = GLOBAL_PADDING + TITLE_HEIGHT + SWITCHER_HEIGHT + TABS_HEIGHT + 'px';
-			runContainer.style.left = GLOBAL_PADDING + INNER_PADDING + HALF_WIDTH + 'px';
-			runContainer.style.width = HALF_WIDTH + 'px';
-			runContainer.style.height = REMAINING_HEIGHT - TABS_HEIGHT + 'px';
-
-			runIframeHeight = REMAINING_HEIGHT - TABS_HEIGHT;
-			if (runIframe) {
-				runIframe.style.height = runIframeHeight + 'px';
-			}
-		}
-
-		function changeTab(selectedTabNode, desiredModelId) {
-			for (var i = 0; i < tabArea.childNodes.length; i++) {
-				var child = tabArea.childNodes[i];
-				if (/tab/.test(child.className)) {
-					child.className = 'tab';
-				}
-			}
-			selectedTabNode.className = 'tab active';
-
-			var currentState = editor.saveViewState();
-
-			var currentModel = editor.getModel();
-			if (currentModel === data.js.model) {
-				data.js.state = currentState;
-			} else if (currentModel === data.css.model) {
-				data.css.state = currentState;
-			} else if (currentModel === data.html.model) {
-				data.html.state = currentState;
-			}
-
-			editor.setModel(data[desiredModelId].model);
-			editor.restoreViewState(data[desiredModelId].state);
-			editor.focus();
-		}
-
-		// create the typing side
-		var typingContainer = document.createElement('div');
-		typingContainer.className = 'typingContainer';
-
-		var tabArea = (function () {
-			var tabArea = document.createElement('div');
-			tabArea.className = 'tabArea';
-
-			var jsTab = document.createElement('span');
-			jsTab.className = 'tab active';
-			jsTab.appendChild(document.createTextNode('JavaScript'));
-			jsTab.onclick = function () {
-				changeTab(jsTab, 'js');
-			};
-			tabArea.appendChild(jsTab);
-
-			var cssTab = document.createElement('span');
-			cssTab.className = 'tab';
-			cssTab.appendChild(document.createTextNode('CSS'));
-			cssTab.onclick = function () {
-				changeTab(cssTab, 'css');
-			};
-			tabArea.appendChild(cssTab);
-
-			var htmlTab = document.createElement('span');
-			htmlTab.className = 'tab';
-			htmlTab.appendChild(document.createTextNode('HTML'));
-			htmlTab.onclick = function () {
-				changeTab(htmlTab, 'html');
-			};
-			tabArea.appendChild(htmlTab);
-
-			var runLabel = 'Press ' + (isMac ? 'CMD + return' : 'CTRL + Enter') + ' to run the code.';
-			var runBtn = document.createElement('button');
-			runBtn.className = 'action run';
-			runBtn.setAttribute('role', 'button');
-			runBtn.setAttribute('aria-label', runLabel);
-			runBtn.appendChild(document.createTextNode('Run'));
-			runBtn.onclick = function () {
-				run();
-			};
-			tabArea.appendChild(runBtn);
-
-			return tabArea;
-		})();
-
-		var editorContainer = document.createElement('div');
-		editorContainer.className = 'editor-container';
-
-		typingContainer.appendChild(tabArea);
-		typingContainer.appendChild(editorContainer);
-
-		var runContainer = document.createElement('div');
-		runContainer.className = 'run-container';
-
-		var sampleSwitcher = document.createElement('select');
-		var sampleChapter;
-		PLAY_SAMPLES.forEach(function (sample) {
-			if (!sampleChapter || sampleChapter.label !== sample.chapter) {
-				sampleChapter = document.createElement('optgroup');
-				sampleChapter.label = sample.chapter;
-				sampleSwitcher.appendChild(sampleChapter);
-			}
-			var sampleOption = document.createElement('option');
-			sampleOption.value = sample.id;
-			sampleOption.appendChild(document.createTextNode(sample.name));
-			sampleChapter.appendChild(sampleOption);
-		});
-		sampleSwitcher.className = 'sample-switcher';
-
-		var LOADED_SAMPLES = [];
-		function findLoadedSample(sampleId) {
-			for (var i = 0; i < LOADED_SAMPLES.length; i++) {
-				var sample = LOADED_SAMPLES[i];
-				if (sample.id === sampleId) {
-					return sample;
-				}
-			}
-			return null;
-		}
-
-		function findSamplePath(sampleId) {
-			for (var i = 0; i < PLAY_SAMPLES.length; i++) {
-				var sample = PLAY_SAMPLES[i];
-				if (sample.id === sampleId) {
-					return sample.path;
-				}
-			}
-			return null;
-		}
-
-		function loadSample(sampleId, callback) {
-			var sample = findLoadedSample(sampleId);
-			if (sample) {
-				return callback(null, sample);
-			}
-
-			var samplePath = findSamplePath(sampleId);
-			if (!samplePath) {
-				return callback(new Error('sample not found'));
-			}
-
-			samplePath = 'playground/new-samples/' + samplePath;
-
-			var js = xhr(samplePath + '/sample.js').then(function (response) {
-				return response.responseText;
-			});
-			var css = xhr(samplePath + '/sample.css').then(function (response) {
-				return response.responseText;
-			});
-			var html = xhr(samplePath + '/sample.html').then(function (response) {
-				return response.responseText;
-			});
-			Promise.all([js, css, html]).then(
-				function (_) {
-					var js = _[0];
-					var css = _[1];
-					var html = _[2];
-					LOADED_SAMPLES.push({
-						id: sampleId,
-						js: js,
-						css: css,
-						html: html
-					});
-					return callback(null, findLoadedSample(sampleId));
-				},
-				function (err) {
-					callback(err, null);
-				}
-			);
-		}
-
-		sampleSwitcher.onchange = function () {
-			var sampleId = sampleSwitcher.options[sampleSwitcher.selectedIndex].value;
-			window.location.hash = sampleId;
-		};
-
-		var playgroundContainer = document.getElementById('playground');
-
-		layout();
-		window.onresize = layout;
-
-		playgroundContainer.appendChild(sampleSwitcher);
-		playgroundContainer.appendChild(typingContainer);
-		playgroundContainer.appendChild(runContainer);
-
-		data.js.model = monaco.editor.createModel('console.log("hi")', 'javascript');
-		data.css.model = monaco.editor.createModel('css', 'css');
-		data.html.model = monaco.editor.createModel('html', 'html');
-
-		editor = monaco.editor.create(editorContainer, {
-			model: data.js.model,
-			minimap: {
-				enabled: false
-			}
-		});
-
-		var currentToken = 0;
-		function parseHash(firstTime) {
-			var sampleId = window.location.hash.replace(/^#/, '');
-			if (!sampleId) {
-				sampleId = PLAY_SAMPLES[0].id;
-			}
-
-			if (firstTime) {
-				for (var i = 0; i < sampleSwitcher.options.length; i++) {
-					var opt = sampleSwitcher.options[i];
-					if (opt.value === sampleId) {
-						sampleSwitcher.selectedIndex = i;
-						break;
-					}
-				}
-			}
-
-			var myToken = ++currentToken;
-			loadSample(sampleId, function (err, sample) {
-				if (err) {
-					alert('Sample not found! ' + err.message);
-					return;
-				}
-				if (myToken !== currentToken) {
-					return;
-				}
-				data.js.model.setValue(sample.js);
-				data.html.model.setValue(sample.html);
-				data.css.model.setValue(sample.css);
-				editor.setScrollTop(0);
-				run();
-			});
-		}
-		window.onhashchange = parseHash;
-		parseHash(true);
-
-		function run() {
-			doRun(runContainer);
-		}
-
-		editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, run);
-		window.addEventListener('keydown', function keyDown(ev) {
-			if ((isMac && !ev.metaKey) || !ev.ctrlKey) {
-				return;
-			}
-
-			if (ev.shiftKey || ev.altKey || ev.keyCode !== 13) {
-				return;
-			}
-
-			ev.preventDefault();
-			run();
-		});
-	}
-
-	var runIframe = null,
-		runIframeHeight = 0;
-	function doRun(runContainer) {
-		if (runIframe) {
-			// Unload old iframe
-			runContainer.removeChild(runIframe);
-		}
-
-		// Load new iframe
-		runIframe = document.createElement('iframe');
-		runIframe.id = 'runner';
-		runIframe.src = 'playground/playground-runner.html';
-		runIframe.className = 'run-iframe';
-		runIframe.style.boxSizing = 'border-box';
-		runIframe.style.height = runIframeHeight + 'px';
-		runIframe.style.width = '100%';
-		runIframe.style.border = '1px solid lightgrey';
-		runIframe.frameborder = '0';
-		runContainer.appendChild(runIframe);
-
-		var getLang = function (lang) {
-			return data[lang].model.getValue();
-		};
-
-		runIframe.addEventListener('load', function (e) {
-			runIframe.contentWindow.load(getLang('js'), getLang('html'), getLang('css'));
-		});
-	}
-
-	var preloaded = {};
-	(function () {
-		var elements = Array.prototype.slice.call(document.querySelectorAll('pre[data-preload]'), 0);
-
-		elements.forEach(function (el) {
-			var path = el.getAttribute('data-preload');
-			preloaded[path] = el.innerText || el.textContent;
-			el.parentNode.removeChild(el);
-		});
-	})();
-
-	function xhr(url) {
-		if (preloaded[url]) {
-			return Promise.resolve({
-				responseText: preloaded[url]
-			});
-		}
-
-		var req = null;
-		return new Promise(
-			function (c, e) {
-				req = new XMLHttpRequest();
-				req.onreadystatechange = function () {
-					if (req._canceled) {
-						return;
-					}
-
-					if (req.readyState === 4) {
-						if ((req.status >= 200 && req.status < 300) || req.status === 1223) {
-							c(req);
-						} else {
-							e(req);
-						}
-						req.onreadystatechange = function () {};
-					}
-				};
-
-				req.open('GET', url, true);
-				req.responseType = '';
-
-				req.send(null);
-			},
-			function () {
-				req._canceled = true;
-				req.abort();
-			}
-		);
-	}
-})();

BIN
website/playground/run.png


+ 0 - 63
website/playground/spinner.css

@@ -1,63 +0,0 @@
-/* ---- BEGIN loading spinner ---- */
-#loading .spinner {
-	margin: 100px auto;
-	width: 50px;
-	height: 40px;
-	text-align: center;
-	font-size: 10px;
-}
-
-#loading .spinner > div {
-	background-color: #333;
-	height: 100%;
-	width: 6px;
-	display: inline-block;
-
-	-webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;
-	animation: sk-stretchdelay 1.2s infinite ease-in-out;
-}
-
-#loading .spinner .rect2 {
-	-webkit-animation-delay: -1.1s;
-	animation-delay: -1.1s;
-}
-
-#loading .spinner .rect3 {
-	-webkit-animation-delay: -1s;
-	animation-delay: -1s;
-}
-
-#loading .spinner .rect4 {
-	-webkit-animation-delay: -0.9s;
-	animation-delay: -0.9s;
-}
-
-#loading .spinner .rect5 {
-	-webkit-animation-delay: -0.8s;
-	animation-delay: -0.8s;
-}
-
-@-webkit-keyframes sk-stretchdelay {
-	0%,
-	40%,
-	100% {
-		-webkit-transform: scaleY(0.4);
-	}
-	20% {
-		-webkit-transform: scaleY(1);
-	}
-}
-
-@keyframes sk-stretchdelay {
-	0%,
-	40%,
-	100% {
-		transform: scaleY(0.4);
-		-webkit-transform: scaleY(0.4);
-	}
-	20% {
-		transform: scaleY(1);
-		-webkit-transform: scaleY(1);
-	}
-}
-/* ---- END loading spinner ---- */

+ 98 - 0
website/src/monaco-loader.ts

@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+export function getLoadedMonaco(): typeof monaco {
+	if (!monaco) {
+		throw new Error("monaco is not loaded yet");
+	}
+	return monaco;
+}
+
+export function getMonaco(): typeof monaco | undefined {
+	return (window as any).monaco;
+}
+
+export interface IMonacoSetup {
+	loaderUrl: string;
+	loaderConfigPaths: Record<string, string>;
+	codiconUrl: string;
+	monacoTypesUrl: string | undefined;
+}
+
+let loadMonacoPromise: Promise<typeof monaco> | undefined;
+export async function loadMonaco(
+	setup: IMonacoSetup = prodMonacoSetup
+): Promise<typeof monaco> {
+	if (!loadMonacoPromise) {
+		loadMonacoPromise = _loadMonaco(setup);
+	}
+	return loadMonacoPromise;
+}
+
+async function _loadMonaco(setup: IMonacoSetup): Promise<typeof monaco> {
+	const global = self as any;
+
+	if (!(global as any).require) {
+		await loadScript(setup.loaderUrl);
+	}
+
+	global.AMD = true;
+	global.getCodiconPath = () => {
+		return setup.codiconUrl;
+	};
+
+	console.log("LOADER CONFIG: ");
+	console.log(JSON.stringify(setup.loaderConfigPaths, null, "\t"));
+
+	/** @type {any} */
+	const req = global.require as any;
+	req.config({ paths: setup.loaderConfigPaths });
+
+	return new Promise((res) => {
+		// First load editor.main. If it inlines the plugins, we don't want to try to load them from the server.
+		req(["vs/editor/editor.main"], () => {
+			req(
+				[
+					"vs/basic-languages/monaco.contribution",
+					"vs/language/css/monaco.contribution",
+					"vs/language/html/monaco.contribution",
+					"vs/language/json/monaco.contribution",
+					"vs/language/typescript/monaco.contribution",
+				],
+				() => {
+					res(monaco);
+				}
+			);
+		});
+	});
+}
+
+function loadScript(path: string): Promise<void> {
+	return new Promise((res) => {
+		const script = document.createElement("script");
+		script.onload = () => res();
+		script.async = true;
+		script.type = "text/javascript";
+		script.src = path;
+		document.head.appendChild(script);
+	});
+}
+
+export const prodMonacoSetup = getMonacoSetup(
+	"node_modules/monaco-editor/min/vs"
+);
+
+export function getMonacoSetup(corePath: string): IMonacoSetup {
+	const loaderConfigPaths = {
+		vs: `${corePath}`,
+	};
+
+	return {
+		loaderUrl: `${corePath}/loader.js`,
+		loaderConfigPaths,
+		codiconUrl: `${corePath}/base/browser/ui/codicons/codicon/codicon.ttf`,
+		monacoTypesUrl: undefined,
+	};
+}

+ 49 - 0
website/src/runner/index.ts

@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { loadMonaco } from "../monaco-loader";
+import { IMessage, IPreviewState } from "../shared";
+import "./style.scss";
+
+window.addEventListener("message", (event) => {
+	const e = event.data as IMessage | { kind: undefined };
+	if (e.kind === "initialize") {
+		initialize(e.state);
+	}
+});
+
+let monacoPromise: Promise<any> | undefined = undefined;
+
+async function initialize(state: IPreviewState) {
+	if (monacoPromise) {
+		throw new Error("already initialized");
+	}
+
+	const loadingContainerDiv = document.createElement("div");
+	loadingContainerDiv.className = "loader-container";
+	const loadingDiv = document.createElement("div");
+	loadingDiv.className = "loader";
+	loadingContainerDiv.appendChild(loadingDiv);
+	document.body.appendChild(loadingContainerDiv);
+
+	monacoPromise = loadMonaco(state.monacoSetup);
+	await monacoPromise;
+
+	loadingContainerDiv.remove();
+
+	const style = document.createElement("style");
+	style.innerHTML = state.css;
+	document.body.appendChild(style);
+
+	document.body.innerHTML += state.html;
+
+	try {
+		eval(state.js);
+	} catch (err) {
+		const pre = document.createElement("pre");
+		pre.appendChild(document.createTextNode(`${err}`));
+		document.body.insertBefore(pre, document.body.firstChild);
+	}
+}

+ 35 - 0
website/src/runner/style.scss

@@ -0,0 +1,35 @@
+body {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	overflow: hidden;
+}
+html,
+body {
+	height: 100%;
+}
+
+.loader-container {
+	width: 100%;
+	height: 100%;
+	display: flex;
+}
+
+.loader {
+	border: 16px solid #f2f1f1;
+	border-top: 16px solid #2c9ae3;
+	border-radius: 50%;
+	width: 70px;
+	height: 70px;
+	animation: spin 2s linear infinite;
+	margin: auto;
+}
+
+@keyframes spin {
+	0% {
+		transform: rotate(0deg);
+	}
+	100% {
+		transform: rotate(360deg);
+	}
+}

+ 21 - 0
website/src/shared.ts

@@ -0,0 +1,21 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { IMonacoSetup } from "./monaco-loader";
+
+export type IMessage = {
+	kind: "initialize";
+	state: IPreviewState;
+};
+
+export interface IPlaygroundProject {
+	js: string;
+	css: string;
+	html: string;
+}
+
+export interface IPreviewState extends IPlaygroundProject {
+	monacoSetup: IMonacoSetup;
+}

+ 13 - 0
website/src/types.d.ts

@@ -0,0 +1,13 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+declare module "lzma/src/lzma_worker" {
+	const x: any;
+	export = x;
+}
+declare module "base64-js" {
+	const x: any;
+	export = x;
+}

+ 6 - 0
website/src/website/bootstrap.scss

@@ -0,0 +1,6 @@
+@import "~bootstrap/scss/bootstrap";
+@import "~bootstrap-icons/font/bootstrap-icons.css";
+
+.btn-light {
+	--bs-btn-hover-bg: undefined !important;
+}

+ 1 - 0
website/src/website/code-oss.svg

@@ -0,0 +1 @@
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><style>.st0{fill:#f6f6f6;fill-opacity:0}.st1{fill:#fff}.st2{fill:#167abf}</style><path class="st0" d="M1024 1024H0V0h1024v1024z"/><path class="st1" d="M1024 85.333v853.333H0V85.333h1024z"/><path class="st2" d="M0 85.333h298.667v853.333H0V85.333zm1024 0v853.333H384V85.333h640zm-554.667 160h341.333v-64H469.333v64zm341.334 533.334H469.333v64h341.333l.001-64zm128-149.334H597.333v64h341.333l.001-64zm0-149.333H597.333v64h341.333l.001-64zm0-149.333H597.333v64h341.333l.001-64z"/></svg>

+ 75 - 0
website/src/website/components/Nav.tsx

@@ -0,0 +1,75 @@
+import React = require("react");
+import { home, playground, docs, monarch } from "../pages/routes";
+import { Container, Navbar, Nav, NavDropdown } from "./bootstrap";
+
+export class PageNav extends React.Component {
+	render() {
+		return (
+			<Navbar bg="dark" variant="dark" expand="lg">
+				<Container fluid>
+					<Navbar.Brand href="./">
+						<span className="code-oss-icon d-inline-block align-top" />
+						Monaco Editor
+					</Navbar.Brand>
+					<Navbar.Toggle aria-controls="basic-navbar-nav" />
+					<Navbar.Collapse id="basic-navbar-nav" role="">
+						<Nav className="me-auto">
+							<Nav.Link active={home.isActive} href={home.href}>
+								Home
+							</Nav.Link>
+							<Nav.Link
+								active={playground.isActive}
+								href={playground.href}
+							>
+								Playground
+							</Nav.Link>
+							<Nav.Link
+								active={monarch.isActive}
+								href={monarch.href}
+							>
+								Monarch
+							</Nav.Link>
+							<Nav.Link active={docs.isActive} href={docs.href}>
+								Documentation
+							</Nav.Link>
+						</Nav>
+
+						<Nav className="ms-auto">
+							<NavDropdown
+								title={
+									<>
+										<span className="nav-icon bi-download" />
+										<span className="hidden-text">
+											{" "}
+											Download{" "}
+										</span>
+									</>
+								}
+								className="download-dropdown"
+								align="end"
+							>
+								{/*<NavDropdown.Item href="#action/3.1">
+									Download 0.33.0
+							</NavDropdown.Item>*/}
+								<NavDropdown.Item
+									href="https://www.npmjs.com/package/monaco-editor"
+									target="_blank"
+								>
+									Get From NPM
+								</NavDropdown.Item>
+							</NavDropdown>
+
+							<Nav.Link
+								href="https://github.com/microsoft/monaco-editor"
+								target="_blank"
+							>
+								<span className="nav-icon bi-github" />
+								<span className="hidden-text"> GitHub </span>
+							</Nav.Link>
+						</Nav>
+					</Navbar.Collapse>
+				</Container>
+			</Navbar>
+		);
+	}
+}

+ 11 - 0
website/src/website/components/Page.tsx

@@ -0,0 +1,11 @@
+import React = require("react");
+import { PageNav } from "./Nav";
+
+export function Page(props: { children: React.ReactNode }) {
+	return (
+		<div className="page">
+			<PageNav />
+			<main className="main">{props.children}</main>
+		</div>
+	);
+}

+ 23 - 0
website/src/website/components/Radio.tsx

@@ -0,0 +1,23 @@
+import * as React from "react";
+import { observer } from "mobx-react";
+import { Form } from "./bootstrap";
+import { IReference } from "../utils/ref";
+
+@observer
+export class Radio<T> extends React.Component<{
+	value: IReference<T>;
+	current: T;
+	id?: string;
+}> {
+	render() {
+		const { value, current } = this.props;
+		return (
+			<Form.Check
+				checked={value.get() === current}
+				onChange={() => value.set(current)}
+				type="radio"
+				id={this.props.id}
+			/>
+		);
+	}
+}

+ 75 - 0
website/src/website/components/Select.tsx

@@ -0,0 +1,75 @@
+import { observer } from "mobx-react";
+import React = require("react");
+import { IReference } from "../utils/ref";
+import { Form } from "./bootstrap";
+
+interface Group<T> {
+	groupTitle: string;
+	items: (T | Group<T>)[];
+}
+
+@observer
+export class Select<T> extends React.Component<{
+	value: IReference<T | undefined, T>;
+	values: (T | Group<T>)[];
+	getLabel: (val: T) => string;
+	style?: React.CSSProperties;
+}> {
+	private readonly map: Map<T, string> = new Map();
+
+	render() {
+		const { value, values } = this.props;
+		this.map.clear();
+		const groups = this.renderGroups(values);
+		const currentValue = value.get();
+
+		return (
+			<Form.Select
+				value={currentValue && this.map.get(currentValue)}
+				defaultValue={currentValue ? undefined : ""}
+				onChange={(e) => {
+					const newValue = e.currentTarget.value;
+					const selected = [...this.map.entries()].find(
+						([k, v]) => v === newValue
+					);
+					if (selected) {
+						value.set(selected[0]);
+					}
+				}}
+				style={this.props.style}
+				size="sm"
+			>
+				<option value="" disabled hidden>
+					Select an example...
+				</option>
+				{groups}
+			</Form.Select>
+		);
+	}
+
+	private renderGroups(groups: (T | Group<T>)[]): React.ReactNode {
+		const { getLabel } = this.props;
+
+		return groups.map((g, idx) => {
+			if (typeof g === "object" && g && "groupTitle" in g) {
+				return (
+					<optgroup label={g.groupTitle} key={idx}>
+						{this.renderGroups(g.items)}
+					</optgroup>
+				);
+			} else {
+				let id = this.map.get(g);
+				if (!id) {
+					id = `${this.map.size + 1}`;
+					this.map.set(g, id);
+				}
+
+				return (
+					<option key={idx} value={id}>
+						{getLabel(g)}
+					</option>
+				);
+			}
+		});
+	}
+}

+ 21 - 0
website/src/website/components/TextBox.tsx

@@ -0,0 +1,21 @@
+import * as React from "react";
+import { observer } from "mobx-react";
+import { Form } from "./bootstrap";
+import { IReference } from "../utils/ref";
+
+@observer
+export class TextBox extends React.Component<{
+	value: IReference<string>;
+	style?: React.CSSProperties;
+}> {
+	render() {
+		const { value } = this.props;
+		return (
+			<Form.Control
+				value={value.get()}
+				onChange={(v) => value.set(v.currentTarget.value)}
+				style={this.props.style}
+			/>
+		);
+	}
+}

+ 32 - 0
website/src/website/components/bootstrap.tsx

@@ -0,0 +1,32 @@
+import Nav from "react-bootstrap/Nav";
+export { Nav };
+
+import Navbar from "react-bootstrap/Navbar";
+export { Navbar };
+
+import Form from "react-bootstrap/Form";
+export { Form };
+
+import Stack from "react-bootstrap/Stack";
+export { Stack };
+
+import Container from "react-bootstrap/Container";
+export { Container };
+
+import NavDropdown from "react-bootstrap/NavDropdown";
+export { NavDropdown };
+
+import Modal from "react-bootstrap/Modal";
+export { Modal };
+
+import Button from "react-bootstrap/Button";
+export { Button };
+
+import ListGroup from "react-bootstrap/ListGroup";
+export { ListGroup };
+
+import Row from "react-bootstrap/Row";
+export { Row };
+
+import Col from "react-bootstrap/Col";
+export { Col };

+ 270 - 0
website/src/website/components/monaco/MonacoEditor.tsx

@@ -0,0 +1,270 @@
+import * as React from "react";
+import { getLoadedMonaco } from "../../../monaco-loader";
+import { withLoadedMonaco } from "./MonacoLoader";
+
+@withLoadedMonaco
+export class ControlledMonacoEditor extends React.Component<{
+	value: string;
+	onDidValueChange?: (newValue: string) => void;
+
+	language?: string;
+	theme?: string;
+}> {
+	private readonly model = getLoadedMonaco().editor.createModel(
+		this.props.value,
+		this.props.language
+	);
+
+	private lastSubscription: monaco.IDisposable | undefined;
+
+	componentDidUpdate(lastProps: this["props"]) {
+		const newOnDidValueChange = this.props.onDidValueChange;
+		if (newOnDidValueChange !== lastProps.onDidValueChange) {
+			if (this.lastSubscription) {
+				this.lastSubscription.dispose();
+				this.lastSubscription = undefined;
+			}
+			if (newOnDidValueChange) {
+				this.lastSubscription = this.model.onDidChangeContent((e) => {
+					newOnDidValueChange(this.model.getValue());
+				});
+			}
+		}
+
+		if (this.props.value !== this.model.getValue()) {
+			this.model.setValue(this.props.value);
+		}
+		if (this.model.getLanguageId() !== this.props.language) {
+			getLoadedMonaco().editor.setModelLanguage(
+				this.model,
+				this.props.language || "plaintext"
+			);
+		}
+
+		if (this.props.onDidValueChange) {
+			this.model.setValue(this.props.value);
+		}
+	}
+
+	render() {
+		return (
+			<MonacoEditor
+				readOnly={!this.props.onDidValueChange}
+				model={this.model}
+				theme={this.props.theme}
+			/>
+		);
+	}
+}
+
+@withLoadedMonaco
+export class ControlledMonacoDiffEditor extends React.Component<{
+	originalValue: string;
+	modifiedValue: string;
+	language?: string;
+}> {
+	private readonly originalModel = getLoadedMonaco().editor.createModel(
+		this.props.originalValue,
+		this.props.language
+	);
+	private readonly modifiedModel = getLoadedMonaco().editor.createModel(
+		this.props.modifiedValue,
+		this.props.language
+	);
+
+	componentDidUpdate() {
+		if (this.props.originalValue !== this.originalModel.getValue()) {
+			this.originalModel.setValue(this.props.originalValue);
+		}
+		if (this.originalModel.getLanguageId() !== this.props.language) {
+			getLoadedMonaco().editor.setModelLanguage(
+				this.originalModel,
+				this.props.language || "plaintext"
+			);
+		}
+
+		if (this.props.modifiedValue !== this.modifiedModel.getValue()) {
+			this.modifiedModel.setValue(this.props.modifiedValue);
+		}
+		if (this.modifiedModel.getLanguageId() !== this.props.language) {
+			getLoadedMonaco().editor.setModelLanguage(
+				this.modifiedModel,
+				this.props.language || "plaintext"
+			);
+		}
+	}
+
+	render() {
+		return (
+			<MonacoDiffEditor
+				originalModel={this.originalModel}
+				modifiedModel={this.modifiedModel}
+			/>
+		);
+	}
+}
+
+export type MonacoEditorHeight =
+	| { /* Fills the entire space. */ kind: "fill" }
+	| {
+			/* Use the content as height. */ kind: "dynamic";
+			maxHeight?: number;
+	  };
+
+@withLoadedMonaco
+export class MonacoEditor extends React.Component<
+	{
+		model: monaco.editor.ITextModel;
+		onEditorLoaded?: (editor: monaco.editor.IStandaloneCodeEditor) => void;
+		height?: MonacoEditorHeight;
+		theme?: string;
+		readOnly?: boolean;
+		className?: string;
+	},
+	{ contentHeight: number | undefined }
+> {
+	public editor: monaco.editor.IStandaloneCodeEditor | undefined;
+	private get height() {
+		if (this.state.contentHeight === undefined) {
+			return undefined;
+		}
+		return Math.min(200, this.state.contentHeight);
+	}
+	private readonly divRef = React.createRef<HTMLDivElement>();
+	private readonly resizeObserver = new ResizeObserver(() => {
+		if (this.editor) {
+			this.editor.layout();
+		}
+	});
+	constructor(props: any) {
+		super(props);
+		this.state = { contentHeight: undefined };
+	}
+	render() {
+		const heightInfo = this.props.height || { kind: "fill" };
+		const height = heightInfo.kind === "fill" ? "100%" : this.height;
+		return (
+			<div
+				style={{
+					height,
+					minHeight: 0,
+					minWidth: 0,
+				}}
+				className={"monaco-editor-react " + this.props.className}
+				ref={this.divRef}
+			/>
+		);
+	}
+	componentDidMount() {
+		const div = this.divRef.current;
+		if (!div) {
+			throw new Error("unexpected");
+		}
+		this.resizeObserver.observe(div);
+		this.editor = getLoadedMonaco().editor.create(div, {
+			model: this.props.model,
+			scrollBeyondLastLine: false,
+			minimap: { enabled: false },
+			automaticLayout: false,
+			theme: this.props.theme,
+			readOnly: this.props.readOnly,
+		});
+		this.editor.onDidContentSizeChange((e) => {
+			this.setState({ contentHeight: e.contentHeight });
+		});
+		if (this.props.onEditorLoaded) {
+			this.props.onEditorLoaded(this.editor);
+		}
+	}
+	componentDidUpdate(oldProps: this["props"]) {
+		if (oldProps.model !== this.props.model) {
+			this.editor!.setModel(this.props.model);
+		}
+		if (oldProps.theme !== this.props.theme && this.props.theme) {
+			getLoadedMonaco().editor.setTheme(this.props.theme);
+		}
+		if (oldProps.readOnly !== this.props.readOnly) {
+			this.editor!.updateOptions({ readOnly: this.props.readOnly });
+		}
+	}
+	componentWillUnmount() {
+		if (!this.editor) {
+			console.error("unexpected state");
+		} else {
+			this.editor.dispose();
+		}
+	}
+}
+
+@withLoadedMonaco
+export class MonacoDiffEditor extends React.Component<
+	{
+		originalModel: monaco.editor.ITextModel;
+		modifiedModel: monaco.editor.ITextModel;
+		onEditorLoaded?: (editor: monaco.editor.IStandaloneDiffEditor) => void;
+		/**
+		 * Initial theme to be used for rendering.
+		 * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black'.
+		 * You can create custom themes via `monaco.editor.defineTheme`.
+		 * To switch a theme, use `monaco.editor.setTheme`
+		 */
+		theme?: string;
+	},
+	{ contentHeight: number | undefined }
+> {
+	public editor: monaco.editor.IStandaloneDiffEditor | undefined;
+
+	private readonly divRef = React.createRef<HTMLDivElement>();
+	private readonly resizeObserver = new ResizeObserver(() => {
+		if (this.editor) {
+			this.editor.layout();
+		}
+	});
+	constructor(props: any) {
+		super(props);
+		this.state = { contentHeight: undefined };
+	}
+	render() {
+		const height = "100%";
+		return (
+			<div
+				style={{
+					height,
+					minHeight: 0,
+					minWidth: 0,
+				}}
+				className="monaco-editor-react"
+				ref={this.divRef}
+			/>
+		);
+	}
+	componentDidMount() {
+		const div = this.divRef.current;
+		if (!div) {
+			throw new Error("unexpected");
+		}
+		this.resizeObserver.observe(div);
+		this.editor = getLoadedMonaco().editor.createDiffEditor(div, {
+			scrollBeyondLastLine: false,
+			minimap: { enabled: false },
+			automaticLayout: false,
+			theme: this.props.theme,
+		});
+		this.editor.setModel({
+			original: this.props.originalModel,
+			modified: this.props.modifiedModel,
+		});
+
+		if (this.props.onEditorLoaded) {
+			this.props.onEditorLoaded(this.editor);
+		}
+	}
+
+	componentWillUnmount() {
+		if (!this.editor) {
+			console.error("unexpected state");
+		} else {
+			this.editor.dispose();
+		}
+	}
+}

+ 38 - 0
website/src/website/components/monaco/MonacoLoader.tsx

@@ -0,0 +1,38 @@
+import * as React from "react";
+import { getMonaco, loadMonaco } from "../../../monaco-loader";
+
+/**
+ * Can be used to render content only when monaco is loaded.
+ */
+export class MonacoLoader extends React.Component<
+	{ children: (m: typeof monaco) => React.ReactChild },
+	{ monaco: typeof monaco | undefined }
+> {
+	constructor(props: any) {
+		super(props);
+		this.state = { monaco: getMonaco() };
+		if (!this.state.monaco) {
+			loadMonaco().then((monaco) => {
+				this.setState({
+					monaco,
+				});
+			});
+		}
+	}
+	render() {
+		if (!this.state.monaco) {
+			return null;
+		}
+		return this.props.children(this.state.monaco);
+	}
+}
+/**
+ * Decorates a component so that it only gets mounted when monaco is loaded.
+ */
+export function withLoadedMonaco<TProps>(
+	Component: React.FunctionComponent<TProps> | React.ComponentClass<TProps>
+): any {
+	return (props: TProps) => (
+		<MonacoLoader>{() => <Component {...props} />}</MonacoLoader>
+	);
+}

+ 6 - 7
website/index/samples/diff.rhs.txt → website/src/website/data/diff-sample/modified.txt

@@ -1,16 +1,15 @@
-
 /*
   © Microsoft. All rights reserved.
 
   This library is supported for use in Windows Tailored Apps only.
 
-  Build: 6.2.8100.0 
-  Version: 0.5 
+  Build: 6.2.8100.0
+  Version: 0.5
 */
 
 // Here are some inserted lines
 // with some extra comments
-	
+
 (function (global, undefined) {
 	"use strict";
 	var definedVariable = {};
@@ -32,7 +31,7 @@
 					properties = properties || {};
 					properties[key] = member;
 					continue;
-				} 
+				}
 			}
 			target[key] = member;
 		}
@@ -76,7 +75,7 @@
 			for (var i = 0, len = namespaceFragments.length; i < len; i++) {
 				var namespaceName = namespaceFragments[i];
 				if (!currentNamespace[namespaceName]) {
-					Object.defineProperty(currentNamespace, namespaceName, 
+					Object.defineProperty(currentNamespace, namespaceName,
 						{ value: {}, writable: false, enumerable: true, configurable: true }
 					);
 				}
@@ -210,4 +209,4 @@
 
 	})(WinJS);
 
-})(this);
+})(this);

+ 5 - 6
website/index/samples/diff.lhs.txt → website/src/website/data/diff-sample/original.txt

@@ -1,11 +1,10 @@
-
 /*
   © Microsoft. All rights reserved.
 
   This library is supported for use in Windows Tailored Apps only.
 
-  Build: 6.2.8100.0 
-  Version: 0.5 
+  Build: 6.2.8100.0
+  Version: 0.5
 */
 
 (function (global, undefined) {
@@ -29,7 +28,7 @@
 					properties = properties || {};
 					properties[key] = member;
 					continue;
-				} 
+				}
 			}
 			// These next lines will be deleted
 			if (!enumerable) {
@@ -79,7 +78,7 @@
 			for (var i = 0, len = namespaceFragments.length; i < len; i++) {
 				var namespaceName = namespaceFragments[i];
 				if (!currentNamespace[namespaceName]) {
-					Object.defineProperty(currentNamespace, namespaceName, 
+					Object.defineProperty(currentNamespace, namespaceName,
 						{ value: {}, writable: false, enumerable: true, configurable: true }
 					);
 				}
@@ -213,4 +212,4 @@
 
 	})(WinJS);
 
-})(this);
+})(this);

+ 0 - 0
website/index/samples/sample.abap.txt → website/src/website/data/home-samples/sample.abap.txt


+ 0 - 0
website/index/samples/sample.aes.txt → website/src/website/data/home-samples/sample.aes.txt


+ 0 - 0
website/index/samples/sample.apex.txt → website/src/website/data/home-samples/sample.apex.txt


+ 0 - 0
website/index/samples/sample.azcli.txt → website/src/website/data/home-samples/sample.azcli.txt


+ 0 - 0
website/index/samples/sample.bat.txt → website/src/website/data/home-samples/sample.bat.txt


+ 0 - 0
website/index/samples/sample.bicep.txt → website/src/website/data/home-samples/sample.bicep.txt


+ 0 - 0
website/index/samples/sample.c.txt → website/src/website/data/home-samples/sample.c.txt


+ 0 - 0
website/index/samples/sample.cameligo.txt → website/src/website/data/home-samples/sample.cameligo.txt


+ 0 - 0
website/index/samples/sample.clojure.txt → website/src/website/data/home-samples/sample.clojure.txt


+ 0 - 0
website/index/samples/sample.coffeescript.txt → website/src/website/data/home-samples/sample.coffeescript.txt


+ 0 - 0
website/index/samples/sample.cpp.txt → website/src/website/data/home-samples/sample.cpp.txt


+ 0 - 0
website/index/samples/sample.csharp.txt → website/src/website/data/home-samples/sample.csharp.txt


+ 0 - 0
website/index/samples/sample.csp.txt → website/src/website/data/home-samples/sample.csp.txt


+ 0 - 0
website/index/samples/sample.css.txt → website/src/website/data/home-samples/sample.css.txt


+ 0 - 0
website/index/samples/sample.cypher.txt → website/src/website/data/home-samples/sample.cypher.txt


+ 0 - 0
website/index/samples/sample.dart.txt → website/src/website/data/home-samples/sample.dart.txt


+ 0 - 0
website/index/samples/sample.dockerfile.txt → website/src/website/data/home-samples/sample.dockerfile.txt


+ 0 - 0
website/index/samples/sample.ecl.txt → website/src/website/data/home-samples/sample.ecl.txt


+ 0 - 0
website/index/samples/sample.elixir.txt → website/src/website/data/home-samples/sample.elixir.txt


+ 0 - 0
website/index/samples/sample.flow9.txt → website/src/website/data/home-samples/sample.flow9.txt


+ 0 - 0
website/index/samples/sample.freemarker2.tag-angle.interpolation-bracket.txt → website/src/website/data/home-samples/sample.freemarker2.tag-angle.interpolation-bracket.txt


+ 0 - 0
website/index/samples/sample.freemarker2.tag-angle.interpolation-dollar.txt → website/src/website/data/home-samples/sample.freemarker2.tag-angle.interpolation-dollar.txt


+ 0 - 0
website/index/samples/sample.freemarker2.tag-auto.interpolation-bracket.txt → website/src/website/data/home-samples/sample.freemarker2.tag-auto.interpolation-bracket.txt


+ 0 - 0
website/index/samples/sample.freemarker2.tag-auto.interpolation-dollar.txt → website/src/website/data/home-samples/sample.freemarker2.tag-auto.interpolation-dollar.txt


+ 0 - 0
website/index/samples/sample.freemarker2.tag-bracket.interpolation-bracket.txt → website/src/website/data/home-samples/sample.freemarker2.tag-bracket.interpolation-bracket.txt


+ 0 - 0
website/index/samples/sample.freemarker2.tag-bracket.interpolation-dollar.txt → website/src/website/data/home-samples/sample.freemarker2.tag-bracket.interpolation-dollar.txt


+ 0 - 0
website/index/samples/sample.freemarker2.txt → website/src/website/data/home-samples/sample.freemarker2.txt


+ 0 - 0
website/index/samples/sample.fsharp.txt → website/src/website/data/home-samples/sample.fsharp.txt


+ 0 - 0
website/index/samples/sample.go.txt → website/src/website/data/home-samples/sample.go.txt


+ 0 - 0
website/index/samples/sample.graphql.txt → website/src/website/data/home-samples/sample.graphql.txt


+ 0 - 0
website/index/samples/sample.handlebars.txt → website/src/website/data/home-samples/sample.handlebars.txt


+ 0 - 0
website/index/samples/sample.hcl.txt → website/src/website/data/home-samples/sample.hcl.txt


+ 0 - 0
website/index/samples/sample.html.txt → website/src/website/data/home-samples/sample.html.txt


+ 0 - 0
website/index/samples/sample.ini.txt → website/src/website/data/home-samples/sample.ini.txt


+ 0 - 0
website/index/samples/sample.java.txt → website/src/website/data/home-samples/sample.java.txt


+ 0 - 0
website/index/samples/sample.javascript.txt → website/src/website/data/home-samples/sample.javascript.txt


+ 0 - 0
website/index/samples/sample.json.txt → website/src/website/data/home-samples/sample.json.txt


+ 0 - 0
website/index/samples/sample.julia.txt → website/src/website/data/home-samples/sample.julia.txt


+ 0 - 0
website/index/samples/sample.kotlin.txt → website/src/website/data/home-samples/sample.kotlin.txt


+ 0 - 0
website/index/samples/sample.less.txt → website/src/website/data/home-samples/sample.less.txt


+ 0 - 0
website/index/samples/sample.lex.txt → website/src/website/data/home-samples/sample.lex.txt


+ 0 - 0
website/index/samples/sample.lexon.txt → website/src/website/data/home-samples/sample.lexon.txt


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff