@nlabs/lex 1.49.5 → 1.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.swcrc +35 -0
- package/README.md +43 -59
- package/config.json +32 -8
- package/examples/lex.config.js +110 -10
- package/lex.config.js +34 -7
- package/lib/Button.stories.js +99 -0
- package/lib/LexConfig.d.ts +60 -22
- package/lib/LexConfig.js +285 -244
- package/lib/commands/ai/ai.js +287 -288
- package/lib/commands/ai/index.js +8 -7
- package/lib/commands/build/build.d.ts +2 -2
- package/lib/commands/build/build.js +349 -458
- package/lib/commands/clean/clean.js +45 -33
- package/lib/commands/compile/compile.js +214 -228
- package/lib/commands/config/config.js +46 -42
- package/lib/commands/copy/copy.js +36 -35
- package/lib/commands/create/create.js +200 -121
- package/lib/commands/dev/dev.d.ts +1 -0
- package/lib/commands/dev/dev.js +261 -259
- package/lib/commands/init/init.js +108 -88
- package/lib/commands/link/link.js +18 -14
- package/lib/commands/lint/lint.js +735 -742
- package/lib/commands/migrate/migrate.js +49 -36
- package/lib/commands/publish/publish.js +116 -96
- package/lib/commands/serverless/serverless.js +611 -585
- package/lib/commands/storybook/storybook.js +242 -238
- package/lib/commands/test/test.js +381 -409
- package/lib/commands/update/update.js +141 -120
- package/lib/commands/upgrade/upgrade.js +51 -44
- package/lib/commands/versions/versions.d.ts +1 -1
- package/lib/commands/versions/versions.js +36 -38
- package/lib/create/changelog.js +136 -125
- package/lib/index.js +40 -38
- package/lib/lex.js +95 -68
- package/lib/storybook/index.js +6 -1
- package/lib/test-react/index.js +7 -84
- package/lib/types.d.ts +1 -1
- package/lib/types.js +7 -1
- package/lib/utils/aiService.js +240 -227
- package/lib/utils/app.js +274 -273
- package/lib/utils/deepMerge.js +37 -23
- package/lib/utils/file.js +218 -215
- package/lib/utils/log.js +29 -27
- package/lib/utils/reactShim.js +7 -85
- package/lib/utils/translations.js +92 -82
- package/package.json +59 -60
- package/templates/typescript/DataLayer.js.txt +218 -0
- package/templates/typescript/DataLayer.test.js.txt +268 -0
- package/templates/typescript/DataLayer.test.ts.txt +269 -0
- package/templates/typescript/DataLayer.ts.txt +227 -0
- package/webpack.config.js +38 -28
- package/lib/commands/lint/autofix.d.ts +0 -2
package/lib/lex.js
CHANGED
|
@@ -1,73 +1,100 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { Option, program } from 'commander';
|
|
6
|
+
import { readFileSync } from 'fs';
|
|
7
|
+
import { createRequire } from 'module';
|
|
8
|
+
import { dirname, resolve } from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { aiFunction } from './commands/ai/ai.js';
|
|
11
|
+
import { build } from './commands/build/build.js';
|
|
12
|
+
import { clean } from './commands/clean/clean.js';
|
|
13
|
+
import { compile } from './commands/compile/compile.js';
|
|
14
|
+
import { config } from './commands/config/config.js';
|
|
15
|
+
import { create } from './commands/create/create.js';
|
|
16
|
+
import { dev } from './commands/dev/dev.js';
|
|
17
|
+
import { init } from './commands/init/init.js';
|
|
18
|
+
import { linked } from './commands/link/link.js';
|
|
19
|
+
import { lint } from './commands/lint/lint.js';
|
|
20
|
+
import { migrate } from './commands/migrate/migrate.js';
|
|
21
|
+
import { publish } from './commands/publish/publish.js';
|
|
22
|
+
import { serverless } from './commands/serverless/serverless.js';
|
|
23
|
+
import { storybook } from './commands/storybook/storybook.js';
|
|
24
|
+
import { test } from './commands/test/test.js';
|
|
25
|
+
import { update } from './commands/update/update.js';
|
|
26
|
+
import { upgrade } from './commands/upgrade/upgrade.js';
|
|
27
|
+
import { versions } from './commands/versions/versions.js';
|
|
25
28
|
process.env.LEX_ROOT = dirname(fileURLToPath(import.meta.url));
|
|
26
|
-
const lexNodeModules = resolve(dirname(fileURLToPath(import.meta.url)),
|
|
29
|
+
const lexNodeModules = resolve(dirname(fileURLToPath(import.meta.url)), '../node_modules');
|
|
27
30
|
if (!process.env.NODE_PATH) {
|
|
28
|
-
|
|
29
|
-
} else if (!process.env.NODE_PATH.split(
|
|
30
|
-
|
|
31
|
+
process.env.NODE_PATH = lexNodeModules;
|
|
32
|
+
} else if (!process.env.NODE_PATH.split(':').includes(lexNodeModules)) {
|
|
33
|
+
process.env.NODE_PATH += `:${lexNodeModules}`;
|
|
31
34
|
}
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}));
|
|
48
|
-
program.command(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}));
|
|
54
|
-
program.command(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}));
|
|
58
|
-
program.command(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}));
|
|
62
|
-
program.command(
|
|
63
|
-
}));
|
|
64
|
-
program.command(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
35
|
+
const require = createRequire(import.meta.url);
|
|
36
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
37
|
+
require('module').Module._initPaths();
|
|
38
|
+
const packagePath = fileURLToPath(new URL('../package.json', import.meta.url));
|
|
39
|
+
const packageJson = JSON.parse(readFileSync(packagePath, 'utf8'));
|
|
40
|
+
program.command('build').option('--assist', 'Enable AI assistance for fixing build errors.', false).option('--analyze', 'Enable AI analysis for build optimization suggestions or invoke webpack-bundle-analyzer plugin.', false).addOption(new Option('--bundler <n>', 'Bundler to use ("webpack" or "swc"). Default: "swc".').choices([
|
|
41
|
+
'webpack',
|
|
42
|
+
'swc'
|
|
43
|
+
]).default('swc')).option('--config <path>', 'Custom Webpack configuration file path (ie. webpack.config.js).').option('--configName <value...>', 'Name of the configuration to use.').option('--defineProcessEnvNodeEnv <value>', 'Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)').option('--devtool <value>', 'A developer tool to enhance debugging (false | eval | [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map).').option('--disableInterpret', 'Disable interpret for loading the config file.', false).option('--entry <value...>', 'A module that is loaded upon startup. Only the last one is exported.').option('--env <value>', 'Environment passed to the configuration when it is a function.').option('--failOnWarnings', 'Stop webpack-cli process with non-zero exit code on warnings from webpack', false).addOption(new Option('--format <value>', 'This sets the output format for the generated JavaScript files. Default: "esm".').choices([
|
|
44
|
+
'cjs',
|
|
45
|
+
'esm'
|
|
46
|
+
]).default('esm')).option('--json <value>', 'Prints result as JSON or store it in a file.').option('--lexConfig <path>', 'Lex configuration file path (lex.config.js).').option('--merge', 'Merge two or more configurations using "webpack-merge".', false).addOption(new Option('--mode <type>', 'Webpack mode ("production" or "development"). Default: "development".').choices([
|
|
47
|
+
'development',
|
|
48
|
+
'production'
|
|
49
|
+
]).default('development')).option('--name <value>', 'Name of the configuration. Used when loading multiple configurations.').option('--noDevtool', 'Negative "devtool" option.', false).option('--noStats', 'Negative "stats" option.', false).option('--noTarget', 'Negative "target" option.', false).option('--noWatch', 'Negative "watch" option.', false).option('--noWatchOptionsStdin', 'Negative "watch-options-stdin" option.', false).option('--nodeEnv <value>', 'Sets process.env.NODE_ENV to the specified value.').option('--outputPath <value>', 'The output directory as **absolute path** (required).').option('--quiet', 'No Lex notifications printed in the console.', false).option('--remove', 'Removes all files from the output directory before compiling.', false).option('--sourcePath <path>', 'Source path').option('--stats <value>', 'Stats options object or preset name.').option('--static', 'Creates static HTML files when building app.', false).option('--target <value>', 'Environment to build for. Environment to build for. An array of environments to build for all of them when possible.').option('--translations', 'Process translation files and output flattened JSON.', false).option('--typescript', 'Transpile as Typescript.', false).option('--variables <n>', 'Environment variables to set in "process.env". (ie. "{NODE_ENV: \'production\'}").').option('--watch', 'Watch for changes.', false).option('--watchOptionsStdin', 'Stop watching when stdin stream has ended.', false).action((cmd)=>build(cmd, process.exit).then(()=>{}));
|
|
50
|
+
program.command('clean').option('--quiet', 'No Lex notifications printed in the console.').option('--snapshots', 'Remove all "__snapshots__" directories.').action((cmd)=>clean(cmd, process.exit).then(()=>{}));
|
|
51
|
+
program.command('config <type>').option('--quiet', 'No Lex notifications printed in the console.').option('--json <path>', 'Save output to json file.').action((type, cmd)=>config(type, cmd, process.exit).then(()=>{}));
|
|
52
|
+
program.command('compile').option('--config <path>', 'Transpiler configuration file path (ie. tsconfig.json).').option('--environment <n>', 'Target environment. "node" or "web". Default: "node".').addOption(new Option('--format <value>', 'This sets the output format for the generated JavaScript files. Default: "esm".').choices([
|
|
53
|
+
'cjs',
|
|
54
|
+
'esm'
|
|
55
|
+
]).default('esm')).option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--outputPath <path>', 'Output path').option('--remove', 'Removes all files from the output directory before compiling.').option('--sourcePath <path>', 'Source path').option('--typescript', 'Transpile as Typescript.').option('--quiet', 'No Lex notifications printed in the console.').option('--watch', 'Watches for changes and compiles.').action((cmd)=>compile(cmd, process.exit).then(()=>{}));
|
|
56
|
+
program.command('create <type>').option('--outputFile <path>', 'Output filename.').option('--outputName <n>', 'Output name.').option('--quiet', 'No Lex notifications printed in the console.').option('--typescript', 'Create Typescript version.').action((type, cmd)=>create(type, cmd, process.exit).then(()=>{}));
|
|
57
|
+
program.command('dev').option('--bundleAnalyzer', 'Run bundle analyzer.').option('--config <path>', 'Custom Webpack configuration file path (ie. webpack.config.js).').addOption(new Option('--format <value>', 'This sets the output format for the generated JavaScript files. Default: "esm".').choices([
|
|
58
|
+
'cjs',
|
|
59
|
+
'esm'
|
|
60
|
+
]).default('esm')).option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--open', 'Automatically open dev server in a new browser window.').option('--outputPath <path>', 'Output path').option('--port <number>', 'Port number for the development server (default: 3000).').option('--quiet', 'No Lex notifications printed in the console.').option('--remove', 'Removes all files from the output directory before compiling.').option('--sourcePath <path>', 'Source path').option('--translations', 'Process translation files and output flattened JSON.', false).option('--typescript', 'Transpile as Typescript.').option('--usePublicIp', 'Force refresh the cached public IP address.').option('--variables <n>', 'Environment variables to set in "process.env". (ie. "{NODE_ENV: \'development\'}").').option('--watch', 'Watch for changes.').action((cmd)=>dev(cmd, process.exit).then(()=>{}));
|
|
61
|
+
program.command('init <appName> [packageName]').option('--install', 'Install dependencies.').addOption(new Option('--package-manager <manager>', 'Which package manager to use. Default: npm').choices([
|
|
62
|
+
'npm',
|
|
63
|
+
'yarn'
|
|
64
|
+
]).default('npm')).option('--quiet', 'No Lex notifications printed in the console.').option('--typescript', 'Use a Typescript based app.').action((appName, packageName, cmd)=>init(appName, packageName, cmd, process.exit).then(()=>{}));
|
|
65
|
+
program.command('linked').option('--quiet', 'No Lex notifications printed in the console.').action((cmd)=>linked(cmd, process.exit).then(()=>{}));
|
|
66
|
+
program.command('lint').option('--cache', 'Only check changed files. Default: false.', false).option('--cacheLocation <path>', 'Path to the cache file or directory.').option('--color', 'Force enabling of color.', false).option('--config <path>', 'Use this configuration, overriding .eslintrc.* config options if present. If not specified and no local config exists, Lex will use its default config.').option('--debug', 'Output debugging information.', false).option('--envInfo', 'Output execution environment information. Default: false.', false).option('--env <n>', 'Specify environments.').option('--fix', 'Apply AI fixes after built-in ESLint fixes (same as --fix).', false).option('--fixDryRun', 'Automatically fix problems without saving the changes to the file system.', false).option('--fixType <type>', 'Specify the types of fixes to apply (problem, suggestion, layout).').option('--format <n>', 'Use a specific output format. Default: stylish.').option('--global <variables>', 'Define global variables.').option('--ignorePath <path>', 'Specify path of ignore file.').option('--ignorePattern <pattern>', 'Pattern of files to ignore (in addition to those in .eslintignore).').option('--init', 'Run config initialization wizard. Default: false.', false).option('--maxWarnings <num>', 'Number of warnings to trigger nonzero exit code. Default: -1.').option('--noColor', 'Force disabling of color.', false).option('--noEslintrc', 'Disable use of configuration from .eslintrc.*.', false).option('--noIgnore', 'Disable use of ignore files and patterns.', false).option('--noInlineConfig', 'Prevent comments from changing config or rules.', false).option('--outputFile <path>', 'Specify file to write report to.').option('--parser <n>', 'Specify the parser to be used.').option('--parserOptions <options>', 'Specify parser options.').option('--plugin <plugins>', 'Specify plugins.').option('--printConfig <path>', 'Print the configuration for the given file.').option('--quiet', 'No Lex notifications printed in the console.', false).option('--remove-comments', 'Remove all comments except TODOs and copyright notices.', false).option('--reportUnusedDisableDirectives', 'Adds reported errors for unused eslint-disable directives.', false).option('--resolvePluginsRelativeTo <path>', 'A folder where plugins should be resolved from.').option('--rule <path>', 'Specify rules.').option('--rulesdir <path>', 'Use additional rules from this directory.').option('--stdin', 'Lint code provided on <STDIN> - Default: false.', false).option('--stdinFilename <n>', 'Specify filename to process STDIN as.').action((cmd)=>lint(cmd, process.exit).then(()=>{}));
|
|
67
|
+
program.command('migrate').option('-q, --quiet', 'No Lex notifications printed in the console.').action((cmd)=>migrate(cmd, process.exit).then(()=>{}));
|
|
68
|
+
program.command('publish').addOption(new Option('--bump <type>', 'Increments the version. Types include: major, minor, patch, beta, alpha, rc. Default: "patch".').choices([
|
|
69
|
+
'major',
|
|
70
|
+
'minor',
|
|
71
|
+
'patch',
|
|
72
|
+
'beta',
|
|
73
|
+
'alpha',
|
|
74
|
+
'rc'
|
|
75
|
+
]).default('patch')).option('--newVersion <versionNumber>', 'Publish as a specific version.').option('--otp <code>', 'Provide a two-factor code.').addOption(new Option('--package-manager <manager>', 'Which package manager to use. Default: npm').choices([
|
|
76
|
+
'npm',
|
|
77
|
+
'yarn'
|
|
78
|
+
]).default('npm')).option('--private', 'Publishes the module as restricted.').option('--quiet', 'No Lex notifications printed in the console.').option('--tag <tag>', 'Registers the published package with the given tag.').action((cmd)=>publish(cmd, process.exit).then(()=>{}));
|
|
79
|
+
program.command('serverless').option('--config <path>', 'Custom configuration file path (default: lex.config.mjs).').option('--host <host>', 'Host to bind the server to (default: localhost).').option('--httpPort <port>', 'HTTP server port (default: 3000).').option('--httpsPort <port>', 'HTTPS server port (default: 3001).').option('--wsPort <port>', 'WebSocket server port (default: 3002).').option('--quiet', 'No Lex notifications printed in the console.').option('--remove', 'Removes all files from the output directory before starting.').option('--usePublicIp', 'Force refresh the cached public IP address.').option('--variables <json>', 'Environment variables to set in process.env.').option('--debug', 'Enable GraphQL debug logging to see queries, variables, and operations.').option('--printOutput', 'Print GraphQL response output including status, headers, and body.').action((cmd)=>serverless(cmd, process.exit).then(()=>{}));
|
|
80
|
+
program.command('storybook').option('--config <path>', 'Custom Storybook configuration directory path (ie. .storybook).').option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--open', 'Automatically open Storybook in a new browser window.').option('--port <number>', 'Port number for the Storybook server.').option('--quiet', 'No Lex notifications printed in the console.').option('--static', 'Build a static Storybook site instead of starting dev server.').option('--variables <n>', 'Environment variables to set in "process.env". (ie. "{STORYBOOK_THEME: \'dark\'}").').option('--verbose', 'Show detailed webpack progress output.').action((cmd)=>storybook(cmd, process.exit).then(()=>{}));
|
|
81
|
+
program.command('test [files...]').option('--analyze', 'Use AI to analyze test coverage and suggest improvements.', false).option('--debugTests', 'Use AI to debug test failures and suggest fixes.', false).option('--generate', 'Use AI to generate test cases for untested code.', false).option('--bail', 'Exit the test suite immediately upon the first failing test suite.').option('--changedFilesWithAncestor', 'Runs tests related to the current changes and the changes made in the last commit.').option('--changedSince', 'Runs tests related the changes since the provided branch.').option('--ci', 'When this option is provided, Jest will assume it is running in a CI environment.').option('--clearCache', 'Clear Jest cache.').option('--collectCoverageFrom <glob>', 'A glob pattern relative to matching the files that coverage info needs to be collected from.').option('--colors', 'Forces test results output highlighting even if stdout is not a TTY.').option('--config <path>', 'Custom Jest configuration file path (ie. jest.config.js).').option('--debug', 'Print debugging info about your Jest config.').option('--detectOpenHandles', 'Attempt to collect and print open handles preventing Jest from exiting cleanly').option('--environment <n>', 'Target environment. "node" or "web". Default: "node".').option('--env', 'The test environment used for all tests. This can point to any file or node module. Examples: jsdom, node or path/to/my-environment.js.').option('--errorOnDeprecated', 'Make calling deprecated APIs throw helpful error messages.').option('--expand', 'Use this flag to show full diffs and errors instead of a patch.').option('--forceExit', 'Force Jest to exit after all tests have completed running.').option('--json', 'Prints the test results in JSON.').option('--lastCommit', 'Run all tests affected by file changes in the last commit made.').option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--listTests', 'Lists all tests as JSON that Jest will run given the arguments, and exits.').option('--logHeapUsage', 'Logs the heap usage after every test.').option('--maxWorkers <num>', 'Specifies the maximum number of workers the worker-pool will spawn for running tests. ').option('--noStackTrace', 'Disables stack trace in test results output.').option('--notify', 'Activates notifications for test results.').option('--onlyChanged', 'un based on which files have changed in the current repository. ').option('--outputFile <filename>', 'Write test results to a file when the --json option is also specified.').option('--passWithNoTests', 'Allows the test suite to pass when no files are found.').option('--quiet', 'No Lex notifications printed in the console.').option('--runInBand', 'Run all tests serially in the current process, rather than creating a worker pool of child processes that run tests.').option('--setup <path>', 'Jest setup file path.').option('--showConfig', 'Print your Jest config and then exits.').option('--silent', 'Prevent tests from printing messages through the console.').option('--testLocationInResults', 'Adds a location field to test results.').option('--testNamePattern <regex>', 'Run only tests with a name that matches the regex. ').option('--testPathPattern <regex>', 'A regexp pattern string that is matched against all tests paths before executing the test.').option('--typescript', 'Transpile as Typescript.').option('--update', 'Update snapshots. Runs "jest --updateSnapshots"').option('--useStderr', 'Divert all output to stderr.').option('--verbose', 'Display individual test results with the test suite hierarchy.').option('--watch <path>', 'Watch files for changes and rerun tests related to changed files.').option('--watchAll', 'Watch files for changes and rerun all tests when something changes.').action((files, options, cmd)=>test(options, cmd.args, files, process.exit).then(()=>{}));
|
|
82
|
+
program.command('update').option('--interactive', 'Choose which packages to update.').addOption(new Option('--package-manager <manager>', 'Which package manager to use. Default: npm').choices([
|
|
83
|
+
'npm',
|
|
84
|
+
'yarn'
|
|
85
|
+
]).default('npm')).option('--quiet', 'No Lex notifications printed in the console.').option('--registry', 'Add a custom registry url.').action((cmd)=>update(cmd, process.exit).then(()=>{}));
|
|
86
|
+
program.command('upgrade').addOption(new Option('--package-manager <manager>', 'Which package manager to use. Default: npm').choices([
|
|
87
|
+
'npm',
|
|
88
|
+
'yarn'
|
|
89
|
+
]).default('npm')).option('--quiet', 'No Lex notifications printed in the console.').action((cmd)=>upgrade(cmd, process.exit).then(()=>{}));
|
|
90
|
+
program.command('ai').option('--context', 'Include project context in the AI prompt.', true).option('--file <path>', 'Specific file to operate on.').option('--lexConfig <path>', 'Custom Lex configuration file path (ie. lex.config.js).').option('--model <model>', 'AI model to use. Default: gpt-4o.').option('--prompt <text>', 'The prompt to send to the AI.').option('--quiet', 'No Lex notifications printed in the console.').addOption(new Option('--task <task>', 'Type of AI task to perform.').choices([
|
|
91
|
+
'generate',
|
|
92
|
+
'explain',
|
|
93
|
+
'test',
|
|
94
|
+
'optimize',
|
|
95
|
+
'help'
|
|
96
|
+
]).default('help')).action((cmd)=>aiFunction(cmd).then(()=>{}));
|
|
97
|
+
program.command('versions').option('--json', 'Print the version as a JSON object.').action((cmd)=>versions(cmd, process.exit).then(()=>{}));
|
|
72
98
|
program.version(packageJson.version).parse(process.argv);
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7T3B0aW9uLCBwcm9ncmFtfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7Y3JlYXRlUmVxdWlyZX0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCB7ZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi9jb21tYW5kcy9haS9haS5qcyc7XG5pbXBvcnQge2J1aWxkfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkL2J1aWxkLmpzJztcbmltcG9ydCB7Y2xlYW59IGZyb20gJy4vY29tbWFuZHMvY2xlYW4vY2xlYW4uanMnO1xuaW1wb3J0IHtjb21waWxlfSBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9jb21tYW5kcy9jb25maWcvY29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUuanMnO1xuaW1wb3J0IHtkZXZ9IGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5pbXBvcnQge2luaXR9IGZyb20gJy4vY29tbWFuZHMvaW5pdC9pbml0LmpzJztcbmltcG9ydCB7bGlua2VkfSBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5pbXBvcnQge2xpbnR9IGZyb20gJy4vY29tbWFuZHMvbGludC9saW50LmpzJztcbmltcG9ydCB7bWlncmF0ZX0gZnJvbSAnLi9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUuanMnO1xuaW1wb3J0IHtwdWJsaXNofSBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5pbXBvcnQge3NlcnZlcmxlc3N9IGZyb20gJy4vY29tbWFuZHMvc2VydmVybGVzcy9zZXJ2ZXJsZXNzLmpzJztcbmltcG9ydCB7c3Rvcnlib29rfSBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuaW1wb3J0IHt0ZXN0fSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QvdGVzdC5qcyc7XG5pbXBvcnQge3VwZGF0ZX0gZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmltcG9ydCB7dXBncmFkZX0gZnJvbSAnLi9jb21tYW5kcy91cGdyYWRlL3VwZ3JhZGUuanMnO1xuaW1wb3J0IHt2ZXJzaW9uc30gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbnByb2Nlc3MuZW52LkxFWF9ST09UID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBsZXhOb2RlTW9kdWxlcyA9IHJlc29sdmUoZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAnLi4vbm9kZV9tb2R1bGVzJyk7XG5pZighcHJvY2Vzcy5lbnYuTk9ERV9QQVRIKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfUEFUSCA9IGxleE5vZGVNb2R1bGVzO1xufSBlbHNlIGlmKCFwcm9jZXNzLmVudi5OT0RFX1BBVEguc3BsaXQoJzonKS5pbmNsdWRlcyhsZXhOb2RlTW9kdWxlcykpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9QQVRIICs9IGA6JHtsZXhOb2RlTW9kdWxlc31gO1xufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5yZXF1aXJlKCdtb2R1bGUnKS5Nb2R1bGUuX2luaXRQYXRocygpO1xuXG5jb25zdCBwYWNrYWdlUGF0aCA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxucHJvZ3JhbS5jb21tYW5kKCdidWlsZCcpXG4gIC5vcHRpb24oJy0tYXNzaXN0JywgJ0VuYWJsZSBBSSBhc3Npc3RhbmNlIGZvciBmaXhpbmcgYnVpbGQgZXJyb3JzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWFuYWx5emUnLCAnRW5hYmxlIEFJIGFuYWx5c2lzIGZvciBidWlsZCBvcHRpbWl6YXRpb24gc3VnZ2VzdGlvbnMgb3IgaW52b2tlIHdlYnBhY2stYnVuZGxlLWFuYWx5emVyIHBsdWdpbi4nLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bmRsZXIgPG4+JywgJ0J1bmRsZXIgdG8gdXNlIChcIndlYnBhY2tcIiBvciBcImVzYnVpbGRcIikuIERlZmF1bHQ6IFwid2VicGFja1wiLicpLmNob2ljZXMoWyd3ZWJwYWNrJywgJ2VzYnVpbGQnXSkuZGVmYXVsdCgnd2VicGFjaycpKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFdlYnBhY2sgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiB3ZWJwYWNrLmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1jb25maWdOYW1lIDx2YWx1ZS4uLj4nLCAnTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UuJylcbiAgLm9wdGlvbignLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudiA8dmFsdWU+JywgJ1NldHMgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4gKEN1cnJlbnRseSBhbiBhbGlhcyBmb3IgYC0tbm9kZS1lbnZgKScpXG4gIC5vcHRpb24oJy0tZGV2dG9vbCA8dmFsdWU+JywgJ0EgZGV2ZWxvcGVyIHRvb2wgdG8gZW5oYW5jZSBkZWJ1Z2dpbmcgKGZhbHNlIHwgZXZhbCB8IFtpbmxpbmUtfGhpZGRlbi18ZXZhbC1dW25vc291cmNlcy1dW2NoZWFwLVttb2R1bGUtXV1zb3VyY2UtbWFwKS4nKVxuICAub3B0aW9uKCctLWRpc2FibGVJbnRlcnByZXQnLCAnRGlzYWJsZSBpbnRlcnByZXQgZm9yIGxvYWRpbmcgdGhlIGNvbmZpZyBmaWxlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudHJ5IDx2YWx1ZS4uLj4nLCAnQSBtb2R1bGUgdGhhdCBpcyBsb2FkZWQgdXBvbiBzdGFydHVwLiBPbmx5IHRoZSBsYXN0IG9uZSBpcyBleHBvcnRlZC4nKVxuICAub3B0aW9uKCctLWVudiA8dmFsdWU+JywgJ0Vudmlyb25tZW50IHBhc3NlZCB0byB0aGUgY29uZmlndXJhdGlvbiB3aGVuIGl0IGlzIGEgZnVuY3Rpb24uJylcbiAgLm9wdGlvbignLS1mYWlsT25XYXJuaW5ncycsICdTdG9wIHdlYnBhY2stY2xpIHByb2Nlc3Mgd2l0aCBub24temVybyBleGl0IGNvZGUgb24gd2FybmluZ3MgZnJvbSB3ZWJwYWNrJywgZmFsc2UpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPHZhbHVlPicsICdUaGlzIHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gRGVmYXVsdDogXCJlc21cIi4nKS5jaG9pY2VzKFsnY2pzJywgJ2VzbSddKS5kZWZhdWx0KCdlc20nKSlcbiAgLm9wdGlvbignLS1qc29uIDx2YWx1ZT4nLCAnUHJpbnRzIHJlc3VsdCBhcyBKU09OIG9yIHN0b3JlIGl0IGluIGEgZmlsZS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW1lcmdlJywgJ01lcmdlIHR3byBvciBtb3JlIGNvbmZpZ3VyYXRpb25zIHVzaW5nIFwid2VicGFjay1tZXJnZVwiLicsIGZhbHNlKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tbW9kZSA8dHlwZT4nLCAnV2VicGFjayBtb2RlIChcInByb2R1Y3Rpb25cIiBvciBcImRldmVsb3BtZW50XCIpLiBEZWZhdWx0OiBcImRldmVsb3BtZW50XCIuJykuY2hvaWNlcyhbJ2RldmVsb3BtZW50JywgJ3Byb2R1Y3Rpb24nXSkuZGVmYXVsdCgnZGV2ZWxvcG1lbnQnKSlcbiAgLm9wdGlvbignLS1uYW1lIDx2YWx1ZT4nLCAnTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVXNlZCB3aGVuIGxvYWRpbmcgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuJylcbiAgLm9wdGlvbignLS1ub0RldnRvb2wnLCAnTmVnYXRpdmUgXCJkZXZ0b29sXCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vU3RhdHMnLCAnTmVnYXRpdmUgXCJzdGF0c1wiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1RhcmdldCcsICdOZWdhdGl2ZSBcInRhcmdldFwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1dhdGNoJywgJ05lZ2F0aXZlIFwid2F0Y2hcIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicsICdOZWdhdGl2ZSBcIndhdGNoLW9wdGlvbnMtc3RkaW5cIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9kZUVudiA8dmFsdWU+JywgJ1NldHMgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHZhbHVlPicsICdUaGUgb3V0cHV0IGRpcmVjdG9yeSBhcyAqKmFic29sdXRlIHBhdGgqKiAocmVxdWlyZWQpLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS1zdGF0cyA8dmFsdWU+JywgJ1N0YXRzIG9wdGlvbnMgb2JqZWN0IG9yIHByZXNldCBuYW1lLicpXG4gIC5vcHRpb24oJy0tc3RhdGljJywgJ0NyZWF0ZXMgc3RhdGljIEhUTUwgZmlsZXMgd2hlbiBidWlsZGluZyBhcHAuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdGFyZ2V0IDx2YWx1ZT4nLCAnRW52aXJvbm1lbnQgdG8gYnVpbGQgZm9yLiBFbnZpcm9ubWVudCB0byBidWlsZCBmb3IuIEFuIGFycmF5IG9mIGVudmlyb25tZW50cyB0byBidWlsZCBmb3IgYWxsIG9mIHRoZW0gd2hlbiBwb3NzaWJsZS4nKVxuICAub3B0aW9uKCctLXRyYW5zbGF0aW9ucycsICdQcm9jZXNzIHRyYW5zbGF0aW9uIGZpbGVzIGFuZCBvdXRwdXQgZmxhdHRlbmVkIEpTT04uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPG4+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gXCJwcm9jZXNzLmVudlwiLiAoaWUuIFwie05PREVfRU5WOiBcXCdwcm9kdWN0aW9uXFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoIGZvciBjaGFuZ2VzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXdhdGNoT3B0aW9uc1N0ZGluJywgJ1N0b3Agd2F0Y2hpbmcgd2hlbiBzdGRpbiBzdHJlYW0gaGFzIGVuZGVkLicsIGZhbHNlKVxuICAuYWN0aW9uKChjbWQpID0+IGJ1aWxkKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY2xlYW4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1zbmFwc2hvdHMnLCAnUmVtb3ZlIGFsbCBcIl9fc25hcHNob3RzX19cIiBkaXJlY3Rvcmllcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGNsZWFuKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY29uZmlnIDx0eXBlPicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLWpzb24gPHBhdGg+JywgJ1NhdmUgb3V0cHV0IHRvIGpzb24gZmlsZS4nKVxuICAuYWN0aW9uKCh0eXBlLCBjbWQpID0+IGNvbmZpZyh0eXBlLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2NvbXBpbGUnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnVHJhbnNwaWxlciBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHRzY29uZmlnLmpzb24pLicpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQgPG4+JywgJ1RhcmdldCBlbnZpcm9ubWVudC4gXCJub2RlXCIgb3IgXCJ3ZWJcIi4gRGVmYXVsdDogXCJub2RlXCIuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3V0cHV0UGF0aCA8cGF0aD4nLCAnT3V0cHV0IHBhdGgnKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJylcbiAgLm9wdGlvbignLS1zb3VyY2VQYXRoIDxwYXRoPicsICdTb3VyY2UgcGF0aCcpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS13YXRjaCcsICdXYXRjaGVzIGZvciBjaGFuZ2VzIGFuZCBjb21waWxlcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGNvbXBpbGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjcmVhdGUgPHR5cGU+JylcbiAgLm9wdGlvbignLS1vdXRwdXRGaWxlIDxwYXRoPicsICdPdXRwdXQgZmlsZW5hbWUuJylcbiAgLm9wdGlvbignLS1vdXRwdXROYW1lIDxuPicsICdPdXRwdXQgbmFtZS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ0NyZWF0ZSBUeXBlc2NyaXB0IHZlcnNpb24uJylcbiAgLmFjdGlvbigodHlwZSwgY21kKSA9PiBjcmVhdGUodHlwZSwgY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdkZXYnKVxuICAub3B0aW9uKCctLWJ1bmRsZUFuYWx5emVyJywgJ1J1biBidW5kbGUgYW5hbHl6ZXIuJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBXZWJwYWNrIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gd2VicGFjay5jb25maWcuanMpLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPHZhbHVlPicsICdUaGlzIHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gRGVmYXVsdDogXCJlc21cIi4nKS5jaG9pY2VzKFsnY2pzJywgJ2VzbSddKS5kZWZhdWx0KCdlc20nKSlcbiAgLm9wdGlvbignLS1sZXhDb25maWcgPHBhdGg+JywgJ0N1c3RvbSBMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW9wZW4nLCAnQXV0b21hdGljYWxseSBvcGVuIGRldiBzZXJ2ZXIgaW4gYSBuZXcgYnJvd3NlciB3aW5kb3cuJylcbiAgLm9wdGlvbignLS1vdXRwdXRQYXRoIDxwYXRoPicsICdPdXRwdXQgcGF0aCcpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJylcbiAgLm9wdGlvbignLS1zb3VyY2VQYXRoIDxwYXRoPicsICdTb3VyY2UgcGF0aCcpXG4gIC5vcHRpb24oJy0tdHJhbnNsYXRpb25zJywgJ1Byb2Nlc3MgdHJhbnNsYXRpb24gZmlsZXMgYW5kIG91dHB1dCBmbGF0dGVuZWQgSlNPTi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tdXNlUHVibGljSXAnLCAnRm9yY2UgcmVmcmVzaCB0aGUgY2FjaGVkIHB1YmxpYyBJUCBhZGRyZXNzLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxuPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIFwicHJvY2Vzcy5lbnZcIi4gKGllLiBcIntOT0RFX0VOVjogXFwnZGV2ZWxvcG1lbnRcXCd9XCIpLicpXG4gIC5vcHRpb24oJy0td2F0Y2gnLCAnV2F0Y2ggZm9yIGNoYW5nZXMuJylcbiAgLmFjdGlvbigoY21kKSA9PiBkZXYoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdpbml0IDxhcHBOYW1lPiBbcGFja2FnZU5hbWVdJylcbiAgLm9wdGlvbignLS1pbnN0YWxsJywgJ0luc3RhbGwgZGVwZW5kZW5jaWVzLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdVc2UgYSBUeXBlc2NyaXB0IGJhc2VkIGFwcC4nKVxuICAuYWN0aW9uKChhcHBOYW1lLCBwYWNrYWdlTmFtZSwgY21kKSA9PiBpbml0KGFwcE5hbWUsIHBhY2thZ2VOYW1lLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2xpbmtlZCcpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IGxpbmtlZChjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2xpbnQnKVxuICAub3B0aW9uKCctLWNhY2hlJywgJ09ubHkgY2hlY2sgY2hhbmdlZCBmaWxlcy4gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tY2FjaGVMb2NhdGlvbiA8cGF0aD4nLCAnUGF0aCB0byB0aGUgY2FjaGUgZmlsZSBvciBkaXJlY3RvcnkuJylcbiAgLm9wdGlvbignLS1jb2xvcicsICdGb3JjZSBlbmFibGluZyBvZiBjb2xvci4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ1VzZSB0aGlzIGNvbmZpZ3VyYXRpb24sIG92ZXJyaWRpbmcgLmVzbGludHJjLiogY29uZmlnIG9wdGlvbnMgaWYgcHJlc2VudC4gSWYgbm90IHNwZWNpZmllZCBhbmQgbm8gbG9jYWwgY29uZmlnIGV4aXN0cywgTGV4IHdpbGwgdXNlIGl0cyBkZWZhdWx0IGNvbmZpZy4nKVxuICAub3B0aW9uKCctLWRlYnVnJywgJ091dHB1dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW52SW5mbycsICdPdXRwdXQgZXhlY3V0aW9uIGVudmlyb25tZW50IGluZm9ybWF0aW9uLiBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1lbnYgPG4+JywgJ1NwZWNpZnkgZW52aXJvbm1lbnRzLicpXG4gIC5vcHRpb24oJy0tZml4JywgJ0FwcGx5IEFJIGZpeGVzIGFmdGVyIGJ1aWx0LWluIEVTTGludCBmaXhlcyAoc2FtZSBhcyAtLWZpeCkuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZml4RHJ5UnVuJywgJ0F1dG9tYXRpY2FsbHkgZml4IHByb2JsZW1zIHdpdGhvdXQgc2F2aW5nIHRoZSBjaGFuZ2VzIHRvIHRoZSBmaWxlIHN5c3RlbS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1maXhUeXBlIDx0eXBlPicsICdTcGVjaWZ5IHRoZSB0eXBlcyBvZiBmaXhlcyB0byBhcHBseSAocHJvYmxlbSwgc3VnZ2VzdGlvbiwgbGF5b3V0KS4nKVxuICAub3B0aW9uKCctLWZvcm1hdCA8bj4nLCAnVXNlIGEgc3BlY2lmaWMgb3V0cHV0IGZvcm1hdC4gRGVmYXVsdDogc3R5bGlzaC4nKVxuICAub3B0aW9uKCctLWdsb2JhbCA8dmFyaWFibGVzPicsICdEZWZpbmUgZ2xvYmFsIHZhcmlhYmxlcy4nKVxuICAub3B0aW9uKCctLWlnbm9yZVBhdGggPHBhdGg+JywgJ1NwZWNpZnkgcGF0aCBvZiBpZ25vcmUgZmlsZS4nKVxuICAub3B0aW9uKCctLWlnbm9yZVBhdHRlcm4gPHBhdHRlcm4+JywgJ1BhdHRlcm4gb2YgZmlsZXMgdG8gaWdub3JlIChpbiBhZGRpdGlvbiB0byB0aG9zZSBpbiAuZXNsaW50aWdub3JlKS4nKVxuICAub3B0aW9uKCctLWluaXQnLCAnUnVuIGNvbmZpZyBpbml0aWFsaXphdGlvbiB3aXphcmQuIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW1heFdhcm5pbmdzIDxudW0+JywgJ051bWJlciBvZiB3YXJuaW5ncyB0byB0cmlnZ2VyIG5vbnplcm8gZXhpdCBjb2RlLiBEZWZhdWx0OiAtMS4nKVxuICAub3B0aW9uKCctLW5vQ29sb3InLCAnRm9yY2UgZGlzYWJsaW5nIG9mIGNvbG9yLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vRXNsaW50cmMnLCAnRGlzYWJsZSB1c2Ugb2YgY29uZmlndXJhdGlvbiBmcm9tIC5lc2xpbnRyYy4qLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vSWdub3JlJywgJ0Rpc2FibGUgdXNlIG9mIGlnbm9yZSBmaWxlcyBhbmQgcGF0dGVybnMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9JbmxpbmVDb25maWcnLCAnUHJldmVudCBjb21tZW50cyBmcm9tIGNoYW5naW5nIGNvbmZpZyBvciBydWxlcy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1vdXRwdXRGaWxlIDxwYXRoPicsICdTcGVjaWZ5IGZpbGUgdG8gd3JpdGUgcmVwb3J0IHRvLicpXG4gIC5vcHRpb24oJy0tcGFyc2VyIDxuPicsICdTcGVjaWZ5IHRoZSBwYXJzZXIgdG8gYmUgdXNlZC4nKVxuICAub3B0aW9uKCctLXBhcnNlck9wdGlvbnMgPG9wdGlvbnM+JywgJ1NwZWNpZnkgcGFyc2VyIG9wdGlvbnMuJylcbiAgLm9wdGlvbignLS1wbHVnaW4gPHBsdWdpbnM+JywgJ1NwZWNpZnkgcGx1Z2lucy4nKVxuICAub3B0aW9uKCctLXByaW50Q29uZmlnIDxwYXRoPicsICdQcmludCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdpdmVuIGZpbGUuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlbW92ZS1jb21tZW50cycsICdSZW1vdmUgYWxsIGNvbW1lbnRzIGV4Y2VwdCBUT0RPcyBhbmQgY29weXJpZ2h0IG5vdGljZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tcmVwb3J0VW51c2VkRGlzYWJsZURpcmVjdGl2ZXMnLCAnQWRkcyByZXBvcnRlZCBlcnJvcnMgZm9yIHVudXNlZCBlc2xpbnQtZGlzYWJsZSBkaXJlY3RpdmVzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlc29sdmVQbHVnaW5zUmVsYXRpdmVUbyA8cGF0aD4nLCAnQSBmb2xkZXIgd2hlcmUgcGx1Z2lucyBzaG91bGQgYmUgcmVzb2x2ZWQgZnJvbS4nKVxuICAub3B0aW9uKCctLXJ1bGUgPHBhdGg+JywgJ1NwZWNpZnkgcnVsZXMuJylcbiAgLm9wdGlvbignLS1ydWxlc2RpciA8cGF0aD4nLCAnVXNlIGFkZGl0aW9uYWwgcnVsZXMgZnJvbSB0aGlzIGRpcmVjdG9yeS4nKVxuICAub3B0aW9uKCctLXN0ZGluJywgJ0xpbnQgY29kZSBwcm92aWRlZCBvbiA8U1RESU4+IC0gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tc3RkaW5GaWxlbmFtZSA8bj4nLCAnU3BlY2lmeSBmaWxlbmFtZSB0byBwcm9jZXNzIFNURElOIGFzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gbGludChjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ21pZ3JhdGUnKVxuICAub3B0aW9uKCctcSwgLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gbWlncmF0ZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3B1Ymxpc2gnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tYnVtcCA8dHlwZT4nLCAnSW5jcmVtZW50cyB0aGUgdmVyc2lvbi4gVHlwZXMgaW5jbHVkZTogbWFqb3IsIG1pbm9yLCBwYXRjaCwgYmV0YSwgYWxwaGEsIHJjLiBEZWZhdWx0OiBcInBhdGNoXCIuJykuY2hvaWNlcyhbJ21ham9yJywgJ21pbm9yJywgJ3BhdGNoJywgJ2JldGEnLCAnYWxwaGEnLCAncmMnXSkuZGVmYXVsdCgncGF0Y2gnKSlcbiAgLm9wdGlvbignLS1uZXdWZXJzaW9uIDx2ZXJzaW9uTnVtYmVyPicsICdQdWJsaXNoIGFzIGEgc3BlY2lmaWMgdmVyc2lvbi4nKVxuICAub3B0aW9uKCctLW90cCA8Y29kZT4nLCAnUHJvdmlkZSBhIHR3by1mYWN0b3IgY29kZS4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcHJpdmF0ZScsICdQdWJsaXNoZXMgdGhlIG1vZHVsZSBhcyByZXN0cmljdGVkLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXRhZyA8dGFnPicsICdSZWdpc3RlcnMgdGhlIHB1Ymxpc2hlZCBwYWNrYWdlIHdpdGggdGhlIGdpdmVuIHRhZy4nKVxuICAuYWN0aW9uKChjbWQpID0+IHB1Ymxpc2goY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdzZXJ2ZXJsZXNzJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoZGVmYXVsdDogbGV4LmNvbmZpZy5tanMpLicpXG4gIC5vcHRpb24oJy0taG9zdCA8aG9zdD4nLCAnSG9zdCB0byBiaW5kIHRoZSBzZXJ2ZXIgdG8gKGRlZmF1bHQ6IGxvY2FsaG9zdCkuJylcbiAgLm9wdGlvbignLS1odHRwUG9ydCA8cG9ydD4nLCAnSFRUUCBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMCkuJylcbiAgLm9wdGlvbignLS1odHRwc1BvcnQgPHBvcnQ+JywgJ0hUVFBTIHNlcnZlciBwb3J0IChkZWZhdWx0OiAzMDAxKS4nKVxuICAub3B0aW9uKCctLXdzUG9ydCA8cG9ydD4nLCAnV2ViU29ja2V0IHNlcnZlciBwb3J0IChkZWZhdWx0OiAzMDAyKS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgc3RhcnRpbmcuJylcbiAgLm9wdGlvbignLS11c2VQdWJsaWNJcCcsICdGb3JjZSByZWZyZXNoIHRoZSBjYWNoZWQgcHVibGljIElQIGFkZHJlc3MuJylcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPGpzb24+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gcHJvY2Vzcy5lbnYuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgR3JhcGhRTCBkZWJ1ZyBsb2dnaW5nIHRvIHNlZSBxdWVyaWVzLCB2YXJpYWJsZXMsIGFuZCBvcGVyYXRpb25zLicpXG4gIC5vcHRpb24oJy0tcHJpbnRPdXRwdXQnLCAnUHJpbnQgR3JhcGhRTCByZXNwb25zZSBvdXRwdXQgaW5jbHVkaW5nIHN0YXR1cywgaGVhZGVycywgYW5kIGJvZHkuJylcbiAgLmFjdGlvbigoY21kKSA9PiBzZXJ2ZXJsZXNzKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnc3Rvcnlib29rJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBTdG9yeWJvb2sgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkgcGF0aCAoaWUuIC5zdG9yeWJvb2spLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1vcGVuJywgJ0F1dG9tYXRpY2FsbHkgb3BlbiBTdG9yeWJvb2sgaW4gYSBuZXcgYnJvd3NlciB3aW5kb3cuJylcbiAgLm9wdGlvbignLS1wb3J0IDxudW1iZXI+JywgJ1BvcnQgbnVtYmVyIGZvciB0aGUgU3Rvcnlib29rIHNlcnZlci4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1zdGF0aWMnLCAnQnVpbGQgYSBzdGF0aWMgU3Rvcnlib29rIHNpdGUgaW5zdGVhZCBvZiBzdGFydGluZyBkZXYgc2VydmVyLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxuPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIFwicHJvY2Vzcy5lbnZcIi4gKGllLiBcIntTVE9SWUJPT0tfVEhFTUU6IFxcJ2RhcmtcXCd9XCIpLicpXG4gIC5vcHRpb24oJy0tdmVyYm9zZScsICdTaG93IGRldGFpbGVkIHdlYnBhY2sgcHJvZ3Jlc3Mgb3V0cHV0LicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gc3Rvcnlib29rKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndGVzdCBbZmlsZXMuLi5dJylcbiAgLm9wdGlvbignLS1hbmFseXplJywgJ1VzZSBBSSB0byBhbmFseXplIHRlc3QgY292ZXJhZ2UgYW5kIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWRlYnVnVGVzdHMnLCAnVXNlIEFJIHRvIGRlYnVnIHRlc3QgZmFpbHVyZXMgYW5kIHN1Z2dlc3QgZml4ZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZ2VuZXJhdGUnLCAnVXNlIEFJIHRvIGdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIHVudGVzdGVkIGNvZGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tYmFpbCcsICdFeGl0IHRoZSB0ZXN0IHN1aXRlIGltbWVkaWF0ZWx5IHVwb24gdGhlIGZpcnN0IGZhaWxpbmcgdGVzdCBzdWl0ZS4nKVxuICAub3B0aW9uKCctLWNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcicsICdSdW5zIHRlc3RzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY2hhbmdlcyBhbmQgdGhlIGNoYW5nZXMgbWFkZSBpbiB0aGUgbGFzdCBjb21taXQuJylcbiAgLm9wdGlvbignLS1jaGFuZ2VkU2luY2UnLCAnUnVucyB0ZXN0cyByZWxhdGVkIHRoZSBjaGFuZ2VzIHNpbmNlIHRoZSBwcm92aWRlZCBicmFuY2guJylcbiAgLm9wdGlvbignLS1jaScsICdXaGVuIHRoaXMgb3B0aW9uIGlzIHByb3ZpZGVkLCBKZXN0IHdpbGwgYXNzdW1lIGl0IGlzIHJ1bm5pbmcgaW4gYSBDSSBlbnZpcm9ubWVudC4nKVxuICAub3B0aW9uKCctLWNsZWFyQ2FjaGUnLCAnQ2xlYXIgSmVzdCBjYWNoZS4nKVxuICAub3B0aW9uKCctLWNvbGxlY3RDb3ZlcmFnZUZyb20gPGdsb2I+JywgJ0EgZ2xvYiBwYXR0ZXJuIHJlbGF0aXZlIHRvIG1hdGNoaW5nIHRoZSBmaWxlcyB0aGF0IGNvdmVyYWdlIGluZm8gbmVlZHMgdG8gYmUgY29sbGVjdGVkIGZyb20uJylcbiAgLm9wdGlvbignLS1jb2xvcnMnLCAnRm9yY2VzIHRlc3QgcmVzdWx0cyBvdXRwdXQgaGlnaGxpZ2h0aW5nIGV2ZW4gaWYgc3Rkb3V0IGlzIG5vdCBhIFRUWS4nKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIEplc3QgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBqZXN0LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdQcmludCBkZWJ1Z2dpbmcgaW5mbyBhYm91dCB5b3VyIEplc3QgY29uZmlnLicpXG4gIC5vcHRpb24oJy0tZGV0ZWN0T3BlbkhhbmRsZXMnLCAnQXR0ZW1wdCB0byBjb2xsZWN0IGFuZCBwcmludCBvcGVuIGhhbmRsZXMgcHJldmVudGluZyBKZXN0IGZyb20gZXhpdGluZyBjbGVhbmx5JylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8bj4nLCAnVGFyZ2V0IGVudmlyb25tZW50LiBcIm5vZGVcIiBvciBcIndlYlwiLiBEZWZhdWx0OiBcIm5vZGVcIi4nKVxuICAub3B0aW9uKCctLWVudicsICdUaGUgdGVzdCBlbnZpcm9ubWVudCB1c2VkIGZvciBhbGwgdGVzdHMuIFRoaXMgY2FuIHBvaW50IHRvIGFueSBmaWxlIG9yIG5vZGUgbW9kdWxlLiBFeGFtcGxlczoganNkb20sIG5vZGUgb3IgcGF0aC90by9teS1lbnZpcm9ubWVudC5qcy4nKVxuICAub3B0aW9uKCctLWVycm9yT25EZXByZWNhdGVkJywgJ01ha2UgY2FsbGluZyBkZXByZWNhdGVkIEFQSXMgdGhyb3cgaGVscGZ1bCBlcnJvciBtZXNzYWdlcy4nKVxuICAub3B0aW9uKCctLWV4cGFuZCcsICdVc2UgdGhpcyBmbGFnIHRvIHNob3cgZnVsbCBkaWZmcyBhbmQgZXJyb3JzIGluc3RlYWQgb2YgYSBwYXRjaC4nKVxuICAub3B0aW9uKCctLWZvcmNlRXhpdCcsICdGb3JjZSBKZXN0IHRvIGV4aXQgYWZ0ZXIgYWxsIHRlc3RzIGhhdmUgY29tcGxldGVkIHJ1bm5pbmcuJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50cyB0aGUgdGVzdCByZXN1bHRzIGluIEpTT04uJylcbiAgLm9wdGlvbignLS1sYXN0Q29tbWl0JywgJ1J1biBhbGwgdGVzdHMgYWZmZWN0ZWQgYnkgZmlsZSBjaGFuZ2VzIGluIHRoZSBsYXN0IGNvbW1pdCBtYWRlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1saXN0VGVzdHMnLCAnTGlzdHMgYWxsIHRlc3RzIGFzIEpTT04gdGhhdCBKZXN0IHdpbGwgcnVuIGdpdmVuIHRoZSBhcmd1bWVudHMsIGFuZCBleGl0cy4nKVxuICAub3B0aW9uKCctLWxvZ0hlYXBVc2FnZScsICdMb2dzIHRoZSBoZWFwIHVzYWdlIGFmdGVyIGV2ZXJ5IHRlc3QuJylcbiAgLm9wdGlvbignLS1tYXhXb3JrZXJzIDxudW0+JywgJ1NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd29ya2VycyB0aGUgd29ya2VyLXBvb2wgd2lsbCBzcGF3biBmb3IgcnVubmluZyB0ZXN0cy4gJylcbiAgLm9wdGlvbignLS1ub1N0YWNrVHJhY2UnLCAnRGlzYWJsZXMgc3RhY2sgdHJhY2UgaW4gdGVzdCByZXN1bHRzIG91dHB1dC4nKVxuICAub3B0aW9uKCctLW5vdGlmeScsICdBY3RpdmF0ZXMgbm90aWZpY2F0aW9ucyBmb3IgdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tb25seUNoYW5nZWQnLCAndW4gYmFzZWQgb24gd2hpY2ggZmlsZXMgaGF2ZSBjaGFuZ2VkIGluIHRoZSBjdXJyZW50IHJlcG9zaXRvcnkuICcpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8ZmlsZW5hbWU+JywgJ1dyaXRlIHRlc3QgcmVzdWx0cyB0byBhIGZpbGUgd2hlbiB0aGUgLS1qc29uIG9wdGlvbiBpcyBhbHNvIHNwZWNpZmllZC4nKVxuICAub3B0aW9uKCctLXBhc3NXaXRoTm9UZXN0cycsICdBbGxvd3MgdGhlIHRlc3Qgc3VpdGUgdG8gcGFzcyB3aGVuIG5vIGZpbGVzIGFyZSBmb3VuZC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1ydW5JbkJhbmQnLCAnUnVuIGFsbCB0ZXN0cyBzZXJpYWxseSBpbiB0aGUgY3VycmVudCBwcm9jZXNzLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIHdvcmtlciBwb29sIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHJ1biB0ZXN0cy4nKVxuICAub3B0aW9uKCctLXNldHVwIDxwYXRoPicsICdKZXN0IHNldHVwIGZpbGUgcGF0aC4nKVxuICAub3B0aW9uKCctLXNob3dDb25maWcnLCAnUHJpbnQgeW91ciBKZXN0IGNvbmZpZyBhbmQgdGhlbiBleGl0cy4nKVxuICAub3B0aW9uKCctLXNpbGVudCcsICdQcmV2ZW50IHRlc3RzIGZyb20gcHJpbnRpbmcgbWVzc2FnZXMgdGhyb3VnaCB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXRlc3RMb2NhdGlvbkluUmVzdWx0cycsICdBZGRzIGEgbG9jYXRpb24gZmllbGQgdG8gdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tdGVzdE5hbWVQYXR0ZXJuIDxyZWdleD4nLCAnUnVuIG9ubHkgdGVzdHMgd2l0aCBhIG5hbWUgdGhhdCBtYXRjaGVzIHRoZSByZWdleC4gJylcbiAgLm9wdGlvbignLS10ZXN0UGF0aFBhdHRlcm4gPHJlZ2V4PicsICdBIHJlZ2V4cCBwYXR0ZXJuIHN0cmluZyB0aGF0IGlzIG1hdGNoZWQgYWdhaW5zdCBhbGwgdGVzdHMgcGF0aHMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdC4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVHJhbnNwaWxlIGFzIFR5cGVzY3JpcHQuJylcbiAgLm9wdGlvbignLS11cGRhdGUnLCAnVXBkYXRlIHNuYXBzaG90cy4gUnVucyBcImplc3QgLS11cGRhdGVTbmFwc2hvdHNcIicpXG4gIC5vcHRpb24oJy0tdXNlU3RkZXJyJywgJ0RpdmVydCBhbGwgb3V0cHV0IHRvIHN0ZGVyci4nKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnRGlzcGxheSBpbmRpdmlkdWFsIHRlc3QgcmVzdWx0cyB3aXRoIHRoZSB0ZXN0IHN1aXRlIGhpZXJhcmNoeS4nKVxuICAub3B0aW9uKCctLXdhdGNoIDxwYXRoPicsICdXYXRjaCBmaWxlcyBmb3IgY2hhbmdlcyBhbmQgcmVydW4gdGVzdHMgcmVsYXRlZCB0byBjaGFuZ2VkIGZpbGVzLicpXG4gIC5vcHRpb24oJy0td2F0Y2hBbGwnLCAnV2F0Y2ggZmlsZXMgZm9yIGNoYW5nZXMgYW5kIHJlcnVuIGFsbCB0ZXN0cyB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLicpXG4gIC5hY3Rpb24oKGZpbGVzLCBvcHRpb25zLCBjbWQpID0+IHRlc3Qob3B0aW9ucywgY21kLmFyZ3MsIGZpbGVzLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCd1cGRhdGUnKVxuICAub3B0aW9uKCctLWludGVyYWN0aXZlJywgJ0Nob29zZSB3aGljaCBwYWNrYWdlcyB0byB1cGRhdGUuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZWdpc3RyeScsICdBZGQgYSBjdXN0b20gcmVnaXN0cnkgdXJsLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gdXBkYXRlKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndXBncmFkZScpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gdXBncmFkZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2FpJylcbiAgLm9wdGlvbignLS1jb250ZXh0JywgJ0luY2x1ZGUgcHJvamVjdCBjb250ZXh0IGluIHRoZSBBSSBwcm9tcHQuJywgdHJ1ZSlcbiAgLm9wdGlvbignLS1maWxlIDxwYXRoPicsICdTcGVjaWZpYyBmaWxlIHRvIG9wZXJhdGUgb24uJylcbiAgLm9wdGlvbignLS1sZXhDb25maWcgPHBhdGg+JywgJ0N1c3RvbSBMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW1vZGVsIDxtb2RlbD4nLCAnQUkgbW9kZWwgdG8gdXNlLiBEZWZhdWx0OiBncHQtNG8uJylcbiAgLm9wdGlvbignLS1wcm9tcHQgPHRleHQ+JywgJ1RoZSBwcm9tcHQgdG8gc2VuZCB0byB0aGUgQUkuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS10YXNrIDx0YXNrPicsICdUeXBlIG9mIEFJIHRhc2sgdG8gcGVyZm9ybS4nKS5jaG9pY2VzKFsnZ2VuZXJhdGUnLCAnZXhwbGFpbicsICd0ZXN0JywgJ29wdGltaXplJywgJ2hlbHAnXSkuZGVmYXVsdCgnaGVscCcpKVxuICAuYWN0aW9uKChjbWQpID0+IGFpRnVuY3Rpb24oY21kKS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndmVyc2lvbnMnKVxuICAub3B0aW9uKCctLWpzb24nLCAnUHJpbnQgdGhlIHZlcnNpb24gYXMgYSBKU09OIG9iamVjdC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHZlcnNpb25zKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW1cbiAgLnZlcnNpb24ocGFja2FnZUpzb24udmVyc2lvbilcbiAgLnBhcnNlKHByb2Nlc3MuYXJndik7Il0sCiAgIm1hcHBpbmdzIjogIjtBQUtBLFNBQVEsUUFBUSxlQUFjO0FBQzlCLFNBQVEsb0JBQW1CO0FBQzNCLFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsU0FBUyxlQUFjO0FBQy9CLFNBQVEscUJBQW9CO0FBRTVCLFNBQVEsa0JBQWlCO0FBQ3pCLFNBQVEsYUFBWTtBQUNwQixTQUFRLGFBQVk7QUFDcEIsU0FBUSxlQUFjO0FBQ3RCLFNBQVEsY0FBYTtBQUNyQixTQUFRLGNBQWE7QUFDckIsU0FBUSxXQUFVO0FBQ2xCLFNBQVEsWUFBVztBQUNuQixTQUFRLGNBQWE7QUFDckIsU0FBUSxZQUFXO0FBQ25CLFNBQVEsZUFBYztBQUN0QixTQUFRLGVBQWM7QUFDdEIsU0FBUSxrQkFBaUI7QUFDekIsU0FBUSxpQkFBZ0I7QUFDeEIsU0FB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
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7T3B0aW9uLCBwcm9ncmFtfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7Y3JlYXRlUmVxdWlyZX0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCB7ZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi9jb21tYW5kcy9haS9haS5qcyc7XG5pbXBvcnQge2J1aWxkfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkL2J1aWxkLmpzJztcbmltcG9ydCB7Y2xlYW59IGZyb20gJy4vY29tbWFuZHMvY2xlYW4vY2xlYW4uanMnO1xuaW1wb3J0IHtjb21waWxlfSBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9jb21tYW5kcy9jb25maWcvY29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUuanMnO1xuaW1wb3J0IHtkZXZ9IGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5pbXBvcnQge2luaXR9IGZyb20gJy4vY29tbWFuZHMvaW5pdC9pbml0LmpzJztcbmltcG9ydCB7bGlua2VkfSBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5pbXBvcnQge2xpbnR9IGZyb20gJy4vY29tbWFuZHMvbGludC9saW50LmpzJztcbmltcG9ydCB7bWlncmF0ZX0gZnJvbSAnLi9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUuanMnO1xuaW1wb3J0IHtwdWJsaXNofSBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5pbXBvcnQge3NlcnZlcmxlc3N9IGZyb20gJy4vY29tbWFuZHMvc2VydmVybGVzcy9zZXJ2ZXJsZXNzLmpzJztcbmltcG9ydCB7c3Rvcnlib29rfSBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuaW1wb3J0IHt0ZXN0fSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QvdGVzdC5qcyc7XG5pbXBvcnQge3VwZGF0ZX0gZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmltcG9ydCB7dXBncmFkZX0gZnJvbSAnLi9jb21tYW5kcy91cGdyYWRlL3VwZ3JhZGUuanMnO1xuaW1wb3J0IHt2ZXJzaW9uc30gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbnByb2Nlc3MuZW52LkxFWF9ST09UID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBsZXhOb2RlTW9kdWxlcyA9IHJlc29sdmUoZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAnLi4vbm9kZV9tb2R1bGVzJyk7XG5pZighcHJvY2Vzcy5lbnYuTk9ERV9QQVRIKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfUEFUSCA9IGxleE5vZGVNb2R1bGVzO1xufSBlbHNlIGlmKCFwcm9jZXNzLmVudi5OT0RFX1BBVEguc3BsaXQoJzonKS5pbmNsdWRlcyhsZXhOb2RlTW9kdWxlcykpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9QQVRIICs9IGA6JHtsZXhOb2RlTW9kdWxlc31gO1xufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5yZXF1aXJlKCdtb2R1bGUnKS5Nb2R1bGUuX2luaXRQYXRocygpO1xuXG5jb25zdCBwYWNrYWdlUGF0aCA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxucHJvZ3JhbS5jb21tYW5kKCdidWlsZCcpXG4gIC5vcHRpb24oJy0tYXNzaXN0JywgJ0VuYWJsZSBBSSBhc3Npc3RhbmNlIGZvciBmaXhpbmcgYnVpbGQgZXJyb3JzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWFuYWx5emUnLCAnRW5hYmxlIEFJIGFuYWx5c2lzIGZvciBidWlsZCBvcHRpbWl6YXRpb24gc3VnZ2VzdGlvbnMgb3IgaW52b2tlIHdlYnBhY2stYnVuZGxlLWFuYWx5emVyIHBsdWdpbi4nLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bmRsZXIgPG4+JywgJ0J1bmRsZXIgdG8gdXNlIChcIndlYnBhY2tcIiBvciBcInN3Y1wiKS4gRGVmYXVsdDogXCJzd2NcIi4nKS5jaG9pY2VzKFsnd2VicGFjaycsICdzd2MnXSkuZGVmYXVsdCgnc3djJykpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gV2VicGFjayBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHdlYnBhY2suY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLWNvbmZpZ05hbWUgPHZhbHVlLi4uPicsICdOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZS4nKVxuICAub3B0aW9uKCctLWRlZmluZVByb2Nlc3NFbnZOb2RlRW52IDx2YWx1ZT4nLCAnU2V0cyBwcm9jZXNzLmVudi5OT0RFX0VOViB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLiAoQ3VycmVudGx5IGFuIGFsaWFzIGZvciBgLS1ub2RlLWVudmApJylcbiAgLm9wdGlvbignLS1kZXZ0b29sIDx2YWx1ZT4nLCAnQSBkZXZlbG9wZXIgdG9vbCB0byBlbmhhbmNlIGRlYnVnZ2luZyAoZmFsc2UgfCBldmFsIHwgW2lubGluZS18aGlkZGVuLXxldmFsLV1bbm9zb3VyY2VzLV1bY2hlYXAtW21vZHVsZS1dXXNvdXJjZS1tYXApLicpXG4gIC5vcHRpb24oJy0tZGlzYWJsZUludGVycHJldCcsICdEaXNhYmxlIGludGVycHJldCBmb3IgbG9hZGluZyB0aGUgY29uZmlnIGZpbGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW50cnkgPHZhbHVlLi4uPicsICdBIG1vZHVsZSB0aGF0IGlzIGxvYWRlZCB1cG9uIHN0YXJ0dXAuIE9ubHkgdGhlIGxhc3Qgb25lIGlzIGV4cG9ydGVkLicpXG4gIC5vcHRpb24oJy0tZW52IDx2YWx1ZT4nLCAnRW52aXJvbm1lbnQgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIHdoZW4gaXQgaXMgYSBmdW5jdGlvbi4nKVxuICAub3B0aW9uKCctLWZhaWxPbldhcm5pbmdzJywgJ1N0b3Agd2VicGFjay1jbGkgcHJvY2VzcyB3aXRoIG5vbi16ZXJvIGV4aXQgY29kZSBvbiB3YXJuaW5ncyBmcm9tIHdlYnBhY2snLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWpzb24gPHZhbHVlPicsICdQcmludHMgcmVzdWx0IGFzIEpTT04gb3Igc3RvcmUgaXQgaW4gYSBmaWxlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tbWVyZ2UnLCAnTWVyZ2UgdHdvIG9yIG1vcmUgY29uZmlndXJhdGlvbnMgdXNpbmcgXCJ3ZWJwYWNrLW1lcmdlXCIuJywgZmFsc2UpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1tb2RlIDx0eXBlPicsICdXZWJwYWNrIG1vZGUgKFwicHJvZHVjdGlvblwiIG9yIFwiZGV2ZWxvcG1lbnRcIikuIERlZmF1bHQ6IFwiZGV2ZWxvcG1lbnRcIi4nKS5jaG9pY2VzKFsnZGV2ZWxvcG1lbnQnLCAncHJvZHVjdGlvbiddKS5kZWZhdWx0KCdkZXZlbG9wbWVudCcpKVxuICAub3B0aW9uKCctLW5hbWUgPHZhbHVlPicsICdOYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLiBVc2VkIHdoZW4gbG9hZGluZyBtdWx0aXBsZSBjb25maWd1cmF0aW9ucy4nKVxuICAub3B0aW9uKCctLW5vRGV2dG9vbCcsICdOZWdhdGl2ZSBcImRldnRvb2xcIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9TdGF0cycsICdOZWdhdGl2ZSBcInN0YXRzXCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vVGFyZ2V0JywgJ05lZ2F0aXZlIFwidGFyZ2V0XCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vV2F0Y2gnLCAnTmVnYXRpdmUgXCJ3YXRjaFwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1dhdGNoT3B0aW9uc1N0ZGluJywgJ05lZ2F0aXZlIFwid2F0Y2gtb3B0aW9ucy1zdGRpblwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub2RlRW52IDx2YWx1ZT4nLCAnU2V0cyBwcm9jZXNzLmVudi5OT0RFX0VOViB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLicpXG4gIC5vcHRpb24oJy0tb3V0cHV0UGF0aCA8dmFsdWU+JywgJ1RoZSBvdXRwdXQgZGlyZWN0b3J5IGFzICoqYWJzb2x1dGUgcGF0aCoqIChyZXF1aXJlZCkuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXN0YXRzIDx2YWx1ZT4nLCAnU3RhdHMgb3B0aW9ucyBvYmplY3Qgb3IgcHJlc2V0IG5hbWUuJylcbiAgLm9wdGlvbignLS1zdGF0aWMnLCAnQ3JlYXRlcyBzdGF0aWMgSFRNTCBmaWxlcyB3aGVuIGJ1aWxkaW5nIGFwcC4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10YXJnZXQgPHZhbHVlPicsICdFbnZpcm9ubWVudCB0byBidWlsZCBmb3IuIEVudmlyb25tZW50IHRvIGJ1aWxkIGZvci4gQW4gYXJyYXkgb2YgZW52aXJvbm1lbnRzIHRvIGJ1aWxkIGZvciBhbGwgb2YgdGhlbSB3aGVuIHBvc3NpYmxlLicpXG4gIC5vcHRpb24oJy0tdHJhbnNsYXRpb25zJywgJ1Byb2Nlc3MgdHJhbnNsYXRpb24gZmlsZXMgYW5kIG91dHB1dCBmbGF0dGVuZWQgSlNPTi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicsIGZhbHNlKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7Tk9ERV9FTlY6IFxcJ3Byb2R1Y3Rpb25cXCd9XCIpLicpXG4gIC5vcHRpb24oJy0td2F0Y2gnLCAnV2F0Y2ggZm9yIGNoYW5nZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0td2F0Y2hPcHRpb25zU3RkaW4nLCAnU3RvcCB3YXRjaGluZyB3aGVuIHN0ZGluIHN0cmVhbSBoYXMgZW5kZWQuJywgZmFsc2UpXG4gIC5hY3Rpb24oKGNtZCkgPT4gYnVpbGQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjbGVhbicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXNuYXBzaG90cycsICdSZW1vdmUgYWxsIFwiX19zbmFwc2hvdHNfX1wiIGRpcmVjdG9yaWVzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gY2xlYW4oY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjb25maWcgPHR5cGU+JylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tanNvbiA8cGF0aD4nLCAnU2F2ZSBvdXRwdXQgdG8ganNvbiBmaWxlLicpXG4gIC5hY3Rpb24oKHR5cGUsIGNtZCkgPT4gY29uZmlnKHR5cGUsIGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY29tcGlsZScpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdUcmFuc3BpbGVyIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gdHNjb25maWcuanNvbikuJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8bj4nLCAnVGFyZ2V0IGVudmlyb25tZW50LiBcIm5vZGVcIiBvciBcIndlYlwiLiBEZWZhdWx0OiBcIm5vZGVcIi4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDx2YWx1ZT4nLCAnVGhpcyBzZXRzIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgZ2VuZXJhdGVkIEphdmFTY3JpcHQgZmlsZXMuIERlZmF1bHQ6IFwiZXNtXCIuJykuY2hvaWNlcyhbJ2NqcycsICdlc20nXSkuZGVmYXVsdCgnZXNtJykpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1vdXRwdXRQYXRoIDxwYXRoPicsICdPdXRwdXQgcGF0aCcpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIGNvbXBpbGluZy4nKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoZXMgZm9yIGNoYW5nZXMgYW5kIGNvbXBpbGVzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gY29tcGlsZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2NyZWF0ZSA8dHlwZT4nKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPHBhdGg+JywgJ091dHB1dCBmaWxlbmFtZS4nKVxuICAub3B0aW9uKCctLW91dHB1dE5hbWUgPG4+JywgJ091dHB1dCBuYW1lLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnQ3JlYXRlIFR5cGVzY3JpcHQgdmVyc2lvbi4nKVxuICAuYWN0aW9uKCh0eXBlLCBjbWQpID0+IGNyZWF0ZSh0eXBlLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2RldicpXG4gIC5vcHRpb24oJy0tYnVuZGxlQW5hbHl6ZXInLCAnUnVuIGJ1bmRsZSBhbmFseXplci4nKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFdlYnBhY2sgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiB3ZWJwYWNrLmNvbmZpZy5qcykuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gZGV2IHNlcnZlciBpbiBhIG5ldyBicm93c2VyIHdpbmRvdy4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHBhdGg+JywgJ091dHB1dCBwYXRoJylcbiAgLm9wdGlvbignLS1wb3J0IDxudW1iZXI+JywgJ1BvcnQgbnVtYmVyIGZvciB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIChkZWZhdWx0OiAzMDAwKS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXRyYW5zbGF0aW9ucycsICdQcm9jZXNzIHRyYW5zbGF0aW9uIGZpbGVzIGFuZCBvdXRwdXQgZmxhdHRlbmVkIEpTT04uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nKVxuICAub3B0aW9uKCctLXVzZVB1YmxpY0lwJywgJ0ZvcmNlIHJlZnJlc2ggdGhlIGNhY2hlZCBwdWJsaWMgSVAgYWRkcmVzcy4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7Tk9ERV9FTlY6IFxcJ2RldmVsb3BtZW50XFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoIGZvciBjaGFuZ2VzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gZGV2KGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnaW5pdCA8YXBwTmFtZT4gW3BhY2thZ2VOYW1lXScpXG4gIC5vcHRpb24oJy0taW5zdGFsbCcsICdJbnN0YWxsIGRlcGVuZGVuY2llcy4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVXNlIGEgVHlwZXNjcmlwdCBiYXNlZCBhcHAuJylcbiAgLmFjdGlvbigoYXBwTmFtZSwgcGFja2FnZU5hbWUsIGNtZCkgPT4gaW5pdChhcHBOYW1lLCBwYWNrYWdlTmFtZSwgY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdsaW5rZWQnKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLmFjdGlvbigoY21kKSA9PiBsaW5rZWQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdsaW50JylcbiAgLm9wdGlvbignLS1jYWNoZScsICdPbmx5IGNoZWNrIGNoYW5nZWQgZmlsZXMuIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWNhY2hlTG9jYXRpb24gPHBhdGg+JywgJ1BhdGggdG8gdGhlIGNhY2hlIGZpbGUgb3IgZGlyZWN0b3J5LicpXG4gIC5vcHRpb24oJy0tY29sb3InLCAnRm9yY2UgZW5hYmxpbmcgb2YgY29sb3IuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdVc2UgdGhpcyBjb25maWd1cmF0aW9uLCBvdmVycmlkaW5nIC5lc2xpbnRyYy4qIGNvbmZpZyBvcHRpb25zIGlmIHByZXNlbnQuIElmIG5vdCBzcGVjaWZpZWQgYW5kIG5vIGxvY2FsIGNvbmZpZyBleGlzdHMsIExleCB3aWxsIHVzZSBpdHMgZGVmYXVsdCBjb25maWcuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdPdXRwdXQgZGVidWdnaW5nIGluZm9ybWF0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudkluZm8nLCAnT3V0cHV0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbi4gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW52IDxuPicsICdTcGVjaWZ5IGVudmlyb25tZW50cy4nKVxuICAub3B0aW9uKCctLWZpeCcsICdBcHBseSBBSSBmaXhlcyBhZnRlciBidWlsdC1pbiBFU0xpbnQgZml4ZXMgKHNhbWUgYXMgLS1maXgpLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWZpeERyeVJ1bicsICdBdXRvbWF0aWNhbGx5IGZpeCBwcm9ibGVtcyB3aXRob3V0IHNhdmluZyB0aGUgY2hhbmdlcyB0byB0aGUgZmlsZSBzeXN0ZW0uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZml4VHlwZSA8dHlwZT4nLCAnU3BlY2lmeSB0aGUgdHlwZXMgb2YgZml4ZXMgdG8gYXBwbHkgKHByb2JsZW0sIHN1Z2dlc3Rpb24sIGxheW91dCkuJylcbiAgLm9wdGlvbignLS1mb3JtYXQgPG4+JywgJ1VzZSBhIHNwZWNpZmljIG91dHB1dCBmb3JtYXQuIERlZmF1bHQ6IHN0eWxpc2guJylcbiAgLm9wdGlvbignLS1nbG9iYWwgPHZhcmlhYmxlcz4nLCAnRGVmaW5lIGdsb2JhbCB2YXJpYWJsZXMuJylcbiAgLm9wdGlvbignLS1pZ25vcmVQYXRoIDxwYXRoPicsICdTcGVjaWZ5IHBhdGggb2YgaWdub3JlIGZpbGUuJylcbiAgLm9wdGlvbignLS1pZ25vcmVQYXR0ZXJuIDxwYXR0ZXJuPicsICdQYXR0ZXJuIG9mIGZpbGVzIHRvIGlnbm9yZSAoaW4gYWRkaXRpb24gdG8gdGhvc2UgaW4gLmVzbGludGlnbm9yZSkuJylcbiAgLm9wdGlvbignLS1pbml0JywgJ1J1biBjb25maWcgaW5pdGlhbGl6YXRpb24gd2l6YXJkLiBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1tYXhXYXJuaW5ncyA8bnVtPicsICdOdW1iZXIgb2Ygd2FybmluZ3MgdG8gdHJpZ2dlciBub256ZXJvIGV4aXQgY29kZS4gRGVmYXVsdDogLTEuJylcbiAgLm9wdGlvbignLS1ub0NvbG9yJywgJ0ZvcmNlIGRpc2FibGluZyBvZiBjb2xvci4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0VzbGludHJjJywgJ0Rpc2FibGUgdXNlIG9mIGNvbmZpZ3VyYXRpb24gZnJvbSAuZXNsaW50cmMuKi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0lnbm9yZScsICdEaXNhYmxlIHVzZSBvZiBpZ25vcmUgZmlsZXMgYW5kIHBhdHRlcm5zLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vSW5saW5lQ29uZmlnJywgJ1ByZXZlbnQgY29tbWVudHMgZnJvbSBjaGFuZ2luZyBjb25maWcgb3IgcnVsZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8cGF0aD4nLCAnU3BlY2lmeSBmaWxlIHRvIHdyaXRlIHJlcG9ydCB0by4nKVxuICAub3B0aW9uKCctLXBhcnNlciA8bj4nLCAnU3BlY2lmeSB0aGUgcGFyc2VyIHRvIGJlIHVzZWQuJylcbiAgLm9wdGlvbignLS1wYXJzZXJPcHRpb25zIDxvcHRpb25zPicsICdTcGVjaWZ5IHBhcnNlciBvcHRpb25zLicpXG4gIC5vcHRpb24oJy0tcGx1Z2luIDxwbHVnaW5zPicsICdTcGVjaWZ5IHBsdWdpbnMuJylcbiAgLm9wdGlvbignLS1wcmludENvbmZpZyA8cGF0aD4nLCAnUHJpbnQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnaXZlbiBmaWxlLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZW1vdmUtY29tbWVudHMnLCAnUmVtb3ZlIGFsbCBjb21tZW50cyBleGNlcHQgVE9ET3MgYW5kIGNvcHlyaWdodCBub3RpY2VzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzJywgJ0FkZHMgcmVwb3J0ZWQgZXJyb3JzIGZvciB1bnVzZWQgZXNsaW50LWRpc2FibGUgZGlyZWN0aXZlcy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZXNvbHZlUGx1Z2luc1JlbGF0aXZlVG8gPHBhdGg+JywgJ0EgZm9sZGVyIHdoZXJlIHBsdWdpbnMgc2hvdWxkIGJlIHJlc29sdmVkIGZyb20uJylcbiAgLm9wdGlvbignLS1ydWxlIDxwYXRoPicsICdTcGVjaWZ5IHJ1bGVzLicpXG4gIC5vcHRpb24oJy0tcnVsZXNkaXIgPHBhdGg+JywgJ1VzZSBhZGRpdGlvbmFsIHJ1bGVzIGZyb20gdGhpcyBkaXJlY3RvcnkuJylcbiAgLm9wdGlvbignLS1zdGRpbicsICdMaW50IGNvZGUgcHJvdmlkZWQgb24gPFNURElOPiAtIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXN0ZGluRmlsZW5hbWUgPG4+JywgJ1NwZWNpZnkgZmlsZW5hbWUgdG8gcHJvY2VzcyBTVERJTiBhcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGxpbnQoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdtaWdyYXRlJylcbiAgLm9wdGlvbignLXEsIC0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IG1pZ3JhdGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdwdWJsaXNoJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bXAgPHR5cGU+JywgJ0luY3JlbWVudHMgdGhlIHZlcnNpb24uIFR5cGVzIGluY2x1ZGU6IG1ham9yLCBtaW5vciwgcGF0Y2gsIGJldGEsIGFscGhhLCByYy4gRGVmYXVsdDogXCJwYXRjaFwiLicpLmNob2ljZXMoWydtYWpvcicsICdtaW5vcicsICdwYXRjaCcsICdiZXRhJywgJ2FscGhhJywgJ3JjJ10pLmRlZmF1bHQoJ3BhdGNoJykpXG4gIC5vcHRpb24oJy0tbmV3VmVyc2lvbiA8dmVyc2lvbk51bWJlcj4nLCAnUHVibGlzaCBhcyBhIHNwZWNpZmljIHZlcnNpb24uJylcbiAgLm9wdGlvbignLS1vdHAgPGNvZGU+JywgJ1Byb3ZpZGUgYSB0d28tZmFjdG9yIGNvZGUuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXByaXZhdGUnLCAnUHVibGlzaGVzIHRoZSBtb2R1bGUgYXMgcmVzdHJpY3RlZC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10YWcgPHRhZz4nLCAnUmVnaXN0ZXJzIHRoZSBwdWJsaXNoZWQgcGFja2FnZSB3aXRoIHRoZSBnaXZlbiB0YWcuJylcbiAgLmFjdGlvbigoY21kKSA9PiBwdWJsaXNoKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnc2VydmVybGVzcycpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGRlZmF1bHQ6IGxleC5jb25maWcubWpzKS4nKVxuICAub3B0aW9uKCctLWhvc3QgPGhvc3Q+JywgJ0hvc3QgdG8gYmluZCB0aGUgc2VydmVyIHRvIChkZWZhdWx0OiBsb2NhbGhvc3QpLicpXG4gIC5vcHRpb24oJy0taHR0cFBvcnQgPHBvcnQ+JywgJ0hUVFAgc2VydmVyIHBvcnQgKGRlZmF1bHQ6IDMwMDApLicpXG4gIC5vcHRpb24oJy0taHR0cHNQb3J0IDxwb3J0PicsICdIVFRQUyBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMSkuJylcbiAgLm9wdGlvbignLS13c1BvcnQgPHBvcnQ+JywgJ1dlYlNvY2tldCBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMikuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHN0YXJ0aW5nLicpXG4gIC5vcHRpb24oJy0tdXNlUHVibGljSXAnLCAnRm9yY2UgcmVmcmVzaCB0aGUgY2FjaGVkIHB1YmxpYyBJUCBhZGRyZXNzLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxqc29uPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIHByb2Nlc3MuZW52LicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIEdyYXBoUUwgZGVidWcgbG9nZ2luZyB0byBzZWUgcXVlcmllcywgdmFyaWFibGVzLCBhbmQgb3BlcmF0aW9ucy4nKVxuICAub3B0aW9uKCctLXByaW50T3V0cHV0JywgJ1ByaW50IEdyYXBoUUwgcmVzcG9uc2Ugb3V0cHV0IGluY2x1ZGluZyBzdGF0dXMsIGhlYWRlcnMsIGFuZCBib2R5LicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gc2VydmVybGVzcyhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3N0b3J5Ym9vaycpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gU3Rvcnlib29rIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IHBhdGggKGllLiAuc3Rvcnlib29rKS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gU3Rvcnlib29rIGluIGEgbmV3IGJyb3dzZXIgd2luZG93LicpXG4gIC5vcHRpb24oJy0tcG9ydCA8bnVtYmVyPicsICdQb3J0IG51bWJlciBmb3IgdGhlIFN0b3J5Ym9vayBzZXJ2ZXIuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tc3RhdGljJywgJ0J1aWxkIGEgc3RhdGljIFN0b3J5Ym9vayBzaXRlIGluc3RlYWQgb2Ygc3RhcnRpbmcgZGV2IHNlcnZlci4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8bj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBcInByb2Nlc3MuZW52XCIuIChpZS4gXCJ7U1RPUllCT09LX1RIRU1FOiBcXCdkYXJrXFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCB3ZWJwYWNrIHByb2dyZXNzIG91dHB1dC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHN0b3J5Ym9vayhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3Rlc3QgW2ZpbGVzLi4uXScpXG4gIC5vcHRpb24oJy0tYW5hbHl6ZScsICdVc2UgQUkgdG8gYW5hbHl6ZSB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0IGltcHJvdmVtZW50cy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1kZWJ1Z1Rlc3RzJywgJ1VzZSBBSSB0byBkZWJ1ZyB0ZXN0IGZhaWx1cmVzIGFuZCBzdWdnZXN0IGZpeGVzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWdlbmVyYXRlJywgJ1VzZSBBSSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciB1bnRlc3RlZCBjb2RlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWJhaWwnLCAnRXhpdCB0aGUgdGVzdCBzdWl0ZSBpbW1lZGlhdGVseSB1cG9uIHRoZSBmaXJzdCBmYWlsaW5nIHRlc3Qgc3VpdGUuJylcbiAgLm9wdGlvbignLS1jaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3InLCAnUnVucyB0ZXN0cyByZWxhdGVkIHRvIHRoZSBjdXJyZW50IGNoYW5nZXMgYW5kIHRoZSBjaGFuZ2VzIG1hZGUgaW4gdGhlIGxhc3QgY29tbWl0LicpXG4gIC5vcHRpb24oJy0tY2hhbmdlZFNpbmNlJywgJ1J1bnMgdGVzdHMgcmVsYXRlZCB0aGUgY2hhbmdlcyBzaW5jZSB0aGUgcHJvdmlkZWQgYnJhbmNoLicpXG4gIC5vcHRpb24oJy0tY2knLCAnV2hlbiB0aGlzIG9wdGlvbiBpcyBwcm92aWRlZCwgSmVzdCB3aWxsIGFzc3VtZSBpdCBpcyBydW5uaW5nIGluIGEgQ0kgZW52aXJvbm1lbnQuJylcbiAgLm9wdGlvbignLS1jbGVhckNhY2hlJywgJ0NsZWFyIEplc3QgY2FjaGUuJylcbiAgLm9wdGlvbignLS1jb2xsZWN0Q292ZXJhZ2VGcm9tIDxnbG9iPicsICdBIGdsb2IgcGF0dGVybiByZWxhdGl2ZSB0byBtYXRjaGluZyB0aGUgZmlsZXMgdGhhdCBjb3ZlcmFnZSBpbmZvIG5lZWRzIHRvIGJlIGNvbGxlY3RlZCBmcm9tLicpXG4gIC5vcHRpb24oJy0tY29sb3JzJywgJ0ZvcmNlcyB0ZXN0IHJlc3VsdHMgb3V0cHV0IGhpZ2hsaWdodGluZyBldmVuIGlmIHN0ZG91dCBpcyBub3QgYSBUVFkuJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBKZXN0IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gamVzdC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnUHJpbnQgZGVidWdnaW5nIGluZm8gYWJvdXQgeW91ciBKZXN0IGNvbmZpZy4nKVxuICAub3B0aW9uKCctLWRldGVjdE9wZW5IYW5kbGVzJywgJ0F0dGVtcHQgdG8gY29sbGVjdCBhbmQgcHJpbnQgb3BlbiBoYW5kbGVzIHByZXZlbnRpbmcgSmVzdCBmcm9tIGV4aXRpbmcgY2xlYW5seScpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQgPG4+JywgJ1RhcmdldCBlbnZpcm9ubWVudC4gXCJub2RlXCIgb3IgXCJ3ZWJcIi4gRGVmYXVsdDogXCJub2RlXCIuJylcbiAgLm9wdGlvbignLS1lbnYnLCAnVGhlIHRlc3QgZW52aXJvbm1lbnQgdXNlZCBmb3IgYWxsIHRlc3RzLiBUaGlzIGNhbiBwb2ludCB0byBhbnkgZmlsZSBvciBub2RlIG1vZHVsZS4gRXhhbXBsZXM6IGpzZG9tLCBub2RlIG9yIHBhdGgvdG8vbXktZW52aXJvbm1lbnQuanMuJylcbiAgLm9wdGlvbignLS1lcnJvck9uRGVwcmVjYXRlZCcsICdNYWtlIGNhbGxpbmcgZGVwcmVjYXRlZCBBUElzIHRocm93IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMuJylcbiAgLm9wdGlvbignLS1leHBhbmQnLCAnVXNlIHRoaXMgZmxhZyB0byBzaG93IGZ1bGwgZGlmZnMgYW5kIGVycm9ycyBpbnN0ZWFkIG9mIGEgcGF0Y2guJylcbiAgLm9wdGlvbignLS1mb3JjZUV4aXQnLCAnRm9yY2UgSmVzdCB0byBleGl0IGFmdGVyIGFsbCB0ZXN0cyBoYXZlIGNvbXBsZXRlZCBydW5uaW5nLicpXG4gIC5vcHRpb24oJy0tanNvbicsICdQcmludHMgdGhlIHRlc3QgcmVzdWx0cyBpbiBKU09OLicpXG4gIC5vcHRpb24oJy0tbGFzdENvbW1pdCcsICdSdW4gYWxsIHRlc3RzIGFmZmVjdGVkIGJ5IGZpbGUgY2hhbmdlcyBpbiB0aGUgbGFzdCBjb21taXQgbWFkZS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tbGlzdFRlc3RzJywgJ0xpc3RzIGFsbCB0ZXN0cyBhcyBKU09OIHRoYXQgSmVzdCB3aWxsIHJ1biBnaXZlbiB0aGUgYXJndW1lbnRzLCBhbmQgZXhpdHMuJylcbiAgLm9wdGlvbignLS1sb2dIZWFwVXNhZ2UnLCAnTG9ncyB0aGUgaGVhcCB1c2FnZSBhZnRlciBldmVyeSB0ZXN0LicpXG4gIC5vcHRpb24oJy0tbWF4V29ya2VycyA8bnVtPicsICdTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgdGhlIHdvcmtlci1wb29sIHdpbGwgc3Bhd24gZm9yIHJ1bm5pbmcgdGVzdHMuICcpXG4gIC5vcHRpb24oJy0tbm9TdGFja1RyYWNlJywgJ0Rpc2FibGVzIHN0YWNrIHRyYWNlIGluIHRlc3QgcmVzdWx0cyBvdXRwdXQuJylcbiAgLm9wdGlvbignLS1ub3RpZnknLCAnQWN0aXZhdGVzIG5vdGlmaWNhdGlvbnMgZm9yIHRlc3QgcmVzdWx0cy4nKVxuICAub3B0aW9uKCctLW9ubHlDaGFuZ2VkJywgJ3VuIGJhc2VkIG9uIHdoaWNoIGZpbGVzIGhhdmUgY2hhbmdlZCBpbiB0aGUgY3VycmVudCByZXBvc2l0b3J5LiAnKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPGZpbGVuYW1lPicsICdXcml0ZSB0ZXN0IHJlc3VsdHMgdG8gYSBmaWxlIHdoZW4gdGhlIC0tanNvbiBvcHRpb24gaXMgYWxzbyBzcGVjaWZpZWQuJylcbiAgLm9wdGlvbignLS1wYXNzV2l0aE5vVGVzdHMnLCAnQWxsb3dzIHRoZSB0ZXN0IHN1aXRlIHRvIHBhc3Mgd2hlbiBubyBmaWxlcyBhcmUgZm91bmQuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcnVuSW5CYW5kJywgJ1J1biBhbGwgdGVzdHMgc2VyaWFsbHkgaW4gdGhlIGN1cnJlbnQgcHJvY2VzcywgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSB3b3JrZXIgcG9vbCBvZiBjaGlsZCBwcm9jZXNzZXMgdGhhdCBydW4gdGVzdHMuJylcbiAgLm9wdGlvbignLS1zZXR1cCA8cGF0aD4nLCAnSmVzdCBzZXR1cCBmaWxlIHBhdGguJylcbiAgLm9wdGlvbignLS1zaG93Q29uZmlnJywgJ1ByaW50IHlvdXIgSmVzdCBjb25maWcgYW5kIHRoZW4gZXhpdHMuJylcbiAgLm9wdGlvbignLS1zaWxlbnQnLCAnUHJldmVudCB0ZXN0cyBmcm9tIHByaW50aW5nIG1lc3NhZ2VzIHRocm91Z2ggdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10ZXN0TG9jYXRpb25JblJlc3VsdHMnLCAnQWRkcyBhIGxvY2F0aW9uIGZpZWxkIHRvIHRlc3QgcmVzdWx0cy4nKVxuICAub3B0aW9uKCctLXRlc3ROYW1lUGF0dGVybiA8cmVnZXg+JywgJ1J1biBvbmx5IHRlc3RzIHdpdGggYSBuYW1lIHRoYXQgbWF0Y2hlcyB0aGUgcmVnZXguICcpXG4gIC5vcHRpb24oJy0tdGVzdFBhdGhQYXR0ZXJuIDxyZWdleD4nLCAnQSByZWdleHAgcGF0dGVybiBzdHJpbmcgdGhhdCBpcyBtYXRjaGVkIGFnYWluc3QgYWxsIHRlc3RzIHBhdGhzIGJlZm9yZSBleGVjdXRpbmcgdGhlIHRlc3QuJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tdXBkYXRlJywgJ1VwZGF0ZSBzbmFwc2hvdHMuIFJ1bnMgXCJqZXN0IC0tdXBkYXRlU25hcHNob3RzXCInKVxuICAub3B0aW9uKCctLXVzZVN0ZGVycicsICdEaXZlcnQgYWxsIG91dHB1dCB0byBzdGRlcnIuJylcbiAgLm9wdGlvbignLS12ZXJib3NlJywgJ0Rpc3BsYXkgaW5kaXZpZHVhbCB0ZXN0IHJlc3VsdHMgd2l0aCB0aGUgdGVzdCBzdWl0ZSBoaWVyYXJjaHkuJylcbiAgLm9wdGlvbignLS13YXRjaCA8cGF0aD4nLCAnV2F0Y2ggZmlsZXMgZm9yIGNoYW5nZXMgYW5kIHJlcnVuIHRlc3RzIHJlbGF0ZWQgdG8gY2hhbmdlZCBmaWxlcy4nKVxuICAub3B0aW9uKCctLXdhdGNoQWxsJywgJ1dhdGNoIGZpbGVzIGZvciBjaGFuZ2VzIGFuZCByZXJ1biBhbGwgdGVzdHMgd2hlbiBzb21ldGhpbmcgY2hhbmdlcy4nKVxuICAuYWN0aW9uKChmaWxlcywgb3B0aW9ucywgY21kKSA9PiB0ZXN0KG9wdGlvbnMsIGNtZC5hcmdzLCBmaWxlcywgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndXBkYXRlJylcbiAgLm9wdGlvbignLS1pbnRlcmFjdGl2ZScsICdDaG9vc2Ugd2hpY2ggcGFja2FnZXMgdG8gdXBkYXRlLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVnaXN0cnknLCAnQWRkIGEgY3VzdG9tIHJlZ2lzdHJ5IHVybC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHVwZGF0ZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3VwZ3JhZGUnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IHVwZ3JhZGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdhaScpXG4gIC5vcHRpb24oJy0tY29udGV4dCcsICdJbmNsdWRlIHByb2plY3QgY29udGV4dCBpbiB0aGUgQUkgcHJvbXB0LicsIHRydWUpXG4gIC5vcHRpb24oJy0tZmlsZSA8cGF0aD4nLCAnU3BlY2lmaWMgZmlsZSB0byBvcGVyYXRlIG9uLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1tb2RlbCA8bW9kZWw+JywgJ0FJIG1vZGVsIHRvIHVzZS4gRGVmYXVsdDogZ3B0LTRvLicpXG4gIC5vcHRpb24oJy0tcHJvbXB0IDx0ZXh0PicsICdUaGUgcHJvbXB0IHRvIHNlbmQgdG8gdGhlIEFJLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdGFzayA8dGFzaz4nLCAnVHlwZSBvZiBBSSB0YXNrIHRvIHBlcmZvcm0uJykuY2hvaWNlcyhbJ2dlbmVyYXRlJywgJ2V4cGxhaW4nLCAndGVzdCcsICdvcHRpbWl6ZScsICdoZWxwJ10pLmRlZmF1bHQoJ2hlbHAnKSlcbiAgLmFjdGlvbigoY21kKSA9PiBhaUZ1bmN0aW9uKGNtZCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3ZlcnNpb25zJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50IHRoZSB2ZXJzaW9uIGFzIGEgSlNPTiBvYmplY3QuJylcbiAgLmFjdGlvbigoY21kKSA9PiB2ZXJzaW9ucyhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtXG4gIC52ZXJzaW9uKHBhY2thZ2VKc29uLnZlcnNpb24pXG4gIC5wYXJzZShwcm9jZXNzLmFyZ3YpOyJdLCJuYW1lcyI6WyJPcHRpb24iLCJwcm9ncmFtIiwicmVhZEZpbGVTeW5jIiwiY3JlYXRlUmVxdWlyZSIsImRpcm5hbWUiLCJyZXNvbHZlIiwiZmlsZVVSTFRvUGF0aCIsImFpRnVuY3Rpb24iLCJidWlsZCIsImNsZWFuIiwiY29tcGlsZSIsImNvbmZpZyIsImNyZWF0ZSIsImRldiIsImluaXQiLCJsaW5rZWQiLCJsaW50IiwibWlncmF0ZSIsInB1Ymxpc2giLCJzZXJ2ZXJsZXNzIiwic3Rvcnlib29rIiwidGVzdCIsInVwZGF0ZSIsInVwZ3JhZGUiLCJ2ZXJzaW9ucyIsInByb2Nlc3MiLCJlbnYiLCJMRVhfUk9PVCIsInVybCIsImxleE5vZGVNb2R1bGVzIiwiTk9ERV9QQVRIIiwic3BsaXQiLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJNb2R1bGUiLCJfaW5pdFBhdGhzIiwicGFja2FnZVBhdGgiLCJVUkwiLCJwYWNrYWdlSnNvbiIsIkpTT04iLCJwYXJzZSIsImNvbW1hbmQiLCJvcHRpb24iLCJhZGRPcHRpb24iLCJjaG9pY2VzIiwiZGVmYXVsdCIsImFjdGlvbiIsImNtZCIsImV4aXQiLCJ0aGVuIiwidHlwZSIsImFwcE5hbWUiLCJwYWNrYWdlTmFtZSIsImZpbGVzIiwib3B0aW9ucyIsImFyZ3MiLCJ2ZXJzaW9uIiwiYXJndiJdLCJtYXBwaW5ncyI6IjtBQUNBOzs7Q0FHQyxHQUNELFNBQVFBLE1BQU0sRUFBRUMsT0FBTyxRQUFPLFlBQVk7QUFDMUMsU0FBUUMsWUFBWSxRQUFPLEtBQUs7QUFDaEMsU0FBUUMsYUFBYSxRQUFPLFNBQVM7QUFDckMsU0FBUUMsT0FBTyxFQUFFQyxPQUFPLFFBQU8sT0FBTztBQUN0QyxTQUFRQyxhQUFhLFFBQU8sTUFBTTtBQUVsQyxTQUFRQyxVQUFVLFFBQU8sc0JBQXNCO0FBQy9DLFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFDaEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxPQUFPLFFBQU8sZ0NBQWdDO0FBQ3RELFNBQVFDLE1BQU0sUUFBTyw4QkFBOEI7QUFDbkQsU0FBUUMsTUFBTSxRQUFPLDhCQUE4QjtBQUNuRCxTQUFRQyxHQUFHLFFBQU8sd0JBQXdCO0FBQzFDLFNBQVFDLElBQUksUUFBTywwQkFBMEI7QUFDN0MsU0FBUUMsTUFBTSxRQUFPLDBCQUEwQjtBQUMvQyxTQUFRQyxJQUFJLFFBQU8sMEJBQTBCO0FBQzdDLFNBQVFDLE9BQU8sUUFBTyxnQ0FBZ0M7QUFDdEQsU0FBUUMsT0FBTyxRQUFPLGdDQUFnQztBQUN0RCxTQUFRQyxVQUFVLFFBQU8sc0NBQXNDO0FBQy9ELFNBQVFDLFNBQVMsUUFBTyxvQ0FBb0M7QUFDNUQsU0FBUUMsSUFBSSxRQUFPLDBC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
|
package/lib/storybook/index.js
CHANGED
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ export { };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yeWJvb2svaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmV4cG9ydCB0eXBlIHtNZXRhLCBTdG9yeU9iaiwgU3RvcnlGbn0gZnJvbSAnQHN0b3J5Ym9vay9yZWFjdCc7Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFdBQThEIn0=
|
package/lib/test-react/index.js
CHANGED
|
@@ -1,84 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
within,
|
|
9
|
-
getByRole,
|
|
10
|
-
getByLabelText,
|
|
11
|
-
getByPlaceholderText,
|
|
12
|
-
getByText,
|
|
13
|
-
getByTestId,
|
|
14
|
-
getAllByRole,
|
|
15
|
-
getAllByLabelText,
|
|
16
|
-
getAllByPlaceholderText,
|
|
17
|
-
getAllByText,
|
|
18
|
-
getAllByTestId,
|
|
19
|
-
queryByRole,
|
|
20
|
-
queryByLabelText,
|
|
21
|
-
queryByPlaceholderText,
|
|
22
|
-
queryByText,
|
|
23
|
-
queryByTestId,
|
|
24
|
-
queryAllByRole,
|
|
25
|
-
queryAllByLabelText,
|
|
26
|
-
queryAllByPlaceholderText,
|
|
27
|
-
queryAllByText,
|
|
28
|
-
queryAllByTestId,
|
|
29
|
-
findByRole,
|
|
30
|
-
findByLabelText,
|
|
31
|
-
findByPlaceholderText,
|
|
32
|
-
findByText,
|
|
33
|
-
findByTestId,
|
|
34
|
-
findAllByRole,
|
|
35
|
-
findAllByLabelText,
|
|
36
|
-
findAllByPlaceholderText,
|
|
37
|
-
findAllByText,
|
|
38
|
-
findAllByTestId,
|
|
39
|
-
renderHook,
|
|
40
|
-
act,
|
|
41
|
-
cleanup
|
|
42
|
-
} from "@testing-library/react";
|
|
43
|
-
export {
|
|
44
|
-
act,
|
|
45
|
-
cleanup,
|
|
46
|
-
findAllByLabelText,
|
|
47
|
-
findAllByPlaceholderText,
|
|
48
|
-
findAllByRole,
|
|
49
|
-
findAllByTestId,
|
|
50
|
-
findAllByText,
|
|
51
|
-
findByLabelText,
|
|
52
|
-
findByPlaceholderText,
|
|
53
|
-
findByRole,
|
|
54
|
-
findByTestId,
|
|
55
|
-
findByText,
|
|
56
|
-
fireEvent,
|
|
57
|
-
getAllByLabelText,
|
|
58
|
-
getAllByPlaceholderText,
|
|
59
|
-
getAllByRole,
|
|
60
|
-
getAllByTestId,
|
|
61
|
-
getAllByText,
|
|
62
|
-
getByLabelText,
|
|
63
|
-
getByPlaceholderText,
|
|
64
|
-
getByRole,
|
|
65
|
-
getByTestId,
|
|
66
|
-
getByText,
|
|
67
|
-
queryAllByLabelText,
|
|
68
|
-
queryAllByPlaceholderText,
|
|
69
|
-
queryAllByRole,
|
|
70
|
-
queryAllByTestId,
|
|
71
|
-
queryAllByText,
|
|
72
|
-
queryByLabelText,
|
|
73
|
-
queryByPlaceholderText,
|
|
74
|
-
queryByRole,
|
|
75
|
-
queryByTestId,
|
|
76
|
-
queryByText,
|
|
77
|
-
render,
|
|
78
|
-
renderHook,
|
|
79
|
-
screen,
|
|
80
|
-
waitFor,
|
|
81
|
-
waitForElementToBeRemoved,
|
|
82
|
-
within
|
|
83
|
-
};
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3Rlc3QtcmVhY3QvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nO1xuXG5leHBvcnQge1xuICByZW5kZXIsXG4gIHNjcmVlbixcbiAgZmlyZUV2ZW50LFxuICB3YWl0Rm9yLFxuICB3YWl0Rm9yRWxlbWVudFRvQmVSZW1vdmVkLFxuICB3aXRoaW4sXG4gIGdldEJ5Um9sZSxcbiAgZ2V0QnlMYWJlbFRleHQsXG4gIGdldEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBnZXRCeVRleHQsXG4gIGdldEJ5VGVzdElkLFxuICBnZXRBbGxCeVJvbGUsXG4gIGdldEFsbEJ5TGFiZWxUZXh0LFxuICBnZXRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QWxsQnlUZXh0LFxuICBnZXRBbGxCeVRlc3RJZCxcbiAgcXVlcnlCeVJvbGUsXG4gIHF1ZXJ5QnlMYWJlbFRleHQsXG4gIHF1ZXJ5QnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QnlUZXh0LFxuICBxdWVyeUJ5VGVzdElkLFxuICBxdWVyeUFsbEJ5Um9sZSxcbiAgcXVlcnlBbGxCeUxhYmVsVGV4dCxcbiAgcXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgcXVlcnlBbGxCeVRleHQsXG4gIHF1ZXJ5QWxsQnlUZXN0SWQsXG4gIGZpbmRCeVJvbGUsXG4gIGZpbmRCeUxhYmVsVGV4dCxcbiAgZmluZEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQnlUZXh0LFxuICBmaW5kQnlUZXN0SWQsXG4gIGZpbmRBbGxCeVJvbGUsXG4gIGZpbmRBbGxCeUxhYmVsVGV4dCxcbiAgZmluZEFsbEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQWxsQnlUZXh0LFxuICBmaW5kQWxsQnlUZXN0SWQsXG4gIHJlbmRlckhvb2ssXG4gIGFjdCxcbiAgY2xlYW51cFxufSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JzsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPO0FBRVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import '@testing-library/jest-dom';
|
|
5
|
+
export { render, screen, fireEvent, waitFor, waitForElementToBeRemoved, within, getByRole, getByLabelText, getByPlaceholderText, getByText, getByTestId, getAllByRole, getAllByLabelText, getAllByPlaceholderText, getAllByText, getAllByTestId, queryByRole, queryByLabelText, queryByPlaceholderText, queryByText, queryByTestId, queryAllByRole, queryAllByLabelText, queryAllByPlaceholderText, queryAllByText, queryAllByTestId, findByRole, findByLabelText, findByPlaceholderText, findByText, findByTestId, findAllByRole, findAllByLabelText, findAllByPlaceholderText, findAllByText, findAllByTestId, renderHook, act, cleanup } from '@testing-library/react';
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXJlYWN0L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nO1xuXG5leHBvcnQge1xuICByZW5kZXIsXG4gIHNjcmVlbixcbiAgZmlyZUV2ZW50LFxuICB3YWl0Rm9yLFxuICB3YWl0Rm9yRWxlbWVudFRvQmVSZW1vdmVkLFxuICB3aXRoaW4sXG4gIGdldEJ5Um9sZSxcbiAgZ2V0QnlMYWJlbFRleHQsXG4gIGdldEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBnZXRCeVRleHQsXG4gIGdldEJ5VGVzdElkLFxuICBnZXRBbGxCeVJvbGUsXG4gIGdldEFsbEJ5TGFiZWxUZXh0LFxuICBnZXRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QWxsQnlUZXh0LFxuICBnZXRBbGxCeVRlc3RJZCxcbiAgcXVlcnlCeVJvbGUsXG4gIHF1ZXJ5QnlMYWJlbFRleHQsXG4gIHF1ZXJ5QnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QnlUZXh0LFxuICBxdWVyeUJ5VGVzdElkLFxuICBxdWVyeUFsbEJ5Um9sZSxcbiAgcXVlcnlBbGxCeUxhYmVsVGV4dCxcbiAgcXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgcXVlcnlBbGxCeVRleHQsXG4gIHF1ZXJ5QWxsQnlUZXN0SWQsXG4gIGZpbmRCeVJvbGUsXG4gIGZpbmRCeUxhYmVsVGV4dCxcbiAgZmluZEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQnlUZXh0LFxuICBmaW5kQnlUZXN0SWQsXG4gIGZpbmRBbGxCeVJvbGUsXG4gIGZpbmRBbGxCeUxhYmVsVGV4dCxcbiAgZmluZEFsbEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQWxsQnlUZXh0LFxuICBmaW5kQWxsQnlUZXN0SWQsXG4gIHJlbmRlckhvb2ssXG4gIGFjdCxcbiAgY2xlYW51cFxufSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JzsiXSwibmFtZXMiOlsicmVuZGVyIiwic2NyZWVuIiwiZmlyZUV2ZW50Iiwid2FpdEZvciIsIndhaXRGb3JFbGVtZW50VG9CZVJlbW92ZWQiLCJ3aXRoaW4iLCJnZXRCeVJvbGUiLCJnZXRCeUxhYmVsVGV4dCIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwiZ2V0QnlUZXh0IiwiZ2V0QnlUZXN0SWQiLCJnZXRBbGxCeVJvbGUiLCJnZXRBbGxCeUxhYmVsVGV4dCIsImdldEFsbEJ5UGxhY2Vob2xkZXJUZXh0IiwiZ2V0QWxsQnlUZXh0IiwiZ2V0QWxsQnlUZXN0SWQiLCJxdWVyeUJ5Um9sZSIsInF1ZXJ5QnlMYWJlbFRleHQiLCJxdWVyeUJ5UGxhY2Vob2xkZXJUZXh0IiwicXVlcnlCeVRleHQiLCJxdWVyeUJ5VGVzdElkIiwicXVlcnlBbGxCeVJvbGUiLCJxdWVyeUFsbEJ5TGFiZWxUZXh0IiwicXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCIsInF1ZXJ5QWxsQnlUZXh0IiwicXVlcnlBbGxCeVRlc3RJZCIsImZpbmRCeVJvbGUiLCJmaW5kQnlMYWJlbFRleHQiLCJmaW5kQnlQbGFjZWhvbGRlclRleHQiLCJmaW5kQnlUZXh0IiwiZmluZEJ5VGVzdElkIiwiZmluZEFsbEJ5Um9sZSIsImZpbmRBbGxCeUxhYmVsVGV4dCIsImZpbmRBbGxCeVBsYWNlaG9sZGVyVGV4dCIsImZpbmRBbGxCeVRleHQiLCJmaW5kQWxsQnlUZXN0SWQiLCJyZW5kZXJIb29rIiwiYWN0IiwiY2xlYW51cCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBTyw0QkFBNEI7QUFFbkMsU0FDRUEsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsT0FBTyxFQUNQQyx5QkFBeUIsRUFDekJDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLG9CQUFvQixFQUNwQkMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsaUJBQWlCLEVBQ2pCQyx1QkFBdUIsRUFDdkJDLFlBQVksRUFDWkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsc0JBQXNCLEVBQ3RCQyxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLHlCQUF5QixFQUN6QkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLFVBQVUsRUFDVkMsZUFBZSxFQUNmQyxxQkFBcUIsRUFDckJDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGtCQUFrQixFQUNsQkMsd0JBQXdCLEVBQ3hCQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxHQUFHLEVBQ0hDLE9BQU8sUUFDRix5QkFBeUIifQ==
|
package/lib/types.d.ts
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
3
|
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
4
|
*/
|
|
5
|
-
export type { AIConfig, Config,
|
|
5
|
+
export type { AIConfig, Config, JestConfig, LexConfigType, SWCConfig, WebpackConfig } from './LexConfig.js';
|
package/lib/types.js
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ // Re-export all types from LexConfig
|
|
5
|
+
export { };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG4vLyBSZS1leHBvcnQgYWxsIHR5cGVzIGZyb20gTGV4Q29uZmlnXG5leHBvcnQgdHlwZSB7XG4gIEFJQ29uZmlnLFxuICBDb25maWcsXG4gIEplc3RDb25maWcsXG4gIExleENvbmZpZ1R5cGUsXG4gIFNXQ0NvbmZpZyxcbiAgV2VicGFja0NvbmZpZ1xufSBmcm9tICcuL0xleENvbmZpZy5qcyc7Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVELHFDQUFxQztBQUNyQyxXQU93QiJ9
|