From 3e37cc9a0666cbf45a6d9568e10f6a90369c0130 Mon Sep 17 00:00:00 2001 From: David Don Young Kim <36175976+koyykdy@users.noreply.github.com> Date: Thu, 29 Sep 2022 10:50:37 -0700 Subject: [PATCH] Pulling in updates to tfjs master repository (#2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Customize setTimeout (#6694) If the setTimeout nesting level is greater than 5 and timeout is less than 4ms, timeout will be clamped to 4ms, which hurts the perf. A custom setTimeout is provided to mitigate the perf impact. BUG: #6687 Co-authored-by: Na Li * Upgrade windows BrowserStack chrome to 104 (#6866) * webgpu: Disable importExternalTexture (#6868) WebGPU Working Group recently found some problem with importExtenalTexture in spec, so we have to disable it temporarily. * Refactored Resizing Layer Unit Tests (#38) * Rescaling Preprocessing Layer Co-authored-by: David Kim (@koyykdy) Brian Zheng (@brianzheng123) * PR issues resolved * linting and PR issues resolved Co-authored-by: Adam Lang (@AdamLang96) Co-authored-by: (@Brianzheng123) * initial implementation of image preprocessing: resizing layer, and associated unit tests. Comments and refactoring for image scaling layer * refactoring in computeOutputShape for image resizing layer * Unit tests for image resizing preprocessing layer expanded and refactored * refactored unit tests for resizing layer * Preprocessing-Resizing layer unit test expansion and refactoring. Co-authored-by: Adam Lang <@AdamLang96> (adamglang96@gmail.com) * cleaning up commit diffs * cleaning up commit diffs * PR commit suggestions accepted - code refactored to reflect changes * resizing layer unit test refactoring Co-authored-by: AdamLang96 <45542095+AdamLang96@users.noreply.github.com> * Linting issue resolved: unused import statement culled (#39) * Rescaling Preprocessing Layer Co-authored-by: David Kim (@koyykdy) Brian Zheng (@brianzheng123) * PR issues resolved * linting and PR issues resolved Co-authored-by: Adam Lang (@AdamLang96) Co-authored-by: (@Brianzheng123) * initial implementation of image preprocessing: resizing layer, and associated unit tests. Comments and refactoring for image scaling layer * refactoring in computeOutputShape for image resizing layer * Unit tests for image resizing preprocessing layer expanded and refactored * refactored unit tests for resizing layer * Preprocessing-Resizing layer unit test expansion and refactoring. Co-authored-by: Adam Lang <@AdamLang96> (adamglang96@gmail.com) * cleaning up commit diffs * cleaning up commit diffs * PR commit suggestions accepted - code refactored to reflect changes * resizing layer unit test refactoring * linting issues resolved: unusued import statement culled Co-authored-by: AdamLang96 <45542095+AdamLang96@users.noreply.github.com> * Update jasmine_util.ts (#6872) FIX * webgl: Fix NaN issue (#6828) Fix #6822 Problem 1: On some GPUs, even if a and b are both non-NaN, the value of isNaN in vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); are still larger than 0., which misleads all values become NAN. 2: After resolving NAN issue, the result is still incorrect. It seems that the isnan_custom is not well supported on the problem GPU. After switching back to builtin isnan, everything works well. Solution: Use the bool type bvec4 instead of float type vec4 to calculate isNaN to avoid the the float precision issue when comparing with zero. Meanwhile, add an env flag WEBGL2_ISNAN_CUSTOM to allow user to specify which isnan to use. * Upgrade nodejs to 18.7.0 (#6863) * Upgrade nodejs to 18.7.0 * Fix hash table test string not passed as base64 * fixed prelu fusing code that pre-maturely neg the const on multiply (#6876) Co-authored-by: RajeshT <43972606+rthadur@users.noreply.github.com> * Update tfjs-layers/src/layers/preprocessing/image_resizing.ts Co-authored-by: Matthew Soulanille Co-authored-by: Yang Gu Co-authored-by: Na Li Co-authored-by: Matthew Soulanille Co-authored-by: AdamLang96 <45542095+AdamLang96@users.noreply.github.com> Co-authored-by: Linchenn <40653845+Linchenn@users.noreply.github.com> Co-authored-by: Jiajia Qin Co-authored-by: Ping Yu <4018+pyu10055@users.noreply.github.com> Co-authored-by: RajeshT <43972606+rthadur@users.noreply.github.com> Co-authored-by: Matthew Soulanille --- WORKSPACE | 2 +- package.json | 2 +- tfjs-backend-webgl/src/binaryop_packed_gpu.ts | 10 +- tfjs-backend-webgl/src/flags_webgl.ts | 6 + tfjs-backend-webgl/src/glsl_version.ts | 5 +- .../src/kernel_utils/kernel_funcs_utils.ts | 12 -- tfjs-backend-webgl/src/kernels/Atan2.ts | 13 +- tfjs-backend-webgl/src/kernels/Maximum.ts | 6 +- tfjs-backend-webgl/src/kernels/Minimum.ts | 6 +- tfjs-backend-webgl/src/kernels/Mod.ts | 6 +- tfjs-backend-webgl/src/kernels/Pow.ts | 8 +- .../tensorflowjs/converters/fuse_prelu.py | 3 +- .../converters/fuse_prelu_test.py | 26 +++ .../src/executor/graph_model_test.ts | 4 +- tfjs-core/src/jasmine_util.ts | 1 + tools/make_rollup_config.ts | 2 +- yarn.lock | 201 ++++++------------ 17 files changed, 131 insertions(+), 182 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 70180087548..a2a0669f7d4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -50,7 +50,7 @@ load("@rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains") nodejs_register_toolchains( name = "nodejs", - node_version = "16.13.2", + node_version = "18.7.0", ) # Install the yarn tool diff --git a/package.json b/package.json index fde8dbae331..c7113db086f 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "rollup": "^2.46.0", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-visualizer": "~3.3.2", + "rollup-plugin-visualizer": "~5.8.2", "seedrandom": "^3.0.5", "shelljs": "~0.8.5", "string_decoder": "^1.3.0", diff --git a/tfjs-backend-webgl/src/binaryop_packed_gpu.ts b/tfjs-backend-webgl/src/binaryop_packed_gpu.ts index 4c1dd53b05d..41928d41e70 100644 --- a/tfjs-backend-webgl/src/binaryop_packed_gpu.ts +++ b/tfjs-backend-webgl/src/binaryop_packed_gpu.ts @@ -21,11 +21,11 @@ import {GPGPUProgram, useShapeUniforms} from './gpgpu_math'; import {getChannels} from './packing_util'; import {getCoordsDataType} from './shader_compiler'; -export const CHECK_NAN_SNIPPET = ` - result.r = isNaN.r > 0. ? NAN : result.r; - result.g = isNaN.g > 0. ? NAN : result.g; - result.b = isNaN.b > 0. ? NAN : result.b; - result.a = isNaN.a > 0. ? NAN : result.a; +export const CHECK_NAN_SNIPPET_PACKED = ` + result.r = isNaN.r ? NAN : result.r; + result.g = isNaN.g ? NAN : result.g; + result.b = isNaN.b ? NAN : result.b; + result.a = isNaN.a ? NAN : result.a; `; export const ELU_DER = ` diff --git a/tfjs-backend-webgl/src/flags_webgl.ts b/tfjs-backend-webgl/src/flags_webgl.ts index 6846e1d64a8..d7b1c57c617 100644 --- a/tfjs-backend-webgl/src/flags_webgl.ts +++ b/tfjs-backend-webgl/src/flags_webgl.ts @@ -268,3 +268,9 @@ ENV.registerFlag('WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE', () => Infinity); * problem: https://github.com/tensorflow/tfjs/issues/6775. */ ENV.registerFlag('WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE', () => false); + +/** + * Whether to use the customized isnan. It's only useful for webgl2 since webgl1 + * doesn't have the builtin isnan. + */ +ENV.registerFlag('WEBGL2_ISNAN_CUSTOM', () => false); diff --git a/tfjs-backend-webgl/src/glsl_version.ts b/tfjs-backend-webgl/src/glsl_version.ts index cf613f54401..9b36a9c7e7f 100644 --- a/tfjs-backend-webgl/src/glsl_version.ts +++ b/tfjs-backend-webgl/src/glsl_version.ts @@ -62,7 +62,7 @@ export function getGlslDifferences(): GLSL { // - fraction = anything except all 0 bits (since all 0 bits represents // infinity). // https://en.wikipedia.org/wiki/IEEE_754-1985#Representation_of_non-numbers - defineSpecialNaN = ` + defineSpecialNaN = env().getBool('WEBGL2_ISNAN_CUSTOM') ? ` bool isnan_custom(float val) { uint floatToUint = floatBitsToUint(val); return (floatToUint & 0x7fffffffu) > 0x7f800000u; @@ -74,7 +74,8 @@ export function getGlslDifferences(): GLSL { } #define isnan(value) isnan_custom(value) - `; + ` : + ''; // In webgl 2 we do not need to specify a custom isinf so there is no // need for a special INFINITY constant. defineSpecialInf = ``; diff --git a/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts b/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts index 9c22455d975..a74d7c2f503 100644 --- a/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts +++ b/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts @@ -32,18 +32,6 @@ import {SimpleBinaryKernelImplCPU, SimpleUnaryKernelImplCPU} from './shared'; export const CHECK_NAN_SNIPPET_UNARY = `if (isnan(x)) return x;`; -export const CHECK_NAN_SNIPPET_BINARY = ` - if (isnan(a)) return a; - if (isnan(b)) return b; -`; - -export const CHECK_NAN_SNIPPET_BINARY_PACKED = ` - result.r = isNaN.r > 0. ? NAN : result.r; - result.g = isNaN.g > 0. ? NAN : result.g; - result.b = isNaN.b > 0. ? NAN : result.b; - result.a = isNaN.a > 0. ? NAN : result.a; -`; - type UnaryKernelFuncConfig = { opSnippet: string, packedOpSnippet?: string, diff --git a/tfjs-backend-webgl/src/kernels/Atan2.ts b/tfjs-backend-webgl/src/kernels/Atan2.ts index 748c359330a..53932137346 100644 --- a/tfjs-backend-webgl/src/kernels/Atan2.ts +++ b/tfjs-backend-webgl/src/kernels/Atan2.ts @@ -17,18 +17,21 @@ import {Atan2} from '@tensorflow/tfjs-core'; import {KernelConfig} from '@tensorflow/tfjs-core'; +import {CHECK_NAN_SNIPPET} from '../binaryop_gpu'; +import {CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; +import {binaryKernelFunc} from '../kernel_utils/kernel_funcs_utils'; -import {binaryKernelFunc, CHECK_NAN_SNIPPET_BINARY, CHECK_NAN_SNIPPET_BINARY_PACKED} from '../kernel_utils/kernel_funcs_utils'; - -const ATAN2 = CHECK_NAN_SNIPPET_BINARY + ` +const ATAN2 = CHECK_NAN_SNIPPET + ` return atan(a, b); `; const ATAN2_PACKED = ` vec4 result = atan(a, b); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); + bvec4 isNaNA = isnan(a); + bvec4 isNaNB = isnan(b); + bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w); ` + - CHECK_NAN_SNIPPET_BINARY_PACKED + ` + CHECK_NAN_SNIPPET_PACKED + ` return result; `; diff --git a/tfjs-backend-webgl/src/kernels/Maximum.ts b/tfjs-backend-webgl/src/kernels/Maximum.ts index c3acf162323..036bc9c28ae 100644 --- a/tfjs-backend-webgl/src/kernels/Maximum.ts +++ b/tfjs-backend-webgl/src/kernels/Maximum.ts @@ -18,7 +18,7 @@ import {KernelConfig, KernelFunc, Maximum} from '@tensorflow/tfjs-core'; import {CHECK_NAN_SNIPPET} from '../binaryop_gpu'; -import {CHECK_NAN_SNIPPET as CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; +import {CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; import {binaryKernelFunc} from '../kernel_utils/kernel_funcs_utils'; import {maximumImplCPU} from '../kernel_utils/shared'; @@ -28,7 +28,9 @@ const MAXIMUM = CHECK_NAN_SNIPPET + ` const MAXIMUM_PACKED = ` vec4 result = vec4(max(a, b)); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); + bvec4 isNaNA = isnan(a); + bvec4 isNaNB = isnan(b); + bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w); ` + CHECK_NAN_SNIPPET_PACKED + ` return result; diff --git a/tfjs-backend-webgl/src/kernels/Minimum.ts b/tfjs-backend-webgl/src/kernels/Minimum.ts index eb98a71ab22..809d5f79d35 100644 --- a/tfjs-backend-webgl/src/kernels/Minimum.ts +++ b/tfjs-backend-webgl/src/kernels/Minimum.ts @@ -18,7 +18,7 @@ import {KernelConfig, KernelFunc, Minimum} from '@tensorflow/tfjs-core'; import {CHECK_NAN_SNIPPET} from '../binaryop_gpu'; -import {CHECK_NAN_SNIPPET as CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; +import {CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; import {binaryKernelFunc} from '../kernel_utils/kernel_funcs_utils'; import {minimumImplCPU} from '../kernel_utils/shared'; @@ -28,7 +28,9 @@ const MINIMUM = CHECK_NAN_SNIPPET + ` const MINIMUM_PACKED = ` vec4 result = vec4(min(a, b)); - vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); + bvec4 isNaNA = isnan(a); + bvec4 isNaNB = isnan(b); + bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w); ` + CHECK_NAN_SNIPPET_PACKED + ` return result; diff --git a/tfjs-backend-webgl/src/kernels/Mod.ts b/tfjs-backend-webgl/src/kernels/Mod.ts index eab99912e73..ec1ec070968 100644 --- a/tfjs-backend-webgl/src/kernels/Mod.ts +++ b/tfjs-backend-webgl/src/kernels/Mod.ts @@ -17,7 +17,7 @@ import {KernelConfig, KernelFunc, Mod} from '@tensorflow/tfjs-core'; -import {CHECK_NAN_SNIPPET} from '../binaryop_packed_gpu'; +import {CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; import {binaryKernelFunc} from '../kernel_utils/kernel_funcs_utils'; const MOD = `if (b == 0.0) return NAN; @@ -25,9 +25,9 @@ const MOD = `if (b == 0.0) return NAN; const MOD_PACKED = ` vec4 result = mod(a, b); - vec4 isNaN = vec4(equal(b, vec4(0.0))); + bvec4 isNaN = equal(b, vec4(0.0)); ` + - CHECK_NAN_SNIPPET + ` + CHECK_NAN_SNIPPET_PACKED + ` return result; `; diff --git a/tfjs-backend-webgl/src/kernels/Pow.ts b/tfjs-backend-webgl/src/kernels/Pow.ts index 95127a00b24..a8dc0e36279 100644 --- a/tfjs-backend-webgl/src/kernels/Pow.ts +++ b/tfjs-backend-webgl/src/kernels/Pow.ts @@ -17,7 +17,7 @@ import {KernelConfig, KernelFunc, Pow} from '@tensorflow/tfjs-core'; -import {CHECK_NAN_SNIPPET} from '../binaryop_packed_gpu'; +import {CHECK_NAN_SNIPPET_PACKED} from '../binaryop_packed_gpu'; import {binaryKernelFunc} from '../kernel_utils/kernel_funcs_utils'; const POW = ` @@ -44,9 +44,11 @@ const POW_PACKED = ` result.b = isExpZero.b ? 1.0 : result.b; result.a = isExpZero.a ? 1.0 : result.a; - vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); + bvec4 isNaN1 = lessThan(a, vec4(0.0)); + bvec4 isNaN2 = lessThan(floor(b), b); + bvec4 isNaN = bvec4(isNaN1.x && isNaN2.x, isNaN1.y && isNaN2.y, isNaN1.z && isNaN2.z, isNaN1.w && isNaN2.w); ` + - CHECK_NAN_SNIPPET + ` + CHECK_NAN_SNIPPET_PACKED + ` return result; `; diff --git a/tfjs-converter/python/tensorflowjs/converters/fuse_prelu.py b/tfjs-converter/python/tensorflowjs/converters/fuse_prelu.py index 39d760e9c7b..764bf56cca5 100644 --- a/tfjs-converter/python/tensorflowjs/converters/fuse_prelu.py +++ b/tfjs-converter/python/tensorflowjs/converters/fuse_prelu.py @@ -87,7 +87,6 @@ def fuse_ops_for_prelu(input_graph_def): continue alpha_tensor_name = neg_alpha_op.name - _create_alpha_node(neg_alpha_op, updated_alpha) relu_neg_input_op = None for name in mul_op.input: @@ -120,6 +119,7 @@ def fuse_ops_for_prelu(input_graph_def): node.op = 'Identity' del node.input[:] node.input.append(relu_input_op.name) + _create_alpha_node(neg_alpha_op, updated_alpha) nodes_to_skip[mul_op.name] = True nodes_to_skip[relu_neg_input_op.name] = True @@ -189,4 +189,3 @@ def fuse_prelu_with_fused_conv2d_or_matmul(input_graph_def): return graph_rewrite_util.cleanup_graph_def( input_graph_def, nodes_to_skip, inputs_to_remove) - \ No newline at end of file diff --git a/tfjs-converter/python/tensorflowjs/converters/fuse_prelu_test.py b/tfjs-converter/python/tensorflowjs/converters/fuse_prelu_test.py index 3ec43003771..8e44c297933 100644 --- a/tfjs-converter/python/tensorflowjs/converters/fuse_prelu_test.py +++ b/tfjs-converter/python/tensorflowjs/converters/fuse_prelu_test.py @@ -21,6 +21,10 @@ import tensorflow.compat.v2 as tf from tensorflow.core.protobuf import config_pb2 from tensorflow.core.protobuf import meta_graph_pb2 +from tensorflow.python.eager import def_function +from tensorflow.python.framework import constant_op +from tensorflow.python.ops import variables +from tensorflow.python.training.tracking import tracking from tensorflowjs.converters import fuse_depthwise_conv2d from tensorflowjs.converters import fuse_prelu @@ -234,5 +238,27 @@ def execute_model(tensor): self.assertNotEqual(conv2d_op, None) self.assertEqual(conv2d_op.attr['fused_ops'].list.s, [b'BiasAdd', b'Prelu']) self.assertEqual(conv2d_op.attr['num_args'].i, 2) + + def testNonPreluPattern(self): + """Test a basic model with functions to make sure functions are inlined.""" + input_data = constant_op.constant(1., shape=[1]) + root = tracking.AutoTrackable() + root.v1 = variables.Variable(3.) + root.v2 = variables.Variable(2.) + + root.f = def_function.function(lambda x: tf.nn.relu(root.v1) + root.v2 * 2.0) + to_save = root.f.get_concrete_function(input_data) + graph = tf_saved_model_conversion_v2._freeze_saved_model_v2( + root.f.get_concrete_function(input_data)) + graph_def = graph.as_graph_def() + graph_def = fuse_prelu.fuse_ops_for_prelu(graph_def) + const_op = None + for node in graph_def.node: + self.assertNotEqual("Prelu", node.op) + if node.op == 'Const': + const_op = node + self.assertNotEqual(const_op, None) + self.assertEqual(const_op.attr['value'].tensor.float_val, [2.0]) + if __name__ == '__main__': tf.test.main() diff --git a/tfjs-converter/src/executor/graph_model_test.ts b/tfjs-converter/src/executor/graph_model_test.ts index ef0bb1cd047..a0b813fb3ca 100644 --- a/tfjs-converter/src/executor/graph_model_test.ts +++ b/tfjs-converter/src/executor/graph_model_test.ts @@ -230,7 +230,7 @@ const INITIALIZER_GRAPHDEF: tensorflow.IGraphDef = { use_node_name_sharing: {b: false}, key_dtype: {type: tensorflow.DataType.DT_STRING}, container: {s: ''}, - shared_name: {s: 'tablename'} + shared_name: {s: 'dGFibGVuYW1l' /* base64 'tablename' */} } }, { @@ -277,7 +277,7 @@ const HASH_TABLE_MODEL: tensorflow.IGraphDef = { use_node_name_sharing: {b: false}, key_dtype: {type: tensorflow.DataType.DT_STRING}, container: {s: ''}, - shared_name: {s: 'tablename'} + shared_name: {s: 'dGFibGVuYW1l' /* base64 'tablename' */} } }, { diff --git a/tfjs-core/src/jasmine_util.ts b/tfjs-core/src/jasmine_util.ts index 9641385002a..16603d4d97b 100644 --- a/tfjs-core/src/jasmine_util.ts +++ b/tfjs-core/src/jasmine_util.ts @@ -217,6 +217,7 @@ export function describeWithFlags( TEST_ENVS.forEach(testEnv => { env().setFlags(testEnv.flags); + env().set('IS_TEST', true); if (envSatisfiesConstraints(env(), testEnv, constraints)) { const testName = name + ' ' + testEnv.name + ' ' + JSON.stringify(testEnv.flags || {}); diff --git a/tools/make_rollup_config.ts b/tools/make_rollup_config.ts index 841c3eb399d..e22db656d8d 100644 --- a/tools/make_rollup_config.ts +++ b/tools/make_rollup_config.ts @@ -18,7 +18,7 @@ import * as commonjs_import from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; import * as sourcemaps_import from 'rollup-plugin-sourcemaps'; -import * as visualizer from 'rollup-plugin-visualizer'; +import {visualizer} from 'rollup-plugin-visualizer'; import {terser as terserPlugin} from 'rollup-plugin-terser'; import {downlevelToEs5Plugin} from 'downlevel_to_es5_plugin/downlevel_to_es5_plugin'; diff --git a/yarn.lock b/yarn.lock index b3404ed7a4a..b72d334461b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -484,7 +484,7 @@ ajv@~6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-regex@^5.0.0: +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -653,11 +653,6 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - chalk@^2.0.0, chalk@^2.3.0, chalk@~2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -691,15 +686,6 @@ clang-format@~1.2.4: glob "^7.0.0" resolve "^1.1.6" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -880,11 +866,6 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -907,6 +888,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -1009,11 +995,6 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1123,14 +1104,6 @@ finalhandler@1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -1194,7 +1167,7 @@ furi@^2.0.0: "@types/is-windows" "^1.0.0" is-windows "^1.0.2" -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -1380,7 +1353,7 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" -is-docker@^2.0.0: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -1641,13 +1614,6 @@ karma@^6.4.0: ua-parser-js "^0.7.30" yargs "^16.1.1" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -1789,11 +1755,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@^2.1.6: - version "2.1.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" - integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -1863,12 +1824,14 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -open@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: - is-wsl "^1.1.0" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" opn@~5.1.0: version "5.1.0" @@ -1890,13 +1853,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -1904,13 +1860,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -1918,11 +1867,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -2043,13 +1987,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - q@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -2142,11 +2079,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - requirejs@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" @@ -2214,17 +2146,14 @@ rollup-plugin-terser@^7.0.2: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup-plugin-visualizer@~3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-3.3.2.tgz#0778ef23785cbdf1d0f8dd8f697b5d211b8ced1e" - integrity sha512-jAJxpC97jHoWU5mQkGw5MroguV8fbZsLPxdV7MdE/fX7lAR+t1UDLpSH41rqdxyJCtqi2/UoDOBuADCyZdHaYA== +rollup-plugin-visualizer@~5.8.2: + version "5.8.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.8.2.tgz#25a4cc6431aba2eba8ecb7c99d8c3623d493e4bd" + integrity sha512-Fh7KoAa7FVVOojmyyX9ro7fBSR7mPG2cgfDbA877HM4IeJJtSZO+I/R3h/u6TB8wVP5J4pXPpTaRMSREyqCS3g== dependencies: - mkdirp "^0.5.1" - nanoid "^2.1.6" - open "^6.0.0" - pupa "^2.0.0" - source-map "^0.7.3" - yargs "^15.0.0" + open "^8.4.0" + source-map "^0.7.4" + yargs "^17.5.1" rollup@^2.42.3: version "2.75.5" @@ -2289,11 +2218,6 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -2402,6 +2326,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -2449,6 +2378,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -2475,6 +2413,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -2713,11 +2658,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - which@^1.2.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -2739,15 +2679,6 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -2772,45 +2703,20 @@ xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.0.0, yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^15.0.0: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^16.0.0, yargs@^16.1.1: version "16.2.0" @@ -2825,6 +2731,19 @@ yargs@^16.0.0, yargs@^16.1.1: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"