@babel/plugin-proposal-decorators 8.0.0-alpha.3 → 8.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -4,6 +4,7 @@ import '@babel/helper-create-class-features-plugin';
4
4
  import { template, types } from '@babel/core';
5
5
  import ReplaceSupers from '@babel/helper-replace-supers';
6
6
  import splitExportDeclaration from '@babel/helper-split-export-declaration';
7
+ import { skipTransparentExprWrappers } from '@babel/helper-skip-transparent-expression-wrappers';
7
8
 
8
9
  const buildClassDecorator = template.statement(`
9
10
  DECORATOR(CLASS_REF = INNER) || CLASS_REF;
@@ -198,30 +199,33 @@ function createLazyPrivateUidGeneratorForClass(classPath) {
198
199
  return generator();
199
200
  };
200
201
  }
201
- function replaceClassWithVar(path) {
202
+ function replaceClassWithVar(path, className) {
202
203
  if (path.type === "ClassDeclaration") {
203
- const varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);
204
- const classId = types.identifier(path.node.id.name);
205
- path.scope.rename(classId.name, varId.name);
206
- path.insertBefore(types.variableDeclaration("let", [types.variableDeclarator(varId)]));
204
+ const id = path.node.id;
205
+ const className = id.name;
206
+ const varId = path.scope.generateUidIdentifierBasedOnNode(id);
207
+ const classId = types.identifier(className);
208
+ path.scope.rename(className, varId.name);
207
209
  path.get("id").replaceWith(classId);
208
- return [types.cloneNode(varId), path];
210
+ return {
211
+ id: types.cloneNode(varId),
212
+ path
213
+ };
209
214
  } else {
210
- let className;
211
215
  let varId;
212
216
  if (path.node.id) {
213
217
  className = path.node.id.name;
214
218
  varId = path.scope.parent.generateDeclaredUidIdentifier(className);
215
219
  path.scope.rename(className, varId.name);
216
- } else if (path.parentPath.node.type === "VariableDeclarator" && path.parentPath.node.id.type === "Identifier") {
217
- className = path.parentPath.node.id.name;
218
- varId = path.scope.parent.generateDeclaredUidIdentifier(className);
219
220
  } else {
220
- varId = path.scope.parent.generateDeclaredUidIdentifier("decorated_class");
221
+ varId = path.scope.parent.generateDeclaredUidIdentifier(typeof className === "string" ? className : "decorated_class");
221
222
  }
222
- const newClassExpr = types.classExpression(className && types.identifier(className), path.node.superClass, path.node.body);
223
+ const newClassExpr = types.classExpression(typeof className === "string" ? types.identifier(className) : null, path.node.superClass, path.node.body);
223
224
  const [newPath] = path.replaceWith(types.sequenceExpression([newClassExpr, varId]));
224
- return [types.cloneNode(varId), newPath.get("expressions.0")];
225
+ return {
226
+ id: types.cloneNode(varId),
227
+ path: newPath.get("expressions.0")
228
+ };
225
229
  }
226
230
  }
227
231
  function generateClassProperty(key, value, isStatic) {
@@ -376,18 +380,43 @@ function maybeSequenceExpression(exprs) {
376
380
  if (exprs.length === 1) return exprs[0];
377
381
  return types.sequenceExpression(exprs);
378
382
  }
379
- function transformClass(path, state, constantSuper, version) {
383
+ function createSetFunctionNameCall(state, className) {
384
+ return types.callExpression(state.addHelper("setFunctionName"), [types.thisExpression(), className]);
385
+ }
386
+ function createToPropertyKeyCall(state, propertyKey) {
387
+ return types.callExpression(state.addHelper("toPropertyKey"), [propertyKey]);
388
+ }
389
+ function transformClass(path, state, constantSuper, version, className, propertyVisitor) {
380
390
  const body = path.get("body.body");
381
391
  const classDecorators = path.node.decorators;
382
392
  let hasElementDecorators = false;
383
393
  const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);
394
+ const assignments = [];
395
+ const scopeParent = path.scope.parent;
396
+ const memoiseExpression = (expression, hint) => {
397
+ const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);
398
+ assignments.push(types.assignmentExpression("=", localEvaluatedId, expression));
399
+ return types.cloneNode(localEvaluatedId);
400
+ };
384
401
  for (const element of body) {
385
402
  if (!isClassDecoratableElementPath(element)) {
386
403
  continue;
387
404
  }
388
405
  if (element.node.decorators && element.node.decorators.length > 0) {
406
+ switch (element.node.type) {
407
+ case "ClassProperty":
408
+ propertyVisitor.ClassProperty(element, state);
409
+ break;
410
+ case "ClassPrivateProperty":
411
+ propertyVisitor.ClassPrivateProperty(element, state);
412
+ break;
413
+ case "ClassAccessorProperty":
414
+ propertyVisitor.ClassAccessorProperty(element, state);
415
+ break;
416
+ }
389
417
  hasElementDecorators = true;
390
418
  } else if (element.node.type === "ClassAccessorProperty") {
419
+ propertyVisitor.ClassAccessorProperty(element, state);
391
420
  const {
392
421
  key,
393
422
  value,
@@ -395,13 +424,19 @@ function transformClass(path, state, constantSuper, version) {
395
424
  computed
396
425
  } = element.node;
397
426
  const newId = generateClassPrivateUid();
398
- const valueNode = value ? types.cloneNode(value) : undefined;
399
- const newField = generateClassProperty(newId, valueNode, isStatic);
427
+ const newField = generateClassProperty(newId, value, isStatic);
428
+ const keyPath = element.get("key");
400
429
  const [newPath] = element.replaceWith(newField);
401
- addProxyAccessorsFor(path.node.id, newPath, key, newId, version, computed);
430
+ addProxyAccessorsFor(path.node.id, newPath, computed && !keyPath.isConstantExpression() ? memoiseExpression(createToPropertyKeyCall(state, key), "computedKey") : key, newId, version, computed);
402
431
  }
403
432
  }
404
- if (!classDecorators && !hasElementDecorators) return;
433
+ if (!classDecorators && !hasElementDecorators) {
434
+ if (assignments.length > 0) {
435
+ path.insertBefore(assignments.map(expr => types.expressionStatement(expr)));
436
+ path.scope.crawl();
437
+ }
438
+ return;
439
+ }
405
440
  const elementDecoratorInfo = [];
406
441
  let firstFieldPath;
407
442
  let constructorPath;
@@ -409,13 +444,6 @@ function transformClass(path, state, constantSuper, version) {
409
444
  let requiresStaticInit = false;
410
445
  const decoratedPrivateMethods = new Set();
411
446
  let protoInitLocal, staticInitLocal, classInitLocal, classIdLocal;
412
- const assignments = [];
413
- const scopeParent = path.scope.parent;
414
- const memoiseExpression = (expression, hint) => {
415
- const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);
416
- assignments.push(types.assignmentExpression("=", localEvaluatedId, expression));
417
- return types.cloneNode(localEvaluatedId);
418
- };
419
447
  const decoratorsThis = new Map();
420
448
  const maybeExtractDecorator = decorator => {
421
449
  const {
@@ -437,11 +465,14 @@ function transformClass(path, state, constantSuper, version) {
437
465
  decorator.expression = memoiseExpression(expression, "dec");
438
466
  }
439
467
  };
468
+ let needsDeclaraionForClassBinding = false;
440
469
  if (classDecorators) {
441
470
  classInitLocal = scopeParent.generateDeclaredUidIdentifier("initClass");
442
- const [classId, classPath] = replaceClassWithVar(path);
443
- path = classPath;
444
- classIdLocal = classId;
471
+ needsDeclaraionForClassBinding = path.isClassDeclaration();
472
+ ({
473
+ id: classIdLocal,
474
+ path
475
+ } = replaceClassWithVar(path, className));
445
476
  path.node.decorators = null;
446
477
  for (const classDecorator of classDecorators) {
447
478
  maybeExtractDecorator(classDecorator);
@@ -471,8 +502,8 @@ function transformClass(path, state, constantSuper, version) {
471
502
  }
472
503
  const isComputed = "computed" in element.node && element.node.computed === true;
473
504
  if (isComputed) {
474
- if (!scopeParent.isStatic(node.key)) {
475
- node.key = memoiseExpression(node.key, "computedKey");
505
+ if (!element.get("key").isConstantExpression()) {
506
+ node.key = memoiseExpression(createToPropertyKeyCall(state, node.key), "computedKey");
476
507
  }
477
508
  }
478
509
  const kind = getElementKind(element);
@@ -719,14 +750,17 @@ function transformClass(path, state, constantSuper, version) {
719
750
  superClass = id;
720
751
  }
721
752
  }
722
- originalClass.body.body.unshift(types.staticBlock([types.expressionStatement(createLocalsAssignment(elementLocals, classLocals, elementDecorations, types.arrayExpression(classDecorations), types.numericLiteral(classDecorationsFlag), needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, types.cloneNode(superClass), state)), requiresStaticInit && types.expressionStatement(types.callExpression(types.cloneNode(staticInitLocal), [types.thisExpression()]))].filter(Boolean)));
753
+ originalClass.body.body.unshift(types.staticBlock([types.expressionStatement(createLocalsAssignment(elementLocals, classLocals, elementDecorations, types.arrayExpression(classDecorations), types.numericLiteral(classDecorationsFlag), needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, typeof className === "object" ? className : undefined, types.cloneNode(superClass), state)), requiresStaticInit && types.expressionStatement(types.callExpression(types.cloneNode(staticInitLocal), [types.thisExpression()]))].filter(Boolean)));
723
754
  path.insertBefore(assignments.map(expr => types.expressionStatement(expr)));
755
+ if (needsDeclaraionForClassBinding) {
756
+ path.insertBefore(types.variableDeclaration("let", [types.variableDeclarator(types.cloneNode(classIdLocal))]));
757
+ }
724
758
  path.scope.crawl();
725
759
  return path;
726
760
  }
727
- function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBranName, superClass, state, version) {
761
+ function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBranName, setClassName, superClass, state, version) {
728
762
  let lhs, rhs;
729
- const args = [types.thisExpression(), elementDecorations, classDecorations];
763
+ const args = [setClassName ? createSetFunctionNameCall(state, setClassName) : types.thisExpression(), elementDecorations, classDecorations];
730
764
  {
731
765
  if (maybePrivateBranName || superClass || classDecorationsFlag.value !== 0) {
732
766
  args.push(classDecorationsFlag);
@@ -754,6 +788,169 @@ function createLocalsAssignment(elementLocals, classLocals, elementDecorations,
754
788
  }
755
789
  return types.assignmentExpression("=", lhs, rhs);
756
790
  }
791
+ function isProtoKey(node) {
792
+ return node.type === "Identifier" ? node.name === "__proto__" : node.value === "__proto__";
793
+ }
794
+ function isDecorated(node) {
795
+ return node.decorators && node.decorators.length > 0;
796
+ }
797
+ function shouldTransformElement(node) {
798
+ switch (node.type) {
799
+ case "ClassAccessorProperty":
800
+ return true;
801
+ case "ClassMethod":
802
+ case "ClassProperty":
803
+ case "ClassPrivateMethod":
804
+ case "ClassPrivateProperty":
805
+ return isDecorated(node);
806
+ default:
807
+ return false;
808
+ }
809
+ }
810
+ function shouldTransformClass(node) {
811
+ return isDecorated(node) || node.body.body.some(shouldTransformElement);
812
+ }
813
+ function NamedEvaluationVisitoryFactory(isAnonymous, visitor) {
814
+ function handleComputedProperty(propertyPath, key, state) {
815
+ switch (key.type) {
816
+ case "StringLiteral":
817
+ return types.stringLiteral(key.value);
818
+ case "NumericLiteral":
819
+ case "BigIntLiteral":
820
+ {
821
+ const keyValue = key.value + "";
822
+ propertyPath.get("key").replaceWith(types.stringLiteral(keyValue));
823
+ return types.stringLiteral(keyValue);
824
+ }
825
+ default:
826
+ {
827
+ const ref = propertyPath.scope.maybeGenerateMemoised(key);
828
+ propertyPath.get("key").replaceWith(types.assignmentExpression("=", ref, types.callExpression(state.addHelper("toPropertyKey"), [key])));
829
+ return types.cloneNode(ref);
830
+ }
831
+ }
832
+ }
833
+ return {
834
+ VariableDeclarator(path, state) {
835
+ const id = path.node.id;
836
+ if (id.type === "Identifier") {
837
+ const initializer = skipTransparentExprWrappers(path.get("init"));
838
+ if (isAnonymous(initializer)) {
839
+ const name = id.name;
840
+ visitor(initializer, state, name);
841
+ }
842
+ }
843
+ },
844
+ AssignmentExpression(path, state) {
845
+ const id = path.node.left;
846
+ if (id.type === "Identifier") {
847
+ const initializer = skipTransparentExprWrappers(path.get("right"));
848
+ if (isAnonymous(initializer)) {
849
+ switch (path.node.operator) {
850
+ case "=":
851
+ case "&&=":
852
+ case "||=":
853
+ case "??=":
854
+ visitor(initializer, state, id.name);
855
+ }
856
+ }
857
+ }
858
+ },
859
+ AssignmentPattern(path, state) {
860
+ const id = path.node.left;
861
+ if (id.type === "Identifier") {
862
+ const initializer = skipTransparentExprWrappers(path.get("right"));
863
+ if (isAnonymous(initializer)) {
864
+ const name = id.name;
865
+ visitor(initializer, state, name);
866
+ }
867
+ }
868
+ },
869
+ ObjectExpression(path, state) {
870
+ for (const propertyPath of path.get("properties")) {
871
+ const {
872
+ node
873
+ } = propertyPath;
874
+ if (node.type !== "ObjectProperty") continue;
875
+ const id = node.key;
876
+ const initializer = skipTransparentExprWrappers(propertyPath.get("value"));
877
+ if (isAnonymous(initializer)) {
878
+ if (!node.computed) {
879
+ if (!isProtoKey(id)) {
880
+ if (id.type === "Identifier") {
881
+ visitor(initializer, state, id.name);
882
+ } else {
883
+ const className = types.stringLiteral(id.value + "");
884
+ visitor(initializer, state, className);
885
+ }
886
+ }
887
+ } else {
888
+ const ref = handleComputedProperty(propertyPath, id, state);
889
+ visitor(initializer, state, ref);
890
+ }
891
+ }
892
+ }
893
+ },
894
+ ClassPrivateProperty(path, state) {
895
+ const {
896
+ node
897
+ } = path;
898
+ const initializer = skipTransparentExprWrappers(path.get("value"));
899
+ if (isAnonymous(initializer)) {
900
+ const className = types.stringLiteral("#" + node.key.id.name);
901
+ visitor(initializer, state, className);
902
+ }
903
+ },
904
+ ClassAccessorProperty(path, state) {
905
+ const {
906
+ node
907
+ } = path;
908
+ const id = node.key;
909
+ const initializer = skipTransparentExprWrappers(path.get("value"));
910
+ if (isAnonymous(initializer)) {
911
+ if (!node.computed) {
912
+ if (id.type === "Identifier") {
913
+ visitor(initializer, state, id.name);
914
+ } else if (id.type === "PrivateName") {
915
+ const className = types.stringLiteral("#" + id.id.name);
916
+ visitor(initializer, state, className);
917
+ } else {
918
+ const className = types.stringLiteral(id.value + "");
919
+ visitor(initializer, state, className);
920
+ }
921
+ } else {
922
+ const ref = handleComputedProperty(path, id, state);
923
+ visitor(initializer, state, ref);
924
+ }
925
+ }
926
+ },
927
+ ClassProperty(path, state) {
928
+ const {
929
+ node
930
+ } = path;
931
+ const id = node.key;
932
+ const initializer = skipTransparentExprWrappers(path.get("value"));
933
+ if (isAnonymous(initializer)) {
934
+ if (!node.computed) {
935
+ if (id.type === "Identifier") {
936
+ visitor(initializer, state, id.name);
937
+ } else {
938
+ const className = types.stringLiteral(id.value + "");
939
+ visitor(initializer, state, className);
940
+ }
941
+ } else {
942
+ const ref = handleComputedProperty(path, id, state);
943
+ visitor(initializer, state, ref);
944
+ }
945
+ }
946
+ }
947
+ };
948
+ }
949
+ function isDecoratedAnonymousClassExpression(path) {
950
+ return path.isClassExpression({
951
+ id: null
952
+ }) && shouldTransformClass(path.node);
953
+ }
757
954
  function transformer2023_05 ({
758
955
  assertVersion,
759
956
  assumption
@@ -761,33 +958,57 @@ function transformer2023_05 ({
761
958
  loose
762
959
  }, version) {
763
960
  {
764
- assertVersion("^7.21.0");
961
+ assertVersion("8.0.0-alpha.5");
765
962
  }
766
963
  const VISITED = new WeakSet();
767
964
  const constantSuper = assumption("constantSuper") ?? loose;
965
+ const namedEvaluationVisitor = NamedEvaluationVisitoryFactory(isDecoratedAnonymousClassExpression, visitClass);
966
+ function visitClass(path, state, className) {
967
+ if (VISITED.has(path)) return;
968
+ const {
969
+ node
970
+ } = path;
971
+ className ??= node.id?.name;
972
+ const newPath = transformClass(path, state, constantSuper, version, className, namedEvaluationVisitor);
973
+ if (newPath) {
974
+ VISITED.add(newPath);
975
+ return;
976
+ }
977
+ VISITED.add(path);
978
+ }
768
979
  return {
769
980
  name: "proposal-decorators",
770
981
  inherits: syntaxDecorators,
771
- visitor: {
772
- "ExportNamedDeclaration|ExportDefaultDeclaration"(path) {
982
+ visitor: Object.assign({
983
+ ExportDefaultDeclaration(path, state) {
984
+ const {
985
+ declaration
986
+ } = path.node;
987
+ if (declaration?.type === "ClassDeclaration" && isDecorated(declaration)) {
988
+ const isAnonymous = !declaration.id;
989
+ const updatedVarDeclarationPath = splitExportDeclaration(path);
990
+ if (isAnonymous) {
991
+ visitClass(updatedVarDeclarationPath, state, types.stringLiteral("default"));
992
+ }
993
+ }
994
+ },
995
+ ExportNamedDeclaration(path) {
773
996
  const {
774
997
  declaration
775
998
  } = path.node;
776
- if (declaration?.type === "ClassDeclaration" && declaration.decorators?.length > 0) {
999
+ if (declaration?.type === "ClassDeclaration" && isDecorated(declaration)) {
777
1000
  splitExportDeclaration(path);
778
1001
  }
779
1002
  },
780
1003
  Class(path, state) {
781
- if (VISITED.has(path)) return;
782
- const newPath = transformClass(path, state, constantSuper, version);
783
- if (newPath) VISITED.add(newPath);
1004
+ visitClass(path, state, undefined);
784
1005
  }
785
- }
1006
+ }, namedEvaluationVisitor)
786
1007
  };
787
1008
  }
788
1009
 
789
1010
  var index = declare((api, options) => {
790
- api.assertVersion(7);
1011
+ api.assertVersion("8.0.0-alpha.5");
791
1012
  const {
792
1013
  version
793
1014
  } = options;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/transformer-legacy.ts","../src/transformer-2023-05.ts","../src/index.ts"],"sourcesContent":["// Fork of https://github.com/loganfsmyth/babel-plugin-proposal-decorators-legacy\n\nimport { template, types as t, type PluginPass } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/traverse\";\n\nconst buildClassDecorator = template.statement(`\n DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n`) as (replacements: {\n DECORATOR: t.Expression;\n CLASS_REF: t.Identifier;\n INNER: t.Expression;\n}) => t.ExpressionStatement;\n\nconst buildClassPrototype = template(`\n CLASS_REF.prototype;\n`) as (replacements: { CLASS_REF: t.Identifier }) => t.ExpressionStatement;\n\nconst buildGetDescriptor = template(`\n Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n`) as (replacements: {\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst buildGetObjectInitializer = template(`\n (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n enumerable: true,\n configurable: true,\n writable: true,\n initializer: function(){\n return TEMP;\n }\n })\n`) as (replacements: {\n TEMP: t.Identifier;\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst WARNING_CALLS = new WeakSet();\n\n// legacy decorator does not support ClassAccessorProperty\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty;\n\n/**\n * If the decorator expressions are non-identifiers, hoist them to before the class so we can be sure\n * that they are evaluated in order.\n */\nfunction applyEnsureOrdering(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n) {\n // TODO: This should probably also hoist computed properties.\n const decorators: t.Decorator[] = (\n path.isClass()\n ? [\n path,\n ...(path.get(\"body.body\") as NodePath<ClassDecoratableElement>[]),\n ]\n : path.get(\"properties\")\n ).reduce(\n (\n acc: t.Decorator[],\n prop: NodePath<\n t.ObjectMember | t.ClassExpression | ClassDecoratableElement\n >,\n ) => acc.concat(prop.node.decorators || []),\n [],\n );\n\n const identDecorators = decorators.filter(\n decorator => !t.isIdentifier(decorator.expression),\n );\n if (identDecorators.length === 0) return;\n\n return t.sequenceExpression(\n identDecorators\n .map((decorator): t.Expression => {\n const expression = decorator.expression;\n const id = (decorator.expression =\n path.scope.generateDeclaredUidIdentifier(\"dec\"));\n return t.assignmentExpression(\"=\", id, expression);\n })\n .concat([path.node]),\n );\n}\n\n/**\n * Given a class expression with class-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyClassDecorators(classPath: NodePath<t.ClassExpression>) {\n if (!hasClassDecorators(classPath.node)) return;\n\n const decorators = classPath.node.decorators || [];\n classPath.node.decorators = null;\n\n const name = classPath.scope.generateDeclaredUidIdentifier(\"class\");\n\n return decorators\n .map(dec => dec.expression)\n .reverse()\n .reduce(function (acc, decorator) {\n return buildClassDecorator({\n CLASS_REF: t.cloneNode(name),\n DECORATOR: t.cloneNode(decorator),\n INNER: acc,\n }).expression;\n }, classPath.node);\n}\n\nfunction hasClassDecorators(classNode: t.Class) {\n return !!classNode.decorators?.length;\n}\n\n/**\n * Given a class expression with method-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyMethodDecorators(\n path: NodePath<t.ClassExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.body.body)) return;\n\n return applyTargetDecorators(\n path,\n state,\n // @ts-expect-error ClassAccessorProperty is not supported in legacy decorator\n path.node.body.body,\n );\n}\n\nfunction hasMethodDecorators(\n body: t.ClassBody[\"body\"] | t.ObjectExpression[\"properties\"],\n) {\n return body.some(\n node =>\n // @ts-expect-error decorators not in SpreadElement/StaticBlock\n node.decorators?.length,\n );\n}\n\n/**\n * Given an object expression with property decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyObjectDecorators(\n path: NodePath<t.ObjectExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.properties)) return;\n\n return applyTargetDecorators(\n path,\n state,\n path.node.properties.filter(\n (prop): prop is t.ObjectMember => prop.type !== \"SpreadElement\",\n ),\n );\n}\n\n/**\n * A helper to pull out property decorators into a sequence expression.\n */\nfunction applyTargetDecorators(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n state: PluginPass,\n decoratedProps: (t.ObjectMember | ClassDecoratableElement)[],\n) {\n const name = path.scope.generateDeclaredUidIdentifier(\n path.isClass() ? \"class\" : \"obj\",\n );\n\n const exprs = decoratedProps.reduce(function (acc, node) {\n let decorators: t.Decorator[] = [];\n if (node.decorators != null) {\n decorators = node.decorators;\n node.decorators = null;\n }\n\n if (decorators.length === 0) return acc;\n\n if (\n // @ts-expect-error computed is not in ClassPrivateProperty\n node.computed\n ) {\n throw path.buildCodeFrameError(\n \"Computed method/property decorators are not yet supported.\",\n );\n }\n\n const property: t.Literal = t.isLiteral(node.key)\n ? node.key\n : t.stringLiteral(\n // @ts-expect-error: should we handle ClassPrivateProperty?\n node.key.name,\n );\n\n const target =\n path.isClass() && !(node as ClassDecoratableElement).static\n ? buildClassPrototype({\n CLASS_REF: name,\n }).expression\n : name;\n\n if (t.isClassProperty(node, { static: false })) {\n const descriptor = path.scope.generateDeclaredUidIdentifier(\"descriptor\");\n\n const initializer = node.value\n ? t.functionExpression(\n null,\n [],\n t.blockStatement([t.returnStatement(node.value)]),\n )\n : t.nullLiteral();\n\n node.value = t.callExpression(\n state.addHelper(\"initializerWarningHelper\"),\n [descriptor, t.thisExpression()],\n );\n\n WARNING_CALLS.add(node.value);\n\n acc.push(\n t.assignmentExpression(\n \"=\",\n t.cloneNode(descriptor),\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(\n decorators.map(dec => t.cloneNode(dec.expression)),\n ),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"configurable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"enumerable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"writable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(t.identifier(\"initializer\"), initializer),\n ]),\n ]),\n ),\n );\n } else {\n acc.push(\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(decorators.map(dec => t.cloneNode(dec.expression))),\n t.isObjectProperty(node) || t.isClassProperty(node, { static: true })\n ? buildGetObjectInitializer({\n TEMP: path.scope.generateDeclaredUidIdentifier(\"init\"),\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression\n : buildGetDescriptor({\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression,\n t.cloneNode(target),\n ]),\n );\n }\n\n return acc;\n }, []);\n\n return t.sequenceExpression([\n t.assignmentExpression(\"=\", t.cloneNode(name), path.node),\n t.sequenceExpression(exprs),\n t.cloneNode(name),\n ]);\n}\n\nfunction decoratedClassToExpression({ node, scope }: NodePath<t.Class>) {\n if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {\n return;\n }\n\n const ref = node.id\n ? t.cloneNode(node.id)\n : scope.generateUidIdentifier(\"class\");\n\n return t.variableDeclaration(\"let\", [\n t.variableDeclarator(ref, t.toExpression(node)),\n ]);\n}\n\nconst visitor: Visitor<PluginPass> = {\n ExportDefaultDeclaration(path) {\n const decl = path.get(\"declaration\");\n if (!decl.isClassDeclaration()) return;\n\n const replacement = decoratedClassToExpression(decl);\n if (replacement) {\n const [varDeclPath] = path.replaceWithMultiple([\n replacement,\n t.exportNamedDeclaration(null, [\n t.exportSpecifier(\n // @ts-expect-error todo(flow->ts) might be add more specific return type for decoratedClassToExpression\n t.cloneNode(replacement.declarations[0].id),\n t.identifier(\"default\"),\n ),\n ]),\n ]);\n\n if (!decl.node.id) {\n path.scope.registerDeclaration(varDeclPath);\n }\n }\n },\n ClassDeclaration(path) {\n const replacement = decoratedClassToExpression(path);\n if (replacement) {\n const [newPath] = path.replaceWith(replacement);\n\n const decl = newPath.get(\"declarations.0\");\n const id = decl.node.id as t.Identifier;\n\n // TODO: Maybe add this logic to @babel/traverse\n const binding = path.scope.getOwnBinding(id.name);\n binding.identifier = id;\n binding.path = decl;\n }\n },\n ClassExpression(path, state) {\n // Create a replacement for the class node if there is one. We do one pass to replace classes with\n // class decorators, and a second pass to process method decorators.\n const decoratedClass =\n applyEnsureOrdering(path) ||\n applyClassDecorators(path) ||\n applyMethodDecorators(path, state);\n\n if (decoratedClass) path.replaceWith(decoratedClass);\n },\n ObjectExpression(path, state) {\n const decoratedObject =\n applyEnsureOrdering(path) || applyObjectDecorators(path, state);\n\n if (decoratedObject) path.replaceWith(decoratedObject);\n },\n\n AssignmentExpression(path, state) {\n if (!WARNING_CALLS.has(path.node.right)) return;\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n t.cloneNode(path.get(\"left.object\").node),\n t.stringLiteral(\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.name ||\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.value,\n ),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[1].node),\n ]),\n );\n },\n\n CallExpression(path, state) {\n if (path.node.arguments.length !== 3) return;\n if (!WARNING_CALLS.has(path.node.arguments[2])) return;\n\n // If the class properties plugin isn't enabled, this line will add an unused helper\n // to the code. It's not ideal, but it's ok since the configuration is not valid anyway.\n // @ts-expect-error todo(flow->ts) check that `callee` is Identifier\n if (path.node.callee.name !== state.addHelper(\"defineProperty\").name) {\n return;\n }\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n t.cloneNode(path.get(\"arguments\")[0].node),\n t.cloneNode(path.get(\"arguments\")[1].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[1].node),\n ]),\n );\n },\n};\n\nexport default visitor;\n","import type { NodePath, Scope } from \"@babel/traverse\";\nimport { types as t, template } from \"@babel/core\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\nimport * as charCodes from \"charcodes\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport type { Options } from \"./index.ts\";\n\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty;\n\ntype ClassElement =\n | ClassDecoratableElement\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock;\n\ntype DecoratorVersionKind = \"2023-05\" | \"2023-01\" | \"2022-03\" | \"2021-12\";\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n // If index is -1, id needs an additional character, unshift A\n if (idx === -1) {\n id.unshift(charCodes.uppercaseA);\n return;\n }\n\n const current = id[idx];\n\n if (current === charCodes.uppercaseZ) {\n // if current is Z, skip to a\n id[idx] = charCodes.lowercaseA;\n } else if (current === charCodes.lowercaseZ) {\n // if current is z, reset to A and carry the 1\n id[idx] = charCodes.uppercaseA;\n incrementId(id, idx - 1);\n } else {\n // else, increment by one\n id[idx] = current + 1;\n }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n const currentPrivateId: number[] = [];\n const privateNames = new Set<string>();\n\n classPath.traverse({\n PrivateName(path) {\n privateNames.add(path.node.id.name);\n },\n });\n\n return (): t.PrivateName => {\n let reifiedId;\n do {\n incrementId(currentPrivateId);\n reifiedId = String.fromCharCode(...currentPrivateId);\n } while (privateNames.has(reifiedId));\n\n return t.privateName(t.identifier(reifiedId));\n };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n let generator: () => t.PrivateName;\n\n return (): t.PrivateName => {\n if (!generator) {\n generator = createPrivateUidGeneratorForClass(classPath);\n }\n\n return generator();\n };\n}\n\n/**\n * Takes a class definition and replaces it with an equivalent class declaration\n * which is then assigned to a local variable. This allows us to reassign the\n * local variable with the decorated version of the class. The class definition\n * retains its original name so that `toString` is not affected, other\n * references to the class are renamed instead.\n */\nfunction replaceClassWithVar(\n path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): [t.Identifier, NodePath<t.ClassDeclaration | t.ClassExpression>] {\n if (path.type === \"ClassDeclaration\") {\n const varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);\n const classId = t.identifier(path.node.id.name);\n\n path.scope.rename(classId.name, varId.name);\n\n path.insertBefore(\n t.variableDeclaration(\"let\", [t.variableDeclarator(varId)]),\n );\n path.get(\"id\").replaceWith(classId);\n\n return [t.cloneNode(varId), path];\n } else {\n let className: string;\n let varId: t.Identifier;\n\n if (path.node.id) {\n className = path.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n path.scope.rename(className, varId.name);\n } else if (\n path.parentPath.node.type === \"VariableDeclarator\" &&\n path.parentPath.node.id.type === \"Identifier\"\n ) {\n className = path.parentPath.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n } else {\n varId =\n path.scope.parent.generateDeclaredUidIdentifier(\"decorated_class\");\n }\n\n const newClassExpr = t.classExpression(\n className && t.identifier(className),\n path.node.superClass,\n path.node.body,\n );\n\n const [newPath] = path.replaceWith(\n t.sequenceExpression([newClassExpr, varId]),\n );\n\n return [\n t.cloneNode(varId),\n newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n ];\n }\n}\n\nfunction generateClassProperty(\n key: t.PrivateName | t.Identifier,\n value: t.Expression | undefined,\n isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n if (key.type === \"PrivateName\") {\n return t.classPrivateProperty(key, value, undefined, isStatic);\n } else {\n return t.classProperty(key, value, undefined, undefined, isStatic);\n }\n}\n\nfunction addProxyAccessorsFor(\n className: t.Identifier,\n element: NodePath<ClassDecoratableElement>,\n originalKey: t.PrivateName | t.Expression,\n targetKey: t.PrivateName,\n version: DecoratorVersionKind,\n isComputed = false,\n): void {\n const { static: isStatic } = element.node;\n\n const thisArg =\n version === \"2023-05\" && isStatic ? className : t.thisExpression();\n\n const getterBody = t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n ),\n ]);\n\n const setterBody = t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n t.identifier(\"v\"),\n ),\n ),\n ]);\n\n let getter: t.ClassMethod | t.ClassPrivateMethod,\n setter: t.ClassMethod | t.ClassPrivateMethod;\n\n if (originalKey.type === \"PrivateName\") {\n getter = t.classPrivateMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isStatic,\n );\n setter = t.classPrivateMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isStatic,\n );\n } else {\n getter = t.classMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isComputed,\n isStatic,\n );\n setter = t.classMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isComputed,\n isStatic,\n );\n }\n\n element.insertAfter(setter);\n element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n targetKey: t.PrivateName,\n version: DecoratorVersionKind,\n): (t.FunctionExpression | t.ArrowFunctionExpression)[] {\n if (version !== \"2023-05\" && version !== \"2023-01\") {\n return [\n template.expression.ast`\n function () {\n return this.${t.cloneNode(targetKey)};\n }\n ` as t.FunctionExpression,\n template.expression.ast`\n function (value) {\n this.${t.cloneNode(targetKey)} = value;\n }\n ` as t.FunctionExpression,\n ];\n }\n return [\n template.expression.ast`\n o => o.${t.cloneNode(targetKey)}\n ` as t.ArrowFunctionExpression,\n template.expression.ast`\n (o, v) => o.${t.cloneNode(targetKey)} = v\n ` as t.ArrowFunctionExpression,\n ];\n}\n\n// 3 bits reserved to this (0-7)\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC_OLD_VERSION = 5; // Before 2023-05\nconst STATIC = 8; // 1 << 3\nconst DECORATORS_HAVE_THIS = 16; // 1 << 3\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n switch (element.node.type) {\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n return FIELD;\n case \"ClassAccessorProperty\":\n return ACCESSOR;\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n if (element.node.kind === \"get\") {\n return GETTER;\n } else if (element.node.kind === \"set\") {\n return SETTER;\n } else {\n return METHOD;\n }\n }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n // The expressions of the decorators themselves\n decorators: t.Expression[];\n decoratorsThis: t.Expression[];\n\n // The kind of the decorated value, matches the kind value passed to applyDecs\n kind: number;\n\n // whether or not the field is static\n isStatic: boolean;\n\n // The name of the decorator\n name: t.StringLiteral | t.Expression;\n\n privateMethods:\n | (t.FunctionExpression | t.ArrowFunctionExpression)[]\n | undefined;\n\n // The names of local variables that will be used/returned from the decoration\n locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n// Information about a computed property key. These must be evaluated\n// interspersed with decorator expressions, which is why they get added to the\n// array of DecoratorInfos later on.\ninterface ComputedPropInfo {\n localComputedNameId: t.Identifier;\n keyNode: t.Expression;\n}\n\nfunction isDecoratorInfo(\n info: DecoratorInfo | ComputedPropInfo,\n): info is DecoratorInfo {\n return \"decorators\" in info;\n}\n\nfunction filteredOrderedDecoratorInfo(\n info: (DecoratorInfo | ComputedPropInfo)[],\n): DecoratorInfo[] {\n const filtered = info.filter(isDecoratorInfo);\n\n return [\n ...filtered.filter(\n el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(\n el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(el => el.isStatic && el.kind === FIELD),\n ...filtered.filter(el => !el.isStatic && el.kind === FIELD),\n ];\n}\n\nfunction generateDecorationList(\n decorators: t.Expression[],\n decoratorsThis: (t.Expression | null)[],\n version: DecoratorVersionKind,\n) {\n const decsCount = decorators.length;\n const hasOneThis = decoratorsThis.some(Boolean);\n const decs: t.Expression[] = [];\n for (let i = 0; i < decsCount; i++) {\n if (version === \"2023-05\" && hasOneThis) {\n decs.push(\n decoratorsThis[i] || t.unaryExpression(\"void\", t.numericLiteral(0)),\n );\n }\n decs.push(decorators[i]);\n }\n\n return { hasThis: hasOneThis, decs };\n}\n\nfunction generateDecorationExprs(\n info: (DecoratorInfo | ComputedPropInfo)[],\n version: DecoratorVersionKind,\n): t.ArrayExpression {\n return t.arrayExpression(\n filteredOrderedDecoratorInfo(info).map(el => {\n const { decs, hasThis } = generateDecorationList(\n el.decorators,\n el.decoratorsThis,\n version,\n );\n\n let flag = el.kind;\n if (el.isStatic) {\n flag += version === \"2023-05\" ? STATIC : STATIC_OLD_VERSION;\n }\n if (hasThis) flag += DECORATORS_HAVE_THIS;\n\n return t.arrayExpression([\n decs.length === 1 ? decs[0] : t.arrayExpression(decs),\n t.numericLiteral(flag),\n el.name,\n ...(el.privateMethods || []),\n ]);\n }),\n );\n}\n\nfunction extractElementLocalAssignments(\n decorationInfo: (DecoratorInfo | ComputedPropInfo)[],\n) {\n const localIds: t.Identifier[] = [];\n\n for (const el of filteredOrderedDecoratorInfo(decorationInfo)) {\n const { locals } = el;\n\n if (Array.isArray(locals)) {\n localIds.push(...locals);\n } else if (locals !== undefined) {\n localIds.push(locals);\n }\n }\n\n return localIds;\n}\n\nfunction addCallAccessorsFor(\n element: NodePath,\n key: t.PrivateName,\n getId: t.Identifier,\n setId: t.Identifier,\n) {\n element.insertAfter(\n t.classPrivateMethod(\n \"get\",\n t.cloneNode(key),\n [],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(t.cloneNode(getId), [t.thisExpression()]),\n ),\n ]),\n ),\n );\n\n element.insertAfter(\n t.classPrivateMethod(\n \"set\",\n t.cloneNode(key),\n [t.identifier(\"v\")],\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(t.cloneNode(setId), [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ]),\n ),\n );\n}\n\nfunction isNotTsParameter(\n node: t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty,\n): node is t.Identifier | t.Pattern | t.RestElement {\n return node.type !== \"TSParameterProperty\";\n}\n\nfunction movePrivateAccessor(\n element: NodePath<t.ClassPrivateMethod>,\n key: t.PrivateName,\n methodLocalVar: t.Identifier,\n isStatic: boolean,\n) {\n let params: (t.Identifier | t.RestElement)[];\n let block: t.Statement[];\n\n if (element.node.kind === \"set\") {\n params = [t.identifier(\"v\")];\n block = [\n t.expressionStatement(\n t.callExpression(methodLocalVar, [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ];\n } else {\n params = [];\n block = [\n t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n ];\n }\n\n element.replaceWith(\n t.classPrivateMethod(\n element.node.kind,\n t.cloneNode(key),\n params,\n t.blockStatement(block),\n isStatic,\n ),\n );\n}\n\nfunction isClassDecoratableElementPath(\n path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n const { type } = path;\n\n return (\n type !== \"TSDeclareMethod\" &&\n type !== \"TSIndexSignature\" &&\n type !== \"StaticBlock\"\n );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n return t.callExpression(\n t.arrowFunctionExpression([], t.blockStatement(block.body)),\n [],\n );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n if (exprs.length === 1) return exprs[0];\n return t.sequenceExpression(exprs);\n}\n\nfunction transformClass(\n path: NodePath<t.ClassExpression | t.ClassDeclaration>,\n state: PluginPass,\n constantSuper: boolean,\n version: DecoratorVersionKind,\n): NodePath {\n const body = path.get(\"body.body\");\n\n const classDecorators = path.node.decorators;\n let hasElementDecorators = false;\n\n const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n // Iterate over the class to see if we need to decorate it, and also to\n // transform simple auto accessors which are not decorated\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n if (element.node.decorators && element.node.decorators.length > 0) {\n hasElementDecorators = true;\n } else if (element.node.type === \"ClassAccessorProperty\") {\n const { key, value, static: isStatic, computed } = element.node;\n\n const newId = generateClassPrivateUid();\n\n const valueNode = value ? t.cloneNode(value) : undefined;\n\n const newField = generateClassProperty(newId, valueNode, isStatic);\n\n const [newPath] = element.replaceWith(newField);\n addProxyAccessorsFor(\n path.node.id,\n newPath,\n key,\n newId,\n version,\n computed,\n );\n }\n }\n\n // If nothing is decorated, return\n if (!classDecorators && !hasElementDecorators) return;\n\n const elementDecoratorInfo: (DecoratorInfo | ComputedPropInfo)[] = [];\n\n // The initializer of the first non-static field will be injected with the protoInit call\n let firstFieldPath:\n | NodePath<t.ClassProperty | t.ClassPrivateProperty>\n | undefined;\n let constructorPath: NodePath<t.ClassMethod> | undefined;\n let requiresProtoInit = false;\n let requiresStaticInit = false;\n const decoratedPrivateMethods = new Set<string>();\n\n let protoInitLocal: t.Identifier,\n staticInitLocal: t.Identifier,\n classInitLocal: t.Identifier,\n classIdLocal: t.Identifier;\n const assignments: t.AssignmentExpression[] = [];\n const scopeParent: Scope = path.scope.parent;\n\n const memoiseExpression = (expression: t.Expression, hint: string) => {\n const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);\n assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n return t.cloneNode(localEvaluatedId);\n };\n\n const decoratorsThis = new Map<t.Decorator, t.Expression>();\n const maybeExtractDecorator = (decorator: t.Decorator) => {\n const { expression } = decorator;\n if (version === \"2023-05\" && t.isMemberExpression(expression)) {\n let object;\n if (\n t.isSuper(expression.object) ||\n t.isThisExpression(expression.object)\n ) {\n object = memoiseExpression(t.thisExpression(), \"obj\");\n } else if (!scopeParent.isStatic(expression.object)) {\n object = memoiseExpression(expression.object, \"obj\");\n expression.object = object;\n } else {\n object = expression.object;\n }\n decoratorsThis.set(decorator, t.cloneNode(object));\n }\n if (!scopeParent.isStatic(expression)) {\n decorator.expression = memoiseExpression(expression, \"dec\");\n }\n };\n\n if (classDecorators) {\n classInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initClass\");\n\n const [classId, classPath] = replaceClassWithVar(path);\n path = classPath;\n classIdLocal = classId;\n\n path.node.decorators = null;\n\n for (const classDecorator of classDecorators) {\n maybeExtractDecorator(classDecorator);\n }\n } else {\n if (!path.node.id) {\n path.node.id = path.scope.generateUidIdentifier(\"Class\");\n }\n classIdLocal = t.cloneNode(path.node.id);\n }\n\n let lastInstancePrivateName: t.PrivateName;\n let needsInstancePrivateBrandCheck = false;\n\n if (hasElementDecorators) {\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n const { node } = element;\n const decorators = element.get(\"decorators\");\n\n const hasDecorators = Array.isArray(decorators) && decorators.length > 0;\n\n if (hasDecorators) {\n for (const decoratorPath of decorators) {\n maybeExtractDecorator(decoratorPath.node);\n }\n }\n\n const isComputed =\n \"computed\" in element.node && element.node.computed === true;\n if (isComputed) {\n if (!scopeParent.isStatic(node.key)) {\n node.key = memoiseExpression(node.key as t.Expression, \"computedKey\");\n }\n }\n\n const kind = getElementKind(element);\n const { key } = node;\n\n const isPrivate = key.type === \"PrivateName\";\n\n const isStatic = !!element.node.static;\n\n let name = \"computedKey\";\n\n if (isPrivate) {\n name = key.id.name;\n } else if (!isComputed && key.type === \"Identifier\") {\n name = key.name;\n }\n\n if (isPrivate && !isStatic) {\n if (hasDecorators) {\n needsInstancePrivateBrandCheck = true;\n }\n if (t.isClassPrivateProperty(node) || !lastInstancePrivateName) {\n lastInstancePrivateName = key;\n }\n }\n\n if (element.isClassMethod({ kind: \"constructor\" })) {\n constructorPath = element;\n }\n\n if (hasDecorators) {\n let locals: t.Identifier | t.Identifier[];\n let privateMethods: Array<\n t.FunctionExpression | t.ArrowFunctionExpression\n >;\n\n if (kind === ACCESSOR) {\n const { value } = element.node as t.ClassAccessorProperty;\n\n const params: t.Expression[] = [t.thisExpression()];\n\n if (value) {\n params.push(t.cloneNode(value));\n }\n\n const newId = generateClassPrivateUid();\n const newFieldInitId =\n element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);\n const newValue = t.callExpression(\n t.cloneNode(newFieldInitId),\n params,\n );\n\n const newField = generateClassProperty(newId, newValue, isStatic);\n const [newPath] = element.replaceWith(newField);\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(newId, version);\n\n const getId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `get_${name}`,\n );\n const setId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `set_${name}`,\n );\n\n addCallAccessorsFor(newPath, key, getId, setId);\n\n locals = [newFieldInitId, getId, setId];\n } else {\n addProxyAccessorsFor(\n path.node.id,\n newPath,\n key,\n newId,\n version,\n isComputed,\n );\n locals = newFieldInitId;\n }\n } else if (kind === FIELD) {\n const initId = element.scope.parent.generateDeclaredUidIdentifier(\n `init_${name}`,\n );\n const valuePath = (\n element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n ).get(\"value\");\n\n valuePath.replaceWith(\n t.callExpression(\n t.cloneNode(initId),\n [t.thisExpression(), valuePath.node].filter(v => v),\n ),\n );\n\n locals = initId;\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(key, version);\n }\n } else if (isPrivate) {\n locals = element.scope.parent.generateDeclaredUidIdentifier(\n `call_${name}`,\n );\n\n const replaceSupers = new ReplaceSupers({\n constantSuper,\n methodPath: element as NodePath<t.ClassPrivateMethod>,\n objectRef: classIdLocal,\n superRef: path.node.superClass,\n file: state.file,\n refToPreserve: classIdLocal,\n });\n\n replaceSupers.replace();\n\n const {\n params,\n body,\n async: isAsync,\n } = element.node as t.ClassPrivateMethod;\n\n privateMethods = [\n t.functionExpression(\n undefined,\n params.filter(isNotTsParameter),\n body,\n isAsync,\n ),\n ];\n\n if (kind === GETTER || kind === SETTER) {\n movePrivateAccessor(\n element as NodePath<t.ClassPrivateMethod>,\n t.cloneNode(key),\n t.cloneNode(locals),\n isStatic,\n );\n } else {\n const node = element.node as t.ClassPrivateMethod;\n\n // Unshift\n path.node.body.body.unshift(\n t.classPrivateProperty(key, t.cloneNode(locals), [], node.static),\n );\n\n decoratedPrivateMethods.add(key.id.name);\n\n element.remove();\n }\n }\n\n let nameExpr: t.Expression;\n\n if (isComputed) {\n nameExpr = t.cloneNode(key as t.Expression);\n } else if (key.type === \"PrivateName\") {\n nameExpr = t.stringLiteral(key.id.name);\n } else if (key.type === \"Identifier\") {\n nameExpr = t.stringLiteral(key.name);\n } else {\n nameExpr = t.cloneNode(key as t.Expression);\n }\n\n elementDecoratorInfo.push({\n kind,\n decorators: decorators.map(d => d.node.expression),\n decoratorsThis: decorators.map(d => decoratorsThis.get(d.node)),\n name: nameExpr,\n isStatic,\n privateMethods,\n locals,\n });\n\n if (kind !== FIELD) {\n if (isStatic) {\n requiresStaticInit = true;\n } else {\n requiresProtoInit = true;\n }\n }\n\n if (element.node) {\n element.node.decorators = null;\n }\n\n if (\n !firstFieldPath &&\n !isStatic &&\n (kind === FIELD || kind === ACCESSOR)\n ) {\n firstFieldPath = element as NodePath<\n t.ClassProperty | t.ClassPrivateProperty\n >;\n }\n }\n }\n }\n\n const elementDecorations = generateDecorationExprs(\n elementDecoratorInfo,\n version,\n );\n let classDecorationsFlag = 0;\n let classDecorations: t.Expression[] = [];\n if (classDecorators) {\n const { hasThis, decs } = generateDecorationList(\n classDecorators.map(el => el.expression),\n classDecorators.map(dec => decoratorsThis.get(dec)),\n version,\n );\n classDecorationsFlag = hasThis ? 1 : 0;\n classDecorations = decs;\n }\n\n const elementLocals: t.Identifier[] =\n extractElementLocalAssignments(elementDecoratorInfo);\n\n if (requiresProtoInit) {\n protoInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initProto\");\n elementLocals.push(protoInitLocal);\n\n const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n t.thisExpression(),\n ]);\n\n if (firstFieldPath) {\n const value = firstFieldPath.get(\"value\");\n const body: t.Expression[] = [protoInitCall];\n\n if (value.node) {\n body.push(value.node);\n }\n\n value.replaceWith(t.sequenceExpression(body));\n } else if (constructorPath) {\n if (path.node.superClass) {\n path.traverse({\n CallExpression: {\n exit(path) {\n if (!path.get(\"callee\").isSuper()) return;\n\n path.replaceWith(\n t.callExpression(t.cloneNode(protoInitLocal), [path.node]),\n );\n\n path.skip();\n },\n },\n });\n } else {\n constructorPath.node.body.body.unshift(\n t.expressionStatement(protoInitCall),\n );\n }\n } else {\n const body: t.Statement[] = [t.expressionStatement(protoInitCall)];\n\n if (path.node.superClass) {\n body.unshift(\n t.expressionStatement(\n t.callExpression(t.super(), [\n t.spreadElement(t.identifier(\"args\")),\n ]),\n ),\n );\n }\n\n path.node.body.body.unshift(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [t.restElement(t.identifier(\"args\"))],\n t.blockStatement(body),\n ),\n );\n }\n }\n\n if (requiresStaticInit) {\n staticInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initStatic\");\n elementLocals.push(staticInitLocal);\n }\n\n if (decoratedPrivateMethods.size > 0) {\n path.traverse({\n PrivateName(path) {\n if (!decoratedPrivateMethods.has(path.node.id.name)) return;\n\n const parentPath = path.parentPath;\n const parentParentPath = parentPath.parentPath;\n\n if (\n // this.bar().#x = 123;\n (parentParentPath.node.type === \"AssignmentExpression\" &&\n parentParentPath.node.left === parentPath.node) ||\n // this.#x++;\n parentParentPath.node.type === \"UpdateExpression\" ||\n // ([...this.#x] = foo);\n parentParentPath.node.type === \"RestElement\" ||\n // ([this.#x] = foo);\n parentParentPath.node.type === \"ArrayPattern\" ||\n // ({ a: this.#x } = bar);\n (parentParentPath.node.type === \"ObjectProperty\" &&\n parentParentPath.node.value === parentPath.node &&\n parentParentPath.parentPath.type === \"ObjectPattern\") ||\n // for (this.#x of []);\n (parentParentPath.node.type === \"ForOfStatement\" &&\n parentParentPath.node.left === parentPath.node)\n ) {\n throw path.buildCodeFrameError(\n `Decorated private methods are not updatable, but \"#${path.node.id.name}\" is updated via this expression.`,\n );\n }\n },\n });\n }\n\n const classLocals: t.Identifier[] = [];\n let classInitInjected = false;\n const classInitCall =\n classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n const originalClass = path.node;\n\n if (classDecorators) {\n classLocals.push(classIdLocal, classInitLocal);\n const statics: (\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassPrivateMethod\n )[] = [];\n let staticBlocks: t.StaticBlock[] = [];\n path.get(\"body.body\").forEach(element => {\n // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n // them as IIFEs in the next property.\n if (element.isStaticBlock()) {\n staticBlocks.push(element.node);\n element.remove();\n return;\n }\n\n const isProperty =\n element.isClassProperty() || element.isClassPrivateProperty();\n\n if (\n (isProperty || element.isClassPrivateMethod()) &&\n element.node.static\n ) {\n if (isProperty && staticBlocks.length > 0) {\n const allValues: t.Expression[] = staticBlocks.map(staticBlockToIIFE);\n if (element.node.value) allValues.push(element.node.value);\n element.node.value = maybeSequenceExpression(allValues);\n staticBlocks = [];\n }\n\n element.node.static = false;\n statics.push(element.node);\n element.remove();\n }\n });\n\n if (statics.length > 0 || staticBlocks.length > 0) {\n const staticsClass = template.expression.ast`\n class extends ${state.addHelper(\"identity\")} {}\n ` as t.ClassExpression;\n staticsClass.body.body = [\n t.staticBlock([\n t.toStatement(originalClass, true) ||\n // If toStatement returns false, originalClass must be an anonymous ClassExpression,\n // because `export default @dec ...` has been handled in the export visitor before.\n t.expressionStatement(originalClass as t.ClassExpression),\n ]),\n ...statics,\n ];\n\n const constructorBody: t.Expression[] = [];\n\n const newExpr = t.newExpression(staticsClass, []);\n\n if (staticBlocks.length > 0) {\n constructorBody.push(...staticBlocks.map(staticBlockToIIFE));\n }\n if (classInitCall) {\n classInitInjected = true;\n constructorBody.push(classInitCall);\n }\n if (constructorBody.length > 0) {\n constructorBody.unshift(\n t.callExpression(t.super(), [t.cloneNode(classIdLocal)]),\n );\n\n staticsClass.body.body.push(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [],\n t.blockStatement([\n t.expressionStatement(t.sequenceExpression(constructorBody)),\n ]),\n ),\n );\n } else {\n newExpr.arguments.push(t.cloneNode(classIdLocal));\n }\n\n path.replaceWith(newExpr);\n }\n }\n if (!classInitInjected && classInitCall) {\n path.node.body.body.push(\n t.staticBlock([t.expressionStatement(classInitCall)]),\n );\n }\n\n let { superClass } = originalClass;\n if (superClass && (process.env.BABEL_8_BREAKING || version === \"2023-05\")) {\n const id = path.scope.maybeGenerateMemoised(superClass);\n if (id) {\n originalClass.superClass = t.assignmentExpression(\"=\", id, superClass);\n superClass = id;\n }\n }\n\n originalClass.body.body.unshift(\n t.staticBlock(\n [\n t.expressionStatement(\n createLocalsAssignment(\n elementLocals,\n classLocals,\n elementDecorations,\n t.arrayExpression(classDecorations),\n t.numericLiteral(classDecorationsFlag),\n needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n t.cloneNode(superClass),\n state,\n version,\n ),\n ),\n requiresStaticInit &&\n t.expressionStatement(\n t.callExpression(t.cloneNode(staticInitLocal), [\n t.thisExpression(),\n ]),\n ),\n ].filter(Boolean),\n ),\n );\n\n // When path is a ClassExpression, path.insertBefore will convert `path`\n // into a SequenceExpression\n path.insertBefore(assignments.map(expr => t.expressionStatement(expr)));\n\n // Recrawl the scope to make sure new identifiers are properly synced\n path.scope.crawl();\n\n return path;\n}\n\nfunction createLocalsAssignment(\n elementLocals: t.Identifier[],\n classLocals: t.Identifier[],\n elementDecorations: t.ArrayExpression,\n classDecorations: t.ArrayExpression,\n classDecorationsFlag: t.NumericLiteral,\n maybePrivateBranName: t.PrivateName | null,\n superClass: null | t.Expression,\n state: PluginPass,\n version: DecoratorVersionKind,\n) {\n let lhs, rhs;\n const args: t.Expression[] = [\n t.thisExpression(),\n elementDecorations,\n classDecorations,\n ];\n\n if (!process.env.BABEL_8_BREAKING) {\n if (\n version === \"2021-12\" ||\n (version === \"2022-03\" && !state.availableHelper(\"applyDecs2203R\"))\n ) {\n const lhs = t.arrayPattern([...elementLocals, ...classLocals]);\n const rhs = t.callExpression(\n state.addHelper(version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\"),\n args,\n );\n return t.assignmentExpression(\"=\", lhs, rhs);\n }\n }\n\n if (process.env.BABEL_8_BREAKING || version === \"2023-05\") {\n if (\n maybePrivateBranName ||\n superClass ||\n classDecorationsFlag.value !== 0\n ) {\n args.push(classDecorationsFlag);\n }\n if (maybePrivateBranName) {\n args.push(\n template.expression.ast`\n _ => ${t.cloneNode(maybePrivateBranName)} in _\n ` as t.ArrowFunctionExpression,\n );\n } else if (superClass) {\n args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n }\n if (superClass) args.push(superClass);\n rhs = t.callExpression(state.addHelper(\"applyDecs2305\"), args);\n } else if (version === \"2023-01\") {\n if (maybePrivateBranName) {\n args.push(\n template.expression.ast`\n _ => ${t.cloneNode(maybePrivateBranName)} in _\n ` as t.ArrowFunctionExpression,\n );\n }\n rhs = t.callExpression(state.addHelper(\"applyDecs2301\"), args);\n } else {\n rhs = t.callExpression(state.addHelper(\"applyDecs2203R\"), args);\n }\n // optimize `{ c: [classLocals] } = applyapplyDecs2203R(...)` to\n // `[classLocals] = applyapplyDecs2203R(...).c`\n if (elementLocals.length > 0) {\n if (classLocals.length > 0) {\n lhs = t.objectPattern([\n t.objectProperty(t.identifier(\"e\"), t.arrayPattern(elementLocals)),\n t.objectProperty(t.identifier(\"c\"), t.arrayPattern(classLocals)),\n ]);\n } else {\n lhs = t.arrayPattern(elementLocals);\n rhs = t.memberExpression(rhs, t.identifier(\"e\"), false, false);\n }\n } else {\n // invariant: classLocals.length > 0\n lhs = t.arrayPattern(classLocals);\n rhs = t.memberExpression(rhs, t.identifier(\"c\"), false, false);\n }\n\n return t.assignmentExpression(\"=\", lhs, rhs);\n}\n\nexport default function (\n { assertVersion, assumption }: PluginAPI,\n { loose }: Options,\n // TODO(Babel 8): Only keep 2023-05\n version: \"2023-05\" | \"2023-01\" | \"2022-03\" | \"2021-12\",\n): PluginObject {\n if (process.env.BABEL_8_BREAKING) {\n assertVersion(\"^7.21.0\");\n } else {\n if (version === \"2023-05\" || version === \"2023-01\") {\n assertVersion(\"^7.21.0\");\n } else if (version === \"2021-12\") {\n assertVersion(\"^7.16.0\");\n } else {\n assertVersion(\"^7.19.0\");\n }\n }\n\n const VISITED = new WeakSet<NodePath>();\n const constantSuper = assumption(\"constantSuper\") ?? loose;\n\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n\n visitor: {\n \"ExportNamedDeclaration|ExportDefaultDeclaration\"(\n path: NodePath<t.ExportNamedDeclaration | t.ExportDefaultDeclaration>,\n ) {\n const { declaration } = path.node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // When compiling class decorators we need to replace the class\n // binding, so we must split it in two separate declarations.\n declaration.decorators?.length > 0\n ) {\n splitExportDeclaration(path);\n }\n },\n\n Class(path, state) {\n if (VISITED.has(path)) return;\n\n const newPath = transformClass(path, state, constantSuper, version);\n if (newPath) VISITED.add(newPath);\n },\n },\n };\n}\n","/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport {\n createClassFeaturePlugin,\n FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\nimport legacyVisitor from \"./transformer-legacy.ts\";\nimport transformer2023_05 from \"./transformer-2023-05.ts\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n loose?: boolean;\n}\n\nexport type { Options };\n\nexport default declare((api, options: Options) => {\n api.assertVersion(7);\n\n // Options are validated in @babel/plugin-syntax-decorators\n if (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var { legacy } = options;\n }\n const { version } = options;\n\n if (\n process.env.BABEL_8_BREAKING\n ? version === \"legacy\"\n : legacy || version === \"legacy\"\n ) {\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n visitor: legacyVisitor,\n };\n } else if (\n version === \"2021-12\" ||\n version === \"2022-03\" ||\n version === \"2023-01\" ||\n version === \"2023-05\"\n ) {\n return transformer2023_05(api, options, version);\n } else if (!process.env.BABEL_8_BREAKING) {\n api.assertVersion(\"^7.0.2\");\n return createClassFeaturePlugin({\n name: \"proposal-decorators\",\n\n api,\n feature: FEATURES.decorators,\n inherits: syntaxDecorators,\n // loose: options.loose, Not supported\n });\n } else {\n throw new Error(\n \"The '.version' option must be one of 'legacy', '2021-12', '2022-03', or '2023-01'.\",\n );\n }\n});\n"],"names":["buildClassDecorator","template","statement","buildClassPrototype","buildGetDescriptor","buildGetObjectInitializer","WARNING_CALLS","WeakSet","applyEnsureOrdering","path","decorators","isClass","get","reduce","acc","prop","concat","node","identDecorators","filter","decorator","t","isIdentifier","expression","length","sequenceExpression","map","id","scope","generateDeclaredUidIdentifier","assignmentExpression","applyClassDecorators","classPath","hasClassDecorators","name","dec","reverse","CLASS_REF","cloneNode","DECORATOR","INNER","classNode","applyMethodDecorators","state","hasMethodDecorators","body","applyTargetDecorators","some","applyObjectDecorators","properties","type","decoratedProps","exprs","computed","buildCodeFrameError","property","isLiteral","key","stringLiteral","target","static","isClassProperty","descriptor","initializer","value","functionExpression","blockStatement","returnStatement","nullLiteral","callExpression","addHelper","thisExpression","add","push","arrayExpression","objectExpression","objectProperty","identifier","booleanLiteral","isObjectProperty","TEMP","TARGET","PROPERTY","decoratedClassToExpression","ref","generateUidIdentifier","variableDeclaration","variableDeclarator","toExpression","visitor","ExportDefaultDeclaration","decl","isClassDeclaration","replacement","varDeclPath","replaceWithMultiple","exportNamedDeclaration","exportSpecifier","declarations","registerDeclaration","ClassDeclaration","newPath","replaceWith","binding","getOwnBinding","ClassExpression","decoratedClass","ObjectExpression","decoratedObject","AssignmentExpression","has","right","CallExpression","arguments","callee","incrementId","idx","unshift","current","createPrivateUidGeneratorForClass","currentPrivateId","privateNames","Set","traverse","PrivateName","reifiedId","String","fromCharCode","privateName","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","varId","generateUidIdentifierBasedOnNode","classId","rename","insertBefore","className","parent","parentPath","newClassExpr","classExpression","superClass","generateClassProperty","isStatic","classPrivateProperty","undefined","classProperty","addProxyAccessorsFor","element","originalKey","targetKey","version","isComputed","thisArg","getterBody","memberExpression","setterBody","expressionStatement","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","ast","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","kind","isDecoratorInfo","info","filteredOrderedDecoratorInfo","filtered","el","generateDecorationList","decoratorsThis","decsCount","hasOneThis","Boolean","decs","i","unaryExpression","numericLiteral","hasThis","generateDecorationExprs","flag","privateMethods","extractElementLocalAssignments","decorationInfo","localIds","locals","Array","isArray","addCallAccessorsFor","getId","setId","isNotTsParameter","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","maybeSequenceExpression","transformClass","constantSuper","classDecorators","hasElementDecorators","generateClassPrivateUid","newId","valueNode","newField","elementDecoratorInfo","firstFieldPath","constructorPath","requiresProtoInit","requiresStaticInit","decoratedPrivateMethods","protoInitLocal","staticInitLocal","classInitLocal","classIdLocal","assignments","scopeParent","memoiseExpression","hint","localEvaluatedId","Map","maybeExtractDecorator","isMemberExpression","object","isSuper","isThisExpression","set","classDecorator","lastInstancePrivateName","needsInstancePrivateBrandCheck","hasDecorators","decoratorPath","isPrivate","isClassPrivateProperty","isClassMethod","newFieldInitId","newValue","initId","valuePath","v","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","async","isAsync","remove","nameExpr","d","elementDecorations","classDecorationsFlag","classDecorations","elementLocals","protoInitCall","exit","skip","super","spreadElement","restElement","size","parentParentPath","left","classLocals","classInitInjected","classInitCall","originalClass","statics","staticBlocks","forEach","isStaticBlock","isProperty","isClassPrivateMethod","allValues","staticsClass","staticBlock","toStatement","constructorBody","newExpr","newExpression","maybeGenerateMemoised","createLocalsAssignment","expr","crawl","maybePrivateBranName","lhs","rhs","args","objectPattern","arrayPattern","assertVersion","assumption","loose","VISITED","inherits","syntaxDecorators","ExportNamedDeclaration|ExportDefaultDeclaration","declaration","splitExportDeclaration","Class","declare","api","options","legacyVisitor","transformer2023_05","Error"],"mappings":";;;;;;;AAKA,MAAMA,mBAAmB,GAAGC,QAAQ,CAACC,SAAS,CAAE,CAAA;AAChD;AACA,CAAC,CAI0B,CAAA;AAE3B,MAAMC,mBAAmB,GAAGF,QAAQ,CAAE,CAAA;AACtC;AACA,CAAC,CAAyE,CAAA;AAE1E,MAAMG,kBAAkB,GAAGH,QAAQ,CAAE,CAAA;AACrC;AACA,CAAC,CAG0B,CAAA;AAE3B,MAAMI,yBAAyB,GAAGJ,QAAQ,CAAE,CAAA;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAI0B,CAAA;AAE3B,MAAMK,aAAa,GAAG,IAAIC,OAAO,EAAE,CAAA;AAanC,SAASC,mBAAmBA,CAC1BC,IAAsD,EACtD;EAEA,MAAMC,UAAyB,GAAG,CAChCD,IAAI,CAACE,OAAO,EAAE,GACV,CACEF,IAAI,EACJ,GAAIA,IAAI,CAACG,GAAG,CAAC,WAAW,CAAyC,CAClE,GACDH,IAAI,CAACG,GAAG,CAAC,YAAY,CAAC,EAC1BC,MAAM,CACN,CACEC,GAAkB,EAClBC,IAEC,KACED,GAAG,CAACE,MAAM,CAACD,IAAI,CAACE,IAAI,CAACP,UAAU,IAAI,EAAE,CAAC,EAC3C,EACF,CAAC,CAAA;AAED,EAAA,MAAMQ,eAAe,GAAGR,UAAU,CAACS,MAAM,CACvCC,SAAS,IAAI,CAACC,KAAC,CAACC,YAAY,CAACF,SAAS,CAACG,UAAU,CACnD,CAAC,CAAA;AACD,EAAA,IAAIL,eAAe,CAACM,MAAM,KAAK,CAAC,EAAE,OAAA;EAElC,OAAOH,KAAC,CAACI,kBAAkB,CACzBP,eAAe,CACZQ,GAAG,CAAEN,SAAS,IAAmB;AAChC,IAAA,MAAMG,UAAU,GAAGH,SAAS,CAACG,UAAU,CAAA;AACvC,IAAA,MAAMI,EAAE,GAAIP,SAAS,CAACG,UAAU,GAC9Bd,IAAI,CAACmB,KAAK,CAACC,6BAA6B,CAAC,KAAK,CAAE,CAAA;IAClD,OAAOR,KAAC,CAACS,oBAAoB,CAAC,GAAG,EAAEH,EAAE,EAAEJ,UAAU,CAAC,CAAA;GACnD,CAAC,CACDP,MAAM,CAAC,CAACP,IAAI,CAACQ,IAAI,CAAC,CACvB,CAAC,CAAA;AACH,CAAA;AAMA,SAASc,oBAAoBA,CAACC,SAAsC,EAAE;AACpE,EAAA,IAAI,CAACC,kBAAkB,CAACD,SAAS,CAACf,IAAI,CAAC,EAAE,OAAA;EAEzC,MAAMP,UAAU,GAAGsB,SAAS,CAACf,IAAI,CAACP,UAAU,IAAI,EAAE,CAAA;AAClDsB,EAAAA,SAAS,CAACf,IAAI,CAACP,UAAU,GAAG,IAAI,CAAA;EAEhC,MAAMwB,IAAI,GAAGF,SAAS,CAACJ,KAAK,CAACC,6BAA6B,CAAC,OAAO,CAAC,CAAA;EAEnE,OAAOnB,UAAU,CACdgB,GAAG,CAACS,GAAG,IAAIA,GAAG,CAACZ,UAAU,CAAC,CAC1Ba,OAAO,EAAE,CACTvB,MAAM,CAAC,UAAUC,GAAG,EAAEM,SAAS,EAAE;AAChC,IAAA,OAAOpB,mBAAmB,CAAC;AACzBqC,MAAAA,SAAS,EAAEhB,KAAC,CAACiB,SAAS,CAACJ,IAAI,CAAC;AAC5BK,MAAAA,SAAS,EAAElB,KAAC,CAACiB,SAAS,CAAClB,SAAS,CAAC;AACjCoB,MAAAA,KAAK,EAAE1B,GAAAA;KACR,CAAC,CAACS,UAAU,CAAA;AACf,GAAC,EAAES,SAAS,CAACf,IAAI,CAAC,CAAA;AACtB,CAAA;AAEA,SAASgB,kBAAkBA,CAACQ,SAAkB,EAAE;AAC9C,EAAA,OAAO,CAAC,CAACA,SAAS,CAAC/B,UAAU,EAAEc,MAAM,CAAA;AACvC,CAAA;AAMA,SAASkB,qBAAqBA,CAC5BjC,IAAiC,EACjCkC,KAAiB,EACjB;EACA,IAAI,CAACC,mBAAmB,CAACnC,IAAI,CAACQ,IAAI,CAAC4B,IAAI,CAACA,IAAI,CAAC,EAAE,OAAA;AAE/C,EAAA,OAAOC,qBAAqB,CAC1BrC,IAAI,EACJkC,KAAK,EAELlC,IAAI,CAACQ,IAAI,CAAC4B,IAAI,CAACA,IACjB,CAAC,CAAA;AACH,CAAA;AAEA,SAASD,mBAAmBA,CAC1BC,IAA4D,EAC5D;EACA,OAAOA,IAAI,CAACE,IAAI,CACd9B,IAAI,IAEFA,IAAI,CAACP,UAAU,EAAEc,MACrB,CAAC,CAAA;AACH,CAAA;AAMA,SAASwB,qBAAqBA,CAC5BvC,IAAkC,EAClCkC,KAAiB,EACjB;EACA,IAAI,CAACC,mBAAmB,CAACnC,IAAI,CAACQ,IAAI,CAACgC,UAAU,CAAC,EAAE,OAAA;EAEhD,OAAOH,qBAAqB,CAC1BrC,IAAI,EACJkC,KAAK,EACLlC,IAAI,CAACQ,IAAI,CAACgC,UAAU,CAAC9B,MAAM,CACxBJ,IAAI,IAA6BA,IAAI,CAACmC,IAAI,KAAK,eAClD,CACF,CAAC,CAAA;AACH,CAAA;AAKA,SAASJ,qBAAqBA,CAC5BrC,IAAsD,EACtDkC,KAAiB,EACjBQ,cAA4D,EAC5D;AACA,EAAA,MAAMjB,IAAI,GAAGzB,IAAI,CAACmB,KAAK,CAACC,6BAA6B,CACnDpB,IAAI,CAACE,OAAO,EAAE,GAAG,OAAO,GAAG,KAC7B,CAAC,CAAA;EAED,MAAMyC,KAAK,GAAGD,cAAc,CAACtC,MAAM,CAAC,UAAUC,GAAG,EAAEG,IAAI,EAAE;IACvD,IAAIP,UAAyB,GAAG,EAAE,CAAA;AAClC,IAAA,IAAIO,IAAI,CAACP,UAAU,IAAI,IAAI,EAAE;MAC3BA,UAAU,GAAGO,IAAI,CAACP,UAAU,CAAA;MAC5BO,IAAI,CAACP,UAAU,GAAG,IAAI,CAAA;AACxB,KAAA;AAEA,IAAA,IAAIA,UAAU,CAACc,MAAM,KAAK,CAAC,EAAE,OAAOV,GAAG,CAAA;IAEvC,IAEEG,IAAI,CAACoC,QAAQ,EACb;AACA,MAAA,MAAM5C,IAAI,CAAC6C,mBAAmB,CAC5B,4DACF,CAAC,CAAA;AACH,KAAA;IAEA,MAAMC,QAAmB,GAAGlC,KAAC,CAACmC,SAAS,CAACvC,IAAI,CAACwC,GAAG,CAAC,GAC7CxC,IAAI,CAACwC,GAAG,GACRpC,KAAC,CAACqC,aAAa,CAEbzC,IAAI,CAACwC,GAAG,CAACvB,IACX,CAAC,CAAA;AAEL,IAAA,MAAMyB,MAAM,GACVlD,IAAI,CAACE,OAAO,EAAE,IAAI,CAAEM,IAAI,CAA6B2C,MAAM,GACvDzD,mBAAmB,CAAC;AAClBkC,MAAAA,SAAS,EAAEH,IAAAA;AACb,KAAC,CAAC,CAACX,UAAU,GACbW,IAAI,CAAA;AAEV,IAAA,IAAIb,KAAC,CAACwC,eAAe,CAAC5C,IAAI,EAAE;AAAE2C,MAAAA,MAAM,EAAE,KAAA;AAAM,KAAC,CAAC,EAAE;MAC9C,MAAME,UAAU,GAAGrD,IAAI,CAACmB,KAAK,CAACC,6BAA6B,CAAC,YAAY,CAAC,CAAA;AAEzE,MAAA,MAAMkC,WAAW,GAAG9C,IAAI,CAAC+C,KAAK,GAC1B3C,KAAC,CAAC4C,kBAAkB,CAClB,IAAI,EACJ,EAAE,EACF5C,KAAC,CAAC6C,cAAc,CAAC,CAAC7C,KAAC,CAAC8C,eAAe,CAAClD,IAAI,CAAC+C,KAAK,CAAC,CAAC,CAClD,CAAC,GACD3C,KAAC,CAAC+C,WAAW,EAAE,CAAA;MAEnBnD,IAAI,CAAC+C,KAAK,GAAG3C,KAAC,CAACgD,cAAc,CAC3B1B,KAAK,CAAC2B,SAAS,CAAC,0BAA0B,CAAC,EAC3C,CAACR,UAAU,EAAEzC,KAAC,CAACkD,cAAc,EAAE,CACjC,CAAC,CAAA;AAEDjE,MAAAA,aAAa,CAACkE,GAAG,CAACvD,IAAI,CAAC+C,KAAK,CAAC,CAAA;AAE7BlD,MAAAA,GAAG,CAAC2D,IAAI,CACNpD,KAAC,CAACS,oBAAoB,CACpB,GAAG,EACHT,KAAC,CAACiB,SAAS,CAACwB,UAAU,CAAC,EACvBzC,KAAC,CAACgD,cAAc,CAAC1B,KAAK,CAAC2B,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAC5DjD,KAAC,CAACiB,SAAS,CAACqB,MAAM,CAAC,EACnBtC,KAAC,CAACiB,SAAS,CAACiB,QAAQ,CAAC,EACrBlC,KAAC,CAACqD,eAAe,CACfhE,UAAU,CAACgB,GAAG,CAACS,GAAG,IAAId,KAAC,CAACiB,SAAS,CAACH,GAAG,CAACZ,UAAU,CAAC,CACnD,CAAC,EACDF,KAAC,CAACsD,gBAAgB,CAAC,CACjBtD,KAAC,CAACuD,cAAc,CACdvD,KAAC,CAACwD,UAAU,CAAC,cAAc,CAAC,EAC5BxD,KAAC,CAACyD,cAAc,CAAC,IAAI,CACvB,CAAC,EACDzD,KAAC,CAACuD,cAAc,CACdvD,KAAC,CAACwD,UAAU,CAAC,YAAY,CAAC,EAC1BxD,KAAC,CAACyD,cAAc,CAAC,IAAI,CACvB,CAAC,EACDzD,KAAC,CAACuD,cAAc,CACdvD,KAAC,CAACwD,UAAU,CAAC,UAAU,CAAC,EACxBxD,KAAC,CAACyD,cAAc,CAAC,IAAI,CACvB,CAAC,EACDzD,KAAC,CAACuD,cAAc,CAACvD,KAAC,CAACwD,UAAU,CAAC,aAAa,CAAC,EAAEd,WAAW,CAAC,CAC3D,CAAC,CACH,CACH,CACF,CAAC,CAAA;AACH,KAAC,MAAM;AACLjD,MAAAA,GAAG,CAAC2D,IAAI,CACNpD,KAAC,CAACgD,cAAc,CAAC1B,KAAK,CAAC2B,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAC5DjD,KAAC,CAACiB,SAAS,CAACqB,MAAM,CAAC,EACnBtC,KAAC,CAACiB,SAAS,CAACiB,QAAQ,CAAC,EACrBlC,KAAC,CAACqD,eAAe,CAAChE,UAAU,CAACgB,GAAG,CAACS,GAAG,IAAId,KAAC,CAACiB,SAAS,CAACH,GAAG,CAACZ,UAAU,CAAC,CAAC,CAAC,EACrEF,KAAC,CAAC0D,gBAAgB,CAAC9D,IAAI,CAAC,IAAII,KAAC,CAACwC,eAAe,CAAC5C,IAAI,EAAE;AAAE2C,QAAAA,MAAM,EAAE,IAAA;OAAM,CAAC,GACjEvD,yBAAyB,CAAC;QACxB2E,IAAI,EAAEvE,IAAI,CAACmB,KAAK,CAACC,6BAA6B,CAAC,MAAM,CAAC;AACtDoD,QAAAA,MAAM,EAAE5D,KAAC,CAACiB,SAAS,CAACqB,MAAM,CAAC;AAC3BuB,QAAAA,QAAQ,EAAE7D,KAAC,CAACiB,SAAS,CAACiB,QAAQ,CAAA;AAChC,OAAC,CAAC,CAAChC,UAAU,GACbnB,kBAAkB,CAAC;AACjB6E,QAAAA,MAAM,EAAE5D,KAAC,CAACiB,SAAS,CAACqB,MAAM,CAAC;AAC3BuB,QAAAA,QAAQ,EAAE7D,KAAC,CAACiB,SAAS,CAACiB,QAAQ,CAAA;AAChC,OAAC,CAAC,CAAChC,UAAU,EACjBF,KAAC,CAACiB,SAAS,CAACqB,MAAM,CAAC,CACpB,CACH,CAAC,CAAA;AACH,KAAA;AAEA,IAAA,OAAO7C,GAAG,CAAA;GACX,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,OAAOO,KAAC,CAACI,kBAAkB,CAAC,CAC1BJ,KAAC,CAACS,oBAAoB,CAAC,GAAG,EAAET,KAAC,CAACiB,SAAS,CAACJ,IAAI,CAAC,EAAEzB,IAAI,CAACQ,IAAI,CAAC,EACzDI,KAAC,CAACI,kBAAkB,CAAC2B,KAAK,CAAC,EAC3B/B,KAAC,CAACiB,SAAS,CAACJ,IAAI,CAAC,CAClB,CAAC,CAAA;AACJ,CAAA;AAEA,SAASiD,0BAA0BA,CAAC;EAAElE,IAAI;AAAEW,EAAAA,KAAAA;AAAyB,CAAC,EAAE;AACtE,EAAA,IAAI,CAACK,kBAAkB,CAAChB,IAAI,CAAC,IAAI,CAAC2B,mBAAmB,CAAC3B,IAAI,CAAC4B,IAAI,CAACA,IAAI,CAAC,EAAE;AACrE,IAAA,OAAA;AACF,GAAA;EAEA,MAAMuC,GAAG,GAAGnE,IAAI,CAACU,EAAE,GACfN,KAAC,CAACiB,SAAS,CAACrB,IAAI,CAACU,EAAE,CAAC,GACpBC,KAAK,CAACyD,qBAAqB,CAAC,OAAO,CAAC,CAAA;EAExC,OAAOhE,KAAC,CAACiE,mBAAmB,CAAC,KAAK,EAAE,CAClCjE,KAAC,CAACkE,kBAAkB,CAACH,GAAG,EAAE/D,KAAC,CAACmE,YAAY,CAACvE,IAAI,CAAC,CAAC,CAChD,CAAC,CAAA;AACJ,CAAA;AAEA,MAAMwE,OAA4B,GAAG;EACnCC,wBAAwBA,CAACjF,IAAI,EAAE;AAC7B,IAAA,MAAMkF,IAAI,GAAGlF,IAAI,CAACG,GAAG,CAAC,aAAa,CAAC,CAAA;AACpC,IAAA,IAAI,CAAC+E,IAAI,CAACC,kBAAkB,EAAE,EAAE,OAAA;AAEhC,IAAA,MAAMC,WAAW,GAAGV,0BAA0B,CAACQ,IAAI,CAAC,CAAA;AACpD,IAAA,IAAIE,WAAW,EAAE;MACf,MAAM,CAACC,WAAW,CAAC,GAAGrF,IAAI,CAACsF,mBAAmB,CAAC,CAC7CF,WAAW,EACXxE,KAAC,CAAC2E,sBAAsB,CAAC,IAAI,EAAE,CAC7B3E,KAAC,CAAC4E,eAAe,CAEf5E,KAAC,CAACiB,SAAS,CAACuD,WAAW,CAACK,YAAY,CAAC,CAAC,CAAC,CAACvE,EAAE,CAAC,EAC3CN,KAAC,CAACwD,UAAU,CAAC,SAAS,CACxB,CAAC,CACF,CAAC,CACH,CAAC,CAAA;AAEF,MAAA,IAAI,CAACc,IAAI,CAAC1E,IAAI,CAACU,EAAE,EAAE;AACjBlB,QAAAA,IAAI,CAACmB,KAAK,CAACuE,mBAAmB,CAACL,WAAW,CAAC,CAAA;AAC7C,OAAA;AACF,KAAA;GACD;EACDM,gBAAgBA,CAAC3F,IAAI,EAAE;AACrB,IAAA,MAAMoF,WAAW,GAAGV,0BAA0B,CAAC1E,IAAI,CAAC,CAAA;AACpD,IAAA,IAAIoF,WAAW,EAAE;MACf,MAAM,CAACQ,OAAO,CAAC,GAAG5F,IAAI,CAAC6F,WAAW,CAACT,WAAW,CAAC,CAAA;AAE/C,MAAA,MAAMF,IAAI,GAAGU,OAAO,CAACzF,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1C,MAAA,MAAMe,EAAE,GAAGgE,IAAI,CAAC1E,IAAI,CAACU,EAAkB,CAAA;MAGvC,MAAM4E,OAAO,GAAG9F,IAAI,CAACmB,KAAK,CAAC4E,aAAa,CAAC7E,EAAE,CAACO,IAAI,CAAC,CAAA;MACjDqE,OAAO,CAAC1B,UAAU,GAAGlD,EAAE,CAAA;MACvB4E,OAAO,CAAC9F,IAAI,GAAGkF,IAAI,CAAA;AACrB,KAAA;GACD;AACDc,EAAAA,eAAeA,CAAChG,IAAI,EAAEkC,KAAK,EAAE;AAG3B,IAAA,MAAM+D,cAAc,GAClBlG,mBAAmB,CAACC,IAAI,CAAC,IACzBsB,oBAAoB,CAACtB,IAAI,CAAC,IAC1BiC,qBAAqB,CAACjC,IAAI,EAAEkC,KAAK,CAAC,CAAA;AAEpC,IAAA,IAAI+D,cAAc,EAAEjG,IAAI,CAAC6F,WAAW,CAACI,cAAc,CAAC,CAAA;GACrD;AACDC,EAAAA,gBAAgBA,CAAClG,IAAI,EAAEkC,KAAK,EAAE;AAC5B,IAAA,MAAMiE,eAAe,GACnBpG,mBAAmB,CAACC,IAAI,CAAC,IAAIuC,qBAAqB,CAACvC,IAAI,EAAEkC,KAAK,CAAC,CAAA;AAEjE,IAAA,IAAIiE,eAAe,EAAEnG,IAAI,CAAC6F,WAAW,CAACM,eAAe,CAAC,CAAA;GACvD;AAEDC,EAAAA,oBAAoBA,CAACpG,IAAI,EAAEkC,KAAK,EAAE;IAChC,IAAI,CAACrC,aAAa,CAACwG,GAAG,CAACrG,IAAI,CAACQ,IAAI,CAAC8F,KAAK,CAAC,EAAE,OAAA;AAEzCtG,IAAAA,IAAI,CAAC6F,WAAW,CACdjF,KAAC,CAACgD,cAAc,CAAC1B,KAAK,CAAC2B,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAE7DjD,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,aAAa,CAAC,CAACK,IAAI,CAAC,EACzCI,KAAC,CAACqC,aAAa,CAEbjD,IAAI,CAACG,GAAG,CAAC,eAAe,CAAC,CAACK,IAAI,CAACiB,IAAI,IAEjCzB,IAAI,CAACG,GAAG,CAAC,eAAe,CAAC,CAACK,IAAI,CAAC+C,KACnC,CAAC,EAED3C,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,EAEhDI,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,CACjD,CACH,CAAC,CAAA;GACF;AAED+F,EAAAA,cAAcA,CAACvG,IAAI,EAAEkC,KAAK,EAAE;IAC1B,IAAIlC,IAAI,CAACQ,IAAI,CAACgG,SAAS,CAACzF,MAAM,KAAK,CAAC,EAAE,OAAA;AACtC,IAAA,IAAI,CAAClB,aAAa,CAACwG,GAAG,CAACrG,IAAI,CAACQ,IAAI,CAACgG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,OAAA;AAKhD,IAAA,IAAIxG,IAAI,CAACQ,IAAI,CAACiG,MAAM,CAAChF,IAAI,KAAKS,KAAK,CAAC2B,SAAS,CAAC,gBAAgB,CAAC,CAACpC,IAAI,EAAE;AACpE,MAAA,OAAA;AACF,KAAA;AAEAzB,IAAAA,IAAI,CAAC6F,WAAW,CACdjF,KAAC,CAACgD,cAAc,CAAC1B,KAAK,CAAC2B,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAC7DjD,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,EAC1CI,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,EAE1CI,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,EAEtDI,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACG,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,CACvD,CACH,CAAC,CAAA;AACH,GAAA;AACF,CAAC;;ACrXD,SAASkG,WAAWA,CAACxF,EAAY,EAAEyF,GAAG,GAAGzF,EAAE,CAACH,MAAM,GAAG,CAAC,EAAQ;AAE5D,EAAA,IAAI4F,GAAG,KAAK,CAAC,CAAC,EAAE;IACdzF,EAAE,CAAC0F,OAAO,CAAA,EAAqB,CAAC,CAAA;AAChC,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,MAAMC,OAAO,GAAG3F,EAAE,CAACyF,GAAG,CAAC,CAAA;EAEvB,IAAIE,OAAO,OAAyB,EAAE;IAEpC3F,EAAE,CAACyF,GAAG,CAAC,GAAuB,EAAA,CAAA;AAChC,GAAC,MAAM,IAAIE,OAAO,KAAA,GAAyB,EAAE;IAE3C3F,EAAE,CAACyF,GAAG,CAAC,GAAuB,EAAA,CAAA;AAC9BD,IAAAA,WAAW,CAACxF,EAAE,EAAEyF,GAAG,GAAG,CAAC,CAAC,CAAA;AAC1B,GAAC,MAAM;AAELzF,IAAAA,EAAE,CAACyF,GAAG,CAAC,GAAGE,OAAO,GAAG,CAAC,CAAA;AACvB,GAAA;AACF,CAAA;AASA,SAASC,iCAAiCA,CACxCvF,SAA2D,EACtC;EACrB,MAAMwF,gBAA0B,GAAG,EAAE,CAAA;AACrC,EAAA,MAAMC,YAAY,GAAG,IAAIC,GAAG,EAAU,CAAA;EAEtC1F,SAAS,CAAC2F,QAAQ,CAAC;IACjBC,WAAWA,CAACnH,IAAI,EAAE;MAChBgH,YAAY,CAACjD,GAAG,CAAC/D,IAAI,CAACQ,IAAI,CAACU,EAAE,CAACO,IAAI,CAAC,CAAA;AACrC,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,OAAO,MAAqB;AAC1B,IAAA,IAAI2F,SAAS,CAAA;IACb,GAAG;MACDV,WAAW,CAACK,gBAAgB,CAAC,CAAA;AAC7BK,MAAAA,SAAS,GAAGC,MAAM,CAACC,YAAY,CAAC,GAAGP,gBAAgB,CAAC,CAAA;AACtD,KAAC,QAAQC,YAAY,CAACX,GAAG,CAACe,SAAS,CAAC,EAAA;IAEpC,OAAOxG,KAAC,CAAC2G,WAAW,CAAC3G,KAAC,CAACwD,UAAU,CAACgD,SAAS,CAAC,CAAC,CAAA;GAC9C,CAAA;AACH,CAAA;AAQA,SAASI,qCAAqCA,CAC5CjG,SAA2D,EACtC;AACrB,EAAA,IAAIkG,SAA8B,CAAA;AAElC,EAAA,OAAO,MAAqB;IAC1B,IAAI,CAACA,SAAS,EAAE;AACdA,MAAAA,SAAS,GAAGX,iCAAiC,CAACvF,SAAS,CAAC,CAAA;AAC1D,KAAA;IAEA,OAAOkG,SAAS,EAAE,CAAA;GACnB,CAAA;AACH,CAAA;AASA,SAASC,mBAAmBA,CAC1B1H,IAAsD,EACY;AAClE,EAAA,IAAIA,IAAI,CAACyC,IAAI,KAAK,kBAAkB,EAAE;AACpC,IAAA,MAAMkF,KAAK,GAAG3H,IAAI,CAACmB,KAAK,CAACyG,gCAAgC,CAAC5H,IAAI,CAACQ,IAAI,CAACU,EAAE,CAAC,CAAA;AACvE,IAAA,MAAM2G,OAAO,GAAGjH,KAAC,CAACwD,UAAU,CAACpE,IAAI,CAACQ,IAAI,CAACU,EAAE,CAACO,IAAI,CAAC,CAAA;AAE/CzB,IAAAA,IAAI,CAACmB,KAAK,CAAC2G,MAAM,CAACD,OAAO,CAACpG,IAAI,EAAEkG,KAAK,CAAClG,IAAI,CAAC,CAAA;AAE3CzB,IAAAA,IAAI,CAAC+H,YAAY,CACfnH,KAAC,CAACiE,mBAAmB,CAAC,KAAK,EAAE,CAACjE,KAAC,CAACkE,kBAAkB,CAAC6C,KAAK,CAAC,CAAC,CAC5D,CAAC,CAAA;IACD3H,IAAI,CAACG,GAAG,CAAC,IAAI,CAAC,CAAC0F,WAAW,CAACgC,OAAO,CAAC,CAAA;IAEnC,OAAO,CAACjH,KAAC,CAACiB,SAAS,CAAC8F,KAAK,CAAC,EAAE3H,IAAI,CAAC,CAAA;AACnC,GAAC,MAAM;AACL,IAAA,IAAIgI,SAAiB,CAAA;AACrB,IAAA,IAAIL,KAAmB,CAAA;AAEvB,IAAA,IAAI3H,IAAI,CAACQ,IAAI,CAACU,EAAE,EAAE;AAChB8G,MAAAA,SAAS,GAAGhI,IAAI,CAACQ,IAAI,CAACU,EAAE,CAACO,IAAI,CAAA;MAC7BkG,KAAK,GAAG3H,IAAI,CAACmB,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAAC4G,SAAS,CAAC,CAAA;MAClEhI,IAAI,CAACmB,KAAK,CAAC2G,MAAM,CAACE,SAAS,EAAEL,KAAK,CAAClG,IAAI,CAAC,CAAA;KACzC,MAAM,IACLzB,IAAI,CAACkI,UAAU,CAAC1H,IAAI,CAACiC,IAAI,KAAK,oBAAoB,IAClDzC,IAAI,CAACkI,UAAU,CAAC1H,IAAI,CAACU,EAAE,CAACuB,IAAI,KAAK,YAAY,EAC7C;MACAuF,SAAS,GAAGhI,IAAI,CAACkI,UAAU,CAAC1H,IAAI,CAACU,EAAE,CAACO,IAAI,CAAA;MACxCkG,KAAK,GAAG3H,IAAI,CAACmB,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAAC4G,SAAS,CAAC,CAAA;AACpE,KAAC,MAAM;MACLL,KAAK,GACH3H,IAAI,CAACmB,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAAC,iBAAiB,CAAC,CAAA;AACtE,KAAA;IAEA,MAAM+G,YAAY,GAAGvH,KAAC,CAACwH,eAAe,CACpCJ,SAAS,IAAIpH,KAAC,CAACwD,UAAU,CAAC4D,SAAS,CAAC,EACpChI,IAAI,CAACQ,IAAI,CAAC6H,UAAU,EACpBrI,IAAI,CAACQ,IAAI,CAAC4B,IACZ,CAAC,CAAA;AAED,IAAA,MAAM,CAACwD,OAAO,CAAC,GAAG5F,IAAI,CAAC6F,WAAW,CAChCjF,KAAC,CAACI,kBAAkB,CAAC,CAACmH,YAAY,EAAER,KAAK,CAAC,CAC5C,CAAC,CAAA;AAED,IAAA,OAAO,CACL/G,KAAC,CAACiB,SAAS,CAAC8F,KAAK,CAAC,EAClB/B,OAAO,CAACzF,GAAG,CAAC,eAAe,CAAC,CAC7B,CAAA;AACH,GAAA;AACF,CAAA;AAEA,SAASmI,qBAAqBA,CAC5BtF,GAAiC,EACjCO,KAA+B,EAC/BgF,QAAiB,EACyB;AAC1C,EAAA,IAAIvF,GAAG,CAACP,IAAI,KAAK,aAAa,EAAE;IAC9B,OAAO7B,KAAC,CAAC4H,oBAAoB,CAACxF,GAAG,EAAEO,KAAK,EAAEkF,SAAS,EAAEF,QAAQ,CAAC,CAAA;AAChE,GAAC,MAAM;AACL,IAAA,OAAO3H,KAAC,CAAC8H,aAAa,CAAC1F,GAAG,EAAEO,KAAK,EAAEkF,SAAS,EAAEA,SAAS,EAAEF,QAAQ,CAAC,CAAA;AACpE,GAAA;AACF,CAAA;AAEA,SAASI,oBAAoBA,CAC3BX,SAAuB,EACvBY,OAA0C,EAC1CC,WAAyC,EACzCC,SAAwB,EACxBC,OAA6B,EAC7BC,UAAU,GAAG,KAAK,EACZ;EACN,MAAM;AAAE7F,IAAAA,MAAM,EAAEoF,QAAAA;GAAU,GAAGK,OAAO,CAACpI,IAAI,CAAA;AAEzC,EAAA,MAAMyI,OAAO,GACXF,OAAO,KAAK,SAAS,IAAIR,QAAQ,GAAGP,SAAS,GAAGpH,KAAC,CAACkD,cAAc,EAAE,CAAA;AAEpE,EAAA,MAAMoF,UAAU,GAAGtI,KAAC,CAAC6C,cAAc,CAAC,CAClC7C,KAAC,CAAC8C,eAAe,CACf9C,KAAC,CAACuI,gBAAgB,CAACvI,KAAC,CAACiB,SAAS,CAACoH,OAAO,CAAC,EAAErI,KAAC,CAACiB,SAAS,CAACiH,SAAS,CAAC,CACjE,CAAC,CACF,CAAC,CAAA;EAEF,MAAMM,UAAU,GAAGxI,KAAC,CAAC6C,cAAc,CAAC,CAClC7C,KAAC,CAACyI,mBAAmB,CACnBzI,KAAC,CAACS,oBAAoB,CACpB,GAAG,EACHT,KAAC,CAACuI,gBAAgB,CAACvI,KAAC,CAACiB,SAAS,CAACoH,OAAO,CAAC,EAAErI,KAAC,CAACiB,SAAS,CAACiH,SAAS,CAAC,CAAC,EAChElI,KAAC,CAACwD,UAAU,CAAC,GAAG,CAClB,CACF,CAAC,CACF,CAAC,CAAA;EAEF,IAAIkF,MAA4C,EAC9CC,MAA4C,CAAA;AAE9C,EAAA,IAAIV,WAAW,CAACpG,IAAI,KAAK,aAAa,EAAE;AACtC6G,IAAAA,MAAM,GAAG1I,KAAC,CAAC4I,kBAAkB,CAC3B,KAAK,EACL5I,KAAC,CAACiB,SAAS,CAACgH,WAAW,CAAC,EACxB,EAAE,EACFK,UAAU,EACVX,QACF,CAAC,CAAA;IACDgB,MAAM,GAAG3I,KAAC,CAAC4I,kBAAkB,CAC3B,KAAK,EACL5I,KAAC,CAACiB,SAAS,CAACgH,WAAW,CAAC,EACxB,CAACjI,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,CAAC,EACnBgF,UAAU,EACVb,QACF,CAAC,CAAA;AACH,GAAC,MAAM;IACLe,MAAM,GAAG1I,KAAC,CAAC6I,WAAW,CACpB,KAAK,EACL7I,KAAC,CAACiB,SAAS,CAACgH,WAAW,CAAC,EACxB,EAAE,EACFK,UAAU,EACVF,UAAU,EACVT,QACF,CAAC,CAAA;AACDgB,IAAAA,MAAM,GAAG3I,KAAC,CAAC6I,WAAW,CACpB,KAAK,EACL7I,KAAC,CAACiB,SAAS,CAACgH,WAAW,CAAC,EACxB,CAACjI,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,CAAC,EACnBgF,UAAU,EACVJ,UAAU,EACVT,QACF,CAAC,CAAA;AACH,GAAA;AAEAK,EAAAA,OAAO,CAACc,WAAW,CAACH,MAAM,CAAC,CAAA;AAC3BX,EAAAA,OAAO,CAACc,WAAW,CAACJ,MAAM,CAAC,CAAA;AAC7B,CAAA;AAEA,SAASK,wBAAwBA,CAC/Bb,SAAwB,EACxBC,OAA6B,EACyB;AACtD,EAAA,IAAIA,OAAO,KAAK,SAAS,IAAIA,OAAO,KAAK,SAAS,EAAE;AAClD,IAAA,OAAO,CACLvJ,QAAQ,CAACsB,UAAU,CAAC8I,GAAI,CAAA;AAC9B;AACA,sBAAA,EAAwBhJ,KAAC,CAACiB,SAAS,CAACiH,SAAS,CAAE,CAAA;AAC/C;AACA,MAAA,CAAO,EACDtJ,QAAQ,CAACsB,UAAU,CAAC8I,GAAI,CAAA;AAC9B;AACA,eAAA,EAAiBhJ,KAAC,CAACiB,SAAS,CAACiH,SAAS,CAAE,CAAA;AACxC;AACA,MAAA,CAAO,CACF,CAAA;AACH,GAAA;AACA,EAAA,OAAO,CACLtJ,QAAQ,CAACsB,UAAU,CAAC8I,GAAI,CAAA;AAC5B,aAAA,EAAehJ,KAAC,CAACiB,SAAS,CAACiH,SAAS,CAAE,CAAA;AACtC,IAAA,CAAK,EACDtJ,QAAQ,CAACsB,UAAU,CAAC8I,GAAI,CAAA;AAC5B,kBAAA,EAAoBhJ,KAAC,CAACiB,SAAS,CAACiH,SAAS,CAAE,CAAA;AAC3C,IAAA,CAAK,CACF,CAAA;AACH,CAAA;AAGA,MAAMe,KAAK,GAAG,CAAC,CAAA;AACf,MAAMC,QAAQ,GAAG,CAAC,CAAA;AAClB,MAAMC,MAAM,GAAG,CAAC,CAAA;AAChB,MAAMC,MAAM,GAAG,CAAC,CAAA;AAChB,MAAMC,MAAM,GAAG,CAAC,CAAA;AAEhB,MAAMC,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAMC,MAAM,GAAG,CAAC,CAAA;AAChB,MAAMC,oBAAoB,GAAG,EAAE,CAAA;AAE/B,SAASC,cAAcA,CAACzB,OAA0C,EAAU;AAC1E,EAAA,QAAQA,OAAO,CAACpI,IAAI,CAACiC,IAAI;AACvB,IAAA,KAAK,eAAe,CAAA;AACpB,IAAA,KAAK,sBAAsB;AACzB,MAAA,OAAOoH,KAAK,CAAA;AACd,IAAA,KAAK,uBAAuB;AAC1B,MAAA,OAAOC,QAAQ,CAAA;AACjB,IAAA,KAAK,aAAa,CAAA;AAClB,IAAA,KAAK,oBAAoB;AACvB,MAAA,IAAIlB,OAAO,CAACpI,IAAI,CAAC8J,IAAI,KAAK,KAAK,EAAE;AAC/B,QAAA,OAAON,MAAM,CAAA;OACd,MAAM,IAAIpB,OAAO,CAACpI,IAAI,CAAC8J,IAAI,KAAK,KAAK,EAAE;AACtC,QAAA,OAAOL,MAAM,CAAA;AACf,OAAC,MAAM;AACL,QAAA,OAAOF,MAAM,CAAA;AACf,OAAA;AACJ,GAAA;AACF,CAAA;AAiCA,SAASQ,eAAeA,CACtBC,IAAsC,EACf;EACvB,OAAO,YAAY,IAAIA,IAAI,CAAA;AAC7B,CAAA;AAEA,SAASC,4BAA4BA,CACnCD,IAA0C,EACzB;AACjB,EAAA,MAAME,QAAQ,GAAGF,IAAI,CAAC9J,MAAM,CAAC6J,eAAe,CAAC,CAAA;AAE7C,EAAA,OAAO,CACL,GAAGG,QAAQ,CAAChK,MAAM,CAChBiK,EAAE,IAAIA,EAAE,CAACpC,QAAQ,IAAIoC,EAAE,CAACL,IAAI,IAAIR,QAAQ,IAAIa,EAAE,CAACL,IAAI,IAAIL,MACzD,CAAC,EACD,GAAGS,QAAQ,CAAChK,MAAM,CAChBiK,EAAE,IAAI,CAACA,EAAE,CAACpC,QAAQ,IAAIoC,EAAE,CAACL,IAAI,IAAIR,QAAQ,IAAIa,EAAE,CAACL,IAAI,IAAIL,MAC1D,CAAC,EACD,GAAGS,QAAQ,CAAChK,MAAM,CAACiK,EAAE,IAAIA,EAAE,CAACpC,QAAQ,IAAIoC,EAAE,CAACL,IAAI,KAAKT,KAAK,CAAC,EAC1D,GAAGa,QAAQ,CAAChK,MAAM,CAACiK,EAAE,IAAI,CAACA,EAAE,CAACpC,QAAQ,IAAIoC,EAAE,CAACL,IAAI,KAAKT,KAAK,CAAC,CAC5D,CAAA;AACH,CAAA;AAEA,SAASe,sBAAsBA,CAC7B3K,UAA0B,EAC1B4K,cAAuC,EACvC9B,OAA6B,EAC7B;AACA,EAAA,MAAM+B,SAAS,GAAG7K,UAAU,CAACc,MAAM,CAAA;AACnC,EAAA,MAAMgK,UAAU,GAAGF,cAAc,CAACvI,IAAI,CAAC0I,OAAO,CAAC,CAAA;EAC/C,MAAMC,IAAoB,GAAG,EAAE,CAAA;EAC/B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,SAAS,EAAEI,CAAC,EAAE,EAAE;AAClC,IAAA,IAAInC,OAAO,KAAK,SAAS,IAAIgC,UAAU,EAAE;MACvCE,IAAI,CAACjH,IAAI,CACP6G,cAAc,CAACK,CAAC,CAAC,IAAItK,KAAC,CAACuK,eAAe,CAAC,MAAM,EAAEvK,KAAC,CAACwK,cAAc,CAAC,CAAC,CAAC,CACpE,CAAC,CAAA;AACH,KAAA;AACAH,IAAAA,IAAI,CAACjH,IAAI,CAAC/D,UAAU,CAACiL,CAAC,CAAC,CAAC,CAAA;AAC1B,GAAA;EAEA,OAAO;AAAEG,IAAAA,OAAO,EAAEN,UAAU;AAAEE,IAAAA,IAAAA;GAAM,CAAA;AACtC,CAAA;AAEA,SAASK,uBAAuBA,CAC9Bd,IAA0C,EAC1CzB,OAA6B,EACV;AACnB,EAAA,OAAOnI,KAAC,CAACqD,eAAe,CACtBwG,4BAA4B,CAACD,IAAI,CAAC,CAACvJ,GAAG,CAAC0J,EAAE,IAAI;IAC3C,MAAM;MAAEM,IAAI;AAAEI,MAAAA,OAAAA;AAAQ,KAAC,GAAGT,sBAAsB,CAC9CD,EAAE,CAAC1K,UAAU,EACb0K,EAAE,CAACE,cAAc,EACjB9B,OACF,CAAC,CAAA;AAED,IAAA,IAAIwC,IAAI,GAAGZ,EAAE,CAACL,IAAI,CAAA;IAClB,IAAIK,EAAE,CAACpC,QAAQ,EAAE;AACfgD,MAAAA,IAAI,IAAIxC,OAAO,KAAK,SAAS,GAAGoB,MAAM,GAAGD,kBAAkB,CAAA;AAC7D,KAAA;AACA,IAAA,IAAImB,OAAO,EAAEE,IAAI,IAAInB,oBAAoB,CAAA;AAEzC,IAAA,OAAOxJ,KAAC,CAACqD,eAAe,CAAC,CACvBgH,IAAI,CAAClK,MAAM,KAAK,CAAC,GAAGkK,IAAI,CAAC,CAAC,CAAC,GAAGrK,KAAC,CAACqD,eAAe,CAACgH,IAAI,CAAC,EACrDrK,KAAC,CAACwK,cAAc,CAACG,IAAI,CAAC,EACtBZ,EAAE,CAAClJ,IAAI,EACP,IAAIkJ,EAAE,CAACa,cAAc,IAAI,EAAE,CAAC,CAC7B,CAAC,CAAA;AACJ,GAAC,CACH,CAAC,CAAA;AACH,CAAA;AAEA,SAASC,8BAA8BA,CACrCC,cAAoD,EACpD;EACA,MAAMC,QAAwB,GAAG,EAAE,CAAA;AAEnC,EAAA,KAAK,MAAMhB,EAAE,IAAIF,4BAA4B,CAACiB,cAAc,CAAC,EAAE;IAC7D,MAAM;AAAEE,MAAAA,MAAAA;AAAO,KAAC,GAAGjB,EAAE,CAAA;AAErB,IAAA,IAAIkB,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;AACzBD,MAAAA,QAAQ,CAAC3H,IAAI,CAAC,GAAG4H,MAAM,CAAC,CAAA;AAC1B,KAAC,MAAM,IAAIA,MAAM,KAAKnD,SAAS,EAAE;AAC/BkD,MAAAA,QAAQ,CAAC3H,IAAI,CAAC4H,MAAM,CAAC,CAAA;AACvB,KAAA;AACF,GAAA;AAEA,EAAA,OAAOD,QAAQ,CAAA;AACjB,CAAA;AAEA,SAASI,mBAAmBA,CAC1BnD,OAAiB,EACjB5F,GAAkB,EAClBgJ,KAAmB,EACnBC,KAAmB,EACnB;EACArD,OAAO,CAACc,WAAW,CACjB9I,KAAC,CAAC4I,kBAAkB,CAClB,KAAK,EACL5I,KAAC,CAACiB,SAAS,CAACmB,GAAG,CAAC,EAChB,EAAE,EACFpC,KAAC,CAAC6C,cAAc,CAAC,CACf7C,KAAC,CAAC8C,eAAe,CACf9C,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAACiB,SAAS,CAACmK,KAAK,CAAC,EAAE,CAACpL,KAAC,CAACkD,cAAc,EAAE,CAAC,CAC3D,CAAC,CACF,CACH,CACF,CAAC,CAAA;AAED8E,EAAAA,OAAO,CAACc,WAAW,CACjB9I,KAAC,CAAC4I,kBAAkB,CAClB,KAAK,EACL5I,KAAC,CAACiB,SAAS,CAACmB,GAAG,CAAC,EAChB,CAACpC,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,CAAC,EACnBxD,KAAC,CAAC6C,cAAc,CAAC,CACf7C,KAAC,CAACyI,mBAAmB,CACnBzI,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAACiB,SAAS,CAACoK,KAAK,CAAC,EAAE,CACnCrL,KAAC,CAACkD,cAAc,EAAE,EAClBlD,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,CAClB,CACH,CAAC,CACF,CACH,CACF,CAAC,CAAA;AACH,CAAA;AAEA,SAAS8H,gBAAgBA,CACvB1L,IAAsE,EACpB;AAClD,EAAA,OAAOA,IAAI,CAACiC,IAAI,KAAK,qBAAqB,CAAA;AAC5C,CAAA;AAEA,SAAS0J,mBAAmBA,CAC1BvD,OAAuC,EACvC5F,GAAkB,EAClBoJ,cAA4B,EAC5B7D,QAAiB,EACjB;AACA,EAAA,IAAI8D,MAAwC,CAAA;AAC5C,EAAA,IAAIC,KAAoB,CAAA;AAExB,EAAA,IAAI1D,OAAO,CAACpI,IAAI,CAAC8J,IAAI,KAAK,KAAK,EAAE;IAC/B+B,MAAM,GAAG,CAACzL,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5BkI,IAAAA,KAAK,GAAG,CACN1L,KAAC,CAACyI,mBAAmB,CACnBzI,KAAC,CAACgD,cAAc,CAACwI,cAAc,EAAE,CAC/BxL,KAAC,CAACkD,cAAc,EAAE,EAClBlD,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,CAClB,CACH,CAAC,CACF,CAAA;AACH,GAAC,MAAM;AACLiI,IAAAA,MAAM,GAAG,EAAE,CAAA;IACXC,KAAK,GAAG,CACN1L,KAAC,CAAC8C,eAAe,CAAC9C,KAAC,CAACgD,cAAc,CAACwI,cAAc,EAAE,CAACxL,KAAC,CAACkD,cAAc,EAAE,CAAC,CAAC,CAAC,CAC1E,CAAA;AACH,GAAA;AAEA8E,EAAAA,OAAO,CAAC/C,WAAW,CACjBjF,KAAC,CAAC4I,kBAAkB,CAClBZ,OAAO,CAACpI,IAAI,CAAC8J,IAAI,EACjB1J,KAAC,CAACiB,SAAS,CAACmB,GAAG,CAAC,EAChBqJ,MAAM,EACNzL,KAAC,CAAC6C,cAAc,CAAC6I,KAAK,CAAC,EACvB/D,QACF,CACF,CAAC,CAAA;AACH,CAAA;AAEA,SAASgE,6BAA6BA,CACpCvM,IAA4B,EACe;EAC3C,MAAM;AAAEyC,IAAAA,IAAAA;AAAK,GAAC,GAAGzC,IAAI,CAAA;EAErB,OACEyC,IAAI,KAAK,iBAAiB,IAC1BA,IAAI,KAAK,kBAAkB,IAC3BA,IAAI,KAAK,aAAa,CAAA;AAE1B,CAAA;AAEA,SAAS+J,iBAAiBA,CAACF,KAAoB,EAAE;EAC/C,OAAO1L,KAAC,CAACgD,cAAc,CACrBhD,KAAC,CAAC6L,uBAAuB,CAAC,EAAE,EAAE7L,KAAC,CAAC6C,cAAc,CAAC6I,KAAK,CAAClK,IAAI,CAAC,CAAC,EAC3D,EACF,CAAC,CAAA;AACH,CAAA;AAEA,SAASsK,uBAAuBA,CAAC/J,KAAqB,EAAE;AACtD,EAAA,IAAIA,KAAK,CAAC5B,MAAM,KAAK,CAAC,EAAE,OAAOH,KAAC,CAACuK,eAAe,CAAC,MAAM,EAAEvK,KAAC,CAACwK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;EAC7E,IAAIzI,KAAK,CAAC5B,MAAM,KAAK,CAAC,EAAE,OAAO4B,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,EAAA,OAAO/B,KAAC,CAACI,kBAAkB,CAAC2B,KAAK,CAAC,CAAA;AACpC,CAAA;AAEA,SAASgK,cAAcA,CACrB3M,IAAsD,EACtDkC,KAAiB,EACjB0K,aAAsB,EACtB7D,OAA6B,EACnB;AACV,EAAA,MAAM3G,IAAI,GAAGpC,IAAI,CAACG,GAAG,CAAC,WAAW,CAAC,CAAA;AAElC,EAAA,MAAM0M,eAAe,GAAG7M,IAAI,CAACQ,IAAI,CAACP,UAAU,CAAA;EAC5C,IAAI6M,oBAAoB,GAAG,KAAK,CAAA;AAEhC,EAAA,MAAMC,uBAAuB,GAAGvF,qCAAqC,CAACxH,IAAI,CAAC,CAAA;AAI3E,EAAA,KAAK,MAAM4I,OAAO,IAAIxG,IAAI,EAAE;AAC1B,IAAA,IAAI,CAACmK,6BAA6B,CAAC3D,OAAO,CAAC,EAAE;AAC3C,MAAA,SAAA;AACF,KAAA;AAEA,IAAA,IAAIA,OAAO,CAACpI,IAAI,CAACP,UAAU,IAAI2I,OAAO,CAACpI,IAAI,CAACP,UAAU,CAACc,MAAM,GAAG,CAAC,EAAE;AACjE+L,MAAAA,oBAAoB,GAAG,IAAI,CAAA;KAC5B,MAAM,IAAIlE,OAAO,CAACpI,IAAI,CAACiC,IAAI,KAAK,uBAAuB,EAAE;MACxD,MAAM;QAAEO,GAAG;QAAEO,KAAK;AAAEJ,QAAAA,MAAM,EAAEoF,QAAQ;AAAE3F,QAAAA,QAAAA;OAAU,GAAGgG,OAAO,CAACpI,IAAI,CAAA;AAE/D,MAAA,MAAMwM,KAAK,GAAGD,uBAAuB,EAAE,CAAA;MAEvC,MAAME,SAAS,GAAG1J,KAAK,GAAG3C,KAAC,CAACiB,SAAS,CAAC0B,KAAK,CAAC,GAAGkF,SAAS,CAAA;MAExD,MAAMyE,QAAQ,GAAG5E,qBAAqB,CAAC0E,KAAK,EAAEC,SAAS,EAAE1E,QAAQ,CAAC,CAAA;MAElE,MAAM,CAAC3C,OAAO,CAAC,GAAGgD,OAAO,CAAC/C,WAAW,CAACqH,QAAQ,CAAC,CAAA;AAC/CvE,MAAAA,oBAAoB,CAClB3I,IAAI,CAACQ,IAAI,CAACU,EAAE,EACZ0E,OAAO,EACP5C,GAAG,EACHgK,KAAK,EACLjE,OAAO,EACPnG,QACF,CAAC,CAAA;AACH,KAAA;AACF,GAAA;AAGA,EAAA,IAAI,CAACiK,eAAe,IAAI,CAACC,oBAAoB,EAAE,OAAA;EAE/C,MAAMK,oBAA0D,GAAG,EAAE,CAAA;AAGrE,EAAA,IAAIC,cAES,CAAA;AACb,EAAA,IAAIC,eAAoD,CAAA;EACxD,IAAIC,iBAAiB,GAAG,KAAK,CAAA;EAC7B,IAAIC,kBAAkB,GAAG,KAAK,CAAA;AAC9B,EAAA,MAAMC,uBAAuB,GAAG,IAAIvG,GAAG,EAAU,CAAA;AAEjD,EAAA,IAAIwG,cAA4B,EAC9BC,eAA6B,EAC7BC,cAA4B,EAC5BC,YAA0B,CAAA;EAC5B,MAAMC,WAAqC,GAAG,EAAE,CAAA;AAChD,EAAA,MAAMC,WAAkB,GAAG9N,IAAI,CAACmB,KAAK,CAAC8G,MAAM,CAAA;AAE5C,EAAA,MAAM8F,iBAAiB,GAAGA,CAACjN,UAAwB,EAAEkN,IAAY,KAAK;AACpE,IAAA,MAAMC,gBAAgB,GAAGH,WAAW,CAAC1M,6BAA6B,CAAC4M,IAAI,CAAC,CAAA;AACxEH,IAAAA,WAAW,CAAC7J,IAAI,CAACpD,KAAC,CAACS,oBAAoB,CAAC,GAAG,EAAE4M,gBAAgB,EAAEnN,UAAU,CAAC,CAAC,CAAA;AAC3E,IAAA,OAAOF,KAAC,CAACiB,SAAS,CAACoM,gBAAgB,CAAC,CAAA;GACrC,CAAA;AAED,EAAA,MAAMpD,cAAc,GAAG,IAAIqD,GAAG,EAA6B,CAAA;EAC3D,MAAMC,qBAAqB,GAAIxN,SAAsB,IAAK;IACxD,MAAM;AAAEG,MAAAA,UAAAA;AAAW,KAAC,GAAGH,SAAS,CAAA;IAChC,IAAIoI,OAAO,KAAK,SAAS,IAAInI,KAAC,CAACwN,kBAAkB,CAACtN,UAAU,CAAC,EAAE;AAC7D,MAAA,IAAIuN,MAAM,CAAA;AACV,MAAA,IACEzN,KAAC,CAAC0N,OAAO,CAACxN,UAAU,CAACuN,MAAM,CAAC,IAC5BzN,KAAC,CAAC2N,gBAAgB,CAACzN,UAAU,CAACuN,MAAM,CAAC,EACrC;QACAA,MAAM,GAAGN,iBAAiB,CAACnN,KAAC,CAACkD,cAAc,EAAE,EAAE,KAAK,CAAC,CAAA;OACtD,MAAM,IAAI,CAACgK,WAAW,CAACvF,QAAQ,CAACzH,UAAU,CAACuN,MAAM,CAAC,EAAE;QACnDA,MAAM,GAAGN,iBAAiB,CAACjN,UAAU,CAACuN,MAAM,EAAE,KAAK,CAAC,CAAA;QACpDvN,UAAU,CAACuN,MAAM,GAAGA,MAAM,CAAA;AAC5B,OAAC,MAAM;QACLA,MAAM,GAAGvN,UAAU,CAACuN,MAAM,CAAA;AAC5B,OAAA;MACAxD,cAAc,CAAC2D,GAAG,CAAC7N,SAAS,EAAEC,KAAC,CAACiB,SAAS,CAACwM,MAAM,CAAC,CAAC,CAAA;AACpD,KAAA;AACA,IAAA,IAAI,CAACP,WAAW,CAACvF,QAAQ,CAACzH,UAAU,CAAC,EAAE;MACrCH,SAAS,CAACG,UAAU,GAAGiN,iBAAiB,CAACjN,UAAU,EAAE,KAAK,CAAC,CAAA;AAC7D,KAAA;GACD,CAAA;AAED,EAAA,IAAI+L,eAAe,EAAE;AACnBc,IAAAA,cAAc,GAAGG,WAAW,CAAC1M,6BAA6B,CAAC,WAAW,CAAC,CAAA;IAEvE,MAAM,CAACyG,OAAO,EAAEtG,SAAS,CAAC,GAAGmG,mBAAmB,CAAC1H,IAAI,CAAC,CAAA;AACtDA,IAAAA,IAAI,GAAGuB,SAAS,CAAA;AAChBqM,IAAAA,YAAY,GAAG/F,OAAO,CAAA;AAEtB7H,IAAAA,IAAI,CAACQ,IAAI,CAACP,UAAU,GAAG,IAAI,CAAA;AAE3B,IAAA,KAAK,MAAMwO,cAAc,IAAI5B,eAAe,EAAE;MAC5CsB,qBAAqB,CAACM,cAAc,CAAC,CAAA;AACvC,KAAA;AACF,GAAC,MAAM;AACL,IAAA,IAAI,CAACzO,IAAI,CAACQ,IAAI,CAACU,EAAE,EAAE;AACjBlB,MAAAA,IAAI,CAACQ,IAAI,CAACU,EAAE,GAAGlB,IAAI,CAACmB,KAAK,CAACyD,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAC1D,KAAA;IACAgJ,YAAY,GAAGhN,KAAC,CAACiB,SAAS,CAAC7B,IAAI,CAACQ,IAAI,CAACU,EAAE,CAAC,CAAA;AAC1C,GAAA;AAEA,EAAA,IAAIwN,uBAAsC,CAAA;EAC1C,IAAIC,8BAA8B,GAAG,KAAK,CAAA;AAE1C,EAAA,IAAI7B,oBAAoB,EAAE;AACxB,IAAA,KAAK,MAAMlE,OAAO,IAAIxG,IAAI,EAAE;AAC1B,MAAA,IAAI,CAACmK,6BAA6B,CAAC3D,OAAO,CAAC,EAAE;AAC3C,QAAA,SAAA;AACF,OAAA;MAEA,MAAM;AAAEpI,QAAAA,IAAAA;AAAK,OAAC,GAAGoI,OAAO,CAAA;AACxB,MAAA,MAAM3I,UAAU,GAAG2I,OAAO,CAACzI,GAAG,CAAC,YAAY,CAAC,CAAA;AAE5C,MAAA,MAAMyO,aAAa,GAAG/C,KAAK,CAACC,OAAO,CAAC7L,UAAU,CAAC,IAAIA,UAAU,CAACc,MAAM,GAAG,CAAC,CAAA;AAExE,MAAA,IAAI6N,aAAa,EAAE;AACjB,QAAA,KAAK,MAAMC,aAAa,IAAI5O,UAAU,EAAE;AACtCkO,UAAAA,qBAAqB,CAACU,aAAa,CAACrO,IAAI,CAAC,CAAA;AAC3C,SAAA;AACF,OAAA;AAEA,MAAA,MAAMwI,UAAU,GACd,UAAU,IAAIJ,OAAO,CAACpI,IAAI,IAAIoI,OAAO,CAACpI,IAAI,CAACoC,QAAQ,KAAK,IAAI,CAAA;AAC9D,MAAA,IAAIoG,UAAU,EAAE;QACd,IAAI,CAAC8E,WAAW,CAACvF,QAAQ,CAAC/H,IAAI,CAACwC,GAAG,CAAC,EAAE;UACnCxC,IAAI,CAACwC,GAAG,GAAG+K,iBAAiB,CAACvN,IAAI,CAACwC,GAAG,EAAkB,aAAa,CAAC,CAAA;AACvE,SAAA;AACF,OAAA;AAEA,MAAA,MAAMsH,IAAI,GAAGD,cAAc,CAACzB,OAAO,CAAC,CAAA;MACpC,MAAM;AAAE5F,QAAAA,GAAAA;AAAI,OAAC,GAAGxC,IAAI,CAAA;AAEpB,MAAA,MAAMsO,SAAS,GAAG9L,GAAG,CAACP,IAAI,KAAK,aAAa,CAAA;MAE5C,MAAM8F,QAAQ,GAAG,CAAC,CAACK,OAAO,CAACpI,IAAI,CAAC2C,MAAM,CAAA;MAEtC,IAAI1B,IAAI,GAAG,aAAa,CAAA;AAExB,MAAA,IAAIqN,SAAS,EAAE;AACbrN,QAAAA,IAAI,GAAGuB,GAAG,CAAC9B,EAAE,CAACO,IAAI,CAAA;OACnB,MAAM,IAAI,CAACuH,UAAU,IAAIhG,GAAG,CAACP,IAAI,KAAK,YAAY,EAAE;QACnDhB,IAAI,GAAGuB,GAAG,CAACvB,IAAI,CAAA;AACjB,OAAA;AAEA,MAAA,IAAIqN,SAAS,IAAI,CAACvG,QAAQ,EAAE;AAC1B,QAAA,IAAIqG,aAAa,EAAE;AACjBD,UAAAA,8BAA8B,GAAG,IAAI,CAAA;AACvC,SAAA;QACA,IAAI/N,KAAC,CAACmO,sBAAsB,CAACvO,IAAI,CAAC,IAAI,CAACkO,uBAAuB,EAAE;AAC9DA,UAAAA,uBAAuB,GAAG1L,GAAG,CAAA;AAC/B,SAAA;AACF,OAAA;MAEA,IAAI4F,OAAO,CAACoG,aAAa,CAAC;AAAE1E,QAAAA,IAAI,EAAE,aAAA;AAAc,OAAC,CAAC,EAAE;AAClD+C,QAAAA,eAAe,GAAGzE,OAAO,CAAA;AAC3B,OAAA;AAEA,MAAA,IAAIgG,aAAa,EAAE;AACjB,QAAA,IAAIhD,MAAqC,CAAA;AACzC,QAAA,IAAIJ,cAEH,CAAA;QAED,IAAIlB,IAAI,KAAKR,QAAQ,EAAE;UACrB,MAAM;AAAEvG,YAAAA,KAAAA;WAAO,GAAGqF,OAAO,CAACpI,IAA+B,CAAA;UAEzD,MAAM6L,MAAsB,GAAG,CAACzL,KAAC,CAACkD,cAAc,EAAE,CAAC,CAAA;AAEnD,UAAA,IAAIP,KAAK,EAAE;YACT8I,MAAM,CAACrI,IAAI,CAACpD,KAAC,CAACiB,SAAS,CAAC0B,KAAK,CAAC,CAAC,CAAA;AACjC,WAAA;AAEA,UAAA,MAAMyJ,KAAK,GAAGD,uBAAuB,EAAE,CAAA;AACvC,UAAA,MAAMkC,cAAc,GAClBrG,OAAO,CAACzH,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAAE,CAAOK,KAAAA,EAAAA,IAAK,EAAC,CAAC,CAAA;AACpE,UAAA,MAAMyN,QAAQ,GAAGtO,KAAC,CAACgD,cAAc,CAC/BhD,KAAC,CAACiB,SAAS,CAACoN,cAAc,CAAC,EAC3B5C,MACF,CAAC,CAAA;UAED,MAAMa,QAAQ,GAAG5E,qBAAqB,CAAC0E,KAAK,EAAEkC,QAAQ,EAAE3G,QAAQ,CAAC,CAAA;UACjE,MAAM,CAAC3C,OAAO,CAAC,GAAGgD,OAAO,CAAC/C,WAAW,CAACqH,QAAQ,CAAC,CAAA;AAE/C,UAAA,IAAI4B,SAAS,EAAE;AACbtD,YAAAA,cAAc,GAAG7B,wBAAwB,CAACqD,KAAK,EAAEjE,OAAO,CAAC,CAAA;AAEzD,YAAA,MAAMiD,KAAK,GAAGpG,OAAO,CAACzE,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAC7D,CAAMK,IAAAA,EAAAA,IAAK,EACd,CAAC,CAAA;AACD,YAAA,MAAMwK,KAAK,GAAGrG,OAAO,CAACzE,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAC7D,CAAMK,IAAAA,EAAAA,IAAK,EACd,CAAC,CAAA;YAEDsK,mBAAmB,CAACnG,OAAO,EAAE5C,GAAG,EAAEgJ,KAAK,EAAEC,KAAK,CAAC,CAAA;AAE/CL,YAAAA,MAAM,GAAG,CAACqD,cAAc,EAAEjD,KAAK,EAAEC,KAAK,CAAC,CAAA;AACzC,WAAC,MAAM;AACLtD,YAAAA,oBAAoB,CAClB3I,IAAI,CAACQ,IAAI,CAACU,EAAE,EACZ0E,OAAO,EACP5C,GAAG,EACHgK,KAAK,EACLjE,OAAO,EACPC,UACF,CAAC,CAAA;AACD4C,YAAAA,MAAM,GAAGqD,cAAc,CAAA;AACzB,WAAA;AACF,SAAC,MAAM,IAAI3E,IAAI,KAAKT,KAAK,EAAE;AACzB,UAAA,MAAMsF,MAAM,GAAGvG,OAAO,CAACzH,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CAC9D,CAAOK,KAAAA,EAAAA,IAAK,EACf,CAAC,CAAA;AACD,UAAA,MAAM2N,SAAS,GACbxG,OAAO,CACPzI,GAAG,CAAC,OAAO,CAAC,CAAA;AAEdiP,UAAAA,SAAS,CAACvJ,WAAW,CACnBjF,KAAC,CAACgD,cAAc,CACdhD,KAAC,CAACiB,SAAS,CAACsN,MAAM,CAAC,EACnB,CAACvO,KAAC,CAACkD,cAAc,EAAE,EAAEsL,SAAS,CAAC5O,IAAI,CAAC,CAACE,MAAM,CAAC2O,CAAC,IAAIA,CAAC,CACpD,CACF,CAAC,CAAA;AAEDzD,UAAAA,MAAM,GAAGuD,MAAM,CAAA;AAEf,UAAA,IAAIL,SAAS,EAAE;AACbtD,YAAAA,cAAc,GAAG7B,wBAAwB,CAAC3G,GAAG,EAAE+F,OAAO,CAAC,CAAA;AACzD,WAAA;SACD,MAAM,IAAI+F,SAAS,EAAE;AACpBlD,UAAAA,MAAM,GAAGhD,OAAO,CAACzH,KAAK,CAAC8G,MAAM,CAAC7G,6BAA6B,CACxD,CAAA,KAAA,EAAOK,IAAK,CAAA,CACf,CAAC,CAAA;AAED,UAAA,MAAM6N,aAAa,GAAG,IAAIC,aAAa,CAAC;YACtC3C,aAAa;AACb4C,YAAAA,UAAU,EAAE5G,OAAyC;AACrD6G,YAAAA,SAAS,EAAE7B,YAAY;AACvB8B,YAAAA,QAAQ,EAAE1P,IAAI,CAACQ,IAAI,CAAC6H,UAAU;YAC9BsH,IAAI,EAAEzN,KAAK,CAACyN,IAAI;AAChBC,YAAAA,aAAa,EAAEhC,YAAAA;AACjB,WAAC,CAAC,CAAA;UAEF0B,aAAa,CAACO,OAAO,EAAE,CAAA;UAEvB,MAAM;YACJxD,MAAM;YACNjK,IAAI;AACJ0N,YAAAA,KAAK,EAAEC,OAAAA;WACR,GAAGnH,OAAO,CAACpI,IAA4B,CAAA;AAExCgL,UAAAA,cAAc,GAAG,CACf5K,KAAC,CAAC4C,kBAAkB,CAClBiF,SAAS,EACT4D,MAAM,CAAC3L,MAAM,CAACwL,gBAAgB,CAAC,EAC/B9J,IAAI,EACJ2N,OACF,CAAC,CACF,CAAA;AAED,UAAA,IAAIzF,IAAI,KAAKN,MAAM,IAAIM,IAAI,KAAKL,MAAM,EAAE;AACtCkC,YAAAA,mBAAmB,CACjBvD,OAAO,EACPhI,KAAC,CAACiB,SAAS,CAACmB,GAAG,CAAC,EAChBpC,KAAC,CAACiB,SAAS,CAAC+J,MAAM,CAAC,EACnBrD,QACF,CAAC,CAAA;AACH,WAAC,MAAM;AACL,YAAA,MAAM/H,IAAI,GAAGoI,OAAO,CAACpI,IAA4B,CAAA;AAGjDR,YAAAA,IAAI,CAACQ,IAAI,CAAC4B,IAAI,CAACA,IAAI,CAACwE,OAAO,CACzBhG,KAAC,CAAC4H,oBAAoB,CAACxF,GAAG,EAAEpC,KAAC,CAACiB,SAAS,CAAC+J,MAAM,CAAC,EAAE,EAAE,EAAEpL,IAAI,CAAC2C,MAAM,CAClE,CAAC,CAAA;YAEDqK,uBAAuB,CAACzJ,GAAG,CAACf,GAAG,CAAC9B,EAAE,CAACO,IAAI,CAAC,CAAA;YAExCmH,OAAO,CAACoH,MAAM,EAAE,CAAA;AAClB,WAAA;AACF,SAAA;AAEA,QAAA,IAAIC,QAAsB,CAAA;AAE1B,QAAA,IAAIjH,UAAU,EAAE;AACdiH,UAAAA,QAAQ,GAAGrP,KAAC,CAACiB,SAAS,CAACmB,GAAmB,CAAC,CAAA;AAC7C,SAAC,MAAM,IAAIA,GAAG,CAACP,IAAI,KAAK,aAAa,EAAE;UACrCwN,QAAQ,GAAGrP,KAAC,CAACqC,aAAa,CAACD,GAAG,CAAC9B,EAAE,CAACO,IAAI,CAAC,CAAA;AACzC,SAAC,MAAM,IAAIuB,GAAG,CAACP,IAAI,KAAK,YAAY,EAAE;UACpCwN,QAAQ,GAAGrP,KAAC,CAACqC,aAAa,CAACD,GAAG,CAACvB,IAAI,CAAC,CAAA;AACtC,SAAC,MAAM;AACLwO,UAAAA,QAAQ,GAAGrP,KAAC,CAACiB,SAAS,CAACmB,GAAmB,CAAC,CAAA;AAC7C,SAAA;QAEAmK,oBAAoB,CAACnJ,IAAI,CAAC;UACxBsG,IAAI;AACJrK,UAAAA,UAAU,EAAEA,UAAU,CAACgB,GAAG,CAACiP,CAAC,IAAIA,CAAC,CAAC1P,IAAI,CAACM,UAAU,CAAC;AAClD+J,UAAAA,cAAc,EAAE5K,UAAU,CAACgB,GAAG,CAACiP,CAAC,IAAIrF,cAAc,CAAC1K,GAAG,CAAC+P,CAAC,CAAC1P,IAAI,CAAC,CAAC;AAC/DiB,UAAAA,IAAI,EAAEwO,QAAQ;UACd1H,QAAQ;UACRiD,cAAc;AACdI,UAAAA,MAAAA;AACF,SAAC,CAAC,CAAA;QAEF,IAAItB,IAAI,KAAKT,KAAK,EAAE;AAClB,UAAA,IAAItB,QAAQ,EAAE;AACZgF,YAAAA,kBAAkB,GAAG,IAAI,CAAA;AAC3B,WAAC,MAAM;AACLD,YAAAA,iBAAiB,GAAG,IAAI,CAAA;AAC1B,WAAA;AACF,SAAA;QAEA,IAAI1E,OAAO,CAACpI,IAAI,EAAE;AAChBoI,UAAAA,OAAO,CAACpI,IAAI,CAACP,UAAU,GAAG,IAAI,CAAA;AAChC,SAAA;AAEA,QAAA,IACE,CAACmN,cAAc,IACf,CAAC7E,QAAQ,KACR+B,IAAI,KAAKT,KAAK,IAAIS,IAAI,KAAKR,QAAQ,CAAC,EACrC;AACAsD,UAAAA,cAAc,GAAGxE,OAEhB,CAAA;AACH,SAAA;AACF,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,MAAMuH,kBAAkB,GAAG7E,uBAAuB,CAChD6B,oBAAoB,EACpBpE,OACF,CAAC,CAAA;EACD,IAAIqH,oBAAoB,GAAG,CAAC,CAAA;EAC5B,IAAIC,gBAAgC,GAAG,EAAE,CAAA;AACzC,EAAA,IAAIxD,eAAe,EAAE;IACnB,MAAM;MAAExB,OAAO;AAAEJ,MAAAA,IAAAA;AAAK,KAAC,GAAGL,sBAAsB,CAC9CiC,eAAe,CAAC5L,GAAG,CAAC0J,EAAE,IAAIA,EAAE,CAAC7J,UAAU,CAAC,EACxC+L,eAAe,CAAC5L,GAAG,CAACS,GAAG,IAAImJ,cAAc,CAAC1K,GAAG,CAACuB,GAAG,CAAC,CAAC,EACnDqH,OACF,CAAC,CAAA;AACDqH,IAAAA,oBAAoB,GAAG/E,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;AACtCgF,IAAAA,gBAAgB,GAAGpF,IAAI,CAAA;AACzB,GAAA;AAEA,EAAA,MAAMqF,aAA6B,GACjC7E,8BAA8B,CAAC0B,oBAAoB,CAAC,CAAA;AAEtD,EAAA,IAAIG,iBAAiB,EAAE;AACrBG,IAAAA,cAAc,GAAGK,WAAW,CAAC1M,6BAA6B,CAAC,WAAW,CAAC,CAAA;AACvEkP,IAAAA,aAAa,CAACtM,IAAI,CAACyJ,cAAc,CAAC,CAAA;IAElC,MAAM8C,aAAa,GAAG3P,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAACiB,SAAS,CAAC4L,cAAc,CAAC,EAAE,CAClE7M,KAAC,CAACkD,cAAc,EAAE,CACnB,CAAC,CAAA;AAEF,IAAA,IAAIsJ,cAAc,EAAE;AAClB,MAAA,MAAM7J,KAAK,GAAG6J,cAAc,CAACjN,GAAG,CAAC,OAAO,CAAC,CAAA;AACzC,MAAA,MAAMiC,IAAoB,GAAG,CAACmO,aAAa,CAAC,CAAA;MAE5C,IAAIhN,KAAK,CAAC/C,IAAI,EAAE;AACd4B,QAAAA,IAAI,CAAC4B,IAAI,CAACT,KAAK,CAAC/C,IAAI,CAAC,CAAA;AACvB,OAAA;MAEA+C,KAAK,CAACsC,WAAW,CAACjF,KAAC,CAACI,kBAAkB,CAACoB,IAAI,CAAC,CAAC,CAAA;KAC9C,MAAM,IAAIiL,eAAe,EAAE;AAC1B,MAAA,IAAIrN,IAAI,CAACQ,IAAI,CAAC6H,UAAU,EAAE;QACxBrI,IAAI,CAACkH,QAAQ,CAAC;AACZX,UAAAA,cAAc,EAAE;YACdiK,IAAIA,CAACxQ,IAAI,EAAE;cACT,IAAI,CAACA,IAAI,CAACG,GAAG,CAAC,QAAQ,CAAC,CAACmO,OAAO,EAAE,EAAE,OAAA;cAEnCtO,IAAI,CAAC6F,WAAW,CACdjF,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAACiB,SAAS,CAAC4L,cAAc,CAAC,EAAE,CAACzN,IAAI,CAACQ,IAAI,CAAC,CAC3D,CAAC,CAAA;cAEDR,IAAI,CAACyQ,IAAI,EAAE,CAAA;AACb,aAAA;AACF,WAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAC,MAAM;AACLpD,QAAAA,eAAe,CAAC7M,IAAI,CAAC4B,IAAI,CAACA,IAAI,CAACwE,OAAO,CACpChG,KAAC,CAACyI,mBAAmB,CAACkH,aAAa,CACrC,CAAC,CAAA;AACH,OAAA;AACF,KAAC,MAAM;MACL,MAAMnO,IAAmB,GAAG,CAACxB,KAAC,CAACyI,mBAAmB,CAACkH,aAAa,CAAC,CAAC,CAAA;AAElE,MAAA,IAAIvQ,IAAI,CAACQ,IAAI,CAAC6H,UAAU,EAAE;AACxBjG,QAAAA,IAAI,CAACwE,OAAO,CACVhG,KAAC,CAACyI,mBAAmB,CACnBzI,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAAC8P,KAAK,EAAE,EAAE,CAC1B9P,KAAC,CAAC+P,aAAa,CAAC/P,KAAC,CAACwD,UAAU,CAAC,MAAM,CAAC,CAAC,CACtC,CACH,CACF,CAAC,CAAA;AACH,OAAA;AAEApE,MAAAA,IAAI,CAACQ,IAAI,CAAC4B,IAAI,CAACA,IAAI,CAACwE,OAAO,CACzBhG,KAAC,CAAC6I,WAAW,CACX,aAAa,EACb7I,KAAC,CAACwD,UAAU,CAAC,aAAa,CAAC,EAC3B,CAACxD,KAAC,CAACgQ,WAAW,CAAChQ,KAAC,CAACwD,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EACrCxD,KAAC,CAAC6C,cAAc,CAACrB,IAAI,CACvB,CACF,CAAC,CAAA;AACH,KAAA;AACF,GAAA;AAEA,EAAA,IAAImL,kBAAkB,EAAE;AACtBG,IAAAA,eAAe,GAAGI,WAAW,CAAC1M,6BAA6B,CAAC,YAAY,CAAC,CAAA;AACzEkP,IAAAA,aAAa,CAACtM,IAAI,CAAC0J,eAAe,CAAC,CAAA;AACrC,GAAA;AAEA,EAAA,IAAIF,uBAAuB,CAACqD,IAAI,GAAG,CAAC,EAAE;IACpC7Q,IAAI,CAACkH,QAAQ,CAAC;MACZC,WAAWA,CAACnH,IAAI,EAAE;AAChB,QAAA,IAAI,CAACwN,uBAAuB,CAACnH,GAAG,CAACrG,IAAI,CAACQ,IAAI,CAACU,EAAE,CAACO,IAAI,CAAC,EAAE,OAAA;AAErD,QAAA,MAAMyG,UAAU,GAAGlI,IAAI,CAACkI,UAAU,CAAA;AAClC,QAAA,MAAM4I,gBAAgB,GAAG5I,UAAU,CAACA,UAAU,CAAA;AAE9C,QAAA,IAEG4I,gBAAgB,CAACtQ,IAAI,CAACiC,IAAI,KAAK,sBAAsB,IACpDqO,gBAAgB,CAACtQ,IAAI,CAACuQ,IAAI,KAAK7I,UAAU,CAAC1H,IAAI,IAEhDsQ,gBAAgB,CAACtQ,IAAI,CAACiC,IAAI,KAAK,kBAAkB,IAEjDqO,gBAAgB,CAACtQ,IAAI,CAACiC,IAAI,KAAK,aAAa,IAE5CqO,gBAAgB,CAACtQ,IAAI,CAACiC,IAAI,KAAK,cAAc,IAE5CqO,gBAAgB,CAACtQ,IAAI,CAACiC,IAAI,KAAK,gBAAgB,IAC9CqO,gBAAgB,CAACtQ,IAAI,CAAC+C,KAAK,KAAK2E,UAAU,CAAC1H,IAAI,IAC/CsQ,gBAAgB,CAAC5I,UAAU,CAACzF,IAAI,KAAK,eAAgB,IAEtDqO,gBAAgB,CAACtQ,IAAI,CAACiC,IAAI,KAAK,gBAAgB,IAC9CqO,gBAAgB,CAACtQ,IAAI,CAACuQ,IAAI,KAAK7I,UAAU,CAAC1H,IAAK,EACjD;AACA,UAAA,MAAMR,IAAI,CAAC6C,mBAAmB,CAC3B,CAAqD7C,mDAAAA,EAAAA,IAAI,CAACQ,IAAI,CAACU,EAAE,CAACO,IAAK,mCAC1E,CAAC,CAAA;AACH,SAAA;AACF,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;EAEA,MAAMuP,WAA2B,GAAG,EAAE,CAAA;EACtC,IAAIC,iBAAiB,GAAG,KAAK,CAAA;AAC7B,EAAA,MAAMC,aAAa,GACjBvD,cAAc,IAAI/M,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAACiB,SAAS,CAAC8L,cAAc,CAAC,EAAE,EAAE,CAAC,CAAA;AAErE,EAAA,MAAMwD,aAAa,GAAGnR,IAAI,CAACQ,IAAI,CAAA;AAE/B,EAAA,IAAIqM,eAAe,EAAE;AACnBmE,IAAAA,WAAW,CAAChN,IAAI,CAAC4J,YAAY,EAAED,cAAc,CAAC,CAAA;IAC9C,MAAMyD,OAIH,GAAG,EAAE,CAAA;IACR,IAAIC,YAA6B,GAAG,EAAE,CAAA;IACtCrR,IAAI,CAACG,GAAG,CAAC,WAAW,CAAC,CAACmR,OAAO,CAAC1I,OAAO,IAAI;AAGvC,MAAA,IAAIA,OAAO,CAAC2I,aAAa,EAAE,EAAE;AAC3BF,QAAAA,YAAY,CAACrN,IAAI,CAAC4E,OAAO,CAACpI,IAAI,CAAC,CAAA;QAC/BoI,OAAO,CAACoH,MAAM,EAAE,CAAA;AAChB,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,MAAMwB,UAAU,GACd5I,OAAO,CAACxF,eAAe,EAAE,IAAIwF,OAAO,CAACmG,sBAAsB,EAAE,CAAA;AAE/D,MAAA,IACE,CAACyC,UAAU,IAAI5I,OAAO,CAAC6I,oBAAoB,EAAE,KAC7C7I,OAAO,CAACpI,IAAI,CAAC2C,MAAM,EACnB;AACA,QAAA,IAAIqO,UAAU,IAAIH,YAAY,CAACtQ,MAAM,GAAG,CAAC,EAAE;AACzC,UAAA,MAAM2Q,SAAyB,GAAGL,YAAY,CAACpQ,GAAG,CAACuL,iBAAiB,CAAC,CAAA;AACrE,UAAA,IAAI5D,OAAO,CAACpI,IAAI,CAAC+C,KAAK,EAAEmO,SAAS,CAAC1N,IAAI,CAAC4E,OAAO,CAACpI,IAAI,CAAC+C,KAAK,CAAC,CAAA;UAC1DqF,OAAO,CAACpI,IAAI,CAAC+C,KAAK,GAAGmJ,uBAAuB,CAACgF,SAAS,CAAC,CAAA;AACvDL,UAAAA,YAAY,GAAG,EAAE,CAAA;AACnB,SAAA;AAEAzI,QAAAA,OAAO,CAACpI,IAAI,CAAC2C,MAAM,GAAG,KAAK,CAAA;AAC3BiO,QAAAA,OAAO,CAACpN,IAAI,CAAC4E,OAAO,CAACpI,IAAI,CAAC,CAAA;QAC1BoI,OAAO,CAACoH,MAAM,EAAE,CAAA;AAClB,OAAA;AACF,KAAC,CAAC,CAAA;IAEF,IAAIoB,OAAO,CAACrQ,MAAM,GAAG,CAAC,IAAIsQ,YAAY,CAACtQ,MAAM,GAAG,CAAC,EAAE;AACjD,MAAA,MAAM4Q,YAAY,GAAGnS,QAAQ,CAACsB,UAAU,CAAC8I,GAAI,CAAA;AACnD,sBAAA,EAAwB1H,KAAK,CAAC2B,SAAS,CAAC,UAAU,CAAE,CAAA;AACpD,MAA4B,CAAA,CAAA;AACtB8N,MAAAA,YAAY,CAACvP,IAAI,CAACA,IAAI,GAAG,CACvBxB,KAAC,CAACgR,WAAW,CAAC,CACZhR,KAAC,CAACiR,WAAW,CAACV,aAAa,EAAE,IAAI,CAAC,IAGhCvQ,KAAC,CAACyI,mBAAmB,CAAC8H,aAAkC,CAAC,CAC5D,CAAC,EACF,GAAGC,OAAO,CACX,CAAA;MAED,MAAMU,eAA+B,GAAG,EAAE,CAAA;MAE1C,MAAMC,OAAO,GAAGnR,KAAC,CAACoR,aAAa,CAACL,YAAY,EAAE,EAAE,CAAC,CAAA;AAEjD,MAAA,IAAIN,YAAY,CAACtQ,MAAM,GAAG,CAAC,EAAE;QAC3B+Q,eAAe,CAAC9N,IAAI,CAAC,GAAGqN,YAAY,CAACpQ,GAAG,CAACuL,iBAAiB,CAAC,CAAC,CAAA;AAC9D,OAAA;AACA,MAAA,IAAI0E,aAAa,EAAE;AACjBD,QAAAA,iBAAiB,GAAG,IAAI,CAAA;AACxBa,QAAAA,eAAe,CAAC9N,IAAI,CAACkN,aAAa,CAAC,CAAA;AACrC,OAAA;AACA,MAAA,IAAIY,eAAe,CAAC/Q,MAAM,GAAG,CAAC,EAAE;QAC9B+Q,eAAe,CAAClL,OAAO,CACrBhG,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAAC8P,KAAK,EAAE,EAAE,CAAC9P,KAAC,CAACiB,SAAS,CAAC+L,YAAY,CAAC,CAAC,CACzD,CAAC,CAAA;AAED+D,QAAAA,YAAY,CAACvP,IAAI,CAACA,IAAI,CAAC4B,IAAI,CACzBpD,KAAC,CAAC6I,WAAW,CACX,aAAa,EACb7I,KAAC,CAACwD,UAAU,CAAC,aAAa,CAAC,EAC3B,EAAE,EACFxD,KAAC,CAAC6C,cAAc,CAAC,CACf7C,KAAC,CAACyI,mBAAmB,CAACzI,KAAC,CAACI,kBAAkB,CAAC8Q,eAAe,CAAC,CAAC,CAC7D,CACH,CACF,CAAC,CAAA;AACH,OAAC,MAAM;QACLC,OAAO,CAACvL,SAAS,CAACxC,IAAI,CAACpD,KAAC,CAACiB,SAAS,CAAC+L,YAAY,CAAC,CAAC,CAAA;AACnD,OAAA;AAEA5N,MAAAA,IAAI,CAAC6F,WAAW,CAACkM,OAAO,CAAC,CAAA;AAC3B,KAAA;AACF,GAAA;AACA,EAAA,IAAI,CAACd,iBAAiB,IAAIC,aAAa,EAAE;IACvClR,IAAI,CAACQ,IAAI,CAAC4B,IAAI,CAACA,IAAI,CAAC4B,IAAI,CACtBpD,KAAC,CAACgR,WAAW,CAAC,CAAChR,KAAC,CAACyI,mBAAmB,CAAC6H,aAAa,CAAC,CAAC,CACtD,CAAC,CAAA;AACH,GAAA;EAEA,IAAI;AAAE7I,IAAAA,UAAAA;AAAW,GAAC,GAAG8I,aAAa,CAAA;AAClC,EAAA,IAAI9I,UAAU,EAA6D;IACzE,MAAMnH,EAAE,GAAGlB,IAAI,CAACmB,KAAK,CAAC8Q,qBAAqB,CAAC5J,UAAU,CAAC,CAAA;AACvD,IAAA,IAAInH,EAAE,EAAE;AACNiQ,MAAAA,aAAa,CAAC9I,UAAU,GAAGzH,KAAC,CAACS,oBAAoB,CAAC,GAAG,EAAEH,EAAE,EAAEmH,UAAU,CAAC,CAAA;AACtEA,MAAAA,UAAU,GAAGnH,EAAE,CAAA;AACjB,KAAA;AACF,GAAA;AAEAiQ,EAAAA,aAAa,CAAC/O,IAAI,CAACA,IAAI,CAACwE,OAAO,CAC7BhG,KAAC,CAACgR,WAAW,CACX,CACEhR,KAAC,CAACyI,mBAAmB,CACnB6I,sBAAsB,CACpB5B,aAAa,EACbU,WAAW,EACXb,kBAAkB,EAClBvP,KAAC,CAACqD,eAAe,CAACoM,gBAAgB,CAAC,EACnCzP,KAAC,CAACwK,cAAc,CAACgF,oBAAoB,CAAC,EACtCzB,8BAA8B,GAAGD,uBAAuB,GAAG,IAAI,EAC/D9N,KAAC,CAACiB,SAAS,CAACwG,UAAU,CAAC,EACvBnG,KAEF,CACF,CAAC,EACDqL,kBAAkB,IAChB3M,KAAC,CAACyI,mBAAmB,CACnBzI,KAAC,CAACgD,cAAc,CAAChD,KAAC,CAACiB,SAAS,CAAC6L,eAAe,CAAC,EAAE,CAC7C9M,KAAC,CAACkD,cAAc,EAAE,CACnB,CACH,CAAC,CACJ,CAACpD,MAAM,CAACsK,OAAO,CAClB,CACF,CAAC,CAAA;AAIDhL,EAAAA,IAAI,CAAC+H,YAAY,CAAC8F,WAAW,CAAC5M,GAAG,CAACkR,IAAI,IAAIvR,KAAC,CAACyI,mBAAmB,CAAC8I,IAAI,CAAC,CAAC,CAAC,CAAA;AAGvEnS,EAAAA,IAAI,CAACmB,KAAK,CAACiR,KAAK,EAAE,CAAA;AAElB,EAAA,OAAOpS,IAAI,CAAA;AACb,CAAA;AAEA,SAASkS,sBAAsBA,CAC7B5B,aAA6B,EAC7BU,WAA2B,EAC3Bb,kBAAqC,EACrCE,gBAAmC,EACnCD,oBAAsC,EACtCiC,oBAA0C,EAC1ChK,UAA+B,EAC/BnG,KAAiB,EACjB6G,OAA6B,EAC7B;EACA,IAAIuJ,GAAG,EAAEC,GAAG,CAAA;AACZ,EAAA,MAAMC,IAAoB,GAAG,CAC3B5R,KAAC,CAACkD,cAAc,EAAE,EAClBqM,kBAAkB,EAClBE,gBAAgB,CACjB,CAAA;AAgB0D,EAAA;IACzD,IACEgC,oBAAoB,IACpBhK,UAAU,IACV+H,oBAAoB,CAAC7M,KAAK,KAAK,CAAC,EAChC;AACAiP,MAAAA,IAAI,CAACxO,IAAI,CAACoM,oBAAoB,CAAC,CAAA;AACjC,KAAA;AACA,IAAA,IAAIiC,oBAAoB,EAAE;AACxBG,MAAAA,IAAI,CAACxO,IAAI,CACPxE,QAAQ,CAACsB,UAAU,CAAC8I,GAAI,CAAA;AAChC,iBAAA,EAAmBhJ,KAAC,CAACiB,SAAS,CAACwQ,oBAAoB,CAAE,CAAA;AACrD,UAAA,CACM,CAAC,CAAA;KACF,MAAM,IAAIhK,UAAU,EAAE;AACrBmK,MAAAA,IAAI,CAACxO,IAAI,CAACpD,KAAC,CAACuK,eAAe,CAAC,MAAM,EAAEvK,KAAC,CAACwK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,KAAA;AACA,IAAA,IAAI/C,UAAU,EAAEmK,IAAI,CAACxO,IAAI,CAACqE,UAAU,CAAC,CAAA;AACrCkK,IAAAA,GAAG,GAAG3R,KAAC,CAACgD,cAAc,CAAC1B,KAAK,CAAC2B,SAAS,CAAC,eAAe,CAAC,EAAE2O,IAAI,CAAC,CAAA;AAChE,GAAA;AAcA,EAAA,IAAIlC,aAAa,CAACvP,MAAM,GAAG,CAAC,EAAE;AAC5B,IAAA,IAAIiQ,WAAW,CAACjQ,MAAM,GAAG,CAAC,EAAE;MAC1BuR,GAAG,GAAG1R,KAAC,CAAC6R,aAAa,CAAC,CACpB7R,KAAC,CAACuD,cAAc,CAACvD,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,EAAExD,KAAC,CAAC8R,YAAY,CAACpC,aAAa,CAAC,CAAC,EAClE1P,KAAC,CAACuD,cAAc,CAACvD,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,EAAExD,KAAC,CAAC8R,YAAY,CAAC1B,WAAW,CAAC,CAAC,CACjE,CAAC,CAAA;AACJ,KAAC,MAAM;AACLsB,MAAAA,GAAG,GAAG1R,KAAC,CAAC8R,YAAY,CAACpC,aAAa,CAAC,CAAA;AACnCiC,MAAAA,GAAG,GAAG3R,KAAC,CAACuI,gBAAgB,CAACoJ,GAAG,EAAE3R,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAChE,KAAA;AACF,GAAC,MAAM;AAELkO,IAAAA,GAAG,GAAG1R,KAAC,CAAC8R,YAAY,CAAC1B,WAAW,CAAC,CAAA;AACjCuB,IAAAA,GAAG,GAAG3R,KAAC,CAACuI,gBAAgB,CAACoJ,GAAG,EAAE3R,KAAC,CAACwD,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAChE,GAAA;EAEA,OAAOxD,KAAC,CAACS,oBAAoB,CAAC,GAAG,EAAEiR,GAAG,EAAEC,GAAG,CAAC,CAAA;AAC9C,CAAA;AAEe,2BACb,EAAA;EAAEI,aAAa;AAAEC,EAAAA,UAAAA;AAAsB,CAAC,EACxC;AAAEC,EAAAA,KAAAA;AAAe,CAAC,EAElB9J,OAAsD,EACxC;AACoB,EAAA;IAChC4J,aAAa,CAAC,SAAS,CAAC,CAAA;AAC1B,GAAA;AAUA,EAAA,MAAMG,OAAO,GAAG,IAAIhT,OAAO,EAAY,CAAA;AACvC,EAAA,MAAM8M,aAAa,GAAGgG,UAAU,CAAC,eAAe,CAAC,IAAIC,KAAK,CAAA;EAE1D,OAAO;AACLpR,IAAAA,IAAI,EAAE,qBAAqB;AAC3BsR,IAAAA,QAAQ,EAAEC,gBAAgB;AAE1BhO,IAAAA,OAAO,EAAE;MACP,iDAAiDiO,CAC/CjT,IAAqE,EACrE;QACA,MAAM;AAAEkT,UAAAA,WAAAA;SAAa,GAAGlT,IAAI,CAACQ,IAAI,CAAA;AACjC,QAAA,IACE0S,WAAW,EAAEzQ,IAAI,KAAK,kBAAkB,IAGxCyQ,WAAW,CAACjT,UAAU,EAAEc,MAAM,GAAG,CAAC,EAClC;UACAoS,sBAAsB,CAACnT,IAAI,CAAC,CAAA;AAC9B,SAAA;OACD;AAEDoT,MAAAA,KAAKA,CAACpT,IAAI,EAAEkC,KAAK,EAAE;AACjB,QAAA,IAAI4Q,OAAO,CAACzM,GAAG,CAACrG,IAAI,CAAC,EAAE,OAAA;QAEvB,MAAM4F,OAAO,GAAG+G,cAAc,CAAC3M,IAAI,EAAEkC,KAAK,EAAE0K,aAAa,EAAE7D,OAAO,CAAC,CAAA;AACnE,QAAA,IAAInD,OAAO,EAAEkN,OAAO,CAAC/O,GAAG,CAAC6B,OAAO,CAAC,CAAA;AACnC,OAAA;AACF,KAAA;GACD,CAAA;AACH;;AC7sCA,YAAeyN,OAAO,CAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;AAChDD,EAAAA,GAAG,CAACX,aAAa,CAAC,CAAC,CAAC,CAAA;EAOpB,MAAM;AAAE5J,IAAAA,OAAAA;AAAQ,GAAC,GAAGwK,OAAO,CAAA;EAE3B,IAEMxK,OAAO,KAAK,QAAQ,EAExB;IACA,OAAO;AACLtH,MAAAA,IAAI,EAAE,qBAAqB;AAC3BsR,MAAAA,QAAQ,EAAEC,gBAAgB;AAC1BhO,MAAAA,OAAO,EAAEwO,OAAAA;KACV,CAAA;AACH,GAAC,MAAM,IACLzK,OAAO,KAAK,SAAS,IACrBA,OAAO,KAAK,SAAS,IACrBA,OAAO,KAAK,SAAS,IACrBA,OAAO,KAAK,SAAS,EACrB;AACA,IAAA,OAAO0K,kBAAkB,CAACH,GAAG,EAAEC,OAAO,EAAExK,OAAO,CAAC,CAAA;AAClD,GAAC,MAUM;AACL,IAAA,MAAM,IAAI2K,KAAK,CACb,oFACF,CAAC,CAAA;AACH,GAAA;AACF,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/transformer-legacy.ts","../src/transformer-2023-05.ts","../src/index.ts"],"sourcesContent":["// Fork of https://github.com/loganfsmyth/babel-plugin-proposal-decorators-legacy\n\nimport { template, types as t, type PluginPass } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/traverse\";\n\nconst buildClassDecorator = template.statement(`\n DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n`) as (replacements: {\n DECORATOR: t.Expression;\n CLASS_REF: t.Identifier;\n INNER: t.Expression;\n}) => t.ExpressionStatement;\n\nconst buildClassPrototype = template(`\n CLASS_REF.prototype;\n`) as (replacements: { CLASS_REF: t.Identifier }) => t.ExpressionStatement;\n\nconst buildGetDescriptor = template(`\n Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n`) as (replacements: {\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst buildGetObjectInitializer = template(`\n (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n enumerable: true,\n configurable: true,\n writable: true,\n initializer: function(){\n return TEMP;\n }\n })\n`) as (replacements: {\n TEMP: t.Identifier;\n TARGET: t.Expression;\n PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst WARNING_CALLS = new WeakSet();\n\n// legacy decorator does not support ClassAccessorProperty\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty;\n\n/**\n * If the decorator expressions are non-identifiers, hoist them to before the class so we can be sure\n * that they are evaluated in order.\n */\nfunction applyEnsureOrdering(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n) {\n // TODO: This should probably also hoist computed properties.\n const decorators: t.Decorator[] = (\n path.isClass()\n ? [\n path,\n ...(path.get(\"body.body\") as NodePath<ClassDecoratableElement>[]),\n ]\n : path.get(\"properties\")\n ).reduce(\n (\n acc: t.Decorator[],\n prop: NodePath<\n t.ObjectMember | t.ClassExpression | ClassDecoratableElement\n >,\n ) => acc.concat(prop.node.decorators || []),\n [],\n );\n\n const identDecorators = decorators.filter(\n decorator => !t.isIdentifier(decorator.expression),\n );\n if (identDecorators.length === 0) return;\n\n return t.sequenceExpression(\n identDecorators\n .map((decorator): t.Expression => {\n const expression = decorator.expression;\n const id = (decorator.expression =\n path.scope.generateDeclaredUidIdentifier(\"dec\"));\n return t.assignmentExpression(\"=\", id, expression);\n })\n .concat([path.node]),\n );\n}\n\n/**\n * Given a class expression with class-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyClassDecorators(classPath: NodePath<t.ClassExpression>) {\n if (!hasClassDecorators(classPath.node)) return;\n\n const decorators = classPath.node.decorators || [];\n classPath.node.decorators = null;\n\n const name = classPath.scope.generateDeclaredUidIdentifier(\"class\");\n\n return decorators\n .map(dec => dec.expression)\n .reverse()\n .reduce(function (acc, decorator) {\n return buildClassDecorator({\n CLASS_REF: t.cloneNode(name),\n DECORATOR: t.cloneNode(decorator),\n INNER: acc,\n }).expression;\n }, classPath.node);\n}\n\nfunction hasClassDecorators(classNode: t.Class) {\n return !!classNode.decorators?.length;\n}\n\n/**\n * Given a class expression with method-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyMethodDecorators(\n path: NodePath<t.ClassExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.body.body)) return;\n\n return applyTargetDecorators(\n path,\n state,\n // @ts-expect-error ClassAccessorProperty is not supported in legacy decorator\n path.node.body.body,\n );\n}\n\nfunction hasMethodDecorators(\n body: t.ClassBody[\"body\"] | t.ObjectExpression[\"properties\"],\n) {\n return body.some(\n node =>\n // @ts-expect-error decorators not in SpreadElement/StaticBlock\n node.decorators?.length,\n );\n}\n\n/**\n * Given an object expression with property decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyObjectDecorators(\n path: NodePath<t.ObjectExpression>,\n state: PluginPass,\n) {\n if (!hasMethodDecorators(path.node.properties)) return;\n\n return applyTargetDecorators(\n path,\n state,\n path.node.properties.filter(\n (prop): prop is t.ObjectMember => prop.type !== \"SpreadElement\",\n ),\n );\n}\n\n/**\n * A helper to pull out property decorators into a sequence expression.\n */\nfunction applyTargetDecorators(\n path: NodePath<t.ClassExpression | t.ObjectExpression>,\n state: PluginPass,\n decoratedProps: (t.ObjectMember | ClassDecoratableElement)[],\n) {\n const name = path.scope.generateDeclaredUidIdentifier(\n path.isClass() ? \"class\" : \"obj\",\n );\n\n const exprs = decoratedProps.reduce(function (acc, node) {\n let decorators: t.Decorator[] = [];\n if (node.decorators != null) {\n decorators = node.decorators;\n node.decorators = null;\n }\n\n if (decorators.length === 0) return acc;\n\n if (\n // @ts-expect-error computed is not in ClassPrivateProperty\n node.computed\n ) {\n throw path.buildCodeFrameError(\n \"Computed method/property decorators are not yet supported.\",\n );\n }\n\n const property: t.Literal = t.isLiteral(node.key)\n ? node.key\n : t.stringLiteral(\n // @ts-expect-error: should we handle ClassPrivateProperty?\n node.key.name,\n );\n\n const target =\n path.isClass() && !(node as ClassDecoratableElement).static\n ? buildClassPrototype({\n CLASS_REF: name,\n }).expression\n : name;\n\n if (t.isClassProperty(node, { static: false })) {\n const descriptor = path.scope.generateDeclaredUidIdentifier(\"descriptor\");\n\n const initializer = node.value\n ? t.functionExpression(\n null,\n [],\n t.blockStatement([t.returnStatement(node.value)]),\n )\n : t.nullLiteral();\n\n node.value = t.callExpression(\n state.addHelper(\"initializerWarningHelper\"),\n [descriptor, t.thisExpression()],\n );\n\n WARNING_CALLS.add(node.value);\n\n acc.push(\n t.assignmentExpression(\n \"=\",\n t.cloneNode(descriptor),\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(\n decorators.map(dec => t.cloneNode(dec.expression)),\n ),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"configurable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"enumerable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(\n t.identifier(\"writable\"),\n t.booleanLiteral(true),\n ),\n t.objectProperty(t.identifier(\"initializer\"), initializer),\n ]),\n ]),\n ),\n );\n } else {\n acc.push(\n t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n t.cloneNode(target),\n t.cloneNode(property),\n t.arrayExpression(decorators.map(dec => t.cloneNode(dec.expression))),\n t.isObjectProperty(node) || t.isClassProperty(node, { static: true })\n ? buildGetObjectInitializer({\n TEMP: path.scope.generateDeclaredUidIdentifier(\"init\"),\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression\n : buildGetDescriptor({\n TARGET: t.cloneNode(target),\n PROPERTY: t.cloneNode(property),\n }).expression,\n t.cloneNode(target),\n ]),\n );\n }\n\n return acc;\n }, []);\n\n return t.sequenceExpression([\n t.assignmentExpression(\"=\", t.cloneNode(name), path.node),\n t.sequenceExpression(exprs),\n t.cloneNode(name),\n ]);\n}\n\nfunction decoratedClassToExpression({ node, scope }: NodePath<t.Class>) {\n if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {\n return;\n }\n\n const ref = node.id\n ? t.cloneNode(node.id)\n : scope.generateUidIdentifier(\"class\");\n\n return t.variableDeclaration(\"let\", [\n t.variableDeclarator(ref, t.toExpression(node)),\n ]);\n}\n\nconst visitor: Visitor<PluginPass> = {\n ExportDefaultDeclaration(path) {\n const decl = path.get(\"declaration\");\n if (!decl.isClassDeclaration()) return;\n\n const replacement = decoratedClassToExpression(decl);\n if (replacement) {\n const [varDeclPath] = path.replaceWithMultiple([\n replacement,\n t.exportNamedDeclaration(null, [\n t.exportSpecifier(\n // @ts-expect-error todo(flow->ts) might be add more specific return type for decoratedClassToExpression\n t.cloneNode(replacement.declarations[0].id),\n t.identifier(\"default\"),\n ),\n ]),\n ]);\n\n if (!decl.node.id) {\n path.scope.registerDeclaration(varDeclPath);\n }\n }\n },\n ClassDeclaration(path) {\n const replacement = decoratedClassToExpression(path);\n if (replacement) {\n const [newPath] = path.replaceWith(replacement);\n\n const decl = newPath.get(\"declarations.0\");\n const id = decl.node.id as t.Identifier;\n\n // TODO: Maybe add this logic to @babel/traverse\n const binding = path.scope.getOwnBinding(id.name);\n binding.identifier = id;\n binding.path = decl;\n }\n },\n ClassExpression(path, state) {\n // Create a replacement for the class node if there is one. We do one pass to replace classes with\n // class decorators, and a second pass to process method decorators.\n const decoratedClass =\n applyEnsureOrdering(path) ||\n applyClassDecorators(path) ||\n applyMethodDecorators(path, state);\n\n if (decoratedClass) path.replaceWith(decoratedClass);\n },\n ObjectExpression(path, state) {\n const decoratedObject =\n applyEnsureOrdering(path) || applyObjectDecorators(path, state);\n\n if (decoratedObject) path.replaceWith(decoratedObject);\n },\n\n AssignmentExpression(path, state) {\n if (!WARNING_CALLS.has(path.node.right)) return;\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n t.cloneNode(path.get(\"left.object\").node),\n t.stringLiteral(\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.name ||\n // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n path.get(\"left.property\").node.value,\n ),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"right.arguments\")[1].node),\n ]),\n );\n },\n\n CallExpression(path, state) {\n if (path.node.arguments.length !== 3) return;\n if (!WARNING_CALLS.has(path.node.arguments[2])) return;\n\n // If the class properties plugin isn't enabled, this line will add an unused helper\n // to the code. It's not ideal, but it's ok since the configuration is not valid anyway.\n // @ts-expect-error todo(flow->ts) check that `callee` is Identifier\n if (path.node.callee.name !== state.addHelper(\"defineProperty\").name) {\n return;\n }\n\n path.replaceWith(\n t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n t.cloneNode(path.get(\"arguments\")[0].node),\n t.cloneNode(path.get(\"arguments\")[1].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[0].node),\n // @ts-expect-error todo(flow->ts)\n t.cloneNode(path.get(\"arguments.2.arguments\")[1].node),\n ]),\n );\n },\n};\n\nexport default visitor;\n","import type { NodePath, Scope, Visitor } from \"@babel/traverse\";\nimport { types as t, template } from \"@babel/core\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport splitExportDeclaration from \"@babel/helper-split-export-declaration\";\nimport * as charCodes from \"charcodes\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport type { Options } from \"./index.ts\";\nimport { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\ntype ClassDecoratableElement =\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty;\n\ntype ClassElement =\n | ClassDecoratableElement\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock;\n\ntype DecoratorVersionKind = \"2023-05\" | \"2023-01\" | \"2022-03\" | \"2021-12\";\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n // If index is -1, id needs an additional character, unshift A\n if (idx === -1) {\n id.unshift(charCodes.uppercaseA);\n return;\n }\n\n const current = id[idx];\n\n if (current === charCodes.uppercaseZ) {\n // if current is Z, skip to a\n id[idx] = charCodes.lowercaseA;\n } else if (current === charCodes.lowercaseZ) {\n // if current is z, reset to A and carry the 1\n id[idx] = charCodes.uppercaseA;\n incrementId(id, idx - 1);\n } else {\n // else, increment by one\n id[idx] = current + 1;\n }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n const currentPrivateId: number[] = [];\n const privateNames = new Set<string>();\n\n classPath.traverse({\n PrivateName(path) {\n privateNames.add(path.node.id.name);\n },\n });\n\n return (): t.PrivateName => {\n let reifiedId;\n do {\n incrementId(currentPrivateId);\n reifiedId = String.fromCharCode(...currentPrivateId);\n } while (privateNames.has(reifiedId));\n\n return t.privateName(t.identifier(reifiedId));\n };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n let generator: () => t.PrivateName;\n\n return (): t.PrivateName => {\n if (!generator) {\n generator = createPrivateUidGeneratorForClass(classPath);\n }\n\n return generator();\n };\n}\n\n/**\n * Takes a class definition and the desired class name if anonymous and\n * replaces it with an equivalent class declaration (path) which is then\n * assigned to a local variable (id). This allows us to reassign the local variable with the\n * decorated version of the class. The class definition retains its original\n * name so that `toString` is not affected, other references to the class\n * are renamed instead.\n */\nfunction replaceClassWithVar(\n path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n className: string | t.Identifier | t.StringLiteral | undefined,\n): {\n id: t.Identifier;\n path: NodePath<t.ClassDeclaration | t.ClassExpression>;\n} {\n if (path.type === \"ClassDeclaration\") {\n const id = path.node.id;\n const className = id.name;\n const varId = path.scope.generateUidIdentifierBasedOnNode(id);\n const classId = t.identifier(className);\n\n path.scope.rename(className, varId.name);\n\n path.get(\"id\").replaceWith(classId);\n\n return { id: t.cloneNode(varId), path };\n } else {\n let varId: t.Identifier;\n\n if (path.node.id) {\n className = path.node.id.name;\n varId = path.scope.parent.generateDeclaredUidIdentifier(className);\n path.scope.rename(className, varId.name);\n } else {\n varId = path.scope.parent.generateDeclaredUidIdentifier(\n typeof className === \"string\" ? className : \"decorated_class\",\n );\n }\n\n const newClassExpr = t.classExpression(\n typeof className === \"string\" ? t.identifier(className) : null,\n path.node.superClass,\n path.node.body,\n );\n\n const [newPath] = path.replaceWith(\n t.sequenceExpression([newClassExpr, varId]),\n );\n\n return {\n id: t.cloneNode(varId),\n path: newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n };\n }\n}\n\nfunction generateClassProperty(\n key: t.PrivateName | t.Identifier,\n value: t.Expression | undefined,\n isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n if (key.type === \"PrivateName\") {\n return t.classPrivateProperty(key, value, undefined, isStatic);\n } else {\n return t.classProperty(key, value, undefined, undefined, isStatic);\n }\n}\n\nfunction addProxyAccessorsFor(\n className: t.Identifier,\n element: NodePath<ClassDecoratableElement>,\n originalKey: t.PrivateName | t.Expression,\n targetKey: t.PrivateName,\n version: DecoratorVersionKind,\n isComputed = false,\n): void {\n const { static: isStatic } = element.node;\n\n const thisArg =\n version === \"2023-05\" && isStatic ? className : t.thisExpression();\n\n const getterBody = t.blockStatement([\n t.returnStatement(\n t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n ),\n ]);\n\n const setterBody = t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n t.identifier(\"v\"),\n ),\n ),\n ]);\n\n let getter: t.ClassMethod | t.ClassPrivateMethod,\n setter: t.ClassMethod | t.ClassPrivateMethod;\n\n if (originalKey.type === \"PrivateName\") {\n getter = t.classPrivateMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isStatic,\n );\n setter = t.classPrivateMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isStatic,\n );\n } else {\n getter = t.classMethod(\n \"get\",\n t.cloneNode(originalKey),\n [],\n getterBody,\n isComputed,\n isStatic,\n );\n setter = t.classMethod(\n \"set\",\n t.cloneNode(originalKey),\n [t.identifier(\"v\")],\n setterBody,\n isComputed,\n isStatic,\n );\n }\n\n element.insertAfter(setter);\n element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n targetKey: t.PrivateName,\n version: DecoratorVersionKind,\n): (t.FunctionExpression | t.ArrowFunctionExpression)[] {\n if (version !== \"2023-05\" && version !== \"2023-01\") {\n return [\n template.expression.ast`\n function () {\n return this.${t.cloneNode(targetKey)};\n }\n ` as t.FunctionExpression,\n template.expression.ast`\n function (value) {\n this.${t.cloneNode(targetKey)} = value;\n }\n ` as t.FunctionExpression,\n ];\n }\n return [\n template.expression.ast`\n o => o.${t.cloneNode(targetKey)}\n ` as t.ArrowFunctionExpression,\n template.expression.ast`\n (o, v) => o.${t.cloneNode(targetKey)} = v\n ` as t.ArrowFunctionExpression,\n ];\n}\n\n// 3 bits reserved to this (0-7)\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC_OLD_VERSION = 5; // Before 2023-05\nconst STATIC = 8; // 1 << 3\nconst DECORATORS_HAVE_THIS = 16; // 1 << 3\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n switch (element.node.type) {\n case \"ClassProperty\":\n case \"ClassPrivateProperty\":\n return FIELD;\n case \"ClassAccessorProperty\":\n return ACCESSOR;\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n if (element.node.kind === \"get\") {\n return GETTER;\n } else if (element.node.kind === \"set\") {\n return SETTER;\n } else {\n return METHOD;\n }\n }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n // The expressions of the decorators themselves\n decorators: t.Expression[];\n decoratorsThis: t.Expression[];\n\n // The kind of the decorated value, matches the kind value passed to applyDecs\n kind: number;\n\n // whether or not the field is static\n isStatic: boolean;\n\n // The name of the decorator\n name: t.StringLiteral | t.Expression;\n\n privateMethods:\n | (t.FunctionExpression | t.ArrowFunctionExpression)[]\n | undefined;\n\n // The names of local variables that will be used/returned from the decoration\n locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n// Information about a computed property key. These must be evaluated\n// interspersed with decorator expressions, which is why they get added to the\n// array of DecoratorInfos later on.\ninterface ComputedPropInfo {\n localComputedNameId: t.Identifier;\n keyNode: t.Expression;\n}\n\nfunction isDecoratorInfo(\n info: DecoratorInfo | ComputedPropInfo,\n): info is DecoratorInfo {\n return \"decorators\" in info;\n}\n\nfunction filteredOrderedDecoratorInfo(\n info: (DecoratorInfo | ComputedPropInfo)[],\n): DecoratorInfo[] {\n const filtered = info.filter(isDecoratorInfo);\n\n return [\n ...filtered.filter(\n el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(\n el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n ),\n ...filtered.filter(el => el.isStatic && el.kind === FIELD),\n ...filtered.filter(el => !el.isStatic && el.kind === FIELD),\n ];\n}\n\nfunction generateDecorationList(\n decorators: t.Expression[],\n decoratorsThis: (t.Expression | null)[],\n version: DecoratorVersionKind,\n) {\n const decsCount = decorators.length;\n const hasOneThis = decoratorsThis.some(Boolean);\n const decs: t.Expression[] = [];\n for (let i = 0; i < decsCount; i++) {\n if (version === \"2023-05\" && hasOneThis) {\n decs.push(\n decoratorsThis[i] || t.unaryExpression(\"void\", t.numericLiteral(0)),\n );\n }\n decs.push(decorators[i]);\n }\n\n return { hasThis: hasOneThis, decs };\n}\n\nfunction generateDecorationExprs(\n info: (DecoratorInfo | ComputedPropInfo)[],\n version: DecoratorVersionKind,\n): t.ArrayExpression {\n return t.arrayExpression(\n filteredOrderedDecoratorInfo(info).map(el => {\n const { decs, hasThis } = generateDecorationList(\n el.decorators,\n el.decoratorsThis,\n version,\n );\n\n let flag = el.kind;\n if (el.isStatic) {\n flag += version === \"2023-05\" ? STATIC : STATIC_OLD_VERSION;\n }\n if (hasThis) flag += DECORATORS_HAVE_THIS;\n\n return t.arrayExpression([\n decs.length === 1 ? decs[0] : t.arrayExpression(decs),\n t.numericLiteral(flag),\n el.name,\n ...(el.privateMethods || []),\n ]);\n }),\n );\n}\n\nfunction extractElementLocalAssignments(\n decorationInfo: (DecoratorInfo | ComputedPropInfo)[],\n) {\n const localIds: t.Identifier[] = [];\n\n for (const el of filteredOrderedDecoratorInfo(decorationInfo)) {\n const { locals } = el;\n\n if (Array.isArray(locals)) {\n localIds.push(...locals);\n } else if (locals !== undefined) {\n localIds.push(locals);\n }\n }\n\n return localIds;\n}\n\nfunction addCallAccessorsFor(\n element: NodePath,\n key: t.PrivateName,\n getId: t.Identifier,\n setId: t.Identifier,\n) {\n element.insertAfter(\n t.classPrivateMethod(\n \"get\",\n t.cloneNode(key),\n [],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(t.cloneNode(getId), [t.thisExpression()]),\n ),\n ]),\n ),\n );\n\n element.insertAfter(\n t.classPrivateMethod(\n \"set\",\n t.cloneNode(key),\n [t.identifier(\"v\")],\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(t.cloneNode(setId), [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ]),\n ),\n );\n}\n\nfunction isNotTsParameter(\n node: t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty,\n): node is t.Identifier | t.Pattern | t.RestElement {\n return node.type !== \"TSParameterProperty\";\n}\n\nfunction movePrivateAccessor(\n element: NodePath<t.ClassPrivateMethod>,\n key: t.PrivateName,\n methodLocalVar: t.Identifier,\n isStatic: boolean,\n) {\n let params: (t.Identifier | t.RestElement)[];\n let block: t.Statement[];\n\n if (element.node.kind === \"set\") {\n params = [t.identifier(\"v\")];\n block = [\n t.expressionStatement(\n t.callExpression(methodLocalVar, [\n t.thisExpression(),\n t.identifier(\"v\"),\n ]),\n ),\n ];\n } else {\n params = [];\n block = [\n t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n ];\n }\n\n element.replaceWith(\n t.classPrivateMethod(\n element.node.kind,\n t.cloneNode(key),\n params,\n t.blockStatement(block),\n isStatic,\n ),\n );\n}\n\nfunction isClassDecoratableElementPath(\n path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n const { type } = path;\n\n return (\n type !== \"TSDeclareMethod\" &&\n type !== \"TSIndexSignature\" &&\n type !== \"StaticBlock\"\n );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n return t.callExpression(\n t.arrowFunctionExpression([], t.blockStatement(block.body)),\n [],\n );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n if (exprs.length === 1) return exprs[0];\n return t.sequenceExpression(exprs);\n}\n\nfunction createSetFunctionNameCall(\n state: PluginPass,\n className: t.Identifier | t.StringLiteral,\n) {\n return t.callExpression(state.addHelper(\"setFunctionName\"), [\n t.thisExpression(),\n className,\n ]);\n}\n\nfunction createToPropertyKeyCall(state: PluginPass, propertyKey: t.Expression) {\n return t.callExpression(state.addHelper(\"toPropertyKey\"), [propertyKey]);\n}\n\nfunction transformClass(\n path: NodePath<t.ClassExpression | t.ClassDeclaration>,\n state: PluginPass,\n constantSuper: boolean,\n version: DecoratorVersionKind,\n className: string | t.Identifier | t.StringLiteral | undefined,\n propertyVisitor: Visitor<PluginPass>,\n): NodePath {\n const body = path.get(\"body.body\");\n\n const classDecorators = path.node.decorators;\n let hasElementDecorators = false;\n\n const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n const assignments: t.AssignmentExpression[] = [];\n const scopeParent: Scope = path.scope.parent;\n const memoiseExpression = (expression: t.Expression, hint: string) => {\n const localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);\n assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n return t.cloneNode(localEvaluatedId);\n };\n\n // Iterate over the class to see if we need to decorate it, and also to\n // transform simple auto accessors which are not decorated\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n if (element.node.decorators && element.node.decorators.length > 0) {\n switch (element.node.type) {\n case \"ClassProperty\":\n // @ts-expect-error todo: propertyVisitor.ClassProperty should be callable. Improve typings.\n propertyVisitor.ClassProperty(\n element as NodePath<t.ClassProperty>,\n state,\n );\n break;\n case \"ClassPrivateProperty\":\n // @ts-expect-error todo: propertyVisitor.ClassPrivateProperty should be callable. Improve typings.\n propertyVisitor.ClassPrivateProperty(\n element as NodePath<t.ClassPrivateProperty>,\n state,\n );\n break;\n case \"ClassAccessorProperty\":\n // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n propertyVisitor.ClassAccessorProperty(\n element as NodePath<t.ClassAccessorProperty>,\n state,\n );\n break;\n }\n hasElementDecorators = true;\n } else if (element.node.type === \"ClassAccessorProperty\") {\n // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n propertyVisitor.ClassAccessorProperty(\n element as NodePath<t.ClassAccessorProperty>,\n state,\n );\n const { key, value, static: isStatic, computed } = element.node;\n\n const newId = generateClassPrivateUid();\n const newField = generateClassProperty(newId, value, isStatic);\n const keyPath = element.get(\"key\");\n const [newPath] = element.replaceWith(newField);\n\n addProxyAccessorsFor(\n path.node.id,\n newPath,\n computed && !keyPath.isConstantExpression()\n ? memoiseExpression(\n createToPropertyKeyCall(state, key as t.Expression),\n \"computedKey\",\n )\n : key,\n newId,\n version,\n computed,\n );\n }\n }\n\n if (!classDecorators && !hasElementDecorators) {\n // If nothing is decorated but we have assignments, it must be the memoised\n // computed keys of class accessors\n if (assignments.length > 0) {\n path.insertBefore(assignments.map(expr => t.expressionStatement(expr)));\n\n // Recrawl the scope to make sure new identifiers are properly synced\n path.scope.crawl();\n }\n // If nothing is decorated and no assignments inserted, return\n return;\n }\n\n const elementDecoratorInfo: (DecoratorInfo | ComputedPropInfo)[] = [];\n\n // The initializer of the first non-static field will be injected with the protoInit call\n let firstFieldPath:\n | NodePath<t.ClassProperty | t.ClassPrivateProperty>\n | undefined;\n let constructorPath: NodePath<t.ClassMethod> | undefined;\n let requiresProtoInit = false;\n let requiresStaticInit = false;\n const decoratedPrivateMethods = new Set<string>();\n\n let protoInitLocal: t.Identifier,\n staticInitLocal: t.Identifier,\n classInitLocal: t.Identifier,\n classIdLocal: t.Identifier;\n\n const decoratorsThis = new Map<t.Decorator, t.Expression>();\n const maybeExtractDecorator = (decorator: t.Decorator) => {\n const { expression } = decorator;\n if (version === \"2023-05\" && t.isMemberExpression(expression)) {\n let object;\n if (\n t.isSuper(expression.object) ||\n t.isThisExpression(expression.object)\n ) {\n object = memoiseExpression(t.thisExpression(), \"obj\");\n } else if (!scopeParent.isStatic(expression.object)) {\n object = memoiseExpression(expression.object, \"obj\");\n expression.object = object;\n } else {\n object = expression.object;\n }\n decoratorsThis.set(decorator, t.cloneNode(object));\n }\n if (!scopeParent.isStatic(expression)) {\n decorator.expression = memoiseExpression(expression, \"dec\");\n }\n };\n\n let needsDeclaraionForClassBinding = false;\n if (classDecorators) {\n classInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initClass\");\n needsDeclaraionForClassBinding = path.isClassDeclaration();\n ({ id: classIdLocal, path } = replaceClassWithVar(path, className));\n\n path.node.decorators = null;\n\n for (const classDecorator of classDecorators) {\n maybeExtractDecorator(classDecorator);\n }\n } else {\n if (!path.node.id) {\n path.node.id = path.scope.generateUidIdentifier(\"Class\");\n }\n classIdLocal = t.cloneNode(path.node.id);\n }\n\n let lastInstancePrivateName: t.PrivateName;\n let needsInstancePrivateBrandCheck = false;\n\n if (hasElementDecorators) {\n for (const element of body) {\n if (!isClassDecoratableElementPath(element)) {\n continue;\n }\n\n const { node } = element;\n const decorators = element.get(\"decorators\");\n\n const hasDecorators = Array.isArray(decorators) && decorators.length > 0;\n\n if (hasDecorators) {\n for (const decoratorPath of decorators) {\n maybeExtractDecorator(decoratorPath.node);\n }\n }\n\n const isComputed =\n \"computed\" in element.node && element.node.computed === true;\n if (isComputed) {\n if (!element.get(\"key\").isConstantExpression()) {\n node.key = memoiseExpression(\n createToPropertyKeyCall(state, node.key as t.Expression),\n \"computedKey\",\n );\n }\n }\n\n const kind = getElementKind(element);\n const { key } = node;\n\n const isPrivate = key.type === \"PrivateName\";\n\n const isStatic = !!element.node.static;\n\n let name = \"computedKey\";\n\n if (isPrivate) {\n name = key.id.name;\n } else if (!isComputed && key.type === \"Identifier\") {\n name = key.name;\n }\n\n if (isPrivate && !isStatic) {\n if (hasDecorators) {\n needsInstancePrivateBrandCheck = true;\n }\n if (t.isClassPrivateProperty(node) || !lastInstancePrivateName) {\n lastInstancePrivateName = key;\n }\n }\n\n if (element.isClassMethod({ kind: \"constructor\" })) {\n constructorPath = element;\n }\n\n if (hasDecorators) {\n let locals: t.Identifier | t.Identifier[];\n let privateMethods: Array<\n t.FunctionExpression | t.ArrowFunctionExpression\n >;\n\n if (kind === ACCESSOR) {\n const { value } = element.node as t.ClassAccessorProperty;\n\n const params: t.Expression[] = [t.thisExpression()];\n\n if (value) {\n params.push(t.cloneNode(value));\n }\n\n const newId = generateClassPrivateUid();\n const newFieldInitId =\n element.scope.parent.generateDeclaredUidIdentifier(`init_${name}`);\n const newValue = t.callExpression(\n t.cloneNode(newFieldInitId),\n params,\n );\n\n const newField = generateClassProperty(newId, newValue, isStatic);\n const [newPath] = element.replaceWith(newField);\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(newId, version);\n\n const getId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `get_${name}`,\n );\n const setId = newPath.scope.parent.generateDeclaredUidIdentifier(\n `set_${name}`,\n );\n\n addCallAccessorsFor(newPath, key, getId, setId);\n\n locals = [newFieldInitId, getId, setId];\n } else {\n addProxyAccessorsFor(\n path.node.id,\n newPath,\n key,\n newId,\n version,\n isComputed,\n );\n locals = newFieldInitId;\n }\n } else if (kind === FIELD) {\n const initId = element.scope.parent.generateDeclaredUidIdentifier(\n `init_${name}`,\n );\n const valuePath = (\n element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n ).get(\"value\");\n\n valuePath.replaceWith(\n t.callExpression(\n t.cloneNode(initId),\n [t.thisExpression(), valuePath.node].filter(v => v),\n ),\n );\n\n locals = initId;\n\n if (isPrivate) {\n privateMethods = extractProxyAccessorsFor(key, version);\n }\n } else if (isPrivate) {\n locals = element.scope.parent.generateDeclaredUidIdentifier(\n `call_${name}`,\n );\n\n const replaceSupers = new ReplaceSupers({\n constantSuper,\n methodPath: element as NodePath<t.ClassPrivateMethod>,\n objectRef: classIdLocal,\n superRef: path.node.superClass,\n file: state.file,\n refToPreserve: classIdLocal,\n });\n\n replaceSupers.replace();\n\n const {\n params,\n body,\n async: isAsync,\n } = element.node as t.ClassPrivateMethod;\n\n privateMethods = [\n t.functionExpression(\n undefined,\n params.filter(isNotTsParameter),\n body,\n isAsync,\n ),\n ];\n\n if (kind === GETTER || kind === SETTER) {\n movePrivateAccessor(\n element as NodePath<t.ClassPrivateMethod>,\n t.cloneNode(key),\n t.cloneNode(locals),\n isStatic,\n );\n } else {\n const node = element.node as t.ClassPrivateMethod;\n\n // Unshift\n path.node.body.body.unshift(\n t.classPrivateProperty(key, t.cloneNode(locals), [], node.static),\n );\n\n decoratedPrivateMethods.add(key.id.name);\n\n element.remove();\n }\n }\n\n let nameExpr: t.Expression;\n\n if (isComputed) {\n nameExpr = t.cloneNode(key as t.Expression);\n } else if (key.type === \"PrivateName\") {\n nameExpr = t.stringLiteral(key.id.name);\n } else if (key.type === \"Identifier\") {\n nameExpr = t.stringLiteral(key.name);\n } else {\n nameExpr = t.cloneNode(key as t.Expression);\n }\n\n elementDecoratorInfo.push({\n kind,\n decorators: decorators.map(d => d.node.expression),\n decoratorsThis: decorators.map(d => decoratorsThis.get(d.node)),\n name: nameExpr,\n isStatic,\n privateMethods,\n locals,\n });\n\n if (kind !== FIELD) {\n if (isStatic) {\n requiresStaticInit = true;\n } else {\n requiresProtoInit = true;\n }\n }\n\n if (element.node) {\n element.node.decorators = null;\n }\n\n if (\n !firstFieldPath &&\n !isStatic &&\n (kind === FIELD || kind === ACCESSOR)\n ) {\n firstFieldPath = element as NodePath<\n t.ClassProperty | t.ClassPrivateProperty\n >;\n }\n }\n }\n }\n\n const elementDecorations = generateDecorationExprs(\n elementDecoratorInfo,\n version,\n );\n let classDecorationsFlag = 0;\n let classDecorations: t.Expression[] = [];\n if (classDecorators) {\n const { hasThis, decs } = generateDecorationList(\n classDecorators.map(el => el.expression),\n classDecorators.map(dec => decoratorsThis.get(dec)),\n version,\n );\n classDecorationsFlag = hasThis ? 1 : 0;\n classDecorations = decs;\n }\n\n const elementLocals: t.Identifier[] =\n extractElementLocalAssignments(elementDecoratorInfo);\n\n if (requiresProtoInit) {\n protoInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initProto\");\n elementLocals.push(protoInitLocal);\n\n const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n t.thisExpression(),\n ]);\n\n if (firstFieldPath) {\n const value = firstFieldPath.get(\"value\");\n const body: t.Expression[] = [protoInitCall];\n\n if (value.node) {\n body.push(value.node);\n }\n\n value.replaceWith(t.sequenceExpression(body));\n } else if (constructorPath) {\n if (path.node.superClass) {\n path.traverse({\n CallExpression: {\n exit(path) {\n if (!path.get(\"callee\").isSuper()) return;\n\n path.replaceWith(\n t.callExpression(t.cloneNode(protoInitLocal), [path.node]),\n );\n\n path.skip();\n },\n },\n });\n } else {\n constructorPath.node.body.body.unshift(\n t.expressionStatement(protoInitCall),\n );\n }\n } else {\n const body: t.Statement[] = [t.expressionStatement(protoInitCall)];\n\n if (path.node.superClass) {\n body.unshift(\n t.expressionStatement(\n t.callExpression(t.super(), [\n t.spreadElement(t.identifier(\"args\")),\n ]),\n ),\n );\n }\n\n path.node.body.body.unshift(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [t.restElement(t.identifier(\"args\"))],\n t.blockStatement(body),\n ),\n );\n }\n }\n\n if (requiresStaticInit) {\n staticInitLocal = scopeParent.generateDeclaredUidIdentifier(\"initStatic\");\n elementLocals.push(staticInitLocal);\n }\n\n if (decoratedPrivateMethods.size > 0) {\n path.traverse({\n PrivateName(path) {\n if (!decoratedPrivateMethods.has(path.node.id.name)) return;\n\n const parentPath = path.parentPath;\n const parentParentPath = parentPath.parentPath;\n\n if (\n // this.bar().#x = 123;\n (parentParentPath.node.type === \"AssignmentExpression\" &&\n parentParentPath.node.left === parentPath.node) ||\n // this.#x++;\n parentParentPath.node.type === \"UpdateExpression\" ||\n // ([...this.#x] = foo);\n parentParentPath.node.type === \"RestElement\" ||\n // ([this.#x] = foo);\n parentParentPath.node.type === \"ArrayPattern\" ||\n // ({ a: this.#x } = bar);\n (parentParentPath.node.type === \"ObjectProperty\" &&\n parentParentPath.node.value === parentPath.node &&\n parentParentPath.parentPath.type === \"ObjectPattern\") ||\n // for (this.#x of []);\n (parentParentPath.node.type === \"ForOfStatement\" &&\n parentParentPath.node.left === parentPath.node)\n ) {\n throw path.buildCodeFrameError(\n `Decorated private methods are not updatable, but \"#${path.node.id.name}\" is updated via this expression.`,\n );\n }\n },\n });\n }\n\n const classLocals: t.Identifier[] = [];\n let classInitInjected = false;\n const classInitCall =\n classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n const originalClass = path.node;\n\n if (classDecorators) {\n classLocals.push(classIdLocal, classInitLocal);\n const statics: (\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassPrivateMethod\n )[] = [];\n let staticBlocks: t.StaticBlock[] = [];\n path.get(\"body.body\").forEach(element => {\n // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n // them as IIFEs in the next property.\n if (element.isStaticBlock()) {\n staticBlocks.push(element.node);\n element.remove();\n return;\n }\n\n const isProperty =\n element.isClassProperty() || element.isClassPrivateProperty();\n\n if (\n (isProperty || element.isClassPrivateMethod()) &&\n element.node.static\n ) {\n if (isProperty && staticBlocks.length > 0) {\n const allValues: t.Expression[] = staticBlocks.map(staticBlockToIIFE);\n if (element.node.value) allValues.push(element.node.value);\n element.node.value = maybeSequenceExpression(allValues);\n staticBlocks = [];\n }\n\n element.node.static = false;\n statics.push(element.node);\n element.remove();\n }\n });\n\n if (statics.length > 0 || staticBlocks.length > 0) {\n const staticsClass = template.expression.ast`\n class extends ${state.addHelper(\"identity\")} {}\n ` as t.ClassExpression;\n staticsClass.body.body = [\n t.staticBlock([\n t.toStatement(originalClass, true) ||\n // If toStatement returns false, originalClass must be an anonymous ClassExpression,\n // because `export default @dec ...` has been handled in the export visitor before.\n t.expressionStatement(originalClass as t.ClassExpression),\n ]),\n ...statics,\n ];\n\n const constructorBody: t.Expression[] = [];\n\n const newExpr = t.newExpression(staticsClass, []);\n\n if (staticBlocks.length > 0) {\n constructorBody.push(...staticBlocks.map(staticBlockToIIFE));\n }\n if (classInitCall) {\n classInitInjected = true;\n constructorBody.push(classInitCall);\n }\n if (constructorBody.length > 0) {\n constructorBody.unshift(\n t.callExpression(t.super(), [t.cloneNode(classIdLocal)]),\n );\n\n staticsClass.body.body.push(\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [],\n t.blockStatement([\n t.expressionStatement(t.sequenceExpression(constructorBody)),\n ]),\n ),\n );\n } else {\n newExpr.arguments.push(t.cloneNode(classIdLocal));\n }\n\n path.replaceWith(newExpr);\n }\n }\n if (!classInitInjected && classInitCall) {\n path.node.body.body.push(\n t.staticBlock([t.expressionStatement(classInitCall)]),\n );\n }\n\n let { superClass } = originalClass;\n if (superClass && (process.env.BABEL_8_BREAKING || version === \"2023-05\")) {\n const id = path.scope.maybeGenerateMemoised(superClass);\n if (id) {\n originalClass.superClass = t.assignmentExpression(\"=\", id, superClass);\n superClass = id;\n }\n }\n\n originalClass.body.body.unshift(\n t.staticBlock(\n [\n t.expressionStatement(\n createLocalsAssignment(\n elementLocals,\n classLocals,\n elementDecorations,\n t.arrayExpression(classDecorations),\n t.numericLiteral(classDecorationsFlag),\n needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n typeof className === \"object\" ? className : undefined,\n t.cloneNode(superClass),\n state,\n version,\n ),\n ),\n requiresStaticInit &&\n t.expressionStatement(\n t.callExpression(t.cloneNode(staticInitLocal), [\n t.thisExpression(),\n ]),\n ),\n ].filter(Boolean),\n ),\n );\n\n // When path is a ClassExpression, path.insertBefore will convert `path`\n // into a SequenceExpression\n path.insertBefore(assignments.map(expr => t.expressionStatement(expr)));\n\n if (needsDeclaraionForClassBinding) {\n path.insertBefore(\n t.variableDeclaration(\"let\", [\n t.variableDeclarator(t.cloneNode(classIdLocal)),\n ]),\n );\n }\n\n // Recrawl the scope to make sure new identifiers are properly synced\n path.scope.crawl();\n\n return path;\n}\n\nfunction createLocalsAssignment(\n elementLocals: t.Identifier[],\n classLocals: t.Identifier[],\n elementDecorations: t.ArrayExpression,\n classDecorations: t.ArrayExpression,\n classDecorationsFlag: t.NumericLiteral,\n maybePrivateBranName: t.PrivateName | null,\n setClassName: t.Identifier | t.StringLiteral | undefined,\n superClass: null | t.Expression,\n state: PluginPass,\n version: DecoratorVersionKind,\n) {\n let lhs, rhs;\n const args: t.Expression[] = [\n setClassName\n ? createSetFunctionNameCall(state, setClassName)\n : t.thisExpression(),\n elementDecorations,\n classDecorations,\n ];\n\n if (!process.env.BABEL_8_BREAKING) {\n if (\n version === \"2021-12\" ||\n (version === \"2022-03\" && !state.availableHelper(\"applyDecs2203R\"))\n ) {\n const lhs = t.arrayPattern([...elementLocals, ...classLocals]);\n const rhs = t.callExpression(\n state.addHelper(version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\"),\n args,\n );\n return t.assignmentExpression(\"=\", lhs, rhs);\n }\n }\n\n if (process.env.BABEL_8_BREAKING || version === \"2023-05\") {\n if (\n maybePrivateBranName ||\n superClass ||\n classDecorationsFlag.value !== 0\n ) {\n args.push(classDecorationsFlag);\n }\n if (maybePrivateBranName) {\n args.push(\n template.expression.ast`\n _ => ${t.cloneNode(maybePrivateBranName)} in _\n ` as t.ArrowFunctionExpression,\n );\n } else if (superClass) {\n args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n }\n if (superClass) args.push(superClass);\n rhs = t.callExpression(state.addHelper(\"applyDecs2305\"), args);\n } else if (version === \"2023-01\") {\n if (maybePrivateBranName) {\n args.push(\n template.expression.ast`\n _ => ${t.cloneNode(maybePrivateBranName)} in _\n ` as t.ArrowFunctionExpression,\n );\n }\n rhs = t.callExpression(state.addHelper(\"applyDecs2301\"), args);\n } else {\n rhs = t.callExpression(state.addHelper(\"applyDecs2203R\"), args);\n }\n // optimize `{ c: [classLocals] } = applyapplyDecs2203R(...)` to\n // `[classLocals] = applyapplyDecs2203R(...).c`\n if (elementLocals.length > 0) {\n if (classLocals.length > 0) {\n lhs = t.objectPattern([\n t.objectProperty(t.identifier(\"e\"), t.arrayPattern(elementLocals)),\n t.objectProperty(t.identifier(\"c\"), t.arrayPattern(classLocals)),\n ]);\n } else {\n lhs = t.arrayPattern(elementLocals);\n rhs = t.memberExpression(rhs, t.identifier(\"e\"), false, false);\n }\n } else {\n // invariant: classLocals.length > 0\n lhs = t.arrayPattern(classLocals);\n rhs = t.memberExpression(rhs, t.identifier(\"c\"), false, false);\n }\n\n return t.assignmentExpression(\"=\", lhs, rhs);\n}\n\nfunction isProtoKey(\n node: t.Identifier | t.StringLiteral | t.BigIntLiteral | t.NumericLiteral,\n) {\n return node.type === \"Identifier\"\n ? node.name === \"__proto__\"\n : node.value === \"__proto__\";\n}\n\nfunction isDecorated(node: t.Class | ClassDecoratableElement) {\n return node.decorators && node.decorators.length > 0;\n}\n\nfunction shouldTransformElement(node: ClassElement) {\n switch (node.type) {\n case \"ClassAccessorProperty\":\n return true;\n case \"ClassMethod\":\n case \"ClassProperty\":\n case \"ClassPrivateMethod\":\n case \"ClassPrivateProperty\":\n return isDecorated(node);\n default:\n return false;\n }\n}\n\nfunction shouldTransformClass(node: t.Class) {\n return isDecorated(node) || node.body.body.some(shouldTransformElement);\n}\n\n// Todo: unify name references logic with helper-function-name\nfunction NamedEvaluationVisitoryFactory(\n isAnonymous: (path: NodePath) => boolean,\n visitor: (\n path: NodePath,\n state: PluginPass,\n name:\n | string\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral,\n ) => void,\n) {\n function handleComputedProperty(\n propertyPath: NodePath<\n t.ObjectProperty | t.ClassProperty | t.ClassAccessorProperty\n >,\n key: t.Expression,\n state: PluginPass,\n ): t.StringLiteral | t.Identifier {\n switch (key.type) {\n case \"StringLiteral\":\n return t.stringLiteral(key.value);\n case \"NumericLiteral\":\n case \"BigIntLiteral\": {\n const keyValue = key.value + \"\";\n propertyPath.get(\"key\").replaceWith(t.stringLiteral(keyValue));\n return t.stringLiteral(keyValue);\n }\n default: {\n const ref = propertyPath.scope.maybeGenerateMemoised(key);\n propertyPath\n .get(\"key\")\n .replaceWith(\n t.assignmentExpression(\n \"=\",\n ref,\n t.callExpression(state.addHelper(\"toPropertyKey\"), [key]),\n ),\n );\n return t.cloneNode(ref);\n }\n }\n }\n return {\n VariableDeclarator(path, state) {\n const id = path.node.id;\n if (id.type === \"Identifier\") {\n const initializer = skipTransparentExprWrappers(path.get(\"init\"));\n if (isAnonymous(initializer)) {\n const name = id.name;\n visitor(initializer, state, name);\n }\n }\n },\n AssignmentExpression(path, state) {\n const id = path.node.left;\n if (id.type === \"Identifier\") {\n const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n if (isAnonymous(initializer)) {\n switch (path.node.operator) {\n case \"=\":\n case \"&&=\":\n case \"||=\":\n case \"??=\":\n visitor(initializer, state, id.name);\n }\n }\n }\n },\n AssignmentPattern(path, state) {\n const id = path.node.left;\n if (id.type === \"Identifier\") {\n const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n if (isAnonymous(initializer)) {\n const name = id.name;\n visitor(initializer, state, name);\n }\n }\n },\n // We listen on ObjectExpression so that we don't have to visit\n // the object properties under object patterns\n ObjectExpression(path, state) {\n for (const propertyPath of path.get(\"properties\")) {\n const { node } = propertyPath;\n if (node.type !== \"ObjectProperty\") continue;\n const id = node.key;\n const initializer = skipTransparentExprWrappers(\n propertyPath.get(\"value\"),\n );\n if (isAnonymous(initializer)) {\n if (!node.computed) {\n // 13.2.5.5 RS: PropertyDefinitionEvaluation\n if (!isProtoKey(id as t.StringLiteral | t.Identifier)) {\n if (id.type === \"Identifier\") {\n visitor(initializer, state, id.name);\n } else {\n const className = t.stringLiteral(\n (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value + \"\",\n );\n visitor(initializer, state, className);\n }\n }\n } else {\n const ref = handleComputedProperty(\n propertyPath as NodePath<t.ObjectProperty>,\n // The key of a computed object property must not be a private name\n id as t.Expression,\n state,\n );\n visitor(initializer, state, ref);\n }\n }\n }\n },\n ClassPrivateProperty(path, state) {\n const { node } = path;\n const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n if (isAnonymous(initializer)) {\n const className = t.stringLiteral(\"#\" + node.key.id.name);\n visitor(initializer, state, className);\n }\n },\n ClassAccessorProperty(path, state) {\n const { node } = path;\n const id = node.key;\n const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n if (isAnonymous(initializer)) {\n if (!node.computed) {\n if (id.type === \"Identifier\") {\n visitor(initializer, state, id.name);\n } else if (id.type === \"PrivateName\") {\n const className = t.stringLiteral(\"#\" + id.id.name);\n visitor(initializer, state, className);\n } else {\n const className = t.stringLiteral(\n (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value + \"\",\n );\n visitor(initializer, state, className);\n }\n } else {\n const ref = handleComputedProperty(\n path,\n // The key of a computed accessor property must not be a private name\n id as t.Expression,\n state,\n );\n visitor(initializer, state, ref);\n }\n }\n },\n ClassProperty(path, state) {\n const { node } = path;\n const id = node.key;\n const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n if (isAnonymous(initializer)) {\n if (!node.computed) {\n if (id.type === \"Identifier\") {\n visitor(initializer, state, id.name);\n } else {\n const className = t.stringLiteral(\n (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n .value + \"\",\n );\n visitor(initializer, state, className);\n }\n } else {\n const ref = handleComputedProperty(path, id, state);\n visitor(initializer, state, ref);\n }\n }\n },\n } satisfies Visitor<PluginPass>;\n}\n\nfunction isDecoratedAnonymousClassExpression(path: NodePath) {\n return (\n path.isClassExpression({ id: null }) && shouldTransformClass(path.node)\n );\n}\n\nexport default function (\n { assertVersion, assumption }: PluginAPI,\n { loose }: Options,\n // TODO(Babel 8): Only keep 2023-05\n version: \"2023-05\" | \"2023-01\" | \"2022-03\" | \"2021-12\",\n): PluginObject {\n if (process.env.BABEL_8_BREAKING) {\n assertVersion(process.env.IS_PUBLISH ? PACKAGE_JSON.version : \"^7.21.0\");\n } else {\n if (version === \"2023-05\" || version === \"2023-01\") {\n assertVersion(\"^7.21.0\");\n } else if (version === \"2021-12\") {\n assertVersion(\"^7.16.0\");\n } else {\n assertVersion(\"^7.19.0\");\n }\n }\n\n const VISITED = new WeakSet<NodePath>();\n const constantSuper = assumption(\"constantSuper\") ?? loose;\n\n const namedEvaluationVisitor: Visitor<PluginPass> =\n NamedEvaluationVisitoryFactory(\n isDecoratedAnonymousClassExpression,\n visitClass,\n );\n\n function visitClass(\n path: NodePath<t.Class>,\n state: PluginPass,\n className: string | t.Identifier | t.StringLiteral | undefined,\n ) {\n if (VISITED.has(path)) return;\n const { node } = path;\n className ??= node.id?.name;\n const newPath = transformClass(\n path,\n state,\n constantSuper,\n version,\n className,\n namedEvaluationVisitor,\n );\n if (newPath) {\n VISITED.add(newPath);\n return;\n }\n VISITED.add(path);\n }\n\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n\n visitor: {\n ExportDefaultDeclaration(path, state) {\n const { declaration } = path.node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // When compiling class decorators we need to replace the class\n // binding, so we must split it in two separate declarations.\n isDecorated(declaration)\n ) {\n const isAnonymous = !declaration.id;\n const updatedVarDeclarationPath = splitExportDeclaration(\n path,\n ) as unknown as NodePath<t.ClassDeclaration>;\n if (isAnonymous) {\n visitClass(\n updatedVarDeclarationPath,\n state,\n t.stringLiteral(\"default\"),\n );\n }\n }\n },\n ExportNamedDeclaration(path) {\n const { declaration } = path.node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // When compiling class decorators we need to replace the class\n // binding, so we must split it in two separate declarations.\n isDecorated(declaration)\n ) {\n splitExportDeclaration(path);\n }\n },\n\n Class(path, state) {\n visitClass(path, state, undefined);\n },\n\n ...namedEvaluationVisitor,\n },\n };\n}\n","/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport {\n createClassFeaturePlugin,\n FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\nimport legacyVisitor from \"./transformer-legacy.ts\";\nimport transformer2023_05 from \"./transformer-2023-05.ts\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n loose?: boolean;\n}\n\nexport type { Options };\n\nexport default declare((api, options: Options) => {\n api.assertVersion(\n process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH\n ? PACKAGE_JSON.version\n : 7,\n );\n\n // Options are validated in @babel/plugin-syntax-decorators\n if (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var { legacy } = options;\n }\n const { version } = options;\n\n if (\n process.env.BABEL_8_BREAKING\n ? version === \"legacy\"\n : legacy || version === \"legacy\"\n ) {\n return {\n name: \"proposal-decorators\",\n inherits: syntaxDecorators,\n visitor: legacyVisitor,\n };\n } else if (\n version === \"2021-12\" ||\n version === \"2022-03\" ||\n version === \"2023-01\" ||\n version === \"2023-05\"\n ) {\n return transformer2023_05(api, options, version);\n } else if (!process.env.BABEL_8_BREAKING) {\n api.assertVersion(\n process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH\n ? PACKAGE_JSON.version\n : \"^7.0.2\",\n );\n return createClassFeaturePlugin({\n name: \"proposal-decorators\",\n\n api,\n feature: FEATURES.decorators,\n inherits: syntaxDecorators,\n // loose: options.loose, Not supported\n });\n } else {\n throw new Error(\n \"The '.version' option must be one of 'legacy', '2021-12', '2022-03', or '2023-01'.\",\n );\n }\n});\n"],"names":["buildClassDecorator","template","statement","buildClassPrototype","buildGetDescriptor","buildGetObjectInitializer","WARNING_CALLS","WeakSet","applyEnsureOrdering","path","decorators","isClass","get","reduce","acc","prop","concat","node","identDecorators","filter","decorator","t","isIdentifier","expression","length","sequenceExpression","map","id","scope","generateDeclaredUidIdentifier","assignmentExpression","applyClassDecorators","classPath","hasClassDecorators","name","dec","reverse","CLASS_REF","cloneNode","DECORATOR","INNER","classNode","applyMethodDecorators","state","hasMethodDecorators","body","applyTargetDecorators","some","applyObjectDecorators","properties","type","decoratedProps","exprs","computed","buildCodeFrameError","property","isLiteral","key","stringLiteral","target","static","isClassProperty","descriptor","initializer","value","functionExpression","blockStatement","returnStatement","nullLiteral","callExpression","addHelper","thisExpression","add","push","arrayExpression","objectExpression","objectProperty","identifier","booleanLiteral","isObjectProperty","TEMP","TARGET","PROPERTY","decoratedClassToExpression","ref","generateUidIdentifier","variableDeclaration","variableDeclarator","toExpression","visitor","ExportDefaultDeclaration","decl","isClassDeclaration","replacement","varDeclPath","replaceWithMultiple","exportNamedDeclaration","exportSpecifier","declarations","registerDeclaration","ClassDeclaration","newPath","replaceWith","binding","getOwnBinding","ClassExpression","decoratedClass","ObjectExpression","decoratedObject","AssignmentExpression","has","right","CallExpression","arguments","callee","incrementId","idx","unshift","current","createPrivateUidGeneratorForClass","currentPrivateId","privateNames","Set","traverse","PrivateName","reifiedId","String","fromCharCode","privateName","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","className","varId","generateUidIdentifierBasedOnNode","classId","rename","parent","newClassExpr","classExpression","superClass","generateClassProperty","isStatic","classPrivateProperty","undefined","classProperty","addProxyAccessorsFor","element","originalKey","targetKey","version","isComputed","thisArg","getterBody","memberExpression","setterBody","expressionStatement","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","ast","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","kind","isDecoratorInfo","info","filteredOrderedDecoratorInfo","filtered","el","generateDecorationList","decoratorsThis","decsCount","hasOneThis","Boolean","decs","i","unaryExpression","numericLiteral","hasThis","generateDecorationExprs","flag","privateMethods","extractElementLocalAssignments","decorationInfo","localIds","locals","Array","isArray","addCallAccessorsFor","getId","setId","isNotTsParameter","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","maybeSequenceExpression","createSetFunctionNameCall","createToPropertyKeyCall","propertyKey","transformClass","constantSuper","propertyVisitor","classDecorators","hasElementDecorators","generateClassPrivateUid","assignments","scopeParent","memoiseExpression","hint","localEvaluatedId","ClassProperty","ClassPrivateProperty","ClassAccessorProperty","newId","newField","keyPath","isConstantExpression","insertBefore","expr","crawl","elementDecoratorInfo","firstFieldPath","constructorPath","requiresProtoInit","requiresStaticInit","decoratedPrivateMethods","protoInitLocal","staticInitLocal","classInitLocal","classIdLocal","Map","maybeExtractDecorator","isMemberExpression","object","isSuper","isThisExpression","set","needsDeclaraionForClassBinding","classDecorator","lastInstancePrivateName","needsInstancePrivateBrandCheck","hasDecorators","decoratorPath","isPrivate","isClassPrivateProperty","isClassMethod","newFieldInitId","newValue","initId","valuePath","v","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","async","isAsync","remove","nameExpr","d","elementDecorations","classDecorationsFlag","classDecorations","elementLocals","protoInitCall","exit","skip","super","spreadElement","restElement","size","parentPath","parentParentPath","left","classLocals","classInitInjected","classInitCall","originalClass","statics","staticBlocks","forEach","isStaticBlock","isProperty","isClassPrivateMethod","allValues","staticsClass","staticBlock","toStatement","constructorBody","newExpr","newExpression","maybeGenerateMemoised","createLocalsAssignment","maybePrivateBranName","setClassName","lhs","rhs","args","objectPattern","arrayPattern","isProtoKey","isDecorated","shouldTransformElement","shouldTransformClass","NamedEvaluationVisitoryFactory","isAnonymous","handleComputedProperty","propertyPath","keyValue","VariableDeclarator","skipTransparentExprWrappers","operator","AssignmentPattern","isDecoratedAnonymousClassExpression","isClassExpression","assertVersion","assumption","loose","VISITED","namedEvaluationVisitor","visitClass","inherits","syntaxDecorators","Object","assign","declaration","updatedVarDeclarationPath","splitExportDeclaration","ExportNamedDeclaration","Class","declare","api","options","legacyVisitor","transformer2023_05","Error"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babel/plugin-proposal-decorators",
3
- "version": "8.0.0-alpha.3",
3
+ "version": "8.0.0-alpha.5",
4
4
  "author": "The Babel Team (https://babel.dev/team)",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -20,22 +20,23 @@
20
20
  "decorators"
21
21
  ],
22
22
  "dependencies": {
23
- "@babel/helper-create-class-features-plugin": "^8.0.0-alpha.3",
24
- "@babel/helper-plugin-utils": "^8.0.0-alpha.3",
25
- "@babel/helper-replace-supers": "^8.0.0-alpha.3",
26
- "@babel/helper-split-export-declaration": "^8.0.0-alpha.3",
27
- "@babel/plugin-syntax-decorators": "^8.0.0-alpha.3"
23
+ "@babel/helper-create-class-features-plugin": "^8.0.0-alpha.5",
24
+ "@babel/helper-plugin-utils": "^8.0.0-alpha.5",
25
+ "@babel/helper-replace-supers": "^8.0.0-alpha.5",
26
+ "@babel/helper-skip-transparent-expression-wrappers": "^8.0.0-alpha.5",
27
+ "@babel/helper-split-export-declaration": "^8.0.0-alpha.5",
28
+ "@babel/plugin-syntax-decorators": "^8.0.0-alpha.5"
28
29
  },
29
30
  "peerDependencies": {
30
- "@babel/core": "^8.0.0-alpha.3"
31
+ "@babel/core": "^8.0.0-alpha.5"
31
32
  },
32
33
  "devDependencies": {
33
- "@babel/core": "^8.0.0-alpha.3",
34
- "@babel/helper-plugin-test-runner": "^8.0.0-alpha.3",
35
- "@babel/traverse": "^8.0.0-alpha.3",
34
+ "@babel/core": "^8.0.0-alpha.5",
35
+ "@babel/helper-plugin-test-runner": "^8.0.0-alpha.5",
36
+ "@babel/traverse": "^8.0.0-alpha.5",
36
37
  "@types/charcodes": "^0.2.0",
37
38
  "array.prototype.concat": "^1.0.2",
38
- "babel-plugin-polyfill-es-shims": "^0.9.2",
39
+ "babel-plugin-polyfill-es-shims": "^0.10.1",
39
40
  "charcodes": "^0.2.0",
40
41
  "object.getownpropertydescriptors": "^2.1.1"
41
42
  },