├── .gitignore ├── .gitattributes ├── index.ts ├── scripts ├── getChange.sh └── build.sh ├── .gitmodules ├── example ├── shaders │ ├── life │ │ ├── vert.glsl │ │ └── frag.glsl │ ├── particle │ │ └── vert │ │ │ ├── header.glsl │ │ │ └── main.glsl │ ├── position │ │ ├── vert.glsl │ │ └── frag.glsl │ ├── velocity │ │ ├── vert.glsl │ │ └── frag.glsl │ └── curl │ │ ├── frag.glsl │ │ └── vert.glsl ├── lights.js ├── index.html ├── setup.js └── main.js ├── CHANGELOG.md ├── tsconfig.json ├── LICENSE ├── package.json ├── rollup.config.js ├── .github └── workflows │ └── main.yml ├── src ├── MultipassShaderHelper.ts └── GPUComputationRenderer.js ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | build/* linguist-vendored 2 | example/* linguist-vendored -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | export { MultipassShaderHelper } from "./src/MultipassShaderHelper"; 2 | -------------------------------------------------------------------------------- /scripts/getChange.sh: -------------------------------------------------------------------------------- 1 | awk -v version="$1" '/## Version / {printit = $3 == version}; printit;' "$2" -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "example/lib/glNoise"] 2 | path = example/lib/glNoise 3 | url = https://github.com/FarazzShaikh/glNoise.git 4 | -------------------------------------------------------------------------------- /example/shaders/life/vert.glsl: -------------------------------------------------------------------------------- 1 | varying vec2 vUv; 2 | 3 | void main() { 4 | vUv = uv; 5 | gl_Position = vec4(position, 1.0); 6 | } -------------------------------------------------------------------------------- /example/shaders/particle/vert/header.glsl: -------------------------------------------------------------------------------- 1 | varying vec2 vUv; 2 | uniform sampler2D positionField; 3 | uniform float uTime; 4 | varying vec3 vPosition; 5 | -------------------------------------------------------------------------------- /example/shaders/particle/vert/main.glsl: -------------------------------------------------------------------------------- 1 | 2 | vUv = uv; 3 | 4 | vec3 p = texture2D(positionField, uv).xyz; 5 | 6 | csm_Position = p; 7 | vPosition = p; -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | rollup -c 2 | rm -rf build/types 3 | mkdir -p example/build 4 | cp build/MultipassShaderHelper.cdn.js example/build/MultipassShaderHelper.cdn.js -------------------------------------------------------------------------------- /example/shaders/position/vert.glsl: -------------------------------------------------------------------------------- 1 | varying vec2 vUv; 2 | varying vec3 vPosition; 3 | 4 | void main() { 5 | vUv = uv; 6 | vPosition = position; 7 | gl_Position = vec4(position, 1.0); 8 | } -------------------------------------------------------------------------------- /example/shaders/velocity/vert.glsl: -------------------------------------------------------------------------------- 1 | varying vec2 vUv; 2 | varying vec3 vPosition; 3 | 4 | void main() { 5 | vUv = uv; 6 | vPosition = position; 7 | gl_Position = vec4(position, 1.0); 8 | } -------------------------------------------------------------------------------- /example/shaders/curl/frag.glsl: -------------------------------------------------------------------------------- 1 | varying vec3 vColor; 2 | varying vec2 vUv; 3 | 4 | void main() { 5 | vec3 p = texture2D(positionField, vUv).xyz; 6 | vec3 n = gln_curl(p * 0.1); 7 | 8 | gl_FragColor = vec4(n, 1.0); // 9 | } -------------------------------------------------------------------------------- /example/shaders/curl/vert.glsl: -------------------------------------------------------------------------------- 1 | varying vec3 vColor; 2 | varying vec2 vUv; 3 | 4 | void main() { 5 | vUv = uv; 6 | 7 | vec3 n = gln_curl(position * 5.0); 8 | vColor = n; 9 | 10 | gl_Position = vec4(position, 1.0); 11 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## Version 1.0.0 9 | 10 | - Initial Release 11 | -------------------------------------------------------------------------------- /example/shaders/velocity/frag.glsl: -------------------------------------------------------------------------------- 1 | varying vec2 vUv; 2 | uniform float uDelta; 3 | uniform vec3 uAccleration; 4 | 5 | void main() { 6 | vec3 p = texture2D(positionField, vUv).xyz; 7 | vec3 tv = texture2D(velocityField, vUv).xyz; 8 | 9 | vec3 v = tv; 10 | v += uAccleration * uDelta; 11 | 12 | gl_FragColor = vec4(v, 1.0); // 13 | } -------------------------------------------------------------------------------- /example/shaders/life/frag.glsl: -------------------------------------------------------------------------------- 1 | 2 | uniform float uDelta; 3 | varying vec2 vUv; 4 | 5 | void main() { 6 | vec3 p = texture2D(positionField, vUv).xyz; 7 | vec3 tl = texture2D(lifeField, vUv).xyz; 8 | 9 | float l = tl.x - (uDelta * 0.05); 10 | 11 | // if (distance(vec3(0.0), p) <= 0.1) 12 | // l = 1.0; 13 | 14 | gl_FragColor = vec4(vec3(l), 1.0); // 15 | } -------------------------------------------------------------------------------- /example/shaders/position/frag.glsl: -------------------------------------------------------------------------------- 1 | varying vec2 vUv; 2 | uniform float uDelta; 3 | 4 | void main() { 5 | vec3 tp = texture2D(positionField, vUv).xyz; 6 | vec3 v = texture2D(velocityField, vUv).xyz; 7 | vec3 f = texture2D(flowField, vUv).xyz; 8 | 9 | vec3 p = tp; 10 | p += (v * f) * uDelta; 11 | 12 | float w = 15.0; 13 | 14 | if (p.x > w) { 15 | p.x = -0.0; 16 | } else if (p.x < -w) { 17 | p.x = 0.0; 18 | } 19 | 20 | if (p.y > w) { 21 | p.y = -0.0; 22 | } else if (p.y < -w) { 23 | p.y = 0.0; 24 | } 25 | 26 | if (p.z > w) { 27 | p.z = -0.0; 28 | } else if (p.z < -w) { 29 | p.z = 0.0; 30 | } 31 | 32 | gl_FragColor = vec4(p, 1.0); // 33 | } -------------------------------------------------------------------------------- /example/lights.js: -------------------------------------------------------------------------------- 1 | import * as THREE from "https://cdn.skypack.dev/three"; 2 | 3 | export default function lights(scene) { 4 | const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5, 100); 5 | const light = new THREE.HemisphereLight(0xffffff, 0xffffff, 0.9); 6 | 7 | scene.add(light); 8 | scene.add(directionalLight); 9 | 10 | directionalLight.position.set(8, 8, 2); 11 | directionalLight.castShadow = true; 12 | 13 | directionalLight.shadow.mapSize.width = 512; // default 14 | directionalLight.shadow.mapSize.height = 512; // default 15 | directionalLight.shadow.camera.near = 0.5; // default 16 | directionalLight.shadow.camera.far = 500; 17 | 18 | return { light, directionalLight }; 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // project options 4 | "lib":["es5", "es6", "dom"], 5 | "outDir": "build", 6 | "module": "esnext", 7 | "target": "ES2018", 8 | "declaration": true, 9 | "declarationDir": "build/types", 10 | 11 | // Strict Checks 12 | "alwaysStrict": true, 13 | "allowUnreachableCode": false, 14 | "noImplicitAny": true, 15 | "noImplicitReturns": true, 16 | "noUncheckedIndexedAccess": true, 17 | "noUnusedLocals": true, 18 | "noUnusedParameters": true, 19 | "moduleResolution": "Node", 20 | "allowJs": true, 21 | "checkJs": false 22 | }, 23 | "include": ["src/**/*", "index.ts"], 24 | "exclude": [ 25 | "node_modules/**/*" 26 | ] 27 | } -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Multipass Shader Helper | Example 8 | 34 | 35 | 36 |
Particles via Curl Noise.
37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Faraz Shaikh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "three-multipass-shader-helper", 3 | "version": "1.0.0", 4 | "description": "Create multi-pass shaders in ThreeJS, intuitively.", 5 | "main": "build/MultipassShaderHelper.js", 6 | "type": "module", 7 | "types": "build/MultipassShaderHelper.d.ts", 8 | "scripts": { 9 | "build": "chmod +x scripts/build.sh && ./scripts/build.sh" 10 | }, 11 | "keywords": [ 12 | "glsl", 13 | "shader", 14 | "webgl", 15 | "threejs", 16 | "3d" 17 | ], 18 | "repository": { 19 | "type": "git", 20 | "url": "https://github.com/FarazzShaikh/THREE-MultipassShaderHelper" 21 | }, 22 | "homepage": "https://github.com/FarazzShaikh/THREE-MultipassShaderHelper", 23 | "author": "Faraz Shaikh", 24 | "license": "MIT", 25 | "files": [ 26 | "build/*", 27 | "README.md", 28 | "package.json" 29 | ], 30 | "dependencies": { 31 | "three": "^0.132.2" 32 | }, 33 | "devDependencies": { 34 | "@types/node": "^15.0.3", 35 | "@types/node-fetch": "^2.5.10", 36 | "@types/three": "^0.131.0", 37 | "rollup": "^2.46.0", 38 | "rollup-plugin-cleanup": "^3.2.1", 39 | "rollup-plugin-dts": "^3.0.2", 40 | "rollup-plugin-typescript2": "^0.30.0", 41 | "tslib": "^2.2.0", 42 | "typescript": "^4.2.4" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from "rollup-plugin-typescript2"; 2 | import dts from "rollup-plugin-dts"; 3 | import cleanup from "rollup-plugin-cleanup"; 4 | 5 | const tscOpts = { 6 | useTsconfigDeclarationDir: true, 7 | }; 8 | 9 | export default [ 10 | { 11 | input: "index.ts", 12 | output: { 13 | file: "build/MultipassShaderHelper.js", 14 | format: "es", 15 | }, 16 | external: ["three"], 17 | plugins: [typescript(tscOpts), cleanup()], 18 | }, 19 | { 20 | input: "index.ts", 21 | output: { 22 | file: "build/MultipassShaderHelper.browser.js", 23 | format: "iife", 24 | name: "MultipassShaderHelper", 25 | globals: { 26 | three: "THREE", 27 | }, 28 | }, 29 | external: ["three"], 30 | plugins: [typescript(tscOpts), cleanup()], 31 | }, 32 | 33 | { 34 | input: "index.ts", 35 | output: { 36 | sourcemap: true, 37 | file: "build/MultipassShaderHelper.cdn.js", 38 | format: "es", 39 | paths: { 40 | three: "https://cdn.skypack.dev/three", 41 | }, 42 | }, 43 | external: ["three"], 44 | plugins: [typescript(tscOpts), cleanup()], 45 | }, 46 | 47 | { 48 | input: "build/types/index.d.ts", 49 | output: [ 50 | { 51 | file: "build/MultipassShaderHelper.d.ts", 52 | format: "es", 53 | }, 54 | ], 55 | external: ["three"], 56 | plugins: [dts()], 57 | }, 58 | ]; 59 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Main 🧠 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | build-and-deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout repo 11 | uses: actions/checkout@v2 12 | with: 13 | submodules: "true" 14 | 15 | - name: Build 16 | run: | 17 | yarn install 18 | yarn build 19 | 20 | - name: Publish 21 | uses: JamesIves/github-pages-deploy-action@4.1.1 22 | with: 23 | branch: gh-pages 24 | folder: example 25 | 26 | - name: Publish to NPM 27 | uses: JS-DevTools/npm-publish@v1 28 | id: publish 29 | if: ${{ env.deployment_status != 'failed' }} 30 | with: 31 | token: ${{ secrets.NPM_TOKEN }} 32 | 33 | - name: Get changes from changelog 34 | if: ${{ steps.publish.outputs.type != 'none' }} 35 | run: | 36 | chmod +x scripts/getChange.sh 37 | ./scripts/getChange.sh ${{steps.publish.outputs.version}} CHANGELOG.md > CHANGELOG.txt 38 | 39 | - name: Release on GitHub 40 | uses: softprops/action-gh-release@v1 41 | if: ${{ steps.publish.outputs.type != 'none' }} 42 | with: 43 | body_path: CHANGELOG.txt 44 | files: build/* 45 | tag_name: ${{steps.publish.outputs.version}} 46 | env: 47 | GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} 48 | 49 | - name: Push changes 50 | uses: ad-m/github-push-action@master 51 | with: 52 | github_token: ${{ secrets.GITHUB_TOKEN }} 53 | branch: ${{ github.ref }} 54 | -------------------------------------------------------------------------------- /example/setup.js: -------------------------------------------------------------------------------- 1 | import * as THREE from "https://cdn.skypack.dev/three"; 2 | import { OrbitControls } from "https://cdn.skypack.dev/three/examples/jsm/controls/OrbitControls.js"; 3 | 4 | let renderer, scene, camera, controls; 5 | 6 | /** 7 | * 8 | * @returns {THREE.Scene} 9 | */ 10 | export function initScene() { 11 | // Creating a scene 12 | scene = new THREE.Scene(); 13 | 14 | // Defining options 15 | const fov = 45; 16 | const aspectRatio = window.innerWidth / window.innerHeight; 17 | const nearPlane = 0.1; 18 | const farPlane = 1000; 19 | 20 | // Creating a camera 21 | camera = new THREE.PerspectiveCamera(fov, aspectRatio, nearPlane, farPlane); 22 | 23 | camera.position.set(5, 7, 5); 24 | camera.lookAt(0, 0, 0); 25 | 26 | // Creating a Renderer 27 | renderer = new THREE.WebGLRenderer({ 28 | antialias: true, // 👈 Enable Antialiasing 29 | alpha: true, 30 | }); 31 | renderer.shadowMap.enabled = true; 32 | renderer.shadowMap.type = THREE.PCFSoftShadowMap; // default THREE.PCFShadowMap 33 | 34 | // Setting the Renderer's size to the entire window 35 | renderer.setSize(window.innerWidth, window.innerHeight); 36 | 37 | // Append Renderer to the body 38 | document.body.appendChild(renderer.domElement); 39 | 40 | controls = new OrbitControls(camera, renderer.domElement); 41 | controls.enableDamping = true; // Enables inertia on the camera making it come to a more gradual stop. 42 | controls.dampingFactor = 0.25; // Inertia factor 43 | 44 | return { scene, renderer, camera, controls }; 45 | } 46 | 47 | export function initHelpers() { 48 | const size = 10; 49 | const divisions = 10; 50 | 51 | const gridHelper = new THREE.GridHelper(size, divisions); 52 | scene.add(gridHelper); 53 | 54 | const axesHelper = new THREE.AxesHelper(5); 55 | scene.add(axesHelper); 56 | } 57 | 58 | /** 59 | * 60 | * @param {number} dt 61 | * @param {Function} callback 62 | */ 63 | export function render(dt, callback, noRender) { 64 | callback(dt); 65 | controls.update(); 66 | 67 | if (!noRender) renderer.render(scene, camera); 68 | requestAnimationFrame((dt) => render(dt, callback, noRender)); 69 | } 70 | -------------------------------------------------------------------------------- /src/MultipassShaderHelper.ts: -------------------------------------------------------------------------------- 1 | import * as THREE from "three"; 2 | import { GPUComputationRenderer } from "./GPUComputationRenderer"; 3 | 4 | type TPass = { 5 | vertexShader: string; 6 | fragmentShader: string; 7 | uniforms: { 8 | [key: string]: THREE.IUniform; 9 | }; 10 | onLoadTexture: (texture: THREE.DataTexture) => void; 11 | }; 12 | 13 | type TPasses = { 14 | [key: string]: TPass; 15 | }; 16 | 17 | export class MultipassShaderHelper extends GPUComputationRenderer { 18 | static Dependency = class Dependency {}; 19 | 20 | textures: { 21 | [key: string]: () => THREE.DataTexture[]; 22 | } = {}; 23 | 24 | allVariables: { 25 | [key: string]: any; 26 | } = {}; 27 | 28 | constructor( 29 | renderer: THREE.WebGLRenderer, 30 | passes: TPasses, 31 | width: number = 512, 32 | height: number = 512 33 | ) { 34 | super(width, height, renderer); 35 | 36 | Object.keys(passes).forEach((name) => { 37 | const pass = passes[name]; 38 | 39 | // Texture 40 | const texture = this.createTexture(); 41 | if (pass.onLoadTexture) pass.onLoadTexture(texture); 42 | 43 | // Variable 44 | const variable = this.addVariable( 45 | name, 46 | pass.fragmentShader, 47 | pass.vertexShader, 48 | texture 49 | ); 50 | this.allVariables[name] = variable; 51 | }); 52 | 53 | Object.keys(passes).forEach((name) => { 54 | const pass = passes[name]; 55 | 56 | if (pass.uniforms) { 57 | const cVariable = this.variables.find((v) => v.name === name); 58 | const deps = []; 59 | 60 | for (const key in pass.uniforms) { 61 | const uniform = pass.uniforms[key]; 62 | 63 | if (uniform.value instanceof MultipassShaderHelper.Dependency) { 64 | const dVariable = this.variables.find((v) => v.name === key); 65 | deps.push(dVariable); 66 | } else { 67 | cVariable.material.uniforms[key] = uniform; 68 | } 69 | } 70 | this.setVariableDependencies(cVariable, deps); 71 | } 72 | }); 73 | 74 | this.textures = {}; 75 | for (const name in this.allVariables) { 76 | this.textures[name] = (() => 77 | this.getCurrentRenderTarget(this.allVariables[name]).texture).bind( 78 | this 79 | ); 80 | } 81 | 82 | this.reset(); 83 | } 84 | 85 | reset() { 86 | const error = this.init(); 87 | if (error !== null) { 88 | console.error(error); 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

3 |

THREEMultipass Shader Helper

4 | 5 |

6 | Create multi-pass shaders in ThreeJS, intuitively. 7 |
8 | View Demo 9 | · 10 | Report Bug 11 |

12 |

13 | 14 |

15 |

16 | 17 | ## Install 18 | 19 | ### Ndoe 20 | 21 | ```bash 22 | npm install three-multipass-shader-helper 23 | # or 24 | yarn add three-multipass-shader-helper 25 | ``` 26 | 27 | ### Browser 28 | 29 | Download the IIFE style module from `build/MultipassShaderHelper.browser.js`. 30 | 31 | ## Import 32 | 33 | ### Node 34 | 35 | ```js 36 | import { MultipassShaderHelper } from "three-multipass-shader-helper"; 37 | ``` 38 | 39 | ### Browser 40 | 41 | ```html 42 | 43 | 44 | 45 | 46 | 47 | ``` 48 | 49 | ## Use 50 | 51 | It's quite straightforward. 52 | 53 | ### Create passes 54 | 55 | ```js 56 | const passes = { 57 | BufferA: { 58 | vertexShader: `...`, 59 | fragmentShader: `...`, 60 | uniforms: { 61 | // Takes in regular uniforms 62 | uDelta: { value: 0 }, 63 | 64 | // And other passes 65 | BufferB: { value: new MultipassShaderHelper.Dependency() }, 66 | // Must have this type 67 | }, 68 | onLoadTexture: (texture) => { 69 | /*...Fill texture maybe?*/ 70 | }, 71 | }, 72 | BufferB: { 73 | vertexShader: pVert, 74 | fragmentShader: pFrag, 75 | // Uniforms and `onLoadTexture` are optional 76 | }, 77 | }; 78 | ``` 79 | 80 | ### Apply passes 81 | 82 | ```js 83 | const gpuCompute = new MultipassShaderHelper(renderer, passes); 84 | const material = new THREE.ShaderMaterial({ 85 | vertexShader: `...`, 86 | fragmentShader: `...`, 87 | uniforms: { 88 | BufferA: { value: gpu.textures.BufferA() }, 89 | BufferB: { value: gpu.textures.BufferB() }, 90 | }, 91 | }); 92 | 93 | // ... 94 | 95 | const clock = new THREE.Clock(); 96 | function render() { 97 | const delta = clock.getDelta(); 98 | 99 | // Get a buffer's variable 100 | const { BufferA } = gpuCompute.allVariables; 101 | // Update its uniforms 102 | BufferA.material.uniforms.uDelta = delta; 103 | 104 | // Use it 105 | material.uniforms.BufferA.value = gpu.textures.BufferA(); 106 | material.uniforms.BufferB.value = gpu.textures.BufferB(); 107 | 108 | // Compute the shaders 109 | gpuCompute.compute(); 110 | } 111 | ``` 112 | -------------------------------------------------------------------------------- /example/main.js: -------------------------------------------------------------------------------- 1 | import * as THREE from "https://cdn.skypack.dev/three"; 2 | import { initScene, render } from "./setup.js"; 3 | 4 | import { 5 | loadShadersCSM, 6 | loadShadersRaw, 7 | loadShaders, 8 | } from "./lib/glNoise/build/glNoise.m.js"; 9 | 10 | import { 11 | CustomShaderMaterial, 12 | TYPES, 13 | } from "https://cdn.skypack.dev/three-custom-shader-material"; 14 | import * as dat from "https://cdn.skypack.dev/dat.gui"; 15 | 16 | import { MultipassShaderHelper } from "./build/MultipassShaderHelper.cdn.js"; 17 | 18 | function fillVelocityTexture(texture) { 19 | const theArray = texture.image.data; 20 | 21 | for (let k = 0, kl = theArray.length; k < kl; k += 4) { 22 | const x = Math.random() - 0.5; 23 | const y = Math.random() - 0.5; 24 | const z = Math.random() - 0.5; 25 | 26 | theArray[k + 0] = x * 10; 27 | theArray[k + 1] = y * 10; 28 | theArray[k + 2] = z * 10; 29 | theArray[k + 3] = 1; 30 | } 31 | } 32 | 33 | function fillPositionTexture(texture) { 34 | const theArray = texture.image.data; 35 | 36 | for (let k = 0, kl = theArray.length; k < kl; k += 4) { 37 | const x = 0; 38 | const y = 0; 39 | const z = 0; 40 | 41 | theArray[k + 0] = x; 42 | theArray[k + 1] = y; 43 | theArray[k + 2] = z; 44 | theArray[k + 3] = 1; 45 | } 46 | } 47 | 48 | async function makePasses() { 49 | const [cVert, cFrag] = await loadShaders([ 50 | "./shaders/curl/vert.glsl", // 51 | "./shaders/curl/frag.glsl", 52 | ]); 53 | 54 | const [vVert, vFrag, pVert, pFrag, lVert, lFrag] = await loadShadersRaw([ 55 | "./shaders/velocity/vert.glsl", // 56 | "./shaders/velocity/frag.glsl", 57 | "./shaders/position/vert.glsl", // 58 | "./shaders/position/frag.glsl", 59 | "./shaders/life/vert.glsl", // 60 | "./shaders/life/frag.glsl", 61 | ]); 62 | 63 | const passes = { 64 | velocityField: { 65 | vertexShader: vVert, 66 | fragmentShader: vFrag, 67 | uniforms: { 68 | uDelta: { value: 0 }, 69 | uAccleration: { value: new THREE.Vector3().setScalar(0.2) }, 70 | 71 | velocityField: { value: new MultipassShaderHelper.Dependency() }, 72 | positionField: { value: new MultipassShaderHelper.Dependency() }, 73 | }, 74 | onLoadTexture: (t) => fillVelocityTexture(t), 75 | }, 76 | positionField: { 77 | vertexShader: pVert, 78 | fragmentShader: pFrag, 79 | uniforms: { 80 | uDelta: { value: 0 }, 81 | 82 | velocityField: { value: new MultipassShaderHelper.Dependency() }, 83 | positionField: { value: new MultipassShaderHelper.Dependency() }, 84 | flowField: { value: new MultipassShaderHelper.Dependency() }, 85 | }, 86 | onLoadTexture: (t) => fillPositionTexture(t), 87 | }, 88 | flowField: { 89 | vertexShader: cVert, 90 | fragmentShader: cFrag, 91 | 92 | uniforms: { 93 | positionField: { value: new MultipassShaderHelper.Dependency() }, 94 | }, 95 | }, 96 | }; 97 | 98 | return passes; 99 | } 100 | 101 | const createShaderMaterial = async () => { 102 | const particleVertexShader = await loadShadersCSM({ 103 | header: "./shaders/particle/vert/header.glsl", // 104 | main: "./shaders/particle/vert/main.glsl", // 105 | }); 106 | 107 | const material = new CustomShaderMaterial({ 108 | baseMaterial: TYPES.POINTS, 109 | vShader: particleVertexShader, 110 | uniforms: { 111 | positionField: { 112 | value: null, 113 | }, 114 | lifeField: { 115 | value: null, 116 | }, 117 | uTime: { 118 | value: 0, 119 | }, 120 | pointColor: { 121 | value: new THREE.Color("#F38BA0"), 122 | }, 123 | }, 124 | passthrough: { 125 | size: 0.3, 126 | transparent: true, 127 | opacity: 0.1, 128 | }, 129 | }); 130 | return material; 131 | }; 132 | 133 | (async () => { 134 | const { scene, renderer, camera, controls } = initScene(); 135 | camera.position.setScalar(25); 136 | 137 | const geom = new THREE.IcosahedronGeometry(3, 64); 138 | const material = await createShaderMaterial(); 139 | const mesh = new THREE.Points(geom, material); 140 | scene.add(mesh); 141 | 142 | const passes = await makePasses(); 143 | const gpu = new MultipassShaderHelper(renderer, passes); 144 | 145 | const gui = new dat.gui.GUI(); 146 | gui.domElement.parentElement.style.zIndex = 1000; 147 | 148 | const obj = { 149 | Reset: () => { 150 | gpu.reset(); 151 | }, 152 | }; 153 | gui.add(obj, "Reset"); 154 | 155 | const clock = new THREE.Clock(); 156 | render(0, () => { 157 | const delta = clock.getDelta(); 158 | if (material && material.uniforms) { 159 | const { positionField, velocityField } = gpu.allVariables; 160 | 161 | const positionTexture = gpu.textures.positionField(); 162 | 163 | material.uniforms.positionField.value = positionTexture; 164 | 165 | velocityField.material.uniforms.uDelta.value = delta; 166 | positionField.material.uniforms.uDelta.value = delta; 167 | gpu.compute(); 168 | } 169 | }); 170 | })(); 171 | -------------------------------------------------------------------------------- /src/GPUComputationRenderer.js: -------------------------------------------------------------------------------- 1 | import * as THREE from "three"; 2 | 3 | /** 4 | * GPUComputationRenderer, based on SimulationRenderer by zz85 5 | * 6 | * The GPUComputationRenderer uses the concept of variables. These variables are RGBA float textures that hold 4 floats 7 | * for each compute element (texel) 8 | * 9 | * Each variable has a fragment shader that defines the computation made to obtain the variable in question. 10 | * You can use as many variables you need, and make dependencies so you can use textures of other variables in the shader 11 | * (the sampler uniforms are added automatically) Most of the variables will need themselves as dependency. 12 | * 13 | * The renderer has actually two render targets per variable, to make ping-pong. Textures from the current frame are used 14 | * as inputs to render the textures of the next frame. 15 | * 16 | * The render targets of the variables can be used as input textures for your visualization shaders. 17 | * 18 | * Variable names should be valid identifiers and should not collide with THREE GLSL used identifiers. 19 | * a common approach could be to use 'texture' prefixing the variable name; i.e texturePosition, textureVelocity... 20 | * 21 | * The size of the computation (sizeX * sizeY) is defined as 'resolution' automatically in the shader. For example: 22 | * #DEFINE resolution vec2( 1024.0, 1024.0 ) 23 | * 24 | * ------------- 25 | * 26 | * Basic use: 27 | * 28 | * // Initialization... 29 | * 30 | * // Create computation renderer 31 | * const gpuCompute = new GPUComputationRenderer( 1024, 1024, renderer ); 32 | * 33 | * // Create initial state float textures 34 | * const pos0 = gpuCompute.createTexture(); 35 | * const vel0 = gpuCompute.createTexture(); 36 | * // and fill in here the texture data... 37 | * 38 | * // Add texture variables 39 | * const velVar = gpuCompute.addVariable( "textureVelocity", fragmentShaderVel, pos0 ); 40 | * const posVar = gpuCompute.addVariable( "texturePosition", fragmentShaderPos, vel0 ); 41 | * 42 | * // Add variable dependencies 43 | * gpuCompute.setVariableDependencies( velVar, [ velVar, posVar ] ); 44 | * gpuCompute.setVariableDependencies( posVar, [ velVar, posVar ] ); 45 | * 46 | * // Add custom uniforms 47 | * velVar.material.uniforms.time = { value: 0.0 }; 48 | * 49 | * // Check for completeness 50 | * const error = gpuCompute.init(); 51 | * if ( error !== null ) { 52 | * console.error( error ); 53 | * } 54 | * 55 | * 56 | * // In each frame... 57 | * 58 | * // Compute! 59 | * gpuCompute.compute(); 60 | * 61 | * // Update texture uniforms in your visualization materials with the gpu renderer output 62 | * myMaterial.uniforms.myTexture.value = gpuCompute.getCurrentRenderTarget( posVar ).texture; 63 | * 64 | * // Do your rendering 65 | * renderer.render( myScene, myCamera ); 66 | * 67 | * ------------- 68 | * 69 | * Also, you can use utility functions to create THREE.ShaderMaterial and perform computations (rendering between textures) 70 | * Note that the shaders can have multiple input textures. 71 | * 72 | * const myFilter1 = gpuCompute.createShaderMaterial( myFilterFragmentShader1, { theTexture: { value: null } } ); 73 | * const myFilter2 = gpuCompute.createShaderMaterial( myFilterFragmentShader2, { theTexture: { value: null } } ); 74 | * 75 | * const inputTexture = gpuCompute.createTexture(); 76 | * 77 | * // Fill in here inputTexture... 78 | * 79 | * myFilter1.uniforms.theTexture.value = inputTexture; 80 | * 81 | * const myRenderTarget = gpuCompute.createRenderTarget(); 82 | * myFilter2.uniforms.theTexture.value = myRenderTarget.texture; 83 | * 84 | * const outputRenderTarget = gpuCompute.createRenderTarget(); 85 | * 86 | * // Now use the output texture where you want: 87 | * myMaterial.uniforms.map.value = outputRenderTarget.texture; 88 | * 89 | * // And compute each frame, before rendering to screen: 90 | * gpuCompute.doRenderTarget( myFilter1, myRenderTarget ); 91 | * gpuCompute.doRenderTarget( myFilter2, outputRenderTarget ); 92 | * 93 | * 94 | * 95 | * @param {int} sizeX Computation problem size is always 2d: sizeX * sizeY elements. 96 | * @param {int} sizeY Computation problem size is always 2d: sizeX * sizeY elements. 97 | * @param {WebGLRenderer} renderer The renderer 98 | */ 99 | 100 | export class GPUComputationRenderer { 101 | constructor(sizeX, sizeY, renderer) { 102 | this.sizeX = sizeX; 103 | this.sizeY = sizeY; 104 | this.renderer = renderer; 105 | this.variables = []; 106 | this.currentTextureIndex = 0; 107 | let dataType = THREE.FloatType; 108 | const scene = new THREE.Scene(); 109 | const camera = new THREE.Camera(); 110 | camera.position.z = 1; 111 | const passThruUniforms = { 112 | passThruTexture: { 113 | value: null, 114 | }, 115 | }; 116 | const passThruShader = createShaderMaterial( 117 | getPassThroughFragmentShader(), 118 | getPassThroughVertexShader(), 119 | passThruUniforms 120 | ); 121 | const mesh = new THREE.Mesh(new THREE.PlaneGeometry(2, 2), passThruShader); 122 | scene.add(mesh); 123 | 124 | this.setDataType = function (type) { 125 | dataType = type; 126 | return this; 127 | }; 128 | 129 | this.addVariable = function ( 130 | variableName, 131 | computeFragmentShader, 132 | computeVertexShader, 133 | initialValueTexture 134 | ) { 135 | const material = this.createShaderMaterial( 136 | computeFragmentShader, 137 | computeVertexShader 138 | ); 139 | const variable = { 140 | name: variableName, 141 | initialValueTexture: initialValueTexture, 142 | material: material, 143 | dependencies: null, 144 | renderTargets: [], 145 | wrapS: null, 146 | wrapT: null, 147 | minFilter: THREE.NearestFilter, 148 | magFilter: THREE.NearestFilter, 149 | }; 150 | this.variables.push(variable); 151 | return variable; 152 | }; 153 | 154 | this.setVariableDependencies = function (variable, dependencies) { 155 | variable.dependencies = dependencies; 156 | }; 157 | 158 | this.getCurrentRenderTarget = function (variable) { 159 | return variable.renderTargets[this.currentTextureIndex]; 160 | }; 161 | 162 | this.getAlternateRenderTarget = function (variable) { 163 | return variable.renderTargets[this.currentTextureIndex === 0 ? 1 : 0]; 164 | }; 165 | 166 | function addResolutionDefine(materialShader) { 167 | materialShader.defines.resolution = 168 | "vec2( " + sizeX.toFixed(1) + ", " + sizeY.toFixed(1) + " )"; 169 | } 170 | 171 | this.addResolutionDefine = addResolutionDefine; // The following functions can be used to compute things manually 172 | 173 | function createShaderMaterial( 174 | computeFragmentShader, 175 | computeVertexShader, 176 | uniforms 177 | ) { 178 | uniforms = uniforms || {}; 179 | const material = new THREE.ShaderMaterial({ 180 | uniforms: uniforms, 181 | vertexShader: computeVertexShader || getPassThroughVertexShader(), 182 | fragmentShader: computeFragmentShader, 183 | }); 184 | addResolutionDefine(material); 185 | return material; 186 | } 187 | 188 | this.createShaderMaterial = createShaderMaterial; 189 | 190 | this.createRenderTarget = function ( 191 | sizeXTexture, 192 | sizeYTexture, 193 | wrapS, 194 | wrapT, 195 | minFilter, 196 | magFilter 197 | ) { 198 | sizeXTexture = sizeXTexture || sizeX; 199 | sizeYTexture = sizeYTexture || sizeY; 200 | wrapS = wrapS || THREE.ClampToEdgeWrapping; 201 | wrapT = wrapT || THREE.ClampToEdgeWrapping; 202 | minFilter = minFilter || THREE.NearestFilter; 203 | magFilter = magFilter || THREE.NearestFilter; 204 | const renderTarget = new THREE.WebGLRenderTarget( 205 | sizeXTexture, 206 | sizeYTexture, 207 | { 208 | wrapS: wrapS, 209 | wrapT: wrapT, 210 | minFilter: minFilter, 211 | magFilter: magFilter, 212 | format: THREE.RGBAFormat, 213 | type: dataType, 214 | depthBuffer: false, 215 | } 216 | ); 217 | return renderTarget; 218 | }; 219 | 220 | this.createTexture = function () { 221 | const data = new Float32Array(sizeX * sizeY * 4); 222 | return new THREE.DataTexture( 223 | data, 224 | sizeX, 225 | sizeY, 226 | THREE.RGBAFormat, 227 | THREE.FloatType 228 | ); 229 | }; 230 | 231 | this.renderTexture = function (input, output) { 232 | // Takes a texture, and render out in rendertarget 233 | // input = Texture 234 | // output = RenderTarget 235 | passThruUniforms.passThruTexture.value = input; 236 | this.doRenderTarget(passThruShader, output); 237 | passThruUniforms.passThruTexture.value = null; 238 | }; 239 | 240 | this.doRenderTarget = function (material, output) { 241 | const currentRenderTarget = renderer.getRenderTarget(); 242 | mesh.material = material; 243 | renderer.setRenderTarget(output); 244 | renderer.render(scene, camera); 245 | mesh.material = passThruShader; 246 | renderer.setRenderTarget(currentRenderTarget); 247 | }; // Shaders 248 | 249 | function getPassThroughVertexShader() { 250 | return ( 251 | "void main() {\n" + 252 | "\n" + 253 | " gl_Position = vec4( position, 1.0 );\n" + 254 | "\n" + 255 | "}\n" 256 | ); 257 | } 258 | 259 | function getPassThroughFragmentShader() { 260 | return ( 261 | "uniform sampler2D passThruTexture;\n" + 262 | "\n" + 263 | "void main() {\n" + 264 | "\n" + 265 | " vec2 uv = gl_FragCoord.xy / resolution.xy;\n" + 266 | "\n" + 267 | " gl_FragColor = texture2D( passThruTexture, uv );\n" + 268 | "\n" + 269 | "}\n" 270 | ); 271 | } 272 | } 273 | 274 | init() { 275 | if ( 276 | this.renderer.capabilities.isWebGL2 === false && 277 | this.renderer.extensions.has("OES_texture_float") === false 278 | ) { 279 | return "No OES_texture_float support for float textures."; 280 | } 281 | 282 | if (this.renderer.capabilities.maxVertexTextures === 0) { 283 | return "No support for vertex shader textures."; 284 | } 285 | 286 | for (let i = 0; i < this.variables.length; i++) { 287 | const variable = this.variables[i]; // Creates rendertargets and initialize them with input texture 288 | 289 | variable.renderTargets[0] = this.createRenderTarget( 290 | this.sizeX, 291 | this.sizeY, 292 | variable.wrapS, 293 | variable.wrapT, 294 | variable.minFilter, 295 | variable.magFilter 296 | ); 297 | variable.renderTargets[1] = this.createRenderTarget( 298 | this.sizeX, 299 | this.sizeY, 300 | variable.wrapS, 301 | variable.wrapT, 302 | variable.minFilter, 303 | variable.magFilter 304 | ); 305 | this.renderTexture( 306 | variable.initialValueTexture, 307 | variable.renderTargets[0] 308 | ); 309 | this.renderTexture( 310 | variable.initialValueTexture, 311 | variable.renderTargets[1] 312 | ); // Adds dependencies uniforms to the THREE.ShaderMaterial 313 | 314 | const material = variable.material; 315 | const uniforms = material.uniforms; 316 | 317 | if (variable.dependencies !== null) { 318 | for (let d = 0; d < variable.dependencies.length; d++) { 319 | const depVar = variable.dependencies[d]; 320 | 321 | if (depVar.name !== variable.name) { 322 | // Checks if variable exists 323 | let found = false; 324 | 325 | for (let j = 0; j < this.variables.length; j++) { 326 | if (depVar.name === this.variables[j].name) { 327 | found = true; 328 | break; 329 | } 330 | } 331 | 332 | if (!found) { 333 | return ( 334 | "Variable dependency not found. Variable=" + 335 | variable.name + 336 | ", dependency=" + 337 | depVar.name 338 | ); 339 | } 340 | } 341 | 342 | uniforms[depVar.name] = { 343 | value: null, 344 | }; 345 | material.fragmentShader = 346 | "\nuniform sampler2D " + 347 | depVar.name + 348 | ";\n" + 349 | material.fragmentShader; 350 | } 351 | } 352 | } 353 | 354 | this.currentTextureIndex = 0; 355 | return null; 356 | } 357 | 358 | compute() { 359 | const currentTextureIndex = this.currentTextureIndex; 360 | const nextTextureIndex = this.currentTextureIndex === 0 ? 1 : 0; 361 | 362 | for (let i = 0, il = this.variables.length; i < il; i++) { 363 | const variable = this.variables[i]; // Sets texture dependencies uniforms 364 | 365 | if (variable.dependencies !== null) { 366 | const uniforms = variable.material.uniforms; 367 | 368 | for (let d = 0, dl = variable.dependencies.length; d < dl; d++) { 369 | const depVar = variable.dependencies[d]; 370 | uniforms[depVar.name].value = 371 | depVar.renderTargets[currentTextureIndex].texture; 372 | } 373 | } // Performs the computation for this variable 374 | 375 | this.doRenderTarget( 376 | variable.material, 377 | variable.renderTargets[nextTextureIndex] 378 | ); 379 | } 380 | 381 | this.currentTextureIndex = nextTextureIndex; 382 | } 383 | } 384 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": 6 | version "7.14.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 8 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/compat-data@^7.15.0": 13 | version "7.15.0" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" 15 | integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== 16 | 17 | "@babel/core@^7.7.5": 18 | version "7.15.0" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" 20 | integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== 21 | dependencies: 22 | "@babel/code-frame" "^7.14.5" 23 | "@babel/generator" "^7.15.0" 24 | "@babel/helper-compilation-targets" "^7.15.0" 25 | "@babel/helper-module-transforms" "^7.15.0" 26 | "@babel/helpers" "^7.14.8" 27 | "@babel/parser" "^7.15.0" 28 | "@babel/template" "^7.14.5" 29 | "@babel/traverse" "^7.15.0" 30 | "@babel/types" "^7.15.0" 31 | convert-source-map "^1.7.0" 32 | debug "^4.1.0" 33 | gensync "^1.0.0-beta.2" 34 | json5 "^2.1.2" 35 | semver "^6.3.0" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.12.11", "@babel/generator@^7.15.0": 39 | version "7.15.0" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" 41 | integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== 42 | dependencies: 43 | "@babel/types" "^7.15.0" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-compilation-targets@^7.15.0": 48 | version "7.15.0" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" 50 | integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== 51 | dependencies: 52 | "@babel/compat-data" "^7.15.0" 53 | "@babel/helper-validator-option" "^7.14.5" 54 | browserslist "^4.16.6" 55 | semver "^6.3.0" 56 | 57 | "@babel/helper-function-name@^7.14.5": 58 | version "7.14.5" 59 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" 60 | integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== 61 | dependencies: 62 | "@babel/helper-get-function-arity" "^7.14.5" 63 | "@babel/template" "^7.14.5" 64 | "@babel/types" "^7.14.5" 65 | 66 | "@babel/helper-get-function-arity@^7.14.5": 67 | version "7.14.5" 68 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" 69 | integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== 70 | dependencies: 71 | "@babel/types" "^7.14.5" 72 | 73 | "@babel/helper-hoist-variables@^7.14.5": 74 | version "7.14.5" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" 76 | integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== 77 | dependencies: 78 | "@babel/types" "^7.14.5" 79 | 80 | "@babel/helper-member-expression-to-functions@^7.15.0": 81 | version "7.15.0" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" 83 | integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== 84 | dependencies: 85 | "@babel/types" "^7.15.0" 86 | 87 | "@babel/helper-module-imports@^7.14.5": 88 | version "7.14.5" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" 90 | integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== 91 | dependencies: 92 | "@babel/types" "^7.14.5" 93 | 94 | "@babel/helper-module-transforms@^7.15.0": 95 | version "7.15.0" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" 97 | integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== 98 | dependencies: 99 | "@babel/helper-module-imports" "^7.14.5" 100 | "@babel/helper-replace-supers" "^7.15.0" 101 | "@babel/helper-simple-access" "^7.14.8" 102 | "@babel/helper-split-export-declaration" "^7.14.5" 103 | "@babel/helper-validator-identifier" "^7.14.9" 104 | "@babel/template" "^7.14.5" 105 | "@babel/traverse" "^7.15.0" 106 | "@babel/types" "^7.15.0" 107 | 108 | "@babel/helper-optimise-call-expression@^7.14.5": 109 | version "7.14.5" 110 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" 111 | integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== 112 | dependencies: 113 | "@babel/types" "^7.14.5" 114 | 115 | "@babel/helper-replace-supers@^7.15.0": 116 | version "7.15.0" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" 118 | integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== 119 | dependencies: 120 | "@babel/helper-member-expression-to-functions" "^7.15.0" 121 | "@babel/helper-optimise-call-expression" "^7.14.5" 122 | "@babel/traverse" "^7.15.0" 123 | "@babel/types" "^7.15.0" 124 | 125 | "@babel/helper-simple-access@^7.14.8": 126 | version "7.14.8" 127 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" 128 | integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== 129 | dependencies: 130 | "@babel/types" "^7.14.8" 131 | 132 | "@babel/helper-split-export-declaration@^7.14.5": 133 | version "7.14.5" 134 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" 135 | integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== 136 | dependencies: 137 | "@babel/types" "^7.14.5" 138 | 139 | "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": 140 | version "7.14.9" 141 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" 142 | integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== 143 | 144 | "@babel/helper-validator-option@^7.14.5": 145 | version "7.14.5" 146 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" 147 | integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== 148 | 149 | "@babel/helpers@^7.14.8": 150 | version "7.15.3" 151 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" 152 | integrity sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g== 153 | dependencies: 154 | "@babel/template" "^7.14.5" 155 | "@babel/traverse" "^7.15.0" 156 | "@babel/types" "^7.15.0" 157 | 158 | "@babel/highlight@^7.14.5": 159 | version "7.14.5" 160 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 161 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 162 | dependencies: 163 | "@babel/helper-validator-identifier" "^7.14.5" 164 | chalk "^2.0.0" 165 | js-tokens "^4.0.0" 166 | 167 | "@babel/parser@^7.14.5", "@babel/parser@^7.15.0", "@babel/parser@^7.2.3": 168 | version "7.15.3" 169 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" 170 | integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== 171 | 172 | "@babel/polyfill@^7.4.4": 173 | version "7.12.1" 174 | resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96" 175 | integrity sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g== 176 | dependencies: 177 | core-js "^2.6.5" 178 | regenerator-runtime "^0.13.4" 179 | 180 | "@babel/runtime@^7.7.6": 181 | version "7.15.3" 182 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" 183 | integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== 184 | dependencies: 185 | regenerator-runtime "^0.13.4" 186 | 187 | "@babel/template@^7.14.5": 188 | version "7.14.5" 189 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" 190 | integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== 191 | dependencies: 192 | "@babel/code-frame" "^7.14.5" 193 | "@babel/parser" "^7.14.5" 194 | "@babel/types" "^7.14.5" 195 | 196 | "@babel/traverse@^7.1.6", "@babel/traverse@^7.15.0": 197 | version "7.15.0" 198 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" 199 | integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== 200 | dependencies: 201 | "@babel/code-frame" "^7.14.5" 202 | "@babel/generator" "^7.15.0" 203 | "@babel/helper-function-name" "^7.14.5" 204 | "@babel/helper-hoist-variables" "^7.14.5" 205 | "@babel/helper-split-export-declaration" "^7.14.5" 206 | "@babel/parser" "^7.15.0" 207 | "@babel/types" "^7.15.0" 208 | debug "^4.1.0" 209 | globals "^11.1.0" 210 | 211 | "@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.0", "@babel/types@^7.2.0": 212 | version "7.15.0" 213 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" 214 | integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== 215 | dependencies: 216 | "@babel/helper-validator-identifier" "^7.14.9" 217 | to-fast-properties "^2.0.0" 218 | 219 | "@bcoe/v8-coverage@^0.2.3": 220 | version "0.2.3" 221 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 222 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 223 | 224 | "@istanbuljs/schema@^0.1.2": 225 | version "0.1.3" 226 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 227 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 228 | 229 | "@rollup/pluginutils@^4.1.0": 230 | version "4.1.1" 231 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 232 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 233 | dependencies: 234 | estree-walker "^2.0.1" 235 | picomatch "^2.2.2" 236 | 237 | "@types/babel-types@*", "@types/babel-types@^7.0.0": 238 | version "7.0.11" 239 | resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.11.tgz#263b113fa396fac4373188d73225297fb86f19a9" 240 | integrity sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A== 241 | 242 | "@types/babylon@^6.16.2": 243 | version "6.16.6" 244 | resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.6.tgz#a1e7e01567b26a5ebad321a74d10299189d8d932" 245 | integrity sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w== 246 | dependencies: 247 | "@types/babel-types" "*" 248 | 249 | "@types/istanbul-lib-coverage@^2.0.1": 250 | version "2.0.3" 251 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" 252 | integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== 253 | 254 | "@types/node-fetch@^2.5.10": 255 | version "2.5.12" 256 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" 257 | integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== 258 | dependencies: 259 | "@types/node" "*" 260 | form-data "^3.0.0" 261 | 262 | "@types/node@*": 263 | version "16.7.10" 264 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.10.tgz#7aa732cc47341c12a16b7d562f519c2383b6d4fc" 265 | integrity sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA== 266 | 267 | "@types/node@^15.0.3": 268 | version "15.14.9" 269 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" 270 | integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== 271 | 272 | "@types/three@^0.131.0": 273 | version "0.131.0" 274 | resolved "https://registry.yarnpkg.com/@types/three/-/three-0.131.0.tgz#98f59887b05f71e665cf2fbdf04e0e4ceb9f89b6" 275 | integrity sha512-4VCtsDi6mIId96GcGKG91e2Y6VwU2T0u/YB7vCFJh1kXik93arxn7l9tVZHo1LXOtgCJJDdC+e1fwf2Vu/4ySw== 276 | 277 | acorn-globals@^3.0.0: 278 | version "3.1.0" 279 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" 280 | integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= 281 | dependencies: 282 | acorn "^4.0.4" 283 | 284 | acorn@^3.1.0: 285 | version "3.3.0" 286 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 287 | integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= 288 | 289 | acorn@^4.0.4, acorn@~4.0.2: 290 | version "4.0.13" 291 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" 292 | integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= 293 | 294 | align-text@^0.1.1, align-text@^0.1.3: 295 | version "0.1.4" 296 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 297 | integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= 298 | dependencies: 299 | kind-of "^3.0.2" 300 | longest "^1.0.1" 301 | repeat-string "^1.5.2" 302 | 303 | ansi-regex@^5.0.0: 304 | version "5.0.0" 305 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 306 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 307 | 308 | ansi-styles@^3.2.1: 309 | version "3.2.1" 310 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 311 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 312 | dependencies: 313 | color-convert "^1.9.0" 314 | 315 | ansi-styles@^4.0.0: 316 | version "4.3.0" 317 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 318 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 319 | dependencies: 320 | color-convert "^2.0.1" 321 | 322 | asap@~2.0.3: 323 | version "2.0.6" 324 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 325 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= 326 | 327 | ast-types@0.12.4, ast-types@^0.12.2: 328 | version "0.12.4" 329 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.12.4.tgz#71ce6383800f24efc9a1a3308f3a6e420a0974d1" 330 | integrity sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw== 331 | 332 | ast-types@^0.14.2: 333 | version "0.14.2" 334 | resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" 335 | integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== 336 | dependencies: 337 | tslib "^2.0.1" 338 | 339 | asynckit@^0.4.0: 340 | version "0.4.0" 341 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 342 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 343 | 344 | babel-runtime@^6.26.0: 345 | version "6.26.0" 346 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 347 | integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= 348 | dependencies: 349 | core-js "^2.4.0" 350 | regenerator-runtime "^0.11.0" 351 | 352 | babel-types@^6.26.0: 353 | version "6.26.0" 354 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 355 | integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= 356 | dependencies: 357 | babel-runtime "^6.26.0" 358 | esutils "^2.0.2" 359 | lodash "^4.17.4" 360 | to-fast-properties "^1.0.3" 361 | 362 | babylon@^6.18.0: 363 | version "6.18.0" 364 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 365 | integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== 366 | 367 | balanced-match@^1.0.0: 368 | version "1.0.2" 369 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 370 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 371 | 372 | better-docs@^2.3.2: 373 | version "2.3.2" 374 | resolved "https://registry.yarnpkg.com/better-docs/-/better-docs-2.3.2.tgz#0de059301c49669a4350409d8c235868cf8bcbf7" 375 | integrity sha512-VlbXQgEftaynJSaPa853XB5WqTlPoQQr2TnxIkKi6OsyJJxF42Ke+9SIES/hqTe58aaBnuoDGrIzOso8RdNx6Q== 376 | dependencies: 377 | brace "^0.11.1" 378 | react-ace "^6.5.0" 379 | react-docgen "^5.3.0" 380 | react-frame-component "^4.1.1" 381 | typescript "^3.7.5" 382 | underscore "^1.9.1" 383 | vue-docgen-api "^3.22.0" 384 | vue2-ace-editor "^0.0.13" 385 | 386 | brace-expansion@^1.1.7: 387 | version "1.1.11" 388 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 389 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 390 | dependencies: 391 | balanced-match "^1.0.0" 392 | concat-map "0.0.1" 393 | 394 | brace@^0.11.0, brace@^0.11.1: 395 | version "0.11.1" 396 | resolved "https://registry.yarnpkg.com/brace/-/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" 397 | integrity sha1-SJb8ydVE7vRfS7dmDbMg07N5/lg= 398 | 399 | browserslist@^4.16.6: 400 | version "4.16.8" 401 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.8.tgz#cb868b0b554f137ba6e33de0ecff2eda403c4fb0" 402 | integrity sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ== 403 | dependencies: 404 | caniuse-lite "^1.0.30001251" 405 | colorette "^1.3.0" 406 | electron-to-chromium "^1.3.811" 407 | escalade "^3.1.1" 408 | node-releases "^1.1.75" 409 | 410 | buffer-from@^1.0.0: 411 | version "1.1.2" 412 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 413 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 414 | 415 | c8@^7.6.0: 416 | version "7.8.0" 417 | resolved "https://registry.yarnpkg.com/c8/-/c8-7.8.0.tgz#8fcfe848587d9d5796f22e9b0546a387a66d1b3b" 418 | integrity sha512-x2Bx+IIEd608B1LmjiNQ/kizRPkCWo5XzuV57J9afPjAHSnYXALwbCSOkQ7cSaNXBNblfqcvdycj+klmL+j6yA== 419 | dependencies: 420 | "@bcoe/v8-coverage" "^0.2.3" 421 | "@istanbuljs/schema" "^0.1.2" 422 | find-up "^5.0.0" 423 | foreground-child "^2.0.0" 424 | istanbul-lib-coverage "^3.0.0" 425 | istanbul-lib-report "^3.0.0" 426 | istanbul-reports "^3.0.2" 427 | rimraf "^3.0.0" 428 | test-exclude "^6.0.0" 429 | v8-to-istanbul "^8.0.0" 430 | yargs "^16.2.0" 431 | yargs-parser "^20.2.7" 432 | 433 | call-bind@^1.0.2: 434 | version "1.0.2" 435 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 436 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 437 | dependencies: 438 | function-bind "^1.1.1" 439 | get-intrinsic "^1.0.2" 440 | 441 | camelcase@^1.0.2: 442 | version "1.2.1" 443 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 444 | integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= 445 | 446 | caniuse-lite@^1.0.30001251: 447 | version "1.0.30001252" 448 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz#cb16e4e3dafe948fc4a9bb3307aea054b912019a" 449 | integrity sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw== 450 | 451 | center-align@^0.1.1: 452 | version "0.1.3" 453 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 454 | integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= 455 | dependencies: 456 | align-text "^0.1.3" 457 | lazy-cache "^1.0.3" 458 | 459 | chalk@^2.0.0: 460 | version "2.4.2" 461 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 462 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 463 | dependencies: 464 | ansi-styles "^3.2.1" 465 | escape-string-regexp "^1.0.5" 466 | supports-color "^5.3.0" 467 | 468 | character-parser@^2.1.1: 469 | version "2.2.0" 470 | resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" 471 | integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= 472 | dependencies: 473 | is-regex "^1.0.3" 474 | 475 | clean-css@^4.1.11: 476 | version "4.2.3" 477 | resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" 478 | integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== 479 | dependencies: 480 | source-map "~0.6.0" 481 | 482 | cliui@^2.1.0: 483 | version "2.1.0" 484 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 485 | integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= 486 | dependencies: 487 | center-align "^0.1.1" 488 | right-align "^0.1.1" 489 | wordwrap "0.0.2" 490 | 491 | cliui@^7.0.2: 492 | version "7.0.4" 493 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 494 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 495 | dependencies: 496 | string-width "^4.2.0" 497 | strip-ansi "^6.0.0" 498 | wrap-ansi "^7.0.0" 499 | 500 | color-convert@^1.9.0: 501 | version "1.9.3" 502 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 503 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 504 | dependencies: 505 | color-name "1.1.3" 506 | 507 | color-convert@^2.0.1: 508 | version "2.0.1" 509 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 510 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 511 | dependencies: 512 | color-name "~1.1.4" 513 | 514 | color-name@1.1.3: 515 | version "1.1.3" 516 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 517 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 518 | 519 | color-name@~1.1.4: 520 | version "1.1.4" 521 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 522 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 523 | 524 | colorette@^1.3.0: 525 | version "1.3.0" 526 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" 527 | integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== 528 | 529 | combined-stream@^1.0.8: 530 | version "1.0.8" 531 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 532 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 533 | dependencies: 534 | delayed-stream "~1.0.0" 535 | 536 | commander@^2.19.0, commander@^2.20.0: 537 | version "2.20.3" 538 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 539 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 540 | 541 | commondir@^1.0.1: 542 | version "1.0.1" 543 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 544 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 545 | 546 | concat-map@0.0.1: 547 | version "0.0.1" 548 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 549 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 550 | 551 | constantinople@^3.0.1, constantinople@^3.1.2: 552 | version "3.1.2" 553 | resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" 554 | integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== 555 | dependencies: 556 | "@types/babel-types" "^7.0.0" 557 | "@types/babylon" "^6.16.2" 558 | babel-types "^6.26.0" 559 | babylon "^6.18.0" 560 | 561 | convert-source-map@^1.6.0, convert-source-map@^1.7.0: 562 | version "1.8.0" 563 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 564 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 565 | dependencies: 566 | safe-buffer "~5.1.1" 567 | 568 | core-js@^2.4.0, core-js@^2.6.5: 569 | version "2.6.12" 570 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" 571 | integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== 572 | 573 | cross-spawn@^7.0.0: 574 | version "7.0.3" 575 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 576 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 577 | dependencies: 578 | path-key "^3.1.0" 579 | shebang-command "^2.0.0" 580 | which "^2.0.1" 581 | 582 | de-indent@^1.0.2: 583 | version "1.0.2" 584 | resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" 585 | integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= 586 | 587 | debug@^4.1.0: 588 | version "4.3.2" 589 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 590 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 591 | dependencies: 592 | ms "2.1.2" 593 | 594 | decamelize@^1.0.0: 595 | version "1.2.0" 596 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 597 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 598 | 599 | delayed-stream@~1.0.0: 600 | version "1.0.0" 601 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 602 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 603 | 604 | diff-match-patch@^1.0.4: 605 | version "1.0.5" 606 | resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" 607 | integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== 608 | 609 | doctrine@^3.0.0: 610 | version "3.0.0" 611 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 612 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 613 | dependencies: 614 | esutils "^2.0.2" 615 | 616 | doctypes@^1.1.0: 617 | version "1.1.0" 618 | resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" 619 | integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= 620 | 621 | electron-to-chromium@^1.3.811: 622 | version "1.3.826" 623 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.826.tgz#dbe356b1546b39d83bcd47e675a9c5f61dadaed2" 624 | integrity sha512-bpLc4QU4B8PYmdO4MSu2ZBTMD8lAaEXRS43C09lB31BvYwuk9UxgBRXbY5OJBw7VuMGcg2MZG5FyTaP9u4PQnw== 625 | 626 | emoji-regex@^8.0.0: 627 | version "8.0.0" 628 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 629 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 630 | 631 | escalade@^3.1.1: 632 | version "3.1.1" 633 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 634 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 635 | 636 | escape-string-regexp@^1.0.5: 637 | version "1.0.5" 638 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 639 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 640 | 641 | esprima@~4.0.0: 642 | version "4.0.1" 643 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 644 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 645 | 646 | estree-to-babel@^3.1.0: 647 | version "3.2.1" 648 | resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" 649 | integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== 650 | dependencies: 651 | "@babel/traverse" "^7.1.6" 652 | "@babel/types" "^7.2.0" 653 | c8 "^7.6.0" 654 | 655 | estree-walker@^0.6.1: 656 | version "0.6.1" 657 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 658 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 659 | 660 | estree-walker@^2.0.1: 661 | version "2.0.2" 662 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 663 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 664 | 665 | esutils@^2.0.2: 666 | version "2.0.3" 667 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 668 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 669 | 670 | find-cache-dir@^3.3.1: 671 | version "3.3.2" 672 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" 673 | integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== 674 | dependencies: 675 | commondir "^1.0.1" 676 | make-dir "^3.0.2" 677 | pkg-dir "^4.1.0" 678 | 679 | find-up@^4.0.0: 680 | version "4.1.0" 681 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 682 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 683 | dependencies: 684 | locate-path "^5.0.0" 685 | path-exists "^4.0.0" 686 | 687 | find-up@^5.0.0: 688 | version "5.0.0" 689 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 690 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 691 | dependencies: 692 | locate-path "^6.0.0" 693 | path-exists "^4.0.0" 694 | 695 | foreground-child@^2.0.0: 696 | version "2.0.0" 697 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" 698 | integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== 699 | dependencies: 700 | cross-spawn "^7.0.0" 701 | signal-exit "^3.0.2" 702 | 703 | form-data@^3.0.0: 704 | version "3.0.1" 705 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 706 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 707 | dependencies: 708 | asynckit "^0.4.0" 709 | combined-stream "^1.0.8" 710 | mime-types "^2.1.12" 711 | 712 | fs-extra@8.1.0: 713 | version "8.1.0" 714 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 715 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 716 | dependencies: 717 | graceful-fs "^4.2.0" 718 | jsonfile "^4.0.0" 719 | universalify "^0.1.0" 720 | 721 | fs.realpath@^1.0.0: 722 | version "1.0.0" 723 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 724 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 725 | 726 | fsevents@~2.3.2: 727 | version "2.3.2" 728 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 729 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 730 | 731 | function-bind@^1.1.1: 732 | version "1.1.1" 733 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 734 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 735 | 736 | gensync@^1.0.0-beta.2: 737 | version "1.0.0-beta.2" 738 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 739 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 740 | 741 | get-caller-file@^2.0.5: 742 | version "2.0.5" 743 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 744 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 745 | 746 | get-intrinsic@^1.0.2: 747 | version "1.1.1" 748 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 749 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 750 | dependencies: 751 | function-bind "^1.1.1" 752 | has "^1.0.3" 753 | has-symbols "^1.0.1" 754 | 755 | glob@^7.1.3, glob@^7.1.4: 756 | version "7.1.7" 757 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 758 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 759 | dependencies: 760 | fs.realpath "^1.0.0" 761 | inflight "^1.0.4" 762 | inherits "2" 763 | minimatch "^3.0.4" 764 | once "^1.3.0" 765 | path-is-absolute "^1.0.0" 766 | 767 | globals@^11.1.0: 768 | version "11.12.0" 769 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 770 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 771 | 772 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 773 | version "4.2.8" 774 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 775 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 776 | 777 | has-flag@^3.0.0: 778 | version "3.0.0" 779 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 780 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 781 | 782 | has-flag@^4.0.0: 783 | version "4.0.0" 784 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 785 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 786 | 787 | has-symbols@^1.0.1, has-symbols@^1.0.2: 788 | version "1.0.2" 789 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 790 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 791 | 792 | has-tostringtag@^1.0.0: 793 | version "1.0.0" 794 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 795 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 796 | dependencies: 797 | has-symbols "^1.0.2" 798 | 799 | has@^1.0.3: 800 | version "1.0.3" 801 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 802 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 803 | dependencies: 804 | function-bind "^1.1.1" 805 | 806 | hash-sum@^1.0.2: 807 | version "1.0.2" 808 | resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" 809 | integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= 810 | 811 | he@^1.1.0: 812 | version "1.2.0" 813 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 814 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 815 | 816 | html-escaper@^2.0.0: 817 | version "2.0.2" 818 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 819 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 820 | 821 | inflight@^1.0.4: 822 | version "1.0.6" 823 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 824 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 825 | dependencies: 826 | once "^1.3.0" 827 | wrappy "1" 828 | 829 | inherits@2: 830 | version "2.0.4" 831 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 832 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 833 | 834 | is-buffer@^1.1.5: 835 | version "1.1.6" 836 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 837 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 838 | 839 | is-core-module@^2.2.0: 840 | version "2.6.0" 841 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" 842 | integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== 843 | dependencies: 844 | has "^1.0.3" 845 | 846 | is-expression@^3.0.0: 847 | version "3.0.0" 848 | resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" 849 | integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= 850 | dependencies: 851 | acorn "~4.0.2" 852 | object-assign "^4.0.1" 853 | 854 | is-fullwidth-code-point@^3.0.0: 855 | version "3.0.0" 856 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 857 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 858 | 859 | is-promise@^2.0.0: 860 | version "2.2.2" 861 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" 862 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== 863 | 864 | is-regex@^1.0.3: 865 | version "1.1.4" 866 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 867 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 868 | dependencies: 869 | call-bind "^1.0.2" 870 | has-tostringtag "^1.0.0" 871 | 872 | isexe@^2.0.0: 873 | version "2.0.0" 874 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 875 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 876 | 877 | istanbul-lib-coverage@^3.0.0: 878 | version "3.0.0" 879 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" 880 | integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== 881 | 882 | istanbul-lib-report@^3.0.0: 883 | version "3.0.0" 884 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 885 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 886 | dependencies: 887 | istanbul-lib-coverage "^3.0.0" 888 | make-dir "^3.0.0" 889 | supports-color "^7.1.0" 890 | 891 | istanbul-reports@^3.0.2: 892 | version "3.0.2" 893 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" 894 | integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== 895 | dependencies: 896 | html-escaper "^2.0.0" 897 | istanbul-lib-report "^3.0.0" 898 | 899 | jest-worker@^26.2.1: 900 | version "26.6.2" 901 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" 902 | integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== 903 | dependencies: 904 | "@types/node" "*" 905 | merge-stream "^2.0.0" 906 | supports-color "^7.0.0" 907 | 908 | js-cleanup@^1.2.0: 909 | version "1.2.0" 910 | resolved "https://registry.yarnpkg.com/js-cleanup/-/js-cleanup-1.2.0.tgz#8dbc65954b1d38b255f1e8cf02cd17b3f7a053f9" 911 | integrity sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ== 912 | dependencies: 913 | magic-string "^0.25.7" 914 | perf-regexes "^1.0.1" 915 | skip-regex "^1.0.2" 916 | 917 | js-stringify@^1.0.1: 918 | version "1.0.2" 919 | resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" 920 | integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= 921 | 922 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 923 | version "4.0.0" 924 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 925 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 926 | 927 | jsesc@^2.5.1: 928 | version "2.5.2" 929 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 930 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 931 | 932 | json5@^2.1.2: 933 | version "2.2.0" 934 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 935 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 936 | dependencies: 937 | minimist "^1.2.5" 938 | 939 | jsonfile@^4.0.0: 940 | version "4.0.0" 941 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 942 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 943 | optionalDependencies: 944 | graceful-fs "^4.1.6" 945 | 946 | jstransformer@1.0.0: 947 | version "1.0.0" 948 | resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" 949 | integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= 950 | dependencies: 951 | is-promise "^2.0.0" 952 | promise "^7.0.1" 953 | 954 | kind-of@^3.0.2: 955 | version "3.2.2" 956 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 957 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 958 | dependencies: 959 | is-buffer "^1.1.5" 960 | 961 | lazy-cache@^1.0.3: 962 | version "1.0.4" 963 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 964 | integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= 965 | 966 | locate-path@^5.0.0: 967 | version "5.0.0" 968 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 969 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 970 | dependencies: 971 | p-locate "^4.1.0" 972 | 973 | locate-path@^6.0.0: 974 | version "6.0.0" 975 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 976 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 977 | dependencies: 978 | p-locate "^5.0.0" 979 | 980 | lodash.get@^4.4.2: 981 | version "4.4.2" 982 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 983 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= 984 | 985 | lodash.isequal@^4.5.0: 986 | version "4.5.0" 987 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 988 | integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= 989 | 990 | lodash@^4.17.4: 991 | version "4.17.21" 992 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 993 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 994 | 995 | longest@^1.0.1: 996 | version "1.0.1" 997 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 998 | integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= 999 | 1000 | loose-envify@^1.4.0: 1001 | version "1.4.0" 1002 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1003 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1004 | dependencies: 1005 | js-tokens "^3.0.0 || ^4.0.0" 1006 | 1007 | lru-cache@^4.1.5: 1008 | version "4.1.5" 1009 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1010 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1011 | dependencies: 1012 | pseudomap "^1.0.2" 1013 | yallist "^2.1.2" 1014 | 1015 | magic-string@^0.25.7: 1016 | version "0.25.7" 1017 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 1018 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 1019 | dependencies: 1020 | sourcemap-codec "^1.4.4" 1021 | 1022 | make-dir@^3.0.0, make-dir@^3.0.2: 1023 | version "3.1.0" 1024 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1025 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1026 | dependencies: 1027 | semver "^6.0.0" 1028 | 1029 | merge-stream@^2.0.0: 1030 | version "2.0.0" 1031 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1032 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1033 | 1034 | mime-db@1.49.0: 1035 | version "1.49.0" 1036 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" 1037 | integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== 1038 | 1039 | mime-types@^2.1.12: 1040 | version "2.1.32" 1041 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" 1042 | integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== 1043 | dependencies: 1044 | mime-db "1.49.0" 1045 | 1046 | min-indent@^1.0.0: 1047 | version "1.0.1" 1048 | resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" 1049 | integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 1050 | 1051 | minimatch@^3.0.2, minimatch@^3.0.4: 1052 | version "3.0.4" 1053 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1054 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1055 | dependencies: 1056 | brace-expansion "^1.1.7" 1057 | 1058 | minimist@^1.2.5: 1059 | version "1.2.5" 1060 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1061 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1062 | 1063 | ms@2.1.2: 1064 | version "2.1.2" 1065 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1066 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1067 | 1068 | neo-async@^2.6.1: 1069 | version "2.6.2" 1070 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1071 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1072 | 1073 | node-dir@^0.1.10: 1074 | version "0.1.17" 1075 | resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" 1076 | integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= 1077 | dependencies: 1078 | minimatch "^3.0.2" 1079 | 1080 | node-releases@^1.1.75: 1081 | version "1.1.75" 1082 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe" 1083 | integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw== 1084 | 1085 | object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: 1086 | version "4.1.1" 1087 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1088 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1089 | 1090 | once@^1.3.0: 1091 | version "1.4.0" 1092 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1093 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1094 | dependencies: 1095 | wrappy "1" 1096 | 1097 | p-limit@^2.2.0: 1098 | version "2.3.0" 1099 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1100 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1101 | dependencies: 1102 | p-try "^2.0.0" 1103 | 1104 | p-limit@^3.0.2: 1105 | version "3.1.0" 1106 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1107 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1108 | dependencies: 1109 | yocto-queue "^0.1.0" 1110 | 1111 | p-locate@^4.1.0: 1112 | version "4.1.0" 1113 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1114 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1115 | dependencies: 1116 | p-limit "^2.2.0" 1117 | 1118 | p-locate@^5.0.0: 1119 | version "5.0.0" 1120 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1121 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1122 | dependencies: 1123 | p-limit "^3.0.2" 1124 | 1125 | p-try@^2.0.0: 1126 | version "2.2.0" 1127 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1128 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1129 | 1130 | path-exists@^4.0.0: 1131 | version "4.0.0" 1132 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1133 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1134 | 1135 | path-is-absolute@^1.0.0: 1136 | version "1.0.1" 1137 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1138 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1139 | 1140 | path-key@^3.1.0: 1141 | version "3.1.1" 1142 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1143 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1144 | 1145 | path-parse@^1.0.6: 1146 | version "1.0.7" 1147 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1148 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1149 | 1150 | perf-regexes@^1.0.1: 1151 | version "1.0.1" 1152 | resolved "https://registry.yarnpkg.com/perf-regexes/-/perf-regexes-1.0.1.tgz#6da1d62f5a94bf9353a0451bccacf69068b75d0b" 1153 | integrity sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng== 1154 | 1155 | picomatch@^2.2.2: 1156 | version "2.3.0" 1157 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1158 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1159 | 1160 | pkg-dir@^4.1.0: 1161 | version "4.2.0" 1162 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1163 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1164 | dependencies: 1165 | find-up "^4.0.0" 1166 | 1167 | private@^0.1.8: 1168 | version "0.1.8" 1169 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 1170 | integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== 1171 | 1172 | promise@^7.0.1: 1173 | version "7.3.1" 1174 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 1175 | integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== 1176 | dependencies: 1177 | asap "~2.0.3" 1178 | 1179 | prop-types@^15.7.2: 1180 | version "15.7.2" 1181 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 1182 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 1183 | dependencies: 1184 | loose-envify "^1.4.0" 1185 | object-assign "^4.1.1" 1186 | react-is "^16.8.1" 1187 | 1188 | pseudomap@^1.0.2: 1189 | version "1.0.2" 1190 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1191 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1192 | 1193 | pug-attrs@^2.0.4: 1194 | version "2.0.4" 1195 | resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" 1196 | integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== 1197 | dependencies: 1198 | constantinople "^3.0.1" 1199 | js-stringify "^1.0.1" 1200 | pug-runtime "^2.0.5" 1201 | 1202 | pug-code-gen@^2.0.2: 1203 | version "2.0.3" 1204 | resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.3.tgz#122eb9ada9b5bf601705fe15aaa0a7d26bc134ab" 1205 | integrity sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA== 1206 | dependencies: 1207 | constantinople "^3.1.2" 1208 | doctypes "^1.1.0" 1209 | js-stringify "^1.0.1" 1210 | pug-attrs "^2.0.4" 1211 | pug-error "^1.3.3" 1212 | pug-runtime "^2.0.5" 1213 | void-elements "^2.0.1" 1214 | with "^5.0.0" 1215 | 1216 | pug-error@^1.3.3: 1217 | version "1.3.3" 1218 | resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" 1219 | integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== 1220 | 1221 | pug-filters@^3.1.1: 1222 | version "3.1.1" 1223 | resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7" 1224 | integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg== 1225 | dependencies: 1226 | clean-css "^4.1.11" 1227 | constantinople "^3.0.1" 1228 | jstransformer "1.0.0" 1229 | pug-error "^1.3.3" 1230 | pug-walk "^1.1.8" 1231 | resolve "^1.1.6" 1232 | uglify-js "^2.6.1" 1233 | 1234 | pug-lexer@^4.1.0: 1235 | version "4.1.0" 1236 | resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd" 1237 | integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA== 1238 | dependencies: 1239 | character-parser "^2.1.1" 1240 | is-expression "^3.0.0" 1241 | pug-error "^1.3.3" 1242 | 1243 | pug-linker@^3.0.6: 1244 | version "3.0.6" 1245 | resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb" 1246 | integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg== 1247 | dependencies: 1248 | pug-error "^1.3.3" 1249 | pug-walk "^1.1.8" 1250 | 1251 | pug-load@^2.0.12: 1252 | version "2.0.12" 1253 | resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" 1254 | integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== 1255 | dependencies: 1256 | object-assign "^4.1.0" 1257 | pug-walk "^1.1.8" 1258 | 1259 | pug-parser@^5.0.1: 1260 | version "5.0.1" 1261 | resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9" 1262 | integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA== 1263 | dependencies: 1264 | pug-error "^1.3.3" 1265 | token-stream "0.0.1" 1266 | 1267 | pug-runtime@^2.0.5: 1268 | version "2.0.5" 1269 | resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" 1270 | integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== 1271 | 1272 | pug-strip-comments@^1.0.4: 1273 | version "1.0.4" 1274 | resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" 1275 | integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== 1276 | dependencies: 1277 | pug-error "^1.3.3" 1278 | 1279 | pug-walk@^1.1.8: 1280 | version "1.1.8" 1281 | resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" 1282 | integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== 1283 | 1284 | pug@^2.0.3: 1285 | version "2.0.4" 1286 | resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d" 1287 | integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw== 1288 | dependencies: 1289 | pug-code-gen "^2.0.2" 1290 | pug-filters "^3.1.1" 1291 | pug-lexer "^4.1.0" 1292 | pug-linker "^3.0.6" 1293 | pug-load "^2.0.12" 1294 | pug-parser "^5.0.1" 1295 | pug-runtime "^2.0.5" 1296 | pug-strip-comments "^1.0.4" 1297 | 1298 | randombytes@^2.1.0: 1299 | version "2.1.0" 1300 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1301 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1302 | dependencies: 1303 | safe-buffer "^5.1.0" 1304 | 1305 | react-ace@^6.5.0: 1306 | version "6.6.0" 1307 | resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-6.6.0.tgz#a79457ef03c3b1f8d4fc598a003b1d6ad464f1a0" 1308 | integrity sha512-Jehhp8bxa8kqiXk07Jzy+uD5qZMBwo43O+raniGHjdX7Qk93xFkKaAz8LxtUVZPJGlRnV5ODMNj0qHwDSN+PBw== 1309 | dependencies: 1310 | "@babel/polyfill" "^7.4.4" 1311 | brace "^0.11.1" 1312 | diff-match-patch "^1.0.4" 1313 | lodash.get "^4.4.2" 1314 | lodash.isequal "^4.5.0" 1315 | prop-types "^15.7.2" 1316 | 1317 | react-docgen@^5.3.0: 1318 | version "5.4.0" 1319 | resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.0.tgz#2cd7236720ec2769252ef0421f23250b39a153a1" 1320 | integrity sha512-JBjVQ9cahmNlfjMGxWUxJg919xBBKAoy3hgDgKERbR+BcF4ANpDuzWAScC7j27hZfd8sJNmMPOLWo9+vB/XJEQ== 1321 | dependencies: 1322 | "@babel/core" "^7.7.5" 1323 | "@babel/generator" "^7.12.11" 1324 | "@babel/runtime" "^7.7.6" 1325 | ast-types "^0.14.2" 1326 | commander "^2.19.0" 1327 | doctrine "^3.0.0" 1328 | estree-to-babel "^3.1.0" 1329 | neo-async "^2.6.1" 1330 | node-dir "^0.1.10" 1331 | strip-indent "^3.0.0" 1332 | 1333 | react-frame-component@^4.1.1: 1334 | version "4.1.3" 1335 | resolved "https://registry.yarnpkg.com/react-frame-component/-/react-frame-component-4.1.3.tgz#64c09dd29574720879c5f43ee36c17d8ae74d4ec" 1336 | integrity sha512-4PurhctiqnmC1F5prPZ+LdsalH7pZ3SFA5xoc0HBe8mSHctdLLt4Cr2WXfXOoajHBYq/yiipp9zOgx+vy8GiEA== 1337 | 1338 | react-is@^16.8.1: 1339 | version "16.13.1" 1340 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1341 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1342 | 1343 | recast@^0.17.3: 1344 | version "0.17.6" 1345 | resolved "https://registry.yarnpkg.com/recast/-/recast-0.17.6.tgz#64ae98d0d2dfb10ff92ff5fb9ffb7371823b69fa" 1346 | integrity sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ== 1347 | dependencies: 1348 | ast-types "0.12.4" 1349 | esprima "~4.0.0" 1350 | private "^0.1.8" 1351 | source-map "~0.6.1" 1352 | 1353 | regenerator-runtime@^0.11.0: 1354 | version "0.11.1" 1355 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 1356 | integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== 1357 | 1358 | regenerator-runtime@^0.13.4: 1359 | version "0.13.9" 1360 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 1361 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 1362 | 1363 | repeat-string@^1.5.2: 1364 | version "1.6.1" 1365 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1366 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 1367 | 1368 | require-directory@^2.1.1: 1369 | version "2.1.1" 1370 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1371 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1372 | 1373 | resolve@1.20.0, resolve@^1.1.6: 1374 | version "1.20.0" 1375 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1376 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1377 | dependencies: 1378 | is-core-module "^2.2.0" 1379 | path-parse "^1.0.6" 1380 | 1381 | right-align@^0.1.1: 1382 | version "0.1.3" 1383 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1384 | integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= 1385 | dependencies: 1386 | align-text "^0.1.1" 1387 | 1388 | rimraf@^3.0.0: 1389 | version "3.0.2" 1390 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1391 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1392 | dependencies: 1393 | glob "^7.1.3" 1394 | 1395 | rollup-plugin-cleanup@^3.2.1: 1396 | version "3.2.1" 1397 | resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c" 1398 | integrity sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ== 1399 | dependencies: 1400 | js-cleanup "^1.2.0" 1401 | rollup-pluginutils "^2.8.2" 1402 | 1403 | rollup-plugin-dts@^3.0.2: 1404 | version "3.0.2" 1405 | resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-3.0.2.tgz#2b628d88f864d271d6eaec2e4c2a60ae4e944c5c" 1406 | integrity sha512-hswlsdWu/x7k5pXzaLP6OvKRKcx8Bzprksz9i9mUe72zvt8LvqAb/AZpzs6FkLgmyRaN8B6rUQOVtzA3yEt9Yw== 1407 | dependencies: 1408 | magic-string "^0.25.7" 1409 | optionalDependencies: 1410 | "@babel/code-frame" "^7.12.13" 1411 | 1412 | rollup-plugin-terser@^7.0.2: 1413 | version "7.0.2" 1414 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" 1415 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== 1416 | dependencies: 1417 | "@babel/code-frame" "^7.10.4" 1418 | jest-worker "^26.2.1" 1419 | serialize-javascript "^4.0.0" 1420 | terser "^5.0.0" 1421 | 1422 | rollup-plugin-typescript2@^0.30.0: 1423 | version "0.30.0" 1424 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.30.0.tgz#1cc99ac2309bf4b9d0a3ebdbc2002aecd56083d3" 1425 | integrity sha512-NUFszIQyhgDdhRS9ya/VEmsnpTe+GERDMmFo0Y+kf8ds51Xy57nPNGglJY+W6x1vcouA7Au7nsTgsLFj2I0PxQ== 1426 | dependencies: 1427 | "@rollup/pluginutils" "^4.1.0" 1428 | find-cache-dir "^3.3.1" 1429 | fs-extra "8.1.0" 1430 | resolve "1.20.0" 1431 | tslib "2.1.0" 1432 | 1433 | rollup-pluginutils@^2.8.2: 1434 | version "2.8.2" 1435 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 1436 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 1437 | dependencies: 1438 | estree-walker "^0.6.1" 1439 | 1440 | rollup@^2.46.0: 1441 | version "2.56.3" 1442 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" 1443 | integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== 1444 | optionalDependencies: 1445 | fsevents "~2.3.2" 1446 | 1447 | safe-buffer@^5.1.0: 1448 | version "5.2.1" 1449 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1450 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1451 | 1452 | safe-buffer@~5.1.1: 1453 | version "5.1.2" 1454 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1455 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1456 | 1457 | semver@^6.0.0, semver@^6.3.0: 1458 | version "6.3.0" 1459 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1460 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1461 | 1462 | serialize-javascript@^4.0.0: 1463 | version "4.0.0" 1464 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" 1465 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== 1466 | dependencies: 1467 | randombytes "^2.1.0" 1468 | 1469 | shebang-command@^2.0.0: 1470 | version "2.0.0" 1471 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1472 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1473 | dependencies: 1474 | shebang-regex "^3.0.0" 1475 | 1476 | shebang-regex@^3.0.0: 1477 | version "3.0.0" 1478 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1479 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1480 | 1481 | signal-exit@^3.0.2: 1482 | version "3.0.3" 1483 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1484 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1485 | 1486 | skip-regex@^1.0.2: 1487 | version "1.0.2" 1488 | resolved "https://registry.yarnpkg.com/skip-regex/-/skip-regex-1.0.2.tgz#ac655d77e7c771ac2b9f37585fea37bff56ad65b" 1489 | integrity sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA== 1490 | 1491 | source-map-support@~0.5.19: 1492 | version "0.5.19" 1493 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1494 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1495 | dependencies: 1496 | buffer-from "^1.0.0" 1497 | source-map "^0.6.0" 1498 | 1499 | source-map@^0.5.0, source-map@~0.5.1: 1500 | version "0.5.7" 1501 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1502 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1503 | 1504 | source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: 1505 | version "0.6.1" 1506 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1507 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1508 | 1509 | source-map@^0.7.3, source-map@~0.7.2: 1510 | version "0.7.3" 1511 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 1512 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 1513 | 1514 | sourcemap-codec@^1.4.4: 1515 | version "1.4.8" 1516 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1517 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1518 | 1519 | string-width@^4.1.0, string-width@^4.2.0: 1520 | version "4.2.2" 1521 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 1522 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1523 | dependencies: 1524 | emoji-regex "^8.0.0" 1525 | is-fullwidth-code-point "^3.0.0" 1526 | strip-ansi "^6.0.0" 1527 | 1528 | strip-ansi@^6.0.0: 1529 | version "6.0.0" 1530 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1531 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1532 | dependencies: 1533 | ansi-regex "^5.0.0" 1534 | 1535 | strip-indent@^3.0.0: 1536 | version "3.0.0" 1537 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" 1538 | integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== 1539 | dependencies: 1540 | min-indent "^1.0.0" 1541 | 1542 | supports-color@^5.3.0: 1543 | version "5.5.0" 1544 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1545 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1546 | dependencies: 1547 | has-flag "^3.0.0" 1548 | 1549 | supports-color@^7.0.0, supports-color@^7.1.0: 1550 | version "7.2.0" 1551 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1552 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1553 | dependencies: 1554 | has-flag "^4.0.0" 1555 | 1556 | terser@^5.0.0: 1557 | version "5.7.2" 1558 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.2.tgz#d4d95ed4f8bf735cb933e802f2a1829abf545e3f" 1559 | integrity sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw== 1560 | dependencies: 1561 | commander "^2.20.0" 1562 | source-map "~0.7.2" 1563 | source-map-support "~0.5.19" 1564 | 1565 | test-exclude@^6.0.0: 1566 | version "6.0.0" 1567 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 1568 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 1569 | dependencies: 1570 | "@istanbuljs/schema" "^0.1.2" 1571 | glob "^7.1.4" 1572 | minimatch "^3.0.4" 1573 | 1574 | three@^0.132.2: 1575 | version "0.132.2" 1576 | resolved "https://registry.yarnpkg.com/three/-/three-0.132.2.tgz#95eb1856147237c03e887cbbe56f964b6fb40b5e" 1577 | integrity sha512-0wcR7LxxkXMn6Gi58gEs3QvY8WpTVXA31L2VOvpjm4ZPYFRHCZC13UqynheFoS5OXDYgtBneN0dhbaNBE8iLhQ== 1578 | 1579 | to-fast-properties@^1.0.3: 1580 | version "1.0.3" 1581 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 1582 | integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= 1583 | 1584 | to-fast-properties@^2.0.0: 1585 | version "2.0.0" 1586 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1587 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1588 | 1589 | token-stream@0.0.1: 1590 | version "0.0.1" 1591 | resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" 1592 | integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= 1593 | 1594 | ts-map@^1.0.3: 1595 | version "1.0.3" 1596 | resolved "https://registry.yarnpkg.com/ts-map/-/ts-map-1.0.3.tgz#1c4d218dec813d2103b7e04e4bcf348e1471c1ff" 1597 | integrity sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w== 1598 | 1599 | tslib@2.1.0: 1600 | version "2.1.0" 1601 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" 1602 | integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== 1603 | 1604 | tslib@^2.0.1, tslib@^2.2.0: 1605 | version "2.3.1" 1606 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 1607 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 1608 | 1609 | typescript@^3.2.2, typescript@^3.7.5: 1610 | version "3.9.10" 1611 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" 1612 | integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== 1613 | 1614 | typescript@^4.2.4: 1615 | version "4.4.2" 1616 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" 1617 | integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== 1618 | 1619 | uglify-js@^2.6.1: 1620 | version "2.8.29" 1621 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 1622 | integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= 1623 | dependencies: 1624 | source-map "~0.5.1" 1625 | yargs "~3.10.0" 1626 | optionalDependencies: 1627 | uglify-to-browserify "~1.0.0" 1628 | 1629 | uglify-to-browserify@~1.0.0: 1630 | version "1.0.2" 1631 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 1632 | integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= 1633 | 1634 | underscore@^1.9.1: 1635 | version "1.13.1" 1636 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" 1637 | integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== 1638 | 1639 | universalify@^0.1.0: 1640 | version "0.1.2" 1641 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1642 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1643 | 1644 | v8-to-istanbul@^8.0.0: 1645 | version "8.0.0" 1646 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" 1647 | integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== 1648 | dependencies: 1649 | "@types/istanbul-lib-coverage" "^2.0.1" 1650 | convert-source-map "^1.6.0" 1651 | source-map "^0.7.3" 1652 | 1653 | void-elements@^2.0.1: 1654 | version "2.0.1" 1655 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1656 | integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= 1657 | 1658 | vue-docgen-api@^3.22.0: 1659 | version "3.26.0" 1660 | resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-3.26.0.tgz#2afc6a39e72862fbbc60ceb8510c681749f05460" 1661 | integrity sha512-ujdg4i5ZI/wE46RZQMFzKnDGyhEuPCu+fMA86CAd9EIek/6+OqraSVBm5ZkLrbEd5f8xxdnqMU4yiSGHHeao/Q== 1662 | dependencies: 1663 | "@babel/parser" "^7.2.3" 1664 | "@babel/types" "^7.0.0" 1665 | ast-types "^0.12.2" 1666 | hash-sum "^1.0.2" 1667 | lru-cache "^4.1.5" 1668 | pug "^2.0.3" 1669 | recast "^0.17.3" 1670 | ts-map "^1.0.3" 1671 | typescript "^3.2.2" 1672 | vue-template-compiler "^2.0.0" 1673 | 1674 | vue-template-compiler@^2.0.0: 1675 | version "2.6.14" 1676 | resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" 1677 | integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== 1678 | dependencies: 1679 | de-indent "^1.0.2" 1680 | he "^1.1.0" 1681 | 1682 | vue2-ace-editor@^0.0.13: 1683 | version "0.0.13" 1684 | resolved "https://registry.yarnpkg.com/vue2-ace-editor/-/vue2-ace-editor-0.0.13.tgz#5528998ce2c13e8ed3a294f714298199fd107dc2" 1685 | integrity sha512-uQICyvJzYNix16xeYjNAINuNUQhPbqMR7UQsJeI+ycpEd2otsiNNU73jcZqHkpjuz0uaHDHnrpzQuI/RApsKXA== 1686 | dependencies: 1687 | brace "^0.11.0" 1688 | 1689 | which@^2.0.1: 1690 | version "2.0.2" 1691 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1692 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1693 | dependencies: 1694 | isexe "^2.0.0" 1695 | 1696 | window-size@0.1.0: 1697 | version "0.1.0" 1698 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 1699 | integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= 1700 | 1701 | with@^5.0.0: 1702 | version "5.1.1" 1703 | resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" 1704 | integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= 1705 | dependencies: 1706 | acorn "^3.1.0" 1707 | acorn-globals "^3.0.0" 1708 | 1709 | wordwrap@0.0.2: 1710 | version "0.0.2" 1711 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 1712 | integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= 1713 | 1714 | wrap-ansi@^7.0.0: 1715 | version "7.0.0" 1716 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1717 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1718 | dependencies: 1719 | ansi-styles "^4.0.0" 1720 | string-width "^4.1.0" 1721 | strip-ansi "^6.0.0" 1722 | 1723 | wrappy@1: 1724 | version "1.0.2" 1725 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1726 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1727 | 1728 | y18n@^5.0.5: 1729 | version "5.0.8" 1730 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1731 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1732 | 1733 | yallist@^2.1.2: 1734 | version "2.1.2" 1735 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1736 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 1737 | 1738 | yargs-parser@^20.2.2, yargs-parser@^20.2.7: 1739 | version "20.2.9" 1740 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1741 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1742 | 1743 | yargs@^16.2.0: 1744 | version "16.2.0" 1745 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1746 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1747 | dependencies: 1748 | cliui "^7.0.2" 1749 | escalade "^3.1.1" 1750 | get-caller-file "^2.0.5" 1751 | require-directory "^2.1.1" 1752 | string-width "^4.2.0" 1753 | y18n "^5.0.5" 1754 | yargs-parser "^20.2.2" 1755 | 1756 | yargs@~3.10.0: 1757 | version "3.10.0" 1758 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 1759 | integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= 1760 | dependencies: 1761 | camelcase "^1.0.2" 1762 | cliui "^2.1.0" 1763 | decamelize "^1.0.0" 1764 | window-size "0.1.0" 1765 | 1766 | yocto-queue@^0.1.0: 1767 | version "0.1.0" 1768 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1769 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1770 | --------------------------------------------------------------------------------