diff --git a/.github/workflows/jcommon_package.yml b/.github/workflows/jcommon_package.yml index 3a5ba2932..af12e4b17 100644 --- a/.github/workflows/jcommon_package.yml +++ b/.github/workflows/jcommon_package.yml @@ -37,7 +37,7 @@ jobs: #settings-properties: '[{"propertyName1": "propertyValue1"}, {"propertyName2": "propertyValue2"}]' - run: echo ' false ossrh ossrh-snapshot https://s01.oss.sonatype.org/content/repositories/snapshots ossrh ossrh-snapshot https://s01.oss.sonatype.org/content/repositories/snapshots artifactory artifactory github ${env.GITHUB_ACTOR} ${env.GITHUB_TOKEN} ' > ~/.m2/settings.xml - - run: cd jcommon; mvn -U clean package --fail-at-end -Dmaven.test.skip=true -pl 'docean' + - run: cd jcommon; mvn -U clean package --fail-at-end -Dmaven.test.skip=true check-build-21: name: Jcommon test 21 diff --git a/jcommon/aliyun/pom.xml b/jcommon/aliyun/pom.xml index 72161cd40..dcc81ed41 100644 --- a/jcommon/aliyun/pom.xml +++ b/jcommon/aliyun/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT aliyun diff --git a/jcommon/annotation/pom.xml b/jcommon/annotation/pom.xml index a61242a72..384426701 100644 --- a/jcommon/annotation/pom.xml +++ b/jcommon/annotation/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT annotation 1.6.1-jdk20-SNAPSHOT diff --git a/jcommon/antlr/pom.xml b/jcommon/antlr/pom.xml index 9e114566f..bf43978bb 100644 --- a/jcommon/antlr/pom.xml +++ b/jcommon/antlr/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT antlr diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoCode.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoCode.java new file mode 100644 index 000000000..980c98d2e --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoCode.java @@ -0,0 +1,66 @@ +package run.mone.antlr.golang; + +import org.antlr.v4.runtime.ANTLRInputStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.tree.ParseTreeWalker; +import org.antlr.v4.runtime.tree.TerminalNode; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author goodjava@qq.com + * @date 2024/1/29 16:56 + */ +public class GoCode { + + + public static List methods(String code) { + GoLexer lexer = new GoLexer(new ANTLRInputStream(code)); + CommonTokenStream tokens = new CommonTokenStream(lexer); + GoParser parser = new GoParser(tokens); + ParseTree tree = parser.sourceFile(); + ParseTreeWalker walker = new ParseTreeWalker(); + List list = new ArrayList<>(); + GoParserListener listener = new GoParserBaseListener() { + @Override + public void enterFunctionDecl(GoParser.FunctionDeclContext ctx) { + GoParser.SignatureContext signature = ctx.signature(); + List params = new ArrayList<>(); + + //获取参数信息 + if (signature != null) { + GoParser.ParametersContext parameters = signature.parameters(); + if (parameters != null) { + for (GoParser.ParameterDeclContext paramCtx : parameters.parameterDecl()) { + // 获取参数类型 + String paramType = paramCtx.type_().getText(); + // 获取参数名称 + List paramNames = paramCtx.identifierList().IDENTIFIER(); + for (TerminalNode paramName : paramNames) { + params.add(GoParam.builder().name(paramName.getText()).type(paramType).build()); + } + } + } + } + + Token startToken = ctx.getStart(); + Token stopToken = ctx.getStop(); + // 获取原始的、格式化的函数文本 + int startIndex = startToken.getTokenIndex(); + int stopIndex = stopToken.getTokenIndex(); + List t = tokens.getTokens(startIndex, stopIndex); + StringBuilder functionText = new StringBuilder(); + for (Token token : t) { + functionText.append(token.getText()); + } + list.add(GoMethod.builder().name(ctx.IDENTIFIER().getText()).code(functionText.toString()).paramList(params).build()); + } + }; + walker.walk(listener, tree); + return list; + } + +} diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.interp b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.interp new file mode 100644 index 000000000..3a9e86363 --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.interp @@ -0,0 +1,301 @@ +token literal names: +null +'break' +'default' +'func' +'interface' +'select' +'case' +'defer' +'go' +'map' +'struct' +'chan' +'else' +'goto' +'package' +'switch' +'const' +'fallthrough' +'if' +'range' +'type' +'continue' +'for' +'import' +'return' +'var' +'nil' +null +'(' +')' +'{' +'}' +'[' +']' +'=' +',' +';' +':' +'.' +'++' +'--' +':=' +'...' +'||' +'&&' +'==' +'!=' +'<' +'<=' +'>' +'>=' +'|' +'/' +'%' +'<<' +'>>' +'&^' +'~' +'!' +'+' +'-' +'^' +'*' +'&' +'<-' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +BREAK +DEFAULT +FUNC +INTERFACE +SELECT +CASE +DEFER +GO +MAP +STRUCT +CHAN +ELSE +GOTO +PACKAGE +SWITCH +CONST +FALLTHROUGH +IF +RANGE +TYPE +CONTINUE +FOR +IMPORT +RETURN +VAR +NIL_LIT +IDENTIFIER +L_PAREN +R_PAREN +L_CURLY +R_CURLY +L_BRACKET +R_BRACKET +ASSIGN +COMMA +SEMI +COLON +DOT +PLUS_PLUS +MINUS_MINUS +DECLARE_ASSIGN +ELLIPSIS +LOGICAL_OR +LOGICAL_AND +EQUALS +NOT_EQUALS +LESS +LESS_OR_EQUALS +GREATER +GREATER_OR_EQUALS +OR +DIV +MOD +LSHIFT +RSHIFT +BIT_CLEAR +UNDERLYING +EXCLAMATION +PLUS +MINUS +CARET +STAR +AMPERSAND +RECEIVE +DECIMAL_LIT +BINARY_LIT +OCTAL_LIT +HEX_LIT +FLOAT_LIT +DECIMAL_FLOAT_LIT +HEX_FLOAT_LIT +IMAGINARY_LIT +RUNE_LIT +BYTE_VALUE +OCTAL_BYTE_VALUE +HEX_BYTE_VALUE +LITTLE_U_VALUE +BIG_U_VALUE +RAW_STRING_LIT +INTERPRETED_STRING_LIT +WS +COMMENT +TERMINATOR +LINE_COMMENT +NEWLINE +WS_NLSEMI +COMMENT_NLSEMI +LINE_COMMENT_NLSEMI +EOS +OTHER + +rule names: +BREAK +DEFAULT +FUNC +INTERFACE +SELECT +CASE +DEFER +GO +MAP +STRUCT +CHAN +ELSE +GOTO +PACKAGE +SWITCH +CONST +FALLTHROUGH +IF +RANGE +TYPE +CONTINUE +FOR +IMPORT +RETURN +VAR +NIL_LIT +IDENTIFIER +L_PAREN +R_PAREN +L_CURLY +R_CURLY +L_BRACKET +R_BRACKET +ASSIGN +COMMA +SEMI +COLON +DOT +PLUS_PLUS +MINUS_MINUS +DECLARE_ASSIGN +ELLIPSIS +LOGICAL_OR +LOGICAL_AND +EQUALS +NOT_EQUALS +LESS +LESS_OR_EQUALS +GREATER +GREATER_OR_EQUALS +OR +DIV +MOD +LSHIFT +RSHIFT +BIT_CLEAR +UNDERLYING +EXCLAMATION +PLUS +MINUS +CARET +STAR +AMPERSAND +RECEIVE +DECIMAL_LIT +BINARY_LIT +OCTAL_LIT +HEX_LIT +FLOAT_LIT +DECIMAL_FLOAT_LIT +HEX_FLOAT_LIT +HEX_MANTISSA +HEX_EXPONENT +IMAGINARY_LIT +RUNE +RUNE_LIT +BYTE_VALUE +OCTAL_BYTE_VALUE +HEX_BYTE_VALUE +LITTLE_U_VALUE +BIG_U_VALUE +RAW_STRING_LIT +INTERPRETED_STRING_LIT +WS +COMMENT +TERMINATOR +LINE_COMMENT +NEWLINE +UNICODE_VALUE +ESCAPED_VALUE +DECIMALS +OCTAL_DIGIT +HEX_DIGIT +BIN_DIGIT +EXPONENT +LETTER +UNICODE_DIGIT +UNICODE_LETTER +WS_NLSEMI +COMMENT_NLSEMI +LINE_COMMENT_NLSEMI +EOS +OTHER + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE +NLSEMI + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 92, 863, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 7, 28, 382, 10, 28, 12, 28, 14, 28, 385, 11, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 5, 66, 491, 10, 66, 3, 66, 7, 66, 494, 10, 66, 12, 66, 14, 66, 497, 11, 66, 5, 66, 499, 10, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 5, 67, 506, 10, 67, 3, 67, 6, 67, 509, 10, 67, 13, 67, 14, 67, 510, 3, 67, 3, 67, 3, 68, 3, 68, 5, 68, 517, 10, 68, 3, 68, 5, 68, 520, 10, 68, 3, 68, 6, 68, 523, 10, 68, 13, 68, 14, 68, 524, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 5, 69, 532, 10, 69, 3, 69, 6, 69, 535, 10, 69, 13, 69, 14, 69, 536, 3, 69, 3, 69, 3, 70, 3, 70, 5, 70, 543, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 5, 71, 550, 10, 71, 3, 71, 5, 71, 553, 10, 71, 3, 71, 5, 71, 556, 10, 71, 3, 71, 3, 71, 3, 71, 5, 71, 561, 10, 71, 5, 71, 563, 10, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 5, 73, 571, 10, 73, 3, 73, 6, 73, 574, 10, 73, 13, 73, 14, 73, 575, 3, 73, 3, 73, 5, 73, 580, 10, 73, 3, 73, 7, 73, 583, 10, 73, 12, 73, 14, 73, 586, 11, 73, 5, 73, 588, 10, 73, 3, 73, 3, 73, 3, 73, 5, 73, 593, 10, 73, 3, 73, 7, 73, 596, 10, 73, 12, 73, 14, 73, 599, 11, 73, 5, 73, 601, 10, 73, 3, 74, 3, 74, 5, 74, 605, 10, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 5, 75, 614, 10, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 5, 76, 623, 10, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 5, 78, 633, 10, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 7, 83, 665, 10, 83, 12, 83, 14, 83, 668, 11, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 7, 84, 677, 10, 84, 12, 84, 14, 84, 680, 11, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 6, 85, 687, 10, 85, 13, 85, 14, 85, 688, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 7, 86, 697, 10, 86, 12, 86, 14, 86, 700, 11, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 6, 87, 708, 10, 87, 13, 87, 14, 87, 709, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 7, 88, 718, 10, 88, 12, 88, 14, 88, 721, 11, 88, 3, 88, 3, 88, 3, 89, 5, 89, 726, 10, 89, 3, 89, 3, 89, 6, 89, 730, 10, 89, 13, 89, 14, 89, 731, 3, 89, 6, 89, 735, 10, 89, 13, 89, 14, 89, 736, 5, 89, 739, 10, 89, 3, 90, 3, 90, 3, 90, 3, 90, 5, 90, 745, 10, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 5, 91, 773, 10, 91, 3, 92, 3, 92, 5, 92, 777, 10, 92, 3, 92, 7, 92, 780, 10, 92, 12, 92, 14, 92, 783, 11, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 95, 3, 95, 3, 96, 3, 96, 5, 96, 793, 10, 96, 3, 96, 3, 96, 3, 97, 3, 97, 5, 97, 799, 10, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 6, 100, 806, 10, 100, 13, 100, 14, 100, 807, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 7, 101, 816, 10, 101, 12, 101, 14, 101, 819, 11, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 7, 102, 830, 10, 102, 12, 102, 14, 102, 833, 11, 102, 3, 102, 3, 102, 3, 103, 6, 103, 838, 10, 103, 13, 103, 14, 103, 839, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 7, 103, 847, 10, 103, 12, 103, 14, 103, 850, 11, 103, 3, 103, 3, 103, 3, 103, 5, 103, 855, 10, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 5, 698, 817, 848, 2, 105, 4, 3, 6, 4, 8, 5, 10, 6, 12, 7, 14, 8, 16, 9, 18, 10, 20, 11, 22, 12, 24, 13, 26, 14, 28, 15, 30, 16, 32, 17, 34, 18, 36, 19, 38, 20, 40, 21, 42, 22, 44, 23, 46, 24, 48, 25, 50, 26, 52, 27, 54, 28, 56, 29, 58, 30, 60, 31, 62, 32, 64, 33, 66, 34, 68, 35, 70, 36, 72, 37, 74, 38, 76, 39, 78, 40, 80, 41, 82, 42, 84, 43, 86, 44, 88, 45, 90, 46, 92, 47, 94, 48, 96, 49, 98, 50, 100, 51, 102, 52, 104, 53, 106, 54, 108, 55, 110, 56, 112, 57, 114, 58, 116, 59, 118, 60, 120, 61, 122, 62, 124, 63, 126, 64, 128, 65, 130, 66, 132, 67, 134, 68, 136, 69, 138, 70, 140, 71, 142, 72, 144, 73, 146, 2, 148, 2, 150, 74, 152, 2, 154, 75, 156, 76, 158, 77, 160, 78, 162, 79, 164, 80, 166, 81, 168, 82, 170, 83, 172, 84, 174, 85, 176, 86, 178, 87, 180, 2, 182, 2, 184, 2, 186, 2, 188, 2, 190, 2, 192, 2, 194, 2, 196, 2, 198, 2, 200, 88, 202, 89, 204, 90, 206, 91, 208, 92, 4, 2, 3, 19, 3, 2, 51, 59, 3, 2, 50, 59, 4, 2, 68, 68, 100, 100, 4, 2, 81, 81, 113, 113, 4, 2, 90, 90, 122, 122, 4, 2, 82, 82, 114, 114, 4, 2, 45, 45, 47, 47, 3, 2, 98, 98, 4, 2, 36, 36, 94, 94, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 41, 41, 11, 2, 36, 36, 41, 41, 94, 94, 99, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 3, 2, 50, 57, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 50, 51, 4, 2, 71, 71, 103, 103, 4, 56, 2, 50, 2, 59, 2, 1634, 2, 1643, 2, 1778, 2, 1787, 2, 1986, 2, 1995, 2, 2408, 2, 2417, 2, 2536, 2, 2545, 2, 2664, 2, 2673, 2, 2792, 2, 2801, 2, 2920, 2, 2929, 2, 3048, 2, 3057, 2, 3176, 2, 3185, 2, 3304, 2, 3313, 2, 3432, 2, 3441, 2, 3560, 2, 3569, 2, 3666, 2, 3675, 2, 3794, 2, 3803, 2, 3874, 2, 3883, 2, 4162, 2, 4171, 2, 4242, 2, 4251, 2, 6114, 2, 6123, 2, 6162, 2, 6171, 2, 6472, 2, 6481, 2, 6610, 2, 6619, 2, 6786, 2, 6795, 2, 6802, 2, 6811, 2, 6994, 2, 7003, 2, 7090, 2, 7099, 2, 7234, 2, 7243, 2, 7250, 2, 7259, 2, 42530, 2, 42539, 2, 43218, 2, 43227, 2, 43266, 2, 43275, 2, 43474, 2, 43483, 2, 43506, 2, 43515, 2, 43602, 2, 43611, 2, 44018, 2, 44027, 2, 65298, 2, 65307, 2, 1186, 3, 1195, 3, 4200, 3, 4209, 3, 4338, 3, 4347, 3, 4408, 3, 4417, 3, 4562, 3, 4571, 3, 4850, 3, 4859, 3, 5202, 3, 5211, 3, 5330, 3, 5339, 3, 5714, 3, 5723, 3, 5826, 3, 5835, 3, 5938, 3, 5947, 3, 6370, 3, 6379, 3, 7250, 3, 7259, 3, 27234, 3, 27243, 3, 27474, 3, 27483, 3, 55248, 3, 55297, 3, 59730, 3, 59739, 3, 573, 2, 67, 2, 92, 2, 99, 2, 124, 2, 172, 2, 172, 2, 183, 2, 183, 2, 188, 2, 188, 2, 194, 2, 216, 2, 218, 2, 248, 2, 250, 2, 707, 2, 712, 2, 723, 2, 738, 2, 742, 2, 750, 2, 750, 2, 752, 2, 752, 2, 882, 2, 886, 2, 888, 2, 889, 2, 892, 2, 895, 2, 897, 2, 897, 2, 904, 2, 904, 2, 906, 2, 908, 2, 910, 2, 910, 2, 912, 2, 931, 2, 933, 2, 1015, 2, 1017, 2, 1155, 2, 1164, 2, 1329, 2, 1331, 2, 1368, 2, 1371, 2, 1371, 2, 1379, 2, 1417, 2, 1490, 2, 1516, 2, 1522, 2, 1524, 2, 1570, 2, 1612, 2, 1648, 2, 1649, 2, 1651, 2, 1749, 2, 1751, 2, 1751, 2, 1767, 2, 1768, 2, 1776, 2, 1777, 2, 1788, 2, 1790, 2, 1793, 2, 1793, 2, 1810, 2, 1810, 2, 1812, 2, 1841, 2, 1871, 2, 1959, 2, 1971, 2, 1971, 2, 1996, 2, 2028, 2, 2038, 2, 2039, 2, 2044, 2, 2044, 2, 2050, 2, 2071, 2, 2076, 2, 2076, 2, 2086, 2, 2086, 2, 2090, 2, 2090, 2, 2114, 2, 2138, 2, 2210, 2, 2230, 2, 2232, 2, 2239, 2, 2310, 2, 2363, 2, 2367, 2, 2367, 2, 2386, 2, 2386, 2, 2394, 2, 2403, 2, 2419, 2, 2434, 2, 2439, 2, 2446, 2, 2449, 2, 2450, 2, 2453, 2, 2474, 2, 2476, 2, 2482, 2, 2484, 2, 2484, 2, 2488, 2, 2491, 2, 2495, 2, 2495, 2, 2512, 2, 2512, 2, 2526, 2, 2527, 2, 2529, 2, 2531, 2, 2546, 2, 2547, 2, 2567, 2, 2572, 2, 2577, 2, 2578, 2, 2581, 2, 2602, 2, 2604, 2, 2610, 2, 2612, 2, 2613, 2, 2615, 2, 2616, 2, 2618, 2, 2619, 2, 2651, 2, 2654, 2, 2656, 2, 2656, 2, 2676, 2, 2678, 2, 2695, 2, 2703, 2, 2705, 2, 2707, 2, 2709, 2, 2730, 2, 2732, 2, 2738, 2, 2740, 2, 2741, 2, 2743, 2, 2747, 2, 2751, 2, 2751, 2, 2770, 2, 2770, 2, 2786, 2, 2787, 2, 2811, 2, 2811, 2, 2823, 2, 2830, 2, 2833, 2, 2834, 2, 2837, 2, 2858, 2, 2860, 2, 2866, 2, 2868, 2, 2869, 2, 2871, 2, 2875, 2, 2879, 2, 2879, 2, 2910, 2, 2911, 2, 2913, 2, 2915, 2, 2931, 2, 2931, 2, 2949, 2, 2949, 2, 2951, 2, 2956, 2, 2960, 2, 2962, 2, 2964, 2, 2967, 2, 2971, 2, 2972, 2, 2974, 2, 2974, 2, 2976, 2, 2977, 2, 2981, 2, 2982, 2, 2986, 2, 2988, 2, 2992, 2, 3003, 2, 3026, 2, 3026, 2, 3079, 2, 3086, 2, 3088, 2, 3090, 2, 3092, 2, 3114, 2, 3116, 2, 3131, 2, 3135, 2, 3135, 2, 3162, 2, 3164, 2, 3170, 2, 3171, 2, 3202, 2, 3202, 2, 3207, 2, 3214, 2, 3216, 2, 3218, 2, 3220, 2, 3242, 2, 3244, 2, 3253, 2, 3255, 2, 3259, 2, 3263, 2, 3263, 2, 3296, 2, 3296, 2, 3298, 2, 3299, 2, 3315, 2, 3316, 2, 3335, 2, 3342, 2, 3344, 2, 3346, 2, 3348, 2, 3388, 2, 3391, 2, 3391, 2, 3408, 2, 3408, 2, 3414, 2, 3416, 2, 3425, 2, 3427, 2, 3452, 2, 3457, 2, 3463, 2, 3480, 2, 3484, 2, 3507, 2, 3509, 2, 3517, 2, 3519, 2, 3519, 2, 3522, 2, 3528, 2, 3587, 2, 3634, 2, 3636, 2, 3637, 2, 3650, 2, 3656, 2, 3715, 2, 3716, 2, 3718, 2, 3718, 2, 3721, 2, 3722, 2, 3724, 2, 3724, 2, 3727, 2, 3727, 2, 3734, 2, 3737, 2, 3739, 2, 3745, 2, 3747, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3753, 2, 3756, 2, 3757, 2, 3759, 2, 3762, 2, 3764, 2, 3765, 2, 3775, 2, 3775, 2, 3778, 2, 3782, 2, 3784, 2, 3784, 2, 3806, 2, 3809, 2, 3842, 2, 3842, 2, 3906, 2, 3913, 2, 3915, 2, 3950, 2, 3978, 2, 3982, 2, 4098, 2, 4140, 2, 4161, 2, 4161, 2, 4178, 2, 4183, 2, 4188, 2, 4191, 2, 4195, 2, 4195, 2, 4199, 2, 4200, 2, 4208, 2, 4210, 2, 4215, 2, 4227, 2, 4240, 2, 4240, 2, 4258, 2, 4295, 2, 4297, 2, 4297, 2, 4303, 2, 4303, 2, 4306, 2, 4348, 2, 4350, 2, 4682, 2, 4684, 2, 4687, 2, 4690, 2, 4696, 2, 4698, 2, 4698, 2, 4700, 2, 4703, 2, 4706, 2, 4746, 2, 4748, 2, 4751, 2, 4754, 2, 4786, 2, 4788, 2, 4791, 2, 4794, 2, 4800, 2, 4802, 2, 4802, 2, 4804, 2, 4807, 2, 4810, 2, 4824, 2, 4826, 2, 4882, 2, 4884, 2, 4887, 2, 4890, 2, 4956, 2, 4994, 2, 5009, 2, 5026, 2, 5111, 2, 5114, 2, 5119, 2, 5123, 2, 5742, 2, 5745, 2, 5761, 2, 5763, 2, 5788, 2, 5794, 2, 5868, 2, 5875, 2, 5882, 2, 5890, 2, 5902, 2, 5904, 2, 5907, 2, 5922, 2, 5939, 2, 5954, 2, 5971, 2, 5986, 2, 5998, 2, 6000, 2, 6002, 2, 6018, 2, 6069, 2, 6105, 2, 6105, 2, 6110, 2, 6110, 2, 6178, 2, 6265, 2, 6274, 2, 6278, 2, 6281, 2, 6314, 2, 6316, 2, 6316, 2, 6322, 2, 6391, 2, 6402, 2, 6432, 2, 6482, 2, 6511, 2, 6514, 2, 6518, 2, 6530, 2, 6573, 2, 6578, 2, 6603, 2, 6658, 2, 6680, 2, 6690, 2, 6742, 2, 6825, 2, 6825, 2, 6919, 2, 6965, 2, 6983, 2, 6989, 2, 7045, 2, 7074, 2, 7088, 2, 7089, 2, 7100, 2, 7143, 2, 7170, 2, 7205, 2, 7247, 2, 7249, 2, 7260, 2, 7295, 2, 7298, 2, 7306, 2, 7403, 2, 7406, 2, 7408, 2, 7411, 2, 7415, 2, 7416, 2, 7426, 2, 7617, 2, 7682, 2, 7959, 2, 7962, 2, 7967, 2, 7970, 2, 8007, 2, 8010, 2, 8015, 2, 8018, 2, 8025, 2, 8027, 2, 8027, 2, 8029, 2, 8029, 2, 8031, 2, 8031, 2, 8033, 2, 8063, 2, 8066, 2, 8118, 2, 8120, 2, 8126, 2, 8128, 2, 8128, 2, 8132, 2, 8134, 2, 8136, 2, 8142, 2, 8146, 2, 8149, 2, 8152, 2, 8157, 2, 8162, 2, 8174, 2, 8180, 2, 8182, 2, 8184, 2, 8190, 2, 8307, 2, 8307, 2, 8321, 2, 8321, 2, 8338, 2, 8350, 2, 8452, 2, 8452, 2, 8457, 2, 8457, 2, 8460, 2, 8469, 2, 8471, 2, 8471, 2, 8475, 2, 8479, 2, 8486, 2, 8486, 2, 8488, 2, 8488, 2, 8490, 2, 8490, 2, 8492, 2, 8495, 2, 8497, 2, 8507, 2, 8510, 2, 8513, 2, 8519, 2, 8523, 2, 8528, 2, 8528, 2, 8581, 2, 8582, 2, 11266, 2, 11312, 2, 11314, 2, 11360, 2, 11362, 2, 11494, 2, 11501, 2, 11504, 2, 11508, 2, 11509, 2, 11522, 2, 11559, 2, 11561, 2, 11561, 2, 11567, 2, 11567, 2, 11570, 2, 11625, 2, 11633, 2, 11633, 2, 11650, 2, 11672, 2, 11682, 2, 11688, 2, 11690, 2, 11696, 2, 11698, 2, 11704, 2, 11706, 2, 11712, 2, 11714, 2, 11720, 2, 11722, 2, 11728, 2, 11730, 2, 11736, 2, 11738, 2, 11744, 2, 11825, 2, 11825, 2, 12295, 2, 12296, 2, 12339, 2, 12343, 2, 12349, 2, 12350, 2, 12355, 2, 12440, 2, 12447, 2, 12449, 2, 12451, 2, 12540, 2, 12542, 2, 12545, 2, 12551, 2, 12591, 2, 12595, 2, 12688, 2, 12706, 2, 12732, 2, 12786, 2, 12801, 2, 13314, 2, 19895, 2, 19970, 2, 40919, 2, 40962, 2, 42126, 2, 42194, 2, 42239, 2, 42242, 2, 42510, 2, 42514, 2, 42529, 2, 42540, 2, 42541, 2, 42562, 2, 42608, 2, 42625, 2, 42655, 2, 42658, 2, 42727, 2, 42777, 2, 42785, 2, 42788, 2, 42890, 2, 42893, 2, 42928, 2, 42930, 2, 42937, 2, 43001, 2, 43011, 2, 43013, 2, 43015, 2, 43017, 2, 43020, 2, 43022, 2, 43044, 2, 43074, 2, 43125, 2, 43140, 2, 43189, 2, 43252, 2, 43257, 2, 43261, 2, 43261, 2, 43263, 2, 43263, 2, 43276, 2, 43303, 2, 43314, 2, 43336, 2, 43362, 2, 43390, 2, 43398, 2, 43444, 2, 43473, 2, 43473, 2, 43490, 2, 43494, 2, 43496, 2, 43505, 2, 43516, 2, 43520, 2, 43522, 2, 43562, 2, 43586, 2, 43588, 2, 43590, 2, 43597, 2, 43618, 2, 43640, 2, 43644, 2, 43644, 2, 43648, 2, 43697, 2, 43699, 2, 43699, 2, 43703, 2, 43704, 2, 43707, 2, 43711, 2, 43714, 2, 43714, 2, 43716, 2, 43716, 2, 43741, 2, 43743, 2, 43746, 2, 43756, 2, 43764, 2, 43766, 2, 43779, 2, 43784, 2, 43787, 2, 43792, 2, 43795, 2, 43800, 2, 43810, 2, 43816, 2, 43818, 2, 43824, 2, 43826, 2, 43868, 2, 43870, 2, 43879, 2, 43890, 2, 44004, 2, 44034, 2, 55205, 2, 55218, 2, 55240, 2, 55245, 2, 55293, 2, 63746, 2, 64111, 2, 64114, 2, 64219, 2, 64258, 2, 64264, 2, 64277, 2, 64281, 2, 64287, 2, 64287, 2, 64289, 2, 64298, 2, 64300, 2, 64312, 2, 64314, 2, 64318, 2, 64320, 2, 64320, 2, 64322, 2, 64323, 2, 64325, 2, 64326, 2, 64328, 2, 64435, 2, 64469, 2, 64831, 2, 64850, 2, 64913, 2, 64916, 2, 64969, 2, 65010, 2, 65021, 2, 65138, 2, 65142, 2, 65144, 2, 65278, 2, 65315, 2, 65340, 2, 65347, 2, 65372, 2, 65384, 2, 65472, 2, 65476, 2, 65481, 2, 65484, 2, 65489, 2, 65492, 2, 65497, 2, 65500, 2, 65502, 2, 2, 3, 13, 3, 15, 3, 40, 3, 42, 3, 60, 3, 62, 3, 63, 3, 65, 3, 79, 3, 82, 3, 95, 3, 130, 3, 252, 3, 642, 3, 670, 3, 674, 3, 722, 3, 770, 3, 801, 3, 818, 3, 834, 3, 836, 3, 843, 3, 850, 3, 887, 3, 898, 3, 927, 3, 930, 3, 965, 3, 970, 3, 977, 3, 1026, 3, 1183, 3, 1202, 3, 1237, 3, 1242, 3, 1277, 3, 1282, 3, 1321, 3, 1330, 3, 1381, 3, 1538, 3, 1848, 3, 1858, 3, 1879, 3, 1890, 3, 1897, 3, 2050, 3, 2055, 3, 2058, 3, 2058, 3, 2060, 3, 2103, 3, 2105, 3, 2106, 3, 2110, 3, 2110, 3, 2113, 3, 2135, 3, 2146, 3, 2168, 3, 2178, 3, 2208, 3, 2274, 3, 2292, 3, 2294, 3, 2295, 3, 2306, 3, 2327, 3, 2338, 3, 2363, 3, 2434, 3, 2489, 3, 2496, 3, 2497, 3, 2562, 3, 2562, 3, 2578, 3, 2581, 3, 2583, 3, 2585, 3, 2587, 3, 2613, 3, 2658, 3, 2686, 3, 2690, 3, 2718, 3, 2754, 3, 2761, 3, 2763, 3, 2790, 3, 2818, 3, 2871, 3, 2882, 3, 2903, 3, 2914, 3, 2932, 3, 2946, 3, 2963, 3, 3074, 3, 3146, 3, 3202, 3, 3252, 3, 3266, 3, 3316, 3, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 3, 4434, 3, 4468, 3, 4472, 3, 4472, 3, 4485, 3, 4532, 3, 4547, 3, 4550, 3, 4572, 3, 4572, 3, 4574, 3, 4574, 3, 4610, 3, 4627, 3, 4629, 3, 4653, 3, 4738, 3, 4744, 3, 4746, 3, 4746, 3, 4748, 3, 4751, 3, 4753, 3, 4767, 3, 4769, 3, 4778, 3, 4786, 3, 4832, 3, 4871, 3, 4878, 3, 4881, 3, 4882, 3, 4885, 3, 4906, 3, 4908, 3, 4914, 3, 4916, 3, 4917, 3, 4919, 3, 4923, 3, 4927, 3, 4927, 3, 4946, 3, 4946, 3, 4959, 3, 4963, 3, 5122, 3, 5174, 3, 5193, 3, 5196, 3, 5250, 3, 5297, 3, 5318, 3, 5319, 3, 5321, 3, 5321, 3, 5506, 3, 5552, 3, 5594, 3, 5597, 3, 5634, 3, 5681, 3, 5702, 3, 5702, 3, 5762, 3, 5804, 3, 5890, 3, 5915, 3, 6306, 3, 6369, 3, 6401, 3, 6401, 3, 6850, 3, 6906, 3, 7170, 3, 7178, 3, 7180, 3, 7216, 3, 7234, 3, 7234, 3, 7284, 3, 7313, 3, 8194, 3, 9115, 3, 9346, 3, 9541, 3, 12290, 3, 13360, 3, 17410, 3, 17992, 3, 26626, 3, 27194, 3, 27202, 3, 27232, 3, 27346, 3, 27375, 3, 27394, 3, 27441, 3, 27458, 3, 27461, 3, 27493, 3, 27513, 3, 27519, 3, 27537, 3, 28418, 3, 28486, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28642, 3, 28674, 3, 34798, 3, 34818, 3, 35572, 3, 45058, 3, 45059, 3, 48130, 3, 48236, 3, 48242, 3, 48254, 3, 48258, 3, 48266, 3, 48274, 3, 48283, 3, 54274, 3, 54358, 3, 54360, 3, 54430, 3, 54432, 3, 54433, 3, 54436, 3, 54436, 3, 54439, 3, 54440, 3, 54443, 3, 54446, 3, 54448, 3, 54459, 3, 54461, 3, 54461, 3, 54463, 3, 54469, 3, 54471, 3, 54535, 3, 54537, 3, 54540, 3, 54543, 3, 54550, 3, 54552, 3, 54558, 3, 54560, 3, 54587, 3, 54589, 3, 54592, 3, 54594, 3, 54598, 3, 54600, 3, 54600, 3, 54604, 3, 54610, 3, 54612, 3, 54951, 3, 54954, 3, 54978, 3, 54980, 3, 55004, 3, 55006, 3, 55036, 3, 55038, 3, 55062, 3, 55064, 3, 55094, 3, 55096, 3, 55120, 3, 55122, 3, 55152, 3, 55154, 3, 55178, 3, 55180, 3, 55210, 3, 55212, 3, 55236, 3, 55238, 3, 55245, 3, 59394, 3, 59590, 3, 59650, 3, 59717, 3, 60930, 3, 60933, 3, 60935, 3, 60961, 3, 60963, 3, 60964, 3, 60966, 3, 60966, 3, 60969, 3, 60969, 3, 60971, 3, 60980, 3, 60982, 3, 60985, 3, 60987, 3, 60987, 3, 60989, 3, 60989, 3, 60996, 3, 60996, 3, 61001, 3, 61001, 3, 61003, 3, 61003, 3, 61005, 3, 61005, 3, 61007, 3, 61009, 3, 61011, 3, 61012, 3, 61014, 3, 61014, 3, 61017, 3, 61017, 3, 61019, 3, 61019, 3, 61021, 3, 61021, 3, 61023, 3, 61023, 3, 61025, 3, 61025, 3, 61027, 3, 61028, 3, 61030, 3, 61030, 3, 61033, 3, 61036, 3, 61038, 3, 61044, 3, 61046, 3, 61049, 3, 61051, 3, 61054, 3, 61056, 3, 61056, 3, 61058, 3, 61067, 3, 61069, 3, 61085, 3, 61091, 3, 61093, 3, 61095, 3, 61099, 3, 61101, 3, 61117, 3, 2, 4, 42712, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 63490, 4, 64031, 4, 912, 2, 4, 3, 2, 2, 2, 2, 6, 3, 2, 2, 2, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 26, 3, 2, 2, 2, 2, 28, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 2, 32, 3, 2, 2, 2, 2, 34, 3, 2, 2, 2, 2, 36, 3, 2, 2, 2, 2, 38, 3, 2, 2, 2, 2, 40, 3, 2, 2, 2, 2, 42, 3, 2, 2, 2, 2, 44, 3, 2, 2, 2, 2, 46, 3, 2, 2, 2, 2, 48, 3, 2, 2, 2, 2, 50, 3, 2, 2, 2, 2, 52, 3, 2, 2, 2, 2, 54, 3, 2, 2, 2, 2, 56, 3, 2, 2, 2, 2, 58, 3, 2, 2, 2, 2, 60, 3, 2, 2, 2, 2, 62, 3, 2, 2, 2, 2, 64, 3, 2, 2, 2, 2, 66, 3, 2, 2, 2, 2, 68, 3, 2, 2, 2, 2, 70, 3, 2, 2, 2, 2, 72, 3, 2, 2, 2, 2, 74, 3, 2, 2, 2, 2, 76, 3, 2, 2, 2, 2, 78, 3, 2, 2, 2, 2, 80, 3, 2, 2, 2, 2, 82, 3, 2, 2, 2, 2, 84, 3, 2, 2, 2, 2, 86, 3, 2, 2, 2, 2, 88, 3, 2, 2, 2, 2, 90, 3, 2, 2, 2, 2, 92, 3, 2, 2, 2, 2, 94, 3, 2, 2, 2, 2, 96, 3, 2, 2, 2, 2, 98, 3, 2, 2, 2, 2, 100, 3, 2, 2, 2, 2, 102, 3, 2, 2, 2, 2, 104, 3, 2, 2, 2, 2, 106, 3, 2, 2, 2, 2, 108, 3, 2, 2, 2, 2, 110, 3, 2, 2, 2, 2, 112, 3, 2, 2, 2, 2, 114, 3, 2, 2, 2, 2, 116, 3, 2, 2, 2, 2, 118, 3, 2, 2, 2, 2, 120, 3, 2, 2, 2, 2, 122, 3, 2, 2, 2, 2, 124, 3, 2, 2, 2, 2, 126, 3, 2, 2, 2, 2, 128, 3, 2, 2, 2, 2, 130, 3, 2, 2, 2, 2, 132, 3, 2, 2, 2, 2, 134, 3, 2, 2, 2, 2, 136, 3, 2, 2, 2, 2, 138, 3, 2, 2, 2, 2, 140, 3, 2, 2, 2, 2, 142, 3, 2, 2, 2, 2, 144, 3, 2, 2, 2, 2, 150, 3, 2, 2, 2, 2, 154, 3, 2, 2, 2, 2, 156, 3, 2, 2, 2, 2, 158, 3, 2, 2, 2, 2, 160, 3, 2, 2, 2, 2, 162, 3, 2, 2, 2, 2, 164, 3, 2, 2, 2, 2, 166, 3, 2, 2, 2, 2, 168, 3, 2, 2, 2, 2, 170, 3, 2, 2, 2, 2, 172, 3, 2, 2, 2, 2, 174, 3, 2, 2, 2, 2, 176, 3, 2, 2, 2, 2, 178, 3, 2, 2, 2, 3, 200, 3, 2, 2, 2, 3, 202, 3, 2, 2, 2, 3, 204, 3, 2, 2, 2, 3, 206, 3, 2, 2, 2, 3, 208, 3, 2, 2, 2, 4, 210, 3, 2, 2, 2, 6, 218, 3, 2, 2, 2, 8, 226, 3, 2, 2, 2, 10, 231, 3, 2, 2, 2, 12, 241, 3, 2, 2, 2, 14, 248, 3, 2, 2, 2, 16, 253, 3, 2, 2, 2, 18, 259, 3, 2, 2, 2, 20, 262, 3, 2, 2, 2, 22, 266, 3, 2, 2, 2, 24, 273, 3, 2, 2, 2, 26, 278, 3, 2, 2, 2, 28, 283, 3, 2, 2, 2, 30, 288, 3, 2, 2, 2, 32, 296, 3, 2, 2, 2, 34, 303, 3, 2, 2, 2, 36, 309, 3, 2, 2, 2, 38, 323, 3, 2, 2, 2, 40, 326, 3, 2, 2, 2, 42, 332, 3, 2, 2, 2, 44, 337, 3, 2, 2, 2, 46, 348, 3, 2, 2, 2, 48, 352, 3, 2, 2, 2, 50, 359, 3, 2, 2, 2, 52, 368, 3, 2, 2, 2, 54, 372, 3, 2, 2, 2, 56, 378, 3, 2, 2, 2, 58, 388, 3, 2, 2, 2, 60, 390, 3, 2, 2, 2, 62, 394, 3, 2, 2, 2, 64, 396, 3, 2, 2, 2, 66, 400, 3, 2, 2, 2, 68, 402, 3, 2, 2, 2, 70, 406, 3, 2, 2, 2, 72, 408, 3, 2, 2, 2, 74, 410, 3, 2, 2, 2, 76, 412, 3, 2, 2, 2, 78, 414, 3, 2, 2, 2, 80, 416, 3, 2, 2, 2, 82, 421, 3, 2, 2, 2, 84, 426, 3, 2, 2, 2, 86, 429, 3, 2, 2, 2, 88, 433, 3, 2, 2, 2, 90, 436, 3, 2, 2, 2, 92, 439, 3, 2, 2, 2, 94, 442, 3, 2, 2, 2, 96, 445, 3, 2, 2, 2, 98, 447, 3, 2, 2, 2, 100, 450, 3, 2, 2, 2, 102, 452, 3, 2, 2, 2, 104, 455, 3, 2, 2, 2, 106, 457, 3, 2, 2, 2, 108, 459, 3, 2, 2, 2, 110, 461, 3, 2, 2, 2, 112, 464, 3, 2, 2, 2, 114, 467, 3, 2, 2, 2, 116, 470, 3, 2, 2, 2, 118, 472, 3, 2, 2, 2, 120, 474, 3, 2, 2, 2, 122, 476, 3, 2, 2, 2, 124, 478, 3, 2, 2, 2, 126, 480, 3, 2, 2, 2, 128, 482, 3, 2, 2, 2, 130, 484, 3, 2, 2, 2, 132, 498, 3, 2, 2, 2, 134, 502, 3, 2, 2, 2, 136, 514, 3, 2, 2, 2, 138, 528, 3, 2, 2, 2, 140, 542, 3, 2, 2, 2, 142, 562, 3, 2, 2, 2, 144, 564, 3, 2, 2, 2, 146, 600, 3, 2, 2, 2, 148, 602, 3, 2, 2, 2, 150, 613, 3, 2, 2, 2, 152, 619, 3, 2, 2, 2, 154, 626, 3, 2, 2, 2, 156, 632, 3, 2, 2, 2, 158, 634, 3, 2, 2, 2, 160, 639, 3, 2, 2, 2, 162, 644, 3, 2, 2, 2, 164, 651, 3, 2, 2, 2, 166, 662, 3, 2, 2, 2, 168, 673, 3, 2, 2, 2, 170, 686, 3, 2, 2, 2, 172, 692, 3, 2, 2, 2, 174, 707, 3, 2, 2, 2, 176, 713, 3, 2, 2, 2, 178, 738, 3, 2, 2, 2, 180, 744, 3, 2, 2, 2, 182, 746, 3, 2, 2, 2, 184, 774, 3, 2, 2, 2, 186, 784, 3, 2, 2, 2, 188, 786, 3, 2, 2, 2, 190, 788, 3, 2, 2, 2, 192, 790, 3, 2, 2, 2, 194, 798, 3, 2, 2, 2, 196, 800, 3, 2, 2, 2, 198, 802, 3, 2, 2, 2, 200, 805, 3, 2, 2, 2, 202, 811, 3, 2, 2, 2, 204, 825, 3, 2, 2, 2, 206, 854, 3, 2, 2, 2, 208, 858, 3, 2, 2, 2, 210, 211, 7, 100, 2, 2, 211, 212, 7, 116, 2, 2, 212, 213, 7, 103, 2, 2, 213, 214, 7, 99, 2, 2, 214, 215, 7, 109, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 8, 2, 2, 2, 217, 5, 3, 2, 2, 2, 218, 219, 7, 102, 2, 2, 219, 220, 7, 103, 2, 2, 220, 221, 7, 104, 2, 2, 221, 222, 7, 99, 2, 2, 222, 223, 7, 119, 2, 2, 223, 224, 7, 110, 2, 2, 224, 225, 7, 118, 2, 2, 225, 7, 3, 2, 2, 2, 226, 227, 7, 104, 2, 2, 227, 228, 7, 119, 2, 2, 228, 229, 7, 112, 2, 2, 229, 230, 7, 101, 2, 2, 230, 9, 3, 2, 2, 2, 231, 232, 7, 107, 2, 2, 232, 233, 7, 112, 2, 2, 233, 234, 7, 118, 2, 2, 234, 235, 7, 103, 2, 2, 235, 236, 7, 116, 2, 2, 236, 237, 7, 104, 2, 2, 237, 238, 7, 99, 2, 2, 238, 239, 7, 101, 2, 2, 239, 240, 7, 103, 2, 2, 240, 11, 3, 2, 2, 2, 241, 242, 7, 117, 2, 2, 242, 243, 7, 103, 2, 2, 243, 244, 7, 110, 2, 2, 244, 245, 7, 103, 2, 2, 245, 246, 7, 101, 2, 2, 246, 247, 7, 118, 2, 2, 247, 13, 3, 2, 2, 2, 248, 249, 7, 101, 2, 2, 249, 250, 7, 99, 2, 2, 250, 251, 7, 117, 2, 2, 251, 252, 7, 103, 2, 2, 252, 15, 3, 2, 2, 2, 253, 254, 7, 102, 2, 2, 254, 255, 7, 103, 2, 2, 255, 256, 7, 104, 2, 2, 256, 257, 7, 103, 2, 2, 257, 258, 7, 116, 2, 2, 258, 17, 3, 2, 2, 2, 259, 260, 7, 105, 2, 2, 260, 261, 7, 113, 2, 2, 261, 19, 3, 2, 2, 2, 262, 263, 7, 111, 2, 2, 263, 264, 7, 99, 2, 2, 264, 265, 7, 114, 2, 2, 265, 21, 3, 2, 2, 2, 266, 267, 7, 117, 2, 2, 267, 268, 7, 118, 2, 2, 268, 269, 7, 116, 2, 2, 269, 270, 7, 119, 2, 2, 270, 271, 7, 101, 2, 2, 271, 272, 7, 118, 2, 2, 272, 23, 3, 2, 2, 2, 273, 274, 7, 101, 2, 2, 274, 275, 7, 106, 2, 2, 275, 276, 7, 99, 2, 2, 276, 277, 7, 112, 2, 2, 277, 25, 3, 2, 2, 2, 278, 279, 7, 103, 2, 2, 279, 280, 7, 110, 2, 2, 280, 281, 7, 117, 2, 2, 281, 282, 7, 103, 2, 2, 282, 27, 3, 2, 2, 2, 283, 284, 7, 105, 2, 2, 284, 285, 7, 113, 2, 2, 285, 286, 7, 118, 2, 2, 286, 287, 7, 113, 2, 2, 287, 29, 3, 2, 2, 2, 288, 289, 7, 114, 2, 2, 289, 290, 7, 99, 2, 2, 290, 291, 7, 101, 2, 2, 291, 292, 7, 109, 2, 2, 292, 293, 7, 99, 2, 2, 293, 294, 7, 105, 2, 2, 294, 295, 7, 103, 2, 2, 295, 31, 3, 2, 2, 2, 296, 297, 7, 117, 2, 2, 297, 298, 7, 121, 2, 2, 298, 299, 7, 107, 2, 2, 299, 300, 7, 118, 2, 2, 300, 301, 7, 101, 2, 2, 301, 302, 7, 106, 2, 2, 302, 33, 3, 2, 2, 2, 303, 304, 7, 101, 2, 2, 304, 305, 7, 113, 2, 2, 305, 306, 7, 112, 2, 2, 306, 307, 7, 117, 2, 2, 307, 308, 7, 118, 2, 2, 308, 35, 3, 2, 2, 2, 309, 310, 7, 104, 2, 2, 310, 311, 7, 99, 2, 2, 311, 312, 7, 110, 2, 2, 312, 313, 7, 110, 2, 2, 313, 314, 7, 118, 2, 2, 314, 315, 7, 106, 2, 2, 315, 316, 7, 116, 2, 2, 316, 317, 7, 113, 2, 2, 317, 318, 7, 119, 2, 2, 318, 319, 7, 105, 2, 2, 319, 320, 7, 106, 2, 2, 320, 321, 3, 2, 2, 2, 321, 322, 8, 18, 2, 2, 322, 37, 3, 2, 2, 2, 323, 324, 7, 107, 2, 2, 324, 325, 7, 104, 2, 2, 325, 39, 3, 2, 2, 2, 326, 327, 7, 116, 2, 2, 327, 328, 7, 99, 2, 2, 328, 329, 7, 112, 2, 2, 329, 330, 7, 105, 2, 2, 330, 331, 7, 103, 2, 2, 331, 41, 3, 2, 2, 2, 332, 333, 7, 118, 2, 2, 333, 334, 7, 123, 2, 2, 334, 335, 7, 114, 2, 2, 335, 336, 7, 103, 2, 2, 336, 43, 3, 2, 2, 2, 337, 338, 7, 101, 2, 2, 338, 339, 7, 113, 2, 2, 339, 340, 7, 112, 2, 2, 340, 341, 7, 118, 2, 2, 341, 342, 7, 107, 2, 2, 342, 343, 7, 112, 2, 2, 343, 344, 7, 119, 2, 2, 344, 345, 7, 103, 2, 2, 345, 346, 3, 2, 2, 2, 346, 347, 8, 22, 2, 2, 347, 45, 3, 2, 2, 2, 348, 349, 7, 104, 2, 2, 349, 350, 7, 113, 2, 2, 350, 351, 7, 116, 2, 2, 351, 47, 3, 2, 2, 2, 352, 353, 7, 107, 2, 2, 353, 354, 7, 111, 2, 2, 354, 355, 7, 114, 2, 2, 355, 356, 7, 113, 2, 2, 356, 357, 7, 116, 2, 2, 357, 358, 7, 118, 2, 2, 358, 49, 3, 2, 2, 2, 359, 360, 7, 116, 2, 2, 360, 361, 7, 103, 2, 2, 361, 362, 7, 118, 2, 2, 362, 363, 7, 119, 2, 2, 363, 364, 7, 116, 2, 2, 364, 365, 7, 112, 2, 2, 365, 366, 3, 2, 2, 2, 366, 367, 8, 25, 2, 2, 367, 51, 3, 2, 2, 2, 368, 369, 7, 120, 2, 2, 369, 370, 7, 99, 2, 2, 370, 371, 7, 116, 2, 2, 371, 53, 3, 2, 2, 2, 372, 373, 7, 112, 2, 2, 373, 374, 7, 107, 2, 2, 374, 375, 7, 110, 2, 2, 375, 376, 3, 2, 2, 2, 376, 377, 8, 27, 2, 2, 377, 55, 3, 2, 2, 2, 378, 383, 5, 194, 97, 2, 379, 382, 5, 194, 97, 2, 380, 382, 5, 196, 98, 2, 381, 379, 3, 2, 2, 2, 381, 380, 3, 2, 2, 2, 382, 385, 3, 2, 2, 2, 383, 381, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 386, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 386, 387, 8, 28, 2, 2, 387, 57, 3, 2, 2, 2, 388, 389, 7, 42, 2, 2, 389, 59, 3, 2, 2, 2, 390, 391, 7, 43, 2, 2, 391, 392, 3, 2, 2, 2, 392, 393, 8, 30, 2, 2, 393, 61, 3, 2, 2, 2, 394, 395, 7, 125, 2, 2, 395, 63, 3, 2, 2, 2, 396, 397, 7, 127, 2, 2, 397, 398, 3, 2, 2, 2, 398, 399, 8, 32, 2, 2, 399, 65, 3, 2, 2, 2, 400, 401, 7, 93, 2, 2, 401, 67, 3, 2, 2, 2, 402, 403, 7, 95, 2, 2, 403, 404, 3, 2, 2, 2, 404, 405, 8, 34, 2, 2, 405, 69, 3, 2, 2, 2, 406, 407, 7, 63, 2, 2, 407, 71, 3, 2, 2, 2, 408, 409, 7, 46, 2, 2, 409, 73, 3, 2, 2, 2, 410, 411, 7, 61, 2, 2, 411, 75, 3, 2, 2, 2, 412, 413, 7, 60, 2, 2, 413, 77, 3, 2, 2, 2, 414, 415, 7, 48, 2, 2, 415, 79, 3, 2, 2, 2, 416, 417, 7, 45, 2, 2, 417, 418, 7, 45, 2, 2, 418, 419, 3, 2, 2, 2, 419, 420, 8, 40, 2, 2, 420, 81, 3, 2, 2, 2, 421, 422, 7, 47, 2, 2, 422, 423, 7, 47, 2, 2, 423, 424, 3, 2, 2, 2, 424, 425, 8, 41, 2, 2, 425, 83, 3, 2, 2, 2, 426, 427, 7, 60, 2, 2, 427, 428, 7, 63, 2, 2, 428, 85, 3, 2, 2, 2, 429, 430, 7, 48, 2, 2, 430, 431, 7, 48, 2, 2, 431, 432, 7, 48, 2, 2, 432, 87, 3, 2, 2, 2, 433, 434, 7, 126, 2, 2, 434, 435, 7, 126, 2, 2, 435, 89, 3, 2, 2, 2, 436, 437, 7, 40, 2, 2, 437, 438, 7, 40, 2, 2, 438, 91, 3, 2, 2, 2, 439, 440, 7, 63, 2, 2, 440, 441, 7, 63, 2, 2, 441, 93, 3, 2, 2, 2, 442, 443, 7, 35, 2, 2, 443, 444, 7, 63, 2, 2, 444, 95, 3, 2, 2, 2, 445, 446, 7, 62, 2, 2, 446, 97, 3, 2, 2, 2, 447, 448, 7, 62, 2, 2, 448, 449, 7, 63, 2, 2, 449, 99, 3, 2, 2, 2, 450, 451, 7, 64, 2, 2, 451, 101, 3, 2, 2, 2, 452, 453, 7, 64, 2, 2, 453, 454, 7, 63, 2, 2, 454, 103, 3, 2, 2, 2, 455, 456, 7, 126, 2, 2, 456, 105, 3, 2, 2, 2, 457, 458, 7, 49, 2, 2, 458, 107, 3, 2, 2, 2, 459, 460, 7, 39, 2, 2, 460, 109, 3, 2, 2, 2, 461, 462, 7, 62, 2, 2, 462, 463, 7, 62, 2, 2, 463, 111, 3, 2, 2, 2, 464, 465, 7, 64, 2, 2, 465, 466, 7, 64, 2, 2, 466, 113, 3, 2, 2, 2, 467, 468, 7, 40, 2, 2, 468, 469, 7, 96, 2, 2, 469, 115, 3, 2, 2, 2, 470, 471, 7, 128, 2, 2, 471, 117, 3, 2, 2, 2, 472, 473, 7, 35, 2, 2, 473, 119, 3, 2, 2, 2, 474, 475, 7, 45, 2, 2, 475, 121, 3, 2, 2, 2, 476, 477, 7, 47, 2, 2, 477, 123, 3, 2, 2, 2, 478, 479, 7, 96, 2, 2, 479, 125, 3, 2, 2, 2, 480, 481, 7, 44, 2, 2, 481, 127, 3, 2, 2, 2, 482, 483, 7, 40, 2, 2, 483, 129, 3, 2, 2, 2, 484, 485, 7, 62, 2, 2, 485, 486, 7, 47, 2, 2, 486, 131, 3, 2, 2, 2, 487, 499, 7, 50, 2, 2, 488, 495, 9, 2, 2, 2, 489, 491, 7, 97, 2, 2, 490, 489, 3, 2, 2, 2, 490, 491, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 494, 9, 3, 2, 2, 493, 490, 3, 2, 2, 2, 494, 497, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 498, 487, 3, 2, 2, 2, 498, 488, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 501, 8, 66, 2, 2, 501, 133, 3, 2, 2, 2, 502, 503, 7, 50, 2, 2, 503, 508, 9, 4, 2, 2, 504, 506, 7, 97, 2, 2, 505, 504, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 509, 5, 190, 95, 2, 508, 505, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 508, 3, 2, 2, 2, 510, 511, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 513, 8, 67, 2, 2, 513, 135, 3, 2, 2, 2, 514, 516, 7, 50, 2, 2, 515, 517, 9, 5, 2, 2, 516, 515, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 522, 3, 2, 2, 2, 518, 520, 7, 97, 2, 2, 519, 518, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 523, 5, 186, 93, 2, 522, 519, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 522, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 527, 8, 68, 2, 2, 527, 137, 3, 2, 2, 2, 528, 529, 7, 50, 2, 2, 529, 534, 9, 6, 2, 2, 530, 532, 7, 97, 2, 2, 531, 530, 3, 2, 2, 2, 531, 532, 3, 2, 2, 2, 532, 533, 3, 2, 2, 2, 533, 535, 5, 188, 94, 2, 534, 531, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 536, 534, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 538, 3, 2, 2, 2, 538, 539, 8, 69, 2, 2, 539, 139, 3, 2, 2, 2, 540, 543, 5, 142, 71, 2, 541, 543, 5, 144, 72, 2, 542, 540, 3, 2, 2, 2, 542, 541, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 544, 545, 8, 70, 2, 2, 545, 141, 3, 2, 2, 2, 546, 555, 5, 184, 92, 2, 547, 549, 7, 48, 2, 2, 548, 550, 5, 184, 92, 2, 549, 548, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 552, 3, 2, 2, 2, 551, 553, 5, 192, 96, 2, 552, 551, 3, 2, 2, 2, 552, 553, 3, 2, 2, 2, 553, 556, 3, 2, 2, 2, 554, 556, 5, 192, 96, 2, 555, 547, 3, 2, 2, 2, 555, 554, 3, 2, 2, 2, 556, 563, 3, 2, 2, 2, 557, 558, 7, 48, 2, 2, 558, 560, 5, 184, 92, 2, 559, 561, 5, 192, 96, 2, 560, 559, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 546, 3, 2, 2, 2, 562, 557, 3, 2, 2, 2, 563, 143, 3, 2, 2, 2, 564, 565, 7, 50, 2, 2, 565, 566, 9, 6, 2, 2, 566, 567, 5, 146, 73, 2, 567, 568, 5, 148, 74, 2, 568, 145, 3, 2, 2, 2, 569, 571, 7, 97, 2, 2, 570, 569, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 574, 5, 188, 94, 2, 573, 570, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 573, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 587, 3, 2, 2, 2, 577, 584, 7, 48, 2, 2, 578, 580, 7, 97, 2, 2, 579, 578, 3, 2, 2, 2, 579, 580, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 583, 5, 188, 94, 2, 582, 579, 3, 2, 2, 2, 583, 586, 3, 2, 2, 2, 584, 582, 3, 2, 2, 2, 584, 585, 3, 2, 2, 2, 585, 588, 3, 2, 2, 2, 586, 584, 3, 2, 2, 2, 587, 577, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 601, 3, 2, 2, 2, 589, 590, 7, 48, 2, 2, 590, 597, 5, 188, 94, 2, 591, 593, 7, 97, 2, 2, 592, 591, 3, 2, 2, 2, 592, 593, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 596, 5, 188, 94, 2, 595, 592, 3, 2, 2, 2, 596, 599, 3, 2, 2, 2, 597, 595, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 601, 3, 2, 2, 2, 599, 597, 3, 2, 2, 2, 600, 573, 3, 2, 2, 2, 600, 589, 3, 2, 2, 2, 601, 147, 3, 2, 2, 2, 602, 604, 9, 7, 2, 2, 603, 605, 9, 8, 2, 2, 604, 603, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 606, 3, 2, 2, 2, 606, 607, 5, 184, 92, 2, 607, 149, 3, 2, 2, 2, 608, 614, 5, 132, 66, 2, 609, 614, 5, 134, 67, 2, 610, 614, 5, 136, 68, 2, 611, 614, 5, 138, 69, 2, 612, 614, 5, 140, 70, 2, 613, 608, 3, 2, 2, 2, 613, 609, 3, 2, 2, 2, 613, 610, 3, 2, 2, 2, 613, 611, 3, 2, 2, 2, 613, 612, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 616, 7, 107, 2, 2, 616, 617, 3, 2, 2, 2, 617, 618, 8, 75, 2, 2, 618, 151, 3, 2, 2, 2, 619, 622, 7, 41, 2, 2, 620, 623, 5, 180, 90, 2, 621, 623, 5, 156, 78, 2, 622, 620, 3, 2, 2, 2, 622, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 625, 7, 41, 2, 2, 625, 153, 3, 2, 2, 2, 626, 627, 5, 152, 76, 2, 627, 628, 3, 2, 2, 2, 628, 629, 8, 77, 2, 2, 629, 155, 3, 2, 2, 2, 630, 633, 5, 158, 79, 2, 631, 633, 5, 160, 80, 2, 632, 630, 3, 2, 2, 2, 632, 631, 3, 2, 2, 2, 633, 157, 3, 2, 2, 2, 634, 635, 7, 94, 2, 2, 635, 636, 5, 186, 93, 2, 636, 637, 5, 186, 93, 2, 637, 638, 5, 186, 93, 2, 638, 159, 3, 2, 2, 2, 639, 640, 7, 94, 2, 2, 640, 641, 7, 122, 2, 2, 641, 642, 5, 188, 94, 2, 642, 643, 5, 188, 94, 2, 643, 161, 3, 2, 2, 2, 644, 645, 7, 94, 2, 2, 645, 646, 7, 119, 2, 2, 646, 647, 5, 188, 94, 2, 647, 648, 5, 188, 94, 2, 648, 649, 5, 188, 94, 2, 649, 650, 5, 188, 94, 2, 650, 163, 3, 2, 2, 2, 651, 652, 7, 94, 2, 2, 652, 653, 7, 87, 2, 2, 653, 654, 5, 188, 94, 2, 654, 655, 5, 188, 94, 2, 655, 656, 5, 188, 94, 2, 656, 657, 5, 188, 94, 2, 657, 658, 5, 188, 94, 2, 658, 659, 5, 188, 94, 2, 659, 660, 5, 188, 94, 2, 660, 661, 5, 188, 94, 2, 661, 165, 3, 2, 2, 2, 662, 666, 7, 98, 2, 2, 663, 665, 10, 9, 2, 2, 664, 663, 3, 2, 2, 2, 665, 668, 3, 2, 2, 2, 666, 664, 3, 2, 2, 2, 666, 667, 3, 2, 2, 2, 667, 669, 3, 2, 2, 2, 668, 666, 3, 2, 2, 2, 669, 670, 7, 98, 2, 2, 670, 671, 3, 2, 2, 2, 671, 672, 8, 83, 2, 2, 672, 167, 3, 2, 2, 2, 673, 678, 7, 36, 2, 2, 674, 677, 10, 10, 2, 2, 675, 677, 5, 182, 91, 2, 676, 674, 3, 2, 2, 2, 676, 675, 3, 2, 2, 2, 677, 680, 3, 2, 2, 2, 678, 676, 3, 2, 2, 2, 678, 679, 3, 2, 2, 2, 679, 681, 3, 2, 2, 2, 680, 678, 3, 2, 2, 2, 681, 682, 7, 36, 2, 2, 682, 683, 3, 2, 2, 2, 683, 684, 8, 84, 2, 2, 684, 169, 3, 2, 2, 2, 685, 687, 9, 11, 2, 2, 686, 685, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 686, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 690, 3, 2, 2, 2, 690, 691, 8, 85, 3, 2, 691, 171, 3, 2, 2, 2, 692, 693, 7, 49, 2, 2, 693, 694, 7, 44, 2, 2, 694, 698, 3, 2, 2, 2, 695, 697, 11, 2, 2, 2, 696, 695, 3, 2, 2, 2, 697, 700, 3, 2, 2, 2, 698, 699, 3, 2, 2, 2, 698, 696, 3, 2, 2, 2, 699, 701, 3, 2, 2, 2, 700, 698, 3, 2, 2, 2, 701, 702, 7, 44, 2, 2, 702, 703, 7, 49, 2, 2, 703, 704, 3, 2, 2, 2, 704, 705, 8, 86, 3, 2, 705, 173, 3, 2, 2, 2, 706, 708, 9, 12, 2, 2, 707, 706, 3, 2, 2, 2, 708, 709, 3, 2, 2, 2, 709, 707, 3, 2, 2, 2, 709, 710, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 712, 8, 87, 3, 2, 712, 175, 3, 2, 2, 2, 713, 714, 7, 49, 2, 2, 714, 715, 7, 49, 2, 2, 715, 719, 3, 2, 2, 2, 716, 718, 10, 12, 2, 2, 717, 716, 3, 2, 2, 2, 718, 721, 3, 2, 2, 2, 719, 717, 3, 2, 2, 2, 719, 720, 3, 2, 2, 2, 720, 722, 3, 2, 2, 2, 721, 719, 3, 2, 2, 2, 722, 723, 8, 88, 3, 2, 723, 177, 3, 2, 2, 2, 724, 726, 7, 15, 2, 2, 725, 724, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 727, 3, 2, 2, 2, 727, 739, 7, 12, 2, 2, 728, 730, 7, 15, 2, 2, 729, 728, 3, 2, 2, 2, 730, 731, 3, 2, 2, 2, 731, 729, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 739, 3, 2, 2, 2, 733, 735, 7, 12, 2, 2, 734, 733, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 734, 3, 2, 2, 2, 736, 737, 3, 2, 2, 2, 737, 739, 3, 2, 2, 2, 738, 725, 3, 2, 2, 2, 738, 729, 3, 2, 2, 2, 738, 734, 3, 2, 2, 2, 739, 179, 3, 2, 2, 2, 740, 745, 10, 13, 2, 2, 741, 745, 5, 162, 81, 2, 742, 745, 5, 164, 82, 2, 743, 745, 5, 182, 91, 2, 744, 740, 3, 2, 2, 2, 744, 741, 3, 2, 2, 2, 744, 742, 3, 2, 2, 2, 744, 743, 3, 2, 2, 2, 745, 181, 3, 2, 2, 2, 746, 772, 7, 94, 2, 2, 747, 748, 7, 119, 2, 2, 748, 749, 5, 188, 94, 2, 749, 750, 5, 188, 94, 2, 750, 751, 5, 188, 94, 2, 751, 752, 5, 188, 94, 2, 752, 773, 3, 2, 2, 2, 753, 754, 7, 87, 2, 2, 754, 755, 5, 188, 94, 2, 755, 756, 5, 188, 94, 2, 756, 757, 5, 188, 94, 2, 757, 758, 5, 188, 94, 2, 758, 759, 5, 188, 94, 2, 759, 760, 5, 188, 94, 2, 760, 761, 5, 188, 94, 2, 761, 762, 5, 188, 94, 2, 762, 773, 3, 2, 2, 2, 763, 773, 9, 14, 2, 2, 764, 765, 5, 186, 93, 2, 765, 766, 5, 186, 93, 2, 766, 767, 5, 186, 93, 2, 767, 773, 3, 2, 2, 2, 768, 769, 7, 122, 2, 2, 769, 770, 5, 188, 94, 2, 770, 771, 5, 188, 94, 2, 771, 773, 3, 2, 2, 2, 772, 747, 3, 2, 2, 2, 772, 753, 3, 2, 2, 2, 772, 763, 3, 2, 2, 2, 772, 764, 3, 2, 2, 2, 772, 768, 3, 2, 2, 2, 773, 183, 3, 2, 2, 2, 774, 781, 9, 3, 2, 2, 775, 777, 7, 97, 2, 2, 776, 775, 3, 2, 2, 2, 776, 777, 3, 2, 2, 2, 777, 778, 3, 2, 2, 2, 778, 780, 9, 3, 2, 2, 779, 776, 3, 2, 2, 2, 780, 783, 3, 2, 2, 2, 781, 779, 3, 2, 2, 2, 781, 782, 3, 2, 2, 2, 782, 185, 3, 2, 2, 2, 783, 781, 3, 2, 2, 2, 784, 785, 9, 15, 2, 2, 785, 187, 3, 2, 2, 2, 786, 787, 9, 16, 2, 2, 787, 189, 3, 2, 2, 2, 788, 789, 9, 17, 2, 2, 789, 191, 3, 2, 2, 2, 790, 792, 9, 18, 2, 2, 791, 793, 9, 8, 2, 2, 792, 791, 3, 2, 2, 2, 792, 793, 3, 2, 2, 2, 793, 794, 3, 2, 2, 2, 794, 795, 5, 184, 92, 2, 795, 193, 3, 2, 2, 2, 796, 799, 5, 198, 99, 2, 797, 799, 7, 97, 2, 2, 798, 796, 3, 2, 2, 2, 798, 797, 3, 2, 2, 2, 799, 195, 3, 2, 2, 2, 800, 801, 9, 19, 2, 2, 801, 197, 3, 2, 2, 2, 802, 803, 9, 20, 2, 2, 803, 199, 3, 2, 2, 2, 804, 806, 9, 11, 2, 2, 805, 804, 3, 2, 2, 2, 806, 807, 3, 2, 2, 2, 807, 805, 3, 2, 2, 2, 807, 808, 3, 2, 2, 2, 808, 809, 3, 2, 2, 2, 809, 810, 8, 100, 3, 2, 810, 201, 3, 2, 2, 2, 811, 812, 7, 49, 2, 2, 812, 813, 7, 44, 2, 2, 813, 817, 3, 2, 2, 2, 814, 816, 10, 12, 2, 2, 815, 814, 3, 2, 2, 2, 816, 819, 3, 2, 2, 2, 817, 818, 3, 2, 2, 2, 817, 815, 3, 2, 2, 2, 818, 820, 3, 2, 2, 2, 819, 817, 3, 2, 2, 2, 820, 821, 7, 44, 2, 2, 821, 822, 7, 49, 2, 2, 822, 823, 3, 2, 2, 2, 823, 824, 8, 101, 3, 2, 824, 203, 3, 2, 2, 2, 825, 826, 7, 49, 2, 2, 826, 827, 7, 49, 2, 2, 827, 831, 3, 2, 2, 2, 828, 830, 10, 12, 2, 2, 829, 828, 3, 2, 2, 2, 830, 833, 3, 2, 2, 2, 831, 829, 3, 2, 2, 2, 831, 832, 3, 2, 2, 2, 832, 834, 3, 2, 2, 2, 833, 831, 3, 2, 2, 2, 834, 835, 8, 102, 3, 2, 835, 205, 3, 2, 2, 2, 836, 838, 9, 12, 2, 2, 837, 836, 3, 2, 2, 2, 838, 839, 3, 2, 2, 2, 839, 837, 3, 2, 2, 2, 839, 840, 3, 2, 2, 2, 840, 855, 3, 2, 2, 2, 841, 855, 7, 61, 2, 2, 842, 843, 7, 49, 2, 2, 843, 844, 7, 44, 2, 2, 844, 848, 3, 2, 2, 2, 845, 847, 11, 2, 2, 2, 846, 845, 3, 2, 2, 2, 847, 850, 3, 2, 2, 2, 848, 849, 3, 2, 2, 2, 848, 846, 3, 2, 2, 2, 849, 851, 3, 2, 2, 2, 850, 848, 3, 2, 2, 2, 851, 852, 7, 44, 2, 2, 852, 855, 7, 49, 2, 2, 853, 855, 7, 2, 2, 3, 854, 837, 3, 2, 2, 2, 854, 841, 3, 2, 2, 2, 854, 842, 3, 2, 2, 2, 854, 853, 3, 2, 2, 2, 855, 856, 3, 2, 2, 2, 856, 857, 8, 103, 4, 2, 857, 207, 3, 2, 2, 2, 858, 859, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2, 860, 861, 8, 104, 4, 2, 861, 862, 8, 104, 3, 2, 862, 209, 3, 2, 2, 2, 57, 2, 3, 381, 383, 490, 495, 498, 505, 510, 516, 519, 524, 531, 536, 542, 549, 552, 555, 560, 562, 570, 575, 579, 584, 587, 592, 597, 600, 604, 613, 622, 632, 666, 676, 678, 688, 698, 709, 719, 725, 731, 736, 738, 744, 772, 776, 781, 792, 798, 807, 817, 831, 839, 848, 854, 5, 4, 3, 2, 2, 3, 2, 4, 2, 2] \ No newline at end of file diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.java new file mode 100644 index 000000000..7d5362545 --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.java @@ -0,0 +1,604 @@ +package run.mone.antlr.golang;// Generated from GoLexer.g4 by ANTLR 4.7.1 +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class GoLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + BREAK=1, DEFAULT=2, FUNC=3, INTERFACE=4, SELECT=5, CASE=6, DEFER=7, GO=8, + MAP=9, STRUCT=10, CHAN=11, ELSE=12, GOTO=13, PACKAGE=14, SWITCH=15, CONST=16, + FALLTHROUGH=17, IF=18, RANGE=19, TYPE=20, CONTINUE=21, FOR=22, IMPORT=23, + RETURN=24, VAR=25, NIL_LIT=26, IDENTIFIER=27, L_PAREN=28, R_PAREN=29, + L_CURLY=30, R_CURLY=31, L_BRACKET=32, R_BRACKET=33, ASSIGN=34, COMMA=35, + SEMI=36, COLON=37, DOT=38, PLUS_PLUS=39, MINUS_MINUS=40, DECLARE_ASSIGN=41, + ELLIPSIS=42, LOGICAL_OR=43, LOGICAL_AND=44, EQUALS=45, NOT_EQUALS=46, + LESS=47, LESS_OR_EQUALS=48, GREATER=49, GREATER_OR_EQUALS=50, OR=51, DIV=52, + MOD=53, LSHIFT=54, RSHIFT=55, BIT_CLEAR=56, UNDERLYING=57, EXCLAMATION=58, + PLUS=59, MINUS=60, CARET=61, STAR=62, AMPERSAND=63, RECEIVE=64, DECIMAL_LIT=65, + BINARY_LIT=66, OCTAL_LIT=67, HEX_LIT=68, FLOAT_LIT=69, DECIMAL_FLOAT_LIT=70, + HEX_FLOAT_LIT=71, IMAGINARY_LIT=72, RUNE_LIT=73, BYTE_VALUE=74, OCTAL_BYTE_VALUE=75, + HEX_BYTE_VALUE=76, LITTLE_U_VALUE=77, BIG_U_VALUE=78, RAW_STRING_LIT=79, + INTERPRETED_STRING_LIT=80, WS=81, COMMENT=82, TERMINATOR=83, LINE_COMMENT=84, + NEWLINE=85, WS_NLSEMI=86, COMMENT_NLSEMI=87, LINE_COMMENT_NLSEMI=88, EOS=89, + OTHER=90; + public static final int + NLSEMI=1; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE", "NLSEMI" + }; + + public static final String[] ruleNames = { + "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", "GO", + "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", + "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", + "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", + "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT", "PLUS_PLUS", + "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR", "LOGICAL_AND", + "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", + "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR", "UNDERLYING", "EXCLAMATION", + "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", + "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", + "HEX_FLOAT_LIT", "HEX_MANTISSA", "HEX_EXPONENT", "IMAGINARY_LIT", "RUNE", + "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE", + "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT", + "TERMINATOR", "LINE_COMMENT", "NEWLINE", "UNICODE_VALUE", "ESCAPED_VALUE", + "DECIMALS", "OCTAL_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "EXPONENT", "LETTER", + "UNICODE_DIGIT", "UNICODE_LETTER", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", + "EOS", "OTHER" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'", + "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'", + "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'", + "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'", + null, "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", "':'", + "'.'", "'++'", "'--'", "':='", "'...'", "'||'", "'&&'", "'=='", "'!='", + "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", "'>>'", "'&^'", + "'~'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", + "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", + "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", + "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", + "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT", "PLUS_PLUS", + "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR", "LOGICAL_AND", + "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", + "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR", "UNDERLYING", "EXCLAMATION", + "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", + "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", + "HEX_FLOAT_LIT", "IMAGINARY_LIT", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", + "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", + "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT", "NEWLINE", "WS_NLSEMI", + "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", "EOS", "OTHER" + }; + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public GoLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "GoLexer.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\\\u035f\b\1\b\1\4"+ + "\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n"+ + "\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+ + "\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+ + "\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+ + " \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+ + "+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64"+ + "\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t"+ + "=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4"+ + "I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\t"+ + "T\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_"+ + "\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\3\2\3\2\3\2\3\2"+ + "\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3"+ + "\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7"+ + "\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3"+ + "\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r"+ + "\3\r\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17"+ + "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\22"+ + "\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23"+ + "\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\26"+ + "\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27"+ + "\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31"+ + "\3\31\3\31\3\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34"+ + "\3\34\7\34\u017e\n\34\f\34\16\34\u0181\13\34\3\34\3\34\3\35\3\35\3\36"+ + "\3\36\3\36\3\36\3\37\3\37\3 \3 \3 \3 \3!\3!\3\"\3\"\3\"\3\"\3#\3#\3$\3"+ + "$\3%\3%\3&\3&\3\'\3\'\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3*\3*\3*\3+\3+\3+"+ + "\3+\3,\3,\3,\3-\3-\3-\3.\3.\3.\3/\3/\3/\3\60\3\60\3\61\3\61\3\61\3\62"+ + "\3\62\3\63\3\63\3\63\3\64\3\64\3\65\3\65\3\66\3\66\3\67\3\67\3\67\38\3"+ + "8\38\39\39\39\3:\3:\3;\3;\3<\3<\3=\3=\3>\3>\3?\3?\3@\3@\3A\3A\3A\3B\3"+ + "B\3B\5B\u01eb\nB\3B\7B\u01ee\nB\fB\16B\u01f1\13B\5B\u01f3\nB\3B\3B\3C"+ + "\3C\3C\5C\u01fa\nC\3C\6C\u01fd\nC\rC\16C\u01fe\3C\3C\3D\3D\5D\u0205\n"+ + "D\3D\5D\u0208\nD\3D\6D\u020b\nD\rD\16D\u020c\3D\3D\3E\3E\3E\5E\u0214\n"+ + "E\3E\6E\u0217\nE\rE\16E\u0218\3E\3E\3F\3F\5F\u021f\nF\3F\3F\3G\3G\3G\5"+ + "G\u0226\nG\3G\5G\u0229\nG\3G\5G\u022c\nG\3G\3G\3G\5G\u0231\nG\5G\u0233"+ + "\nG\3H\3H\3H\3H\3H\3I\5I\u023b\nI\3I\6I\u023e\nI\rI\16I\u023f\3I\3I\5"+ + "I\u0244\nI\3I\7I\u0247\nI\fI\16I\u024a\13I\5I\u024c\nI\3I\3I\3I\5I\u0251"+ + "\nI\3I\7I\u0254\nI\fI\16I\u0257\13I\5I\u0259\nI\3J\3J\5J\u025d\nJ\3J\3"+ + "J\3K\3K\3K\3K\3K\5K\u0266\nK\3K\3K\3K\3K\3L\3L\3L\5L\u026f\nL\3L\3L\3"+ + "M\3M\3M\3M\3N\3N\5N\u0279\nN\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3Q\3Q\3Q\3"+ + "Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3S\3S\7S\u0299\nS\fS\16S\u029c"+ + "\13S\3S\3S\3S\3S\3T\3T\3T\7T\u02a5\nT\fT\16T\u02a8\13T\3T\3T\3T\3T\3U"+ + "\6U\u02af\nU\rU\16U\u02b0\3U\3U\3V\3V\3V\3V\7V\u02b9\nV\fV\16V\u02bc\13"+ + "V\3V\3V\3V\3V\3V\3W\6W\u02c4\nW\rW\16W\u02c5\3W\3W\3X\3X\3X\3X\7X\u02ce"+ + "\nX\fX\16X\u02d1\13X\3X\3X\3Y\5Y\u02d6\nY\3Y\3Y\6Y\u02da\nY\rY\16Y\u02db"+ + "\3Y\6Y\u02df\nY\rY\16Y\u02e0\5Y\u02e3\nY\3Z\3Z\3Z\3Z\5Z\u02e9\nZ\3[\3"+ + "[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3"+ + "[\3[\5[\u0305\n[\3\\\3\\\5\\\u0309\n\\\3\\\7\\\u030c\n\\\f\\\16\\\u030f"+ + "\13\\\3]\3]\3^\3^\3_\3_\3`\3`\5`\u0319\n`\3`\3`\3a\3a\5a\u031f\na\3b\3"+ + "b\3c\3c\3d\6d\u0326\nd\rd\16d\u0327\3d\3d\3e\3e\3e\3e\7e\u0330\ne\fe\16"+ + "e\u0333\13e\3e\3e\3e\3e\3e\3f\3f\3f\3f\7f\u033e\nf\ff\16f\u0341\13f\3"+ + "f\3f\3g\6g\u0346\ng\rg\16g\u0347\3g\3g\3g\3g\3g\7g\u034f\ng\fg\16g\u0352"+ + "\13g\3g\3g\3g\5g\u0357\ng\3g\3g\3h\3h\3h\3h\3h\5\u02ba\u0331\u0350\2i"+ + "\4\3\6\4\b\5\n\6\f\7\16\b\20\t\22\n\24\13\26\f\30\r\32\16\34\17\36\20"+ + " \21\"\22$\23&\24(\25*\26,\27.\30\60\31\62\32\64\33\66\348\35:\36<\37"+ + "> @!B\"D#F$H%J&L\'N(P)R*T+V,X-Z.\\/^\60`\61b\62d\63f\64h\65j\66l\67n8"+ + "p9r:t;v|?~@\u0080A\u0082B\u0084C\u0086D\u0088E\u008aF\u008cG\u008e"+ + "H\u0090I\u0092\2\u0094\2\u0096J\u0098\2\u009aK\u009cL\u009eM\u00a0N\u00a2"+ + "O\u00a4P\u00a6Q\u00a8R\u00aaS\u00acT\u00aeU\u00b0V\u00b2W\u00b4\2\u00b6"+ + "\2\u00b8\2\u00ba\2\u00bc\2\u00be\2\u00c0\2\u00c2\2\u00c4\2\u00c6\2\u00c8"+ + "X\u00caY\u00ccZ\u00ce[\u00d0\\\4\2\3\23\3\2\63;\3\2\62;\4\2DDdd\4\2QQ"+ + "qq\4\2ZZzz\4\2RRrr\4\2--//\3\2bb\4\2$$^^\4\2\13\13\"\"\4\2\f\f\17\17\5"+ + "\2\f\f\17\17))\13\2$$))^^cdhhppttvvxx\3\2\629\5\2\62;CHch\3\2\62\63\4"+ + "\2GGgg\48\2\62\2;\2\u0662\2\u066b\2\u06f2\2\u06fb\2\u07c2\2\u07cb\2\u0968"+ + "\2\u0971\2\u09e8\2\u09f1\2\u0a68\2\u0a71\2\u0ae8\2\u0af1\2\u0b68\2\u0b71"+ + "\2\u0be8\2\u0bf1\2\u0c68\2\u0c71\2\u0ce8\2\u0cf1\2\u0d68\2\u0d71\2\u0de8"+ + "\2\u0df1\2\u0e52\2\u0e5b\2\u0ed2\2\u0edb\2\u0f22\2\u0f2b\2\u1042\2\u104b"+ + "\2\u1092\2\u109b\2\u17e2\2\u17eb\2\u1812\2\u181b\2\u1948\2\u1951\2\u19d2"+ + "\2\u19db\2\u1a82\2\u1a8b\2\u1a92\2\u1a9b\2\u1b52\2\u1b5b\2\u1bb2\2\u1bbb"+ + "\2\u1c42\2\u1c4b\2\u1c52\2\u1c5b\2\ua622\2\ua62b\2\ua8d2\2\ua8db\2\ua902"+ + "\2\ua90b\2\ua9d2\2\ua9db\2\ua9f2\2\ua9fb\2\uaa52\2\uaa5b\2\uabf2\2\uabfb"+ + "\2\uff12\2\uff1b\2\u04a2\3\u04ab\3\u1068\3\u1071\3\u10f2\3\u10fb\3\u1138"+ + "\3\u1141\3\u11d2\3\u11db\3\u12f2\3\u12fb\3\u1452\3\u145b\3\u14d2\3\u14db"+ + "\3\u1652\3\u165b\3\u16c2\3\u16cb\3\u1732\3\u173b\3\u18e2\3\u18eb\3\u1c52"+ + "\3\u1c5b\3\u6a62\3\u6a6b\3\u6b52\3\u6b5b\3\ud7d0\3\ud801\3\ue952\3\ue95b"+ + "\3\u023d\2C\2\\\2c\2|\2\u00ac\2\u00ac\2\u00b7\2\u00b7\2\u00bc\2\u00bc"+ + "\2\u00c2\2\u00d8\2\u00da\2\u00f8\2\u00fa\2\u02c3\2\u02c8\2\u02d3\2\u02e2"+ + "\2\u02e6\2\u02ee\2\u02ee\2\u02f0\2\u02f0\2\u0372\2\u0376\2\u0378\2\u0379"+ + "\2\u037c\2\u037f\2\u0381\2\u0381\2\u0388\2\u0388\2\u038a\2\u038c\2\u038e"+ + "\2\u038e\2\u0390\2\u03a3\2\u03a5\2\u03f7\2\u03f9\2\u0483\2\u048c\2\u0531"+ + "\2\u0533\2\u0558\2\u055b\2\u055b\2\u0563\2\u0589\2\u05d2\2\u05ec\2\u05f2"+ + "\2\u05f4\2\u0622\2\u064c\2\u0670\2\u0671\2\u0673\2\u06d5\2\u06d7\2\u06d7"+ + "\2\u06e7\2\u06e8\2\u06f0\2\u06f1\2\u06fc\2\u06fe\2\u0701\2\u0701\2\u0712"+ + "\2\u0712\2\u0714\2\u0731\2\u074f\2\u07a7\2\u07b3\2\u07b3\2\u07cc\2\u07ec"+ + "\2\u07f6\2\u07f7\2\u07fc\2\u07fc\2\u0802\2\u0817\2\u081c\2\u081c\2\u0826"+ + "\2\u0826\2\u082a\2\u082a\2\u0842\2\u085a\2\u08a2\2\u08b6\2\u08b8\2\u08bf"+ + "\2\u0906\2\u093b\2\u093f\2\u093f\2\u0952\2\u0952\2\u095a\2\u0963\2\u0973"+ + "\2\u0982\2\u0987\2\u098e\2\u0991\2\u0992\2\u0995\2\u09aa\2\u09ac\2\u09b2"+ + "\2\u09b4\2\u09b4\2\u09b8\2\u09bb\2\u09bf\2\u09bf\2\u09d0\2\u09d0\2\u09de"+ + "\2\u09df\2\u09e1\2\u09e3\2\u09f2\2\u09f3\2\u0a07\2\u0a0c\2\u0a11\2\u0a12"+ + "\2\u0a15\2\u0a2a\2\u0a2c\2\u0a32\2\u0a34\2\u0a35\2\u0a37\2\u0a38\2\u0a3a"+ + "\2\u0a3b\2\u0a5b\2\u0a5e\2\u0a60\2\u0a60\2\u0a74\2\u0a76\2\u0a87\2\u0a8f"+ + "\2\u0a91\2\u0a93\2\u0a95\2\u0aaa\2\u0aac\2\u0ab2\2\u0ab4\2\u0ab5\2\u0ab7"+ + "\2\u0abb\2\u0abf\2\u0abf\2\u0ad2\2\u0ad2\2\u0ae2\2\u0ae3\2\u0afb\2\u0afb"+ + "\2\u0b07\2\u0b0e\2\u0b11\2\u0b12\2\u0b15\2\u0b2a\2\u0b2c\2\u0b32\2\u0b34"+ + "\2\u0b35\2\u0b37\2\u0b3b\2\u0b3f\2\u0b3f\2\u0b5e\2\u0b5f\2\u0b61\2\u0b63"+ + "\2\u0b73\2\u0b73\2\u0b85\2\u0b85\2\u0b87\2\u0b8c\2\u0b90\2\u0b92\2\u0b94"+ + "\2\u0b97\2\u0b9b\2\u0b9c\2\u0b9e\2\u0b9e\2\u0ba0\2\u0ba1\2\u0ba5\2\u0ba6"+ + "\2\u0baa\2\u0bac\2\u0bb0\2\u0bbb\2\u0bd2\2\u0bd2\2\u0c07\2\u0c0e\2\u0c10"+ + "\2\u0c12\2\u0c14\2\u0c2a\2\u0c2c\2\u0c3b\2\u0c3f\2\u0c3f\2\u0c5a\2\u0c5c"+ + "\2\u0c62\2\u0c63\2\u0c82\2\u0c82\2\u0c87\2\u0c8e\2\u0c90\2\u0c92\2\u0c94"+ + "\2\u0caa\2\u0cac\2\u0cb5\2\u0cb7\2\u0cbb\2\u0cbf\2\u0cbf\2\u0ce0\2\u0ce0"+ + "\2\u0ce2\2\u0ce3\2\u0cf3\2\u0cf4\2\u0d07\2\u0d0e\2\u0d10\2\u0d12\2\u0d14"+ + "\2\u0d3c\2\u0d3f\2\u0d3f\2\u0d50\2\u0d50\2\u0d56\2\u0d58\2\u0d61\2\u0d63"+ + "\2\u0d7c\2\u0d81\2\u0d87\2\u0d98\2\u0d9c\2\u0db3\2\u0db5\2\u0dbd\2\u0dbf"+ + "\2\u0dbf\2\u0dc2\2\u0dc8\2\u0e03\2\u0e32\2\u0e34\2\u0e35\2\u0e42\2\u0e48"+ + "\2\u0e83\2\u0e84\2\u0e86\2\u0e86\2\u0e89\2\u0e8a\2\u0e8c\2\u0e8c\2\u0e8f"+ + "\2\u0e8f\2\u0e96\2\u0e99\2\u0e9b\2\u0ea1\2\u0ea3\2\u0ea5\2\u0ea7\2\u0ea7"+ + "\2\u0ea9\2\u0ea9\2\u0eac\2\u0ead\2\u0eaf\2\u0eb2\2\u0eb4\2\u0eb5\2\u0ebf"+ + "\2\u0ebf\2\u0ec2\2\u0ec6\2\u0ec8\2\u0ec8\2\u0ede\2\u0ee1\2\u0f02\2\u0f02"+ + "\2\u0f42\2\u0f49\2\u0f4b\2\u0f6e\2\u0f8a\2\u0f8e\2\u1002\2\u102c\2\u1041"+ + "\2\u1041\2\u1052\2\u1057\2\u105c\2\u105f\2\u1063\2\u1063\2\u1067\2\u1068"+ + "\2\u1070\2\u1072\2\u1077\2\u1083\2\u1090\2\u1090\2\u10a2\2\u10c7\2\u10c9"+ + "\2\u10c9\2\u10cf\2\u10cf\2\u10d2\2\u10fc\2\u10fe\2\u124a\2\u124c\2\u124f"+ + "\2\u1252\2\u1258\2\u125a\2\u125a\2\u125c\2\u125f\2\u1262\2\u128a\2\u128c"+ + "\2\u128f\2\u1292\2\u12b2\2\u12b4\2\u12b7\2\u12ba\2\u12c0\2\u12c2\2\u12c2"+ + "\2\u12c4\2\u12c7\2\u12ca\2\u12d8\2\u12da\2\u1312\2\u1314\2\u1317\2\u131a"+ + "\2\u135c\2\u1382\2\u1391\2\u13a2\2\u13f7\2\u13fa\2\u13ff\2\u1403\2\u166e"+ + "\2\u1671\2\u1681\2\u1683\2\u169c\2\u16a2\2\u16ec\2\u16f3\2\u16fa\2\u1702"+ + "\2\u170e\2\u1710\2\u1713\2\u1722\2\u1733\2\u1742\2\u1753\2\u1762\2\u176e"+ + "\2\u1770\2\u1772\2\u1782\2\u17b5\2\u17d9\2\u17d9\2\u17de\2\u17de\2\u1822"+ + "\2\u1879\2\u1882\2\u1886\2\u1889\2\u18aa\2\u18ac\2\u18ac\2\u18b2\2\u18f7"+ + "\2\u1902\2\u1920\2\u1952\2\u196f\2\u1972\2\u1976\2\u1982\2\u19ad\2\u19b2"+ + "\2\u19cb\2\u1a02\2\u1a18\2\u1a22\2\u1a56\2\u1aa9\2\u1aa9\2\u1b07\2\u1b35"+ + "\2\u1b47\2\u1b4d\2\u1b85\2\u1ba2\2\u1bb0\2\u1bb1\2\u1bbc\2\u1be7\2\u1c02"+ + "\2\u1c25\2\u1c4f\2\u1c51\2\u1c5c\2\u1c7f\2\u1c82\2\u1c8a\2\u1ceb\2\u1cee"+ + "\2\u1cf0\2\u1cf3\2\u1cf7\2\u1cf8\2\u1d02\2\u1dc1\2\u1e02\2\u1f17\2\u1f1a"+ + "\2\u1f1f\2\u1f22\2\u1f47\2\u1f4a\2\u1f4f\2\u1f52\2\u1f59\2\u1f5b\2\u1f5b"+ + "\2\u1f5d\2\u1f5d\2\u1f5f\2\u1f5f\2\u1f61\2\u1f7f\2\u1f82\2\u1fb6\2\u1fb8"+ + "\2\u1fbe\2\u1fc0\2\u1fc0\2\u1fc4\2\u1fc6\2\u1fc8\2\u1fce\2\u1fd2\2\u1fd5"+ + "\2\u1fd8\2\u1fdd\2\u1fe2\2\u1fee\2\u1ff4\2\u1ff6\2\u1ff8\2\u1ffe\2\u2073"+ + "\2\u2073\2\u2081\2\u2081\2\u2092\2\u209e\2\u2104\2\u2104\2\u2109\2\u2109"+ + "\2\u210c\2\u2115\2\u2117\2\u2117\2\u211b\2\u211f\2\u2126\2\u2126\2\u2128"+ + "\2\u2128\2\u212a\2\u212a\2\u212c\2\u212f\2\u2131\2\u213b\2\u213e\2\u2141"+ + "\2\u2147\2\u214b\2\u2150\2\u2150\2\u2185\2\u2186\2\u2c02\2\u2c30\2\u2c32"+ + "\2\u2c60\2\u2c62\2\u2ce6\2\u2ced\2\u2cf0\2\u2cf4\2\u2cf5\2\u2d02\2\u2d27"+ + "\2\u2d29\2\u2d29\2\u2d2f\2\u2d2f\2\u2d32\2\u2d69\2\u2d71\2\u2d71\2\u2d82"+ + "\2\u2d98\2\u2da2\2\u2da8\2\u2daa\2\u2db0\2\u2db2\2\u2db8\2\u2dba\2\u2dc0"+ + "\2\u2dc2\2\u2dc8\2\u2dca\2\u2dd0\2\u2dd2\2\u2dd8\2\u2dda\2\u2de0\2\u2e31"+ + "\2\u2e31\2\u3007\2\u3008\2\u3033\2\u3037\2\u303d\2\u303e\2\u3043\2\u3098"+ + "\2\u309f\2\u30a1\2\u30a3\2\u30fc\2\u30fe\2\u3101\2\u3107\2\u312f\2\u3133"+ + "\2\u3190\2\u31a2\2\u31bc\2\u31f2\2\u3201\2\u3402\2\u4db7\2\u4e02\2\u9fd7"+ + "\2\ua002\2\ua48e\2\ua4d2\2\ua4ff\2\ua502\2\ua60e\2\ua612\2\ua621\2\ua62c"+ + "\2\ua62d\2\ua642\2\ua670\2\ua681\2\ua69f\2\ua6a2\2\ua6e7\2\ua719\2\ua721"+ + "\2\ua724\2\ua78a\2\ua78d\2\ua7b0\2\ua7b2\2\ua7b9\2\ua7f9\2\ua803\2\ua805"+ + "\2\ua807\2\ua809\2\ua80c\2\ua80e\2\ua824\2\ua842\2\ua875\2\ua884\2\ua8b5"+ + "\2\ua8f4\2\ua8f9\2\ua8fd\2\ua8fd\2\ua8ff\2\ua8ff\2\ua90c\2\ua927\2\ua932"+ + "\2\ua948\2\ua962\2\ua97e\2\ua986\2\ua9b4\2\ua9d1\2\ua9d1\2\ua9e2\2\ua9e6"+ + "\2\ua9e8\2\ua9f1\2\ua9fc\2\uaa00\2\uaa02\2\uaa2a\2\uaa42\2\uaa44\2\uaa46"+ + "\2\uaa4d\2\uaa62\2\uaa78\2\uaa7c\2\uaa7c\2\uaa80\2\uaab1\2\uaab3\2\uaab3"+ + "\2\uaab7\2\uaab8\2\uaabb\2\uaabf\2\uaac2\2\uaac2\2\uaac4\2\uaac4\2\uaadd"+ + "\2\uaadf\2\uaae2\2\uaaec\2\uaaf4\2\uaaf6\2\uab03\2\uab08\2\uab0b\2\uab10"+ + "\2\uab13\2\uab18\2\uab22\2\uab28\2\uab2a\2\uab30\2\uab32\2\uab5c\2\uab5e"+ + "\2\uab67\2\uab72\2\uabe4\2\uac02\2\ud7a5\2\ud7b2\2\ud7c8\2\ud7cd\2\ud7fd"+ + "\2\uf902\2\ufa6f\2\ufa72\2\ufadb\2\ufb02\2\ufb08\2\ufb15\2\ufb19\2\ufb1f"+ + "\2\ufb1f\2\ufb21\2\ufb2a\2\ufb2c\2\ufb38\2\ufb3a\2\ufb3e\2\ufb40\2\ufb40"+ + "\2\ufb42\2\ufb43\2\ufb45\2\ufb46\2\ufb48\2\ufbb3\2\ufbd5\2\ufd3f\2\ufd52"+ + "\2\ufd91\2\ufd94\2\ufdc9\2\ufdf2\2\ufdfd\2\ufe72\2\ufe76\2\ufe78\2\ufefe"+ + "\2\uff23\2\uff3c\2\uff43\2\uff5c\2\uff68\2\uffc0\2\uffc4\2\uffc9\2\uffcc"+ + "\2\uffd1\2\uffd4\2\uffd9\2\uffdc\2\uffde\2\2\3\r\3\17\3(\3*\3<\3>\3?\3"+ + "A\3O\3R\3_\3\u0082\3\u00fc\3\u0282\3\u029e\3\u02a2\3\u02d2\3\u0302\3\u0321"+ + "\3\u0332\3\u0342\3\u0344\3\u034b\3\u0352\3\u0377\3\u0382\3\u039f\3\u03a2"+ + "\3\u03c5\3\u03ca\3\u03d1\3\u0402\3\u049f\3\u04b2\3\u04d5\3\u04da\3\u04fd"+ + "\3\u0502\3\u0529\3\u0532\3\u0565\3\u0602\3\u0738\3\u0742\3\u0757\3\u0762"+ + "\3\u0769\3\u0802\3\u0807\3\u080a\3\u080a\3\u080c\3\u0837\3\u0839\3\u083a"+ + "\3\u083e\3\u083e\3\u0841\3\u0857\3\u0862\3\u0878\3\u0882\3\u08a0\3\u08e2"+ + "\3\u08f4\3\u08f6\3\u08f7\3\u0902\3\u0917\3\u0922\3\u093b\3\u0982\3\u09b9"+ + "\3\u09c0\3\u09c1\3\u0a02\3\u0a02\3\u0a12\3\u0a15\3\u0a17\3\u0a19\3\u0a1b"+ + "\3\u0a35\3\u0a62\3\u0a7e\3\u0a82\3\u0a9e\3\u0ac2\3\u0ac9\3\u0acb\3\u0ae6"+ + "\3\u0b02\3\u0b37\3\u0b42\3\u0b57\3\u0b62\3\u0b74\3\u0b82\3\u0b93\3\u0c02"+ + "\3\u0c4a\3\u0c82\3\u0cb4\3\u0cc2\3\u0cf4\3\u1005\3\u1039\3\u1085\3\u10b1"+ + "\3\u10d2\3\u10ea\3\u1105\3\u1128\3\u1152\3\u1174\3\u1178\3\u1178\3\u1185"+ + "\3\u11b4\3\u11c3\3\u11c6\3\u11dc\3\u11dc\3\u11de\3\u11de\3\u1202\3\u1213"+ + "\3\u1215\3\u122d\3\u1282\3\u1288\3\u128a\3\u128a\3\u128c\3\u128f\3\u1291"+ + "\3\u129f\3\u12a1\3\u12aa\3\u12b2\3\u12e0\3\u1307\3\u130e\3\u1311\3\u1312"+ + "\3\u1315\3\u132a\3\u132c\3\u1332\3\u1334\3\u1335\3\u1337\3\u133b\3\u133f"+ + "\3\u133f\3\u1352\3\u1352\3\u135f\3\u1363\3\u1402\3\u1436\3\u1449\3\u144c"+ + "\3\u1482\3\u14b1\3\u14c6\3\u14c7\3\u14c9\3\u14c9\3\u1582\3\u15b0\3\u15da"+ + "\3\u15dd\3\u1602\3\u1631\3\u1646\3\u1646\3\u1682\3\u16ac\3\u1702\3\u171b"+ + "\3\u18a2\3\u18e1\3\u1901\3\u1901\3\u1ac2\3\u1afa\3\u1c02\3\u1c0a\3\u1c0c"+ + "\3\u1c30\3\u1c42\3\u1c42\3\u1c74\3\u1c91\3\u2002\3\u239b\3\u2482\3\u2545"+ + "\3\u3002\3\u3430\3\u4402\3\u4648\3\u6802\3\u6a3a\3\u6a42\3\u6a60\3\u6ad2"+ + "\3\u6aef\3\u6b02\3\u6b31\3\u6b42\3\u6b45\3\u6b65\3\u6b79\3\u6b7f\3\u6b91"+ + "\3\u6f02\3\u6f46\3\u6f52\3\u6f52\3\u6f95\3\u6fa1\3\u6fe2\3\u6fe2\3\u7002"+ + "\3\u87ee\3\u8802\3\u8af4\3\ub002\3\ub003\3\ubc02\3\ubc6c\3\ubc72\3\ubc7e"+ + "\3\ubc82\3\ubc8a\3\ubc92\3\ubc9b\3\ud402\3\ud456\3\ud458\3\ud49e\3\ud4a0"+ + "\3\ud4a1\3\ud4a4\3\ud4a4\3\ud4a7\3\ud4a8\3\ud4ab\3\ud4ae\3\ud4b0\3\ud4bb"+ + "\3\ud4bd\3\ud4bd\3\ud4bf\3\ud4c5\3\ud4c7\3\ud507\3\ud509\3\ud50c\3\ud50f"+ + "\3\ud516\3\ud518\3\ud51e\3\ud520\3\ud53b\3\ud53d\3\ud540\3\ud542\3\ud546"+ + "\3\ud548\3\ud548\3\ud54c\3\ud552\3\ud554\3\ud6a7\3\ud6aa\3\ud6c2\3\ud6c4"+ + "\3\ud6dc\3\ud6de\3\ud6fc\3\ud6fe\3\ud716\3\ud718\3\ud736\3\ud738\3\ud750"+ + "\3\ud752\3\ud770\3\ud772\3\ud78a\3\ud78c\3\ud7aa\3\ud7ac\3\ud7c4\3\ud7c6"+ + "\3\ud7cd\3\ue802\3\ue8c6\3\ue902\3\ue945\3\uee02\3\uee05\3\uee07\3\uee21"+ + "\3\uee23\3\uee24\3\uee26\3\uee26\3\uee29\3\uee29\3\uee2b\3\uee34\3\uee36"+ + "\3\uee39\3\uee3b\3\uee3b\3\uee3d\3\uee3d\3\uee44\3\uee44\3\uee49\3\uee49"+ + "\3\uee4b\3\uee4b\3\uee4d\3\uee4d\3\uee4f\3\uee51\3\uee53\3\uee54\3\uee56"+ + "\3\uee56\3\uee59\3\uee59\3\uee5b\3\uee5b\3\uee5d\3\uee5d\3\uee5f\3\uee5f"+ + "\3\uee61\3\uee61\3\uee63\3\uee64\3\uee66\3\uee66\3\uee69\3\uee6c\3\uee6e"+ + "\3\uee74\3\uee76\3\uee79\3\uee7b\3\uee7e\3\uee80\3\uee80\3\uee82\3\uee8b"+ + "\3\uee8d\3\uee9d\3\ueea3\3\ueea5\3\ueea7\3\ueeab\3\ueead\3\ueebd\3\2\4"+ + "\ua6d8\4\ua702\4\ub736\4\ub742\4\ub81f\4\ub822\4\ucea3\4\uf802\4\ufa1f"+ + "\4\u0390\2\4\3\2\2\2\2\6\3\2\2\2\2\b\3\2\2\2\2\n\3\2\2\2\2\f\3\2\2\2\2"+ + "\16\3\2\2\2\2\20\3\2\2\2\2\22\3\2\2\2\2\24\3\2\2\2\2\26\3\2\2\2\2\30\3"+ + "\2\2\2\2\32\3\2\2\2\2\34\3\2\2\2\2\36\3\2\2\2\2 \3\2\2\2\2\"\3\2\2\2\2"+ + "$\3\2\2\2\2&\3\2\2\2\2(\3\2\2\2\2*\3\2\2\2\2,\3\2\2\2\2.\3\2\2\2\2\60"+ + "\3\2\2\2\2\62\3\2\2\2\2\64\3\2\2\2\2\66\3\2\2\2\28\3\2\2\2\2:\3\2\2\2"+ + "\2<\3\2\2\2\2>\3\2\2\2\2@\3\2\2\2\2B\3\2\2\2\2D\3\2\2\2\2F\3\2\2\2\2H"+ + "\3\2\2\2\2J\3\2\2\2\2L\3\2\2\2\2N\3\2\2\2\2P\3\2\2\2\2R\3\2\2\2\2T\3\2"+ + "\2\2\2V\3\2\2\2\2X\3\2\2\2\2Z\3\2\2\2\2\\\3\2\2\2\2^\3\2\2\2\2`\3\2\2"+ + "\2\2b\3\2\2\2\2d\3\2\2\2\2f\3\2\2\2\2h\3\2\2\2\2j\3\2\2\2\2l\3\2\2\2\2"+ + "n\3\2\2\2\2p\3\2\2\2\2r\3\2\2\2\2t\3\2\2\2\2v\3\2\2\2\2x\3\2\2\2\2z\3"+ + "\2\2\2\2|\3\2\2\2\2~\3\2\2\2\2\u0080\3\2\2\2\2\u0082\3\2\2\2\2\u0084\3"+ + "\2\2\2\2\u0086\3\2\2\2\2\u0088\3\2\2\2\2\u008a\3\2\2\2\2\u008c\3\2\2\2"+ + "\2\u008e\3\2\2\2\2\u0090\3\2\2\2\2\u0096\3\2\2\2\2\u009a\3\2\2\2\2\u009c"+ + "\3\2\2\2\2\u009e\3\2\2\2\2\u00a0\3\2\2\2\2\u00a2\3\2\2\2\2\u00a4\3\2\2"+ + "\2\2\u00a6\3\2\2\2\2\u00a8\3\2\2\2\2\u00aa\3\2\2\2\2\u00ac\3\2\2\2\2\u00ae"+ + "\3\2\2\2\2\u00b0\3\2\2\2\2\u00b2\3\2\2\2\3\u00c8\3\2\2\2\3\u00ca\3\2\2"+ + "\2\3\u00cc\3\2\2\2\3\u00ce\3\2\2\2\3\u00d0\3\2\2\2\4\u00d2\3\2\2\2\6\u00da"+ + "\3\2\2\2\b\u00e2\3\2\2\2\n\u00e7\3\2\2\2\f\u00f1\3\2\2\2\16\u00f8\3\2"+ + "\2\2\20\u00fd\3\2\2\2\22\u0103\3\2\2\2\24\u0106\3\2\2\2\26\u010a\3\2\2"+ + "\2\30\u0111\3\2\2\2\32\u0116\3\2\2\2\34\u011b\3\2\2\2\36\u0120\3\2\2\2"+ + " \u0128\3\2\2\2\"\u012f\3\2\2\2$\u0135\3\2\2\2&\u0143\3\2\2\2(\u0146\3"+ + "\2\2\2*\u014c\3\2\2\2,\u0151\3\2\2\2.\u015c\3\2\2\2\60\u0160\3\2\2\2\62"+ + "\u0167\3\2\2\2\64\u0170\3\2\2\2\66\u0174\3\2\2\28\u017a\3\2\2\2:\u0184"+ + "\3\2\2\2<\u0186\3\2\2\2>\u018a\3\2\2\2@\u018c\3\2\2\2B\u0190\3\2\2\2D"+ + "\u0192\3\2\2\2F\u0196\3\2\2\2H\u0198\3\2\2\2J\u019a\3\2\2\2L\u019c\3\2"+ + "\2\2N\u019e\3\2\2\2P\u01a0\3\2\2\2R\u01a5\3\2\2\2T\u01aa\3\2\2\2V\u01ad"+ + "\3\2\2\2X\u01b1\3\2\2\2Z\u01b4\3\2\2\2\\\u01b7\3\2\2\2^\u01ba\3\2\2\2"+ + "`\u01bd\3\2\2\2b\u01bf\3\2\2\2d\u01c2\3\2\2\2f\u01c4\3\2\2\2h\u01c7\3"+ + "\2\2\2j\u01c9\3\2\2\2l\u01cb\3\2\2\2n\u01cd\3\2\2\2p\u01d0\3\2\2\2r\u01d3"+ + "\3\2\2\2t\u01d6\3\2\2\2v\u01d8\3\2\2\2x\u01da\3\2\2\2z\u01dc\3\2\2\2|"+ + "\u01de\3\2\2\2~\u01e0\3\2\2\2\u0080\u01e2\3\2\2\2\u0082\u01e4\3\2\2\2"+ + "\u0084\u01f2\3\2\2\2\u0086\u01f6\3\2\2\2\u0088\u0202\3\2\2\2\u008a\u0210"+ + "\3\2\2\2\u008c\u021e\3\2\2\2\u008e\u0232\3\2\2\2\u0090\u0234\3\2\2\2\u0092"+ + "\u0258\3\2\2\2\u0094\u025a\3\2\2\2\u0096\u0265\3\2\2\2\u0098\u026b\3\2"+ + "\2\2\u009a\u0272\3\2\2\2\u009c\u0278\3\2\2\2\u009e\u027a\3\2\2\2\u00a0"+ + "\u027f\3\2\2\2\u00a2\u0284\3\2\2\2\u00a4\u028b\3\2\2\2\u00a6\u0296\3\2"+ + "\2\2\u00a8\u02a1\3\2\2\2\u00aa\u02ae\3\2\2\2\u00ac\u02b4\3\2\2\2\u00ae"+ + "\u02c3\3\2\2\2\u00b0\u02c9\3\2\2\2\u00b2\u02e2\3\2\2\2\u00b4\u02e8\3\2"+ + "\2\2\u00b6\u02ea\3\2\2\2\u00b8\u0306\3\2\2\2\u00ba\u0310\3\2\2\2\u00bc"+ + "\u0312\3\2\2\2\u00be\u0314\3\2\2\2\u00c0\u0316\3\2\2\2\u00c2\u031e\3\2"+ + "\2\2\u00c4\u0320\3\2\2\2\u00c6\u0322\3\2\2\2\u00c8\u0325\3\2\2\2\u00ca"+ + "\u032b\3\2\2\2\u00cc\u0339\3\2\2\2\u00ce\u0356\3\2\2\2\u00d0\u035a\3\2"+ + "\2\2\u00d2\u00d3\7d\2\2\u00d3\u00d4\7t\2\2\u00d4\u00d5\7g\2\2\u00d5\u00d6"+ + "\7c\2\2\u00d6\u00d7\7m\2\2\u00d7\u00d8\3\2\2\2\u00d8\u00d9\b\2\2\2\u00d9"+ + "\5\3\2\2\2\u00da\u00db\7f\2\2\u00db\u00dc\7g\2\2\u00dc\u00dd\7h\2\2\u00dd"+ + "\u00de\7c\2\2\u00de\u00df\7w\2\2\u00df\u00e0\7n\2\2\u00e0\u00e1\7v\2\2"+ + "\u00e1\7\3\2\2\2\u00e2\u00e3\7h\2\2\u00e3\u00e4\7w\2\2\u00e4\u00e5\7p"+ + "\2\2\u00e5\u00e6\7e\2\2\u00e6\t\3\2\2\2\u00e7\u00e8\7k\2\2\u00e8\u00e9"+ + "\7p\2\2\u00e9\u00ea\7v\2\2\u00ea\u00eb\7g\2\2\u00eb\u00ec\7t\2\2\u00ec"+ + "\u00ed\7h\2\2\u00ed\u00ee\7c\2\2\u00ee\u00ef\7e\2\2\u00ef\u00f0\7g\2\2"+ + "\u00f0\13\3\2\2\2\u00f1\u00f2\7u\2\2\u00f2\u00f3\7g\2\2\u00f3\u00f4\7"+ + "n\2\2\u00f4\u00f5\7g\2\2\u00f5\u00f6\7e\2\2\u00f6\u00f7\7v\2\2\u00f7\r"+ + "\3\2\2\2\u00f8\u00f9\7e\2\2\u00f9\u00fa\7c\2\2\u00fa\u00fb\7u\2\2\u00fb"+ + "\u00fc\7g\2\2\u00fc\17\3\2\2\2\u00fd\u00fe\7f\2\2\u00fe\u00ff\7g\2\2\u00ff"+ + "\u0100\7h\2\2\u0100\u0101\7g\2\2\u0101\u0102\7t\2\2\u0102\21\3\2\2\2\u0103"+ + "\u0104\7i\2\2\u0104\u0105\7q\2\2\u0105\23\3\2\2\2\u0106\u0107\7o\2\2\u0107"+ + "\u0108\7c\2\2\u0108\u0109\7r\2\2\u0109\25\3\2\2\2\u010a\u010b\7u\2\2\u010b"+ + "\u010c\7v\2\2\u010c\u010d\7t\2\2\u010d\u010e\7w\2\2\u010e\u010f\7e\2\2"+ + "\u010f\u0110\7v\2\2\u0110\27\3\2\2\2\u0111\u0112\7e\2\2\u0112\u0113\7"+ + "j\2\2\u0113\u0114\7c\2\2\u0114\u0115\7p\2\2\u0115\31\3\2\2\2\u0116\u0117"+ + "\7g\2\2\u0117\u0118\7n\2\2\u0118\u0119\7u\2\2\u0119\u011a\7g\2\2\u011a"+ + "\33\3\2\2\2\u011b\u011c\7i\2\2\u011c\u011d\7q\2\2\u011d\u011e\7v\2\2\u011e"+ + "\u011f\7q\2\2\u011f\35\3\2\2\2\u0120\u0121\7r\2\2\u0121\u0122\7c\2\2\u0122"+ + "\u0123\7e\2\2\u0123\u0124\7m\2\2\u0124\u0125\7c\2\2\u0125\u0126\7i\2\2"+ + "\u0126\u0127\7g\2\2\u0127\37\3\2\2\2\u0128\u0129\7u\2\2\u0129\u012a\7"+ + "y\2\2\u012a\u012b\7k\2\2\u012b\u012c\7v\2\2\u012c\u012d\7e\2\2\u012d\u012e"+ + "\7j\2\2\u012e!\3\2\2\2\u012f\u0130\7e\2\2\u0130\u0131\7q\2\2\u0131\u0132"+ + "\7p\2\2\u0132\u0133\7u\2\2\u0133\u0134\7v\2\2\u0134#\3\2\2\2\u0135\u0136"+ + "\7h\2\2\u0136\u0137\7c\2\2\u0137\u0138\7n\2\2\u0138\u0139\7n\2\2\u0139"+ + "\u013a\7v\2\2\u013a\u013b\7j\2\2\u013b\u013c\7t\2\2\u013c\u013d\7q\2\2"+ + "\u013d\u013e\7w\2\2\u013e\u013f\7i\2\2\u013f\u0140\7j\2\2\u0140\u0141"+ + "\3\2\2\2\u0141\u0142\b\22\2\2\u0142%\3\2\2\2\u0143\u0144\7k\2\2\u0144"+ + "\u0145\7h\2\2\u0145\'\3\2\2\2\u0146\u0147\7t\2\2\u0147\u0148\7c\2\2\u0148"+ + "\u0149\7p\2\2\u0149\u014a\7i\2\2\u014a\u014b\7g\2\2\u014b)\3\2\2\2\u014c"+ + "\u014d\7v\2\2\u014d\u014e\7{\2\2\u014e\u014f\7r\2\2\u014f\u0150\7g\2\2"+ + "\u0150+\3\2\2\2\u0151\u0152\7e\2\2\u0152\u0153\7q\2\2\u0153\u0154\7p\2"+ + "\2\u0154\u0155\7v\2\2\u0155\u0156\7k\2\2\u0156\u0157\7p\2\2\u0157\u0158"+ + "\7w\2\2\u0158\u0159\7g\2\2\u0159\u015a\3\2\2\2\u015a\u015b\b\26\2\2\u015b"+ + "-\3\2\2\2\u015c\u015d\7h\2\2\u015d\u015e\7q\2\2\u015e\u015f\7t\2\2\u015f"+ + "/\3\2\2\2\u0160\u0161\7k\2\2\u0161\u0162\7o\2\2\u0162\u0163\7r\2\2\u0163"+ + "\u0164\7q\2\2\u0164\u0165\7t\2\2\u0165\u0166\7v\2\2\u0166\61\3\2\2\2\u0167"+ + "\u0168\7t\2\2\u0168\u0169\7g\2\2\u0169\u016a\7v\2\2\u016a\u016b\7w\2\2"+ + "\u016b\u016c\7t\2\2\u016c\u016d\7p\2\2\u016d\u016e\3\2\2\2\u016e\u016f"+ + "\b\31\2\2\u016f\63\3\2\2\2\u0170\u0171\7x\2\2\u0171\u0172\7c\2\2\u0172"+ + "\u0173\7t\2\2\u0173\65\3\2\2\2\u0174\u0175\7p\2\2\u0175\u0176\7k\2\2\u0176"+ + "\u0177\7n\2\2\u0177\u0178\3\2\2\2\u0178\u0179\b\33\2\2\u0179\67\3\2\2"+ + "\2\u017a\u017f\5\u00c2a\2\u017b\u017e\5\u00c2a\2\u017c\u017e\5\u00c4b"+ + "\2\u017d\u017b\3\2\2\2\u017d\u017c\3\2\2\2\u017e\u0181\3\2\2\2\u017f\u017d"+ + "\3\2\2\2\u017f\u0180\3\2\2\2\u0180\u0182\3\2\2\2\u0181\u017f\3\2\2\2\u0182"+ + "\u0183\b\34\2\2\u01839\3\2\2\2\u0184\u0185\7*\2\2\u0185;\3\2\2\2\u0186"+ + "\u0187\7+\2\2\u0187\u0188\3\2\2\2\u0188\u0189\b\36\2\2\u0189=\3\2\2\2"+ + "\u018a\u018b\7}\2\2\u018b?\3\2\2\2\u018c\u018d\7\177\2\2\u018d\u018e\3"+ + "\2\2\2\u018e\u018f\b \2\2\u018fA\3\2\2\2\u0190\u0191\7]\2\2\u0191C\3\2"+ + "\2\2\u0192\u0193\7_\2\2\u0193\u0194\3\2\2\2\u0194\u0195\b\"\2\2\u0195"+ + "E\3\2\2\2\u0196\u0197\7?\2\2\u0197G\3\2\2\2\u0198\u0199\7.\2\2\u0199I"+ + "\3\2\2\2\u019a\u019b\7=\2\2\u019bK\3\2\2\2\u019c\u019d\7<\2\2\u019dM\3"+ + "\2\2\2\u019e\u019f\7\60\2\2\u019fO\3\2\2\2\u01a0\u01a1\7-\2\2\u01a1\u01a2"+ + "\7-\2\2\u01a2\u01a3\3\2\2\2\u01a3\u01a4\b(\2\2\u01a4Q\3\2\2\2\u01a5\u01a6"+ + "\7/\2\2\u01a6\u01a7\7/\2\2\u01a7\u01a8\3\2\2\2\u01a8\u01a9\b)\2\2\u01a9"+ + "S\3\2\2\2\u01aa\u01ab\7<\2\2\u01ab\u01ac\7?\2\2\u01acU\3\2\2\2\u01ad\u01ae"+ + "\7\60\2\2\u01ae\u01af\7\60\2\2\u01af\u01b0\7\60\2\2\u01b0W\3\2\2\2\u01b1"+ + "\u01b2\7~\2\2\u01b2\u01b3\7~\2\2\u01b3Y\3\2\2\2\u01b4\u01b5\7(\2\2\u01b5"+ + "\u01b6\7(\2\2\u01b6[\3\2\2\2\u01b7\u01b8\7?\2\2\u01b8\u01b9\7?\2\2\u01b9"+ + "]\3\2\2\2\u01ba\u01bb\7#\2\2\u01bb\u01bc\7?\2\2\u01bc_\3\2\2\2\u01bd\u01be"+ + "\7>\2\2\u01bea\3\2\2\2\u01bf\u01c0\7>\2\2\u01c0\u01c1\7?\2\2\u01c1c\3"+ + "\2\2\2\u01c2\u01c3\7@\2\2\u01c3e\3\2\2\2\u01c4\u01c5\7@\2\2\u01c5\u01c6"+ + "\7?\2\2\u01c6g\3\2\2\2\u01c7\u01c8\7~\2\2\u01c8i\3\2\2\2\u01c9\u01ca\7"+ + "\61\2\2\u01cak\3\2\2\2\u01cb\u01cc\7\'\2\2\u01ccm\3\2\2\2\u01cd\u01ce"+ + "\7>\2\2\u01ce\u01cf\7>\2\2\u01cfo\3\2\2\2\u01d0\u01d1\7@\2\2\u01d1\u01d2"+ + "\7@\2\2\u01d2q\3\2\2\2\u01d3\u01d4\7(\2\2\u01d4\u01d5\7`\2\2\u01d5s\3"+ + "\2\2\2\u01d6\u01d7\7\u0080\2\2\u01d7u\3\2\2\2\u01d8\u01d9\7#\2\2\u01d9"+ + "w\3\2\2\2\u01da\u01db\7-\2\2\u01dby\3\2\2\2\u01dc\u01dd\7/\2\2\u01dd{"+ + "\3\2\2\2\u01de\u01df\7`\2\2\u01df}\3\2\2\2\u01e0\u01e1\7,\2\2\u01e1\177"+ + "\3\2\2\2\u01e2\u01e3\7(\2\2\u01e3\u0081\3\2\2\2\u01e4\u01e5\7>\2\2\u01e5"+ + "\u01e6\7/\2\2\u01e6\u0083\3\2\2\2\u01e7\u01f3\7\62\2\2\u01e8\u01ef\t\2"+ + "\2\2\u01e9\u01eb\7a\2\2\u01ea\u01e9\3\2\2\2\u01ea\u01eb\3\2\2\2\u01eb"+ + "\u01ec\3\2\2\2\u01ec\u01ee\t\3\2\2\u01ed\u01ea\3\2\2\2\u01ee\u01f1\3\2"+ + "\2\2\u01ef\u01ed\3\2\2\2\u01ef\u01f0\3\2\2\2\u01f0\u01f3\3\2\2\2\u01f1"+ + "\u01ef\3\2\2\2\u01f2\u01e7\3\2\2\2\u01f2\u01e8\3\2\2\2\u01f3\u01f4\3\2"+ + "\2\2\u01f4\u01f5\bB\2\2\u01f5\u0085\3\2\2\2\u01f6\u01f7\7\62\2\2\u01f7"+ + "\u01fc\t\4\2\2\u01f8\u01fa\7a\2\2\u01f9\u01f8\3\2\2\2\u01f9\u01fa\3\2"+ + "\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01fd\5\u00be_\2\u01fc\u01f9\3\2\2\2\u01fd"+ + "\u01fe\3\2\2\2\u01fe\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff\u0200\3\2"+ + "\2\2\u0200\u0201\bC\2\2\u0201\u0087\3\2\2\2\u0202\u0204\7\62\2\2\u0203"+ + "\u0205\t\5\2\2\u0204\u0203\3\2\2\2\u0204\u0205\3\2\2\2\u0205\u020a\3\2"+ + "\2\2\u0206\u0208\7a\2\2\u0207\u0206\3\2\2\2\u0207\u0208\3\2\2\2\u0208"+ + "\u0209\3\2\2\2\u0209\u020b\5\u00ba]\2\u020a\u0207\3\2\2\2\u020b\u020c"+ + "\3\2\2\2\u020c\u020a\3\2\2\2\u020c\u020d\3\2\2\2\u020d\u020e\3\2\2\2\u020e"+ + "\u020f\bD\2\2\u020f\u0089\3\2\2\2\u0210\u0211\7\62\2\2\u0211\u0216\t\6"+ + "\2\2\u0212\u0214\7a\2\2\u0213\u0212\3\2\2\2\u0213\u0214\3\2\2\2\u0214"+ + "\u0215\3\2\2\2\u0215\u0217\5\u00bc^\2\u0216\u0213\3\2\2\2\u0217\u0218"+ + "\3\2\2\2\u0218\u0216\3\2\2\2\u0218\u0219\3\2\2\2\u0219\u021a\3\2\2\2\u021a"+ + "\u021b\bE\2\2\u021b\u008b\3\2\2\2\u021c\u021f\5\u008eG\2\u021d\u021f\5"+ + "\u0090H\2\u021e\u021c\3\2\2\2\u021e\u021d\3\2\2\2\u021f\u0220\3\2\2\2"+ + "\u0220\u0221\bF\2\2\u0221\u008d\3\2\2\2\u0222\u022b\5\u00b8\\\2\u0223"+ + "\u0225\7\60\2\2\u0224\u0226\5\u00b8\\\2\u0225\u0224\3\2\2\2\u0225\u0226"+ + "\3\2\2\2\u0226\u0228\3\2\2\2\u0227\u0229\5\u00c0`\2\u0228\u0227\3\2\2"+ + "\2\u0228\u0229\3\2\2\2\u0229\u022c\3\2\2\2\u022a\u022c\5\u00c0`\2\u022b"+ + "\u0223\3\2\2\2\u022b\u022a\3\2\2\2\u022c\u0233\3\2\2\2\u022d\u022e\7\60"+ + "\2\2\u022e\u0230\5\u00b8\\\2\u022f\u0231\5\u00c0`\2\u0230\u022f\3\2\2"+ + "\2\u0230\u0231\3\2\2\2\u0231\u0233\3\2\2\2\u0232\u0222\3\2\2\2\u0232\u022d"+ + "\3\2\2\2\u0233\u008f\3\2\2\2\u0234\u0235\7\62\2\2\u0235\u0236\t\6\2\2"+ + "\u0236\u0237\5\u0092I\2\u0237\u0238\5\u0094J\2\u0238\u0091\3\2\2\2\u0239"+ + "\u023b\7a\2\2\u023a\u0239\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u023c\3\2"+ + "\2\2\u023c\u023e\5\u00bc^\2\u023d\u023a\3\2\2\2\u023e\u023f\3\2\2\2\u023f"+ + "\u023d\3\2\2\2\u023f\u0240\3\2\2\2\u0240\u024b\3\2\2\2\u0241\u0248\7\60"+ + "\2\2\u0242\u0244\7a\2\2\u0243\u0242\3\2\2\2\u0243\u0244\3\2\2\2\u0244"+ + "\u0245\3\2\2\2\u0245\u0247\5\u00bc^\2\u0246\u0243\3\2\2\2\u0247\u024a"+ + "\3\2\2\2\u0248\u0246\3\2\2\2\u0248\u0249\3\2\2\2\u0249\u024c\3\2\2\2\u024a"+ + "\u0248\3\2\2\2\u024b\u0241\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u0259\3\2"+ + "\2\2\u024d\u024e\7\60\2\2\u024e\u0255\5\u00bc^\2\u024f\u0251\7a\2\2\u0250"+ + "\u024f\3\2\2\2\u0250\u0251\3\2\2\2\u0251\u0252\3\2\2\2\u0252\u0254\5\u00bc"+ + "^\2\u0253\u0250\3\2\2\2\u0254\u0257\3\2\2\2\u0255\u0253\3\2\2\2\u0255"+ + "\u0256\3\2\2\2\u0256\u0259\3\2\2\2\u0257\u0255\3\2\2\2\u0258\u023d\3\2"+ + "\2\2\u0258\u024d\3\2\2\2\u0259\u0093\3\2\2\2\u025a\u025c\t\7\2\2\u025b"+ + "\u025d\t\b\2\2\u025c\u025b\3\2\2\2\u025c\u025d\3\2\2\2\u025d\u025e\3\2"+ + "\2\2\u025e\u025f\5\u00b8\\\2\u025f\u0095\3\2\2\2\u0260\u0266\5\u0084B"+ + "\2\u0261\u0266\5\u0086C\2\u0262\u0266\5\u0088D\2\u0263\u0266\5\u008aE"+ + "\2\u0264\u0266\5\u008cF\2\u0265\u0260\3\2\2\2\u0265\u0261\3\2\2\2\u0265"+ + "\u0262\3\2\2\2\u0265\u0263\3\2\2\2\u0265\u0264\3\2\2\2\u0266\u0267\3\2"+ + "\2\2\u0267\u0268\7k\2\2\u0268\u0269\3\2\2\2\u0269\u026a\bK\2\2\u026a\u0097"+ + "\3\2\2\2\u026b\u026e\7)\2\2\u026c\u026f\5\u00b4Z\2\u026d\u026f\5\u009c"+ + "N\2\u026e\u026c\3\2\2\2\u026e\u026d\3\2\2\2\u026f\u0270\3\2\2\2\u0270"+ + "\u0271\7)\2\2\u0271\u0099\3\2\2\2\u0272\u0273\5\u0098L\2\u0273\u0274\3"+ + "\2\2\2\u0274\u0275\bM\2\2\u0275\u009b\3\2\2\2\u0276\u0279\5\u009eO\2\u0277"+ + "\u0279\5\u00a0P\2\u0278\u0276\3\2\2\2\u0278\u0277\3\2\2\2\u0279\u009d"+ + "\3\2\2\2\u027a\u027b\7^\2\2\u027b\u027c\5\u00ba]\2\u027c\u027d\5\u00ba"+ + "]\2\u027d\u027e\5\u00ba]\2\u027e\u009f\3\2\2\2\u027f\u0280\7^\2\2\u0280"+ + "\u0281\7z\2\2\u0281\u0282\5\u00bc^\2\u0282\u0283\5\u00bc^\2\u0283\u00a1"+ + "\3\2\2\2\u0284\u0285\7^\2\2\u0285\u0286\7w\2\2\u0286\u0287\5\u00bc^\2"+ + "\u0287\u0288\5\u00bc^\2\u0288\u0289\5\u00bc^\2\u0289\u028a\5\u00bc^\2"+ + "\u028a\u00a3\3\2\2\2\u028b\u028c\7^\2\2\u028c\u028d\7W\2\2\u028d\u028e"+ + "\5\u00bc^\2\u028e\u028f\5\u00bc^\2\u028f\u0290\5\u00bc^\2\u0290\u0291"+ + "\5\u00bc^\2\u0291\u0292\5\u00bc^\2\u0292\u0293\5\u00bc^\2\u0293\u0294"+ + "\5\u00bc^\2\u0294\u0295\5\u00bc^\2\u0295\u00a5\3\2\2\2\u0296\u029a\7b"+ + "\2\2\u0297\u0299\n\t\2\2\u0298\u0297\3\2\2\2\u0299\u029c\3\2\2\2\u029a"+ + "\u0298\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u029d\3\2\2\2\u029c\u029a\3\2"+ + "\2\2\u029d\u029e\7b\2\2\u029e\u029f\3\2\2\2\u029f\u02a0\bS\2\2\u02a0\u00a7"+ + "\3\2\2\2\u02a1\u02a6\7$\2\2\u02a2\u02a5\n\n\2\2\u02a3\u02a5\5\u00b6[\2"+ + "\u02a4\u02a2\3\2\2\2\u02a4\u02a3\3\2\2\2\u02a5\u02a8\3\2\2\2\u02a6\u02a4"+ + "\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7\u02a9\3\2\2\2\u02a8\u02a6\3\2\2\2\u02a9"+ + "\u02aa\7$\2\2\u02aa\u02ab\3\2\2\2\u02ab\u02ac\bT\2\2\u02ac\u00a9\3\2\2"+ + "\2\u02ad\u02af\t\13\2\2\u02ae\u02ad\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0"+ + "\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1\u02b2\3\2\2\2\u02b2\u02b3\bU"+ + "\3\2\u02b3\u00ab\3\2\2\2\u02b4\u02b5\7\61\2\2\u02b5\u02b6\7,\2\2\u02b6"+ + "\u02ba\3\2\2\2\u02b7\u02b9\13\2\2\2\u02b8\u02b7\3\2\2\2\u02b9\u02bc\3"+ + "\2\2\2\u02ba\u02bb\3\2\2\2\u02ba\u02b8\3\2\2\2\u02bb\u02bd\3\2\2\2\u02bc"+ + "\u02ba\3\2\2\2\u02bd\u02be\7,\2\2\u02be\u02bf\7\61\2\2\u02bf\u02c0\3\2"+ + "\2\2\u02c0\u02c1\bV\3\2\u02c1\u00ad\3\2\2\2\u02c2\u02c4\t\f\2\2\u02c3"+ + "\u02c2\3\2\2\2\u02c4\u02c5\3\2\2\2\u02c5\u02c3\3\2\2\2\u02c5\u02c6\3\2"+ + "\2\2\u02c6\u02c7\3\2\2\2\u02c7\u02c8\bW\3\2\u02c8\u00af\3\2\2\2\u02c9"+ + "\u02ca\7\61\2\2\u02ca\u02cb\7\61\2\2\u02cb\u02cf\3\2\2\2\u02cc\u02ce\n"+ + "\f\2\2\u02cd\u02cc\3\2\2\2\u02ce\u02d1\3\2\2\2\u02cf\u02cd\3\2\2\2\u02cf"+ + "\u02d0\3\2\2\2\u02d0\u02d2\3\2\2\2\u02d1\u02cf\3\2\2\2\u02d2\u02d3\bX"+ + "\3\2\u02d3\u00b1\3\2\2\2\u02d4\u02d6\7\17\2\2\u02d5\u02d4\3\2\2\2\u02d5"+ + "\u02d6\3\2\2\2\u02d6\u02d7\3\2\2\2\u02d7\u02e3\7\f\2\2\u02d8\u02da\7\17"+ + "\2\2\u02d9\u02d8\3\2\2\2\u02da\u02db\3\2\2\2\u02db\u02d9\3\2\2\2\u02db"+ + "\u02dc\3\2\2\2\u02dc\u02e3\3\2\2\2\u02dd\u02df\7\f\2\2\u02de\u02dd\3\2"+ + "\2\2\u02df\u02e0\3\2\2\2\u02e0\u02de\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1"+ + "\u02e3\3\2\2\2\u02e2\u02d5\3\2\2\2\u02e2\u02d9\3\2\2\2\u02e2\u02de\3\2"+ + "\2\2\u02e3\u00b3\3\2\2\2\u02e4\u02e9\n\r\2\2\u02e5\u02e9\5\u00a2Q\2\u02e6"+ + "\u02e9\5\u00a4R\2\u02e7\u02e9\5\u00b6[\2\u02e8\u02e4\3\2\2\2\u02e8\u02e5"+ + "\3\2\2\2\u02e8\u02e6\3\2\2\2\u02e8\u02e7\3\2\2\2\u02e9\u00b5\3\2\2\2\u02ea"+ + "\u0304\7^\2\2\u02eb\u02ec\7w\2\2\u02ec\u02ed\5\u00bc^\2\u02ed\u02ee\5"+ + "\u00bc^\2\u02ee\u02ef\5\u00bc^\2\u02ef\u02f0\5\u00bc^\2\u02f0\u0305\3"+ + "\2\2\2\u02f1\u02f2\7W\2\2\u02f2\u02f3\5\u00bc^\2\u02f3\u02f4\5\u00bc^"+ + "\2\u02f4\u02f5\5\u00bc^\2\u02f5\u02f6\5\u00bc^\2\u02f6\u02f7\5\u00bc^"+ + "\2\u02f7\u02f8\5\u00bc^\2\u02f8\u02f9\5\u00bc^\2\u02f9\u02fa\5\u00bc^"+ + "\2\u02fa\u0305\3\2\2\2\u02fb\u0305\t\16\2\2\u02fc\u02fd\5\u00ba]\2\u02fd"+ + "\u02fe\5\u00ba]\2\u02fe\u02ff\5\u00ba]\2\u02ff\u0305\3\2\2\2\u0300\u0301"+ + "\7z\2\2\u0301\u0302\5\u00bc^\2\u0302\u0303\5\u00bc^\2\u0303\u0305\3\2"+ + "\2\2\u0304\u02eb\3\2\2\2\u0304\u02f1\3\2\2\2\u0304\u02fb\3\2\2\2\u0304"+ + "\u02fc\3\2\2\2\u0304\u0300\3\2\2\2\u0305\u00b7\3\2\2\2\u0306\u030d\t\3"+ + "\2\2\u0307\u0309\7a\2\2\u0308\u0307\3\2\2\2\u0308\u0309\3\2\2\2\u0309"+ + "\u030a\3\2\2\2\u030a\u030c\t\3\2\2\u030b\u0308\3\2\2\2\u030c\u030f\3\2"+ + "\2\2\u030d\u030b\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u00b9\3\2\2\2\u030f"+ + "\u030d\3\2\2\2\u0310\u0311\t\17\2\2\u0311\u00bb\3\2\2\2\u0312\u0313\t"+ + "\20\2\2\u0313\u00bd\3\2\2\2\u0314\u0315\t\21\2\2\u0315\u00bf\3\2\2\2\u0316"+ + "\u0318\t\22\2\2\u0317\u0319\t\b\2\2\u0318\u0317\3\2\2\2\u0318\u0319\3"+ + "\2\2\2\u0319\u031a\3\2\2\2\u031a\u031b\5\u00b8\\\2\u031b\u00c1\3\2\2\2"+ + "\u031c\u031f\5\u00c6c\2\u031d\u031f\7a\2\2\u031e\u031c\3\2\2\2\u031e\u031d"+ + "\3\2\2\2\u031f\u00c3\3\2\2\2\u0320\u0321\t\23\2\2\u0321\u00c5\3\2\2\2"+ + "\u0322\u0323\t\24\2\2\u0323\u00c7\3\2\2\2\u0324\u0326\t\13\2\2\u0325\u0324"+ + "\3\2\2\2\u0326\u0327\3\2\2\2\u0327\u0325\3\2\2\2\u0327\u0328\3\2\2\2\u0328"+ + "\u0329\3\2\2\2\u0329\u032a\bd\3\2\u032a\u00c9\3\2\2\2\u032b\u032c\7\61"+ + "\2\2\u032c\u032d\7,\2\2\u032d\u0331\3\2\2\2\u032e\u0330\n\f\2\2\u032f"+ + "\u032e\3\2\2\2\u0330\u0333\3\2\2\2\u0331\u0332\3\2\2\2\u0331\u032f\3\2"+ + "\2\2\u0332\u0334\3\2\2\2\u0333\u0331\3\2\2\2\u0334\u0335\7,\2\2\u0335"+ + "\u0336\7\61\2\2\u0336\u0337\3\2\2\2\u0337\u0338\be\3\2\u0338\u00cb\3\2"+ + "\2\2\u0339\u033a\7\61\2\2\u033a\u033b\7\61\2\2\u033b\u033f\3\2\2\2\u033c"+ + "\u033e\n\f\2\2\u033d\u033c\3\2\2\2\u033e\u0341\3\2\2\2\u033f\u033d\3\2"+ + "\2\2\u033f\u0340\3\2\2\2\u0340\u0342\3\2\2\2\u0341\u033f\3\2\2\2\u0342"+ + "\u0343\bf\3\2\u0343\u00cd\3\2\2\2\u0344\u0346\t\f\2\2\u0345\u0344\3\2"+ + "\2\2\u0346\u0347\3\2\2\2\u0347\u0345\3\2\2\2\u0347\u0348\3\2\2\2\u0348"+ + "\u0357\3\2\2\2\u0349\u0357\7=\2\2\u034a\u034b\7\61\2\2\u034b\u034c\7,"+ + "\2\2\u034c\u0350\3\2\2\2\u034d\u034f\13\2\2\2\u034e\u034d\3\2\2\2\u034f"+ + "\u0352\3\2\2\2\u0350\u0351\3\2\2\2\u0350\u034e\3\2\2\2\u0351\u0353\3\2"+ + "\2\2\u0352\u0350\3\2\2\2\u0353\u0354\7,\2\2\u0354\u0357\7\61\2\2\u0355"+ + "\u0357\7\2\2\3\u0356\u0345\3\2\2\2\u0356\u0349\3\2\2\2\u0356\u034a\3\2"+ + "\2\2\u0356\u0355\3\2\2\2\u0357\u0358\3\2\2\2\u0358\u0359\bg\4\2\u0359"+ + "\u00cf\3\2\2\2\u035a\u035b\3\2\2\2\u035b\u035c\3\2\2\2\u035c\u035d\bh"+ + "\4\2\u035d\u035e\bh\3\2\u035e\u00d1\3\2\2\29\2\3\u017d\u017f\u01ea\u01ef"+ + "\u01f2\u01f9\u01fe\u0204\u0207\u020c\u0213\u0218\u021e\u0225\u0228\u022b"+ + "\u0230\u0232\u023a\u023f\u0243\u0248\u024b\u0250\u0255\u0258\u025c\u0265"+ + "\u026e\u0278\u029a\u02a4\u02a6\u02b0\u02ba\u02c5\u02cf\u02d5\u02db\u02e0"+ + "\u02e2\u02e8\u0304\u0308\u030d\u0318\u031e\u0327\u0331\u033f\u0347\u0350"+ + "\u0356\5\4\3\2\2\3\2\4\2\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.tokens b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.tokens new file mode 100644 index 000000000..3d04e655a --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoLexer.tokens @@ -0,0 +1,153 @@ +BREAK=1 +DEFAULT=2 +FUNC=3 +INTERFACE=4 +SELECT=5 +CASE=6 +DEFER=7 +GO=8 +MAP=9 +STRUCT=10 +CHAN=11 +ELSE=12 +GOTO=13 +PACKAGE=14 +SWITCH=15 +CONST=16 +FALLTHROUGH=17 +IF=18 +RANGE=19 +TYPE=20 +CONTINUE=21 +FOR=22 +IMPORT=23 +RETURN=24 +VAR=25 +NIL_LIT=26 +IDENTIFIER=27 +L_PAREN=28 +R_PAREN=29 +L_CURLY=30 +R_CURLY=31 +L_BRACKET=32 +R_BRACKET=33 +ASSIGN=34 +COMMA=35 +SEMI=36 +COLON=37 +DOT=38 +PLUS_PLUS=39 +MINUS_MINUS=40 +DECLARE_ASSIGN=41 +ELLIPSIS=42 +LOGICAL_OR=43 +LOGICAL_AND=44 +EQUALS=45 +NOT_EQUALS=46 +LESS=47 +LESS_OR_EQUALS=48 +GREATER=49 +GREATER_OR_EQUALS=50 +OR=51 +DIV=52 +MOD=53 +LSHIFT=54 +RSHIFT=55 +BIT_CLEAR=56 +UNDERLYING=57 +EXCLAMATION=58 +PLUS=59 +MINUS=60 +CARET=61 +STAR=62 +AMPERSAND=63 +RECEIVE=64 +DECIMAL_LIT=65 +BINARY_LIT=66 +OCTAL_LIT=67 +HEX_LIT=68 +FLOAT_LIT=69 +DECIMAL_FLOAT_LIT=70 +HEX_FLOAT_LIT=71 +IMAGINARY_LIT=72 +RUNE_LIT=73 +BYTE_VALUE=74 +OCTAL_BYTE_VALUE=75 +HEX_BYTE_VALUE=76 +LITTLE_U_VALUE=77 +BIG_U_VALUE=78 +RAW_STRING_LIT=79 +INTERPRETED_STRING_LIT=80 +WS=81 +COMMENT=82 +TERMINATOR=83 +LINE_COMMENT=84 +NEWLINE=85 +WS_NLSEMI=86 +COMMENT_NLSEMI=87 +LINE_COMMENT_NLSEMI=88 +EOS=89 +OTHER=90 +'break'=1 +'default'=2 +'func'=3 +'interface'=4 +'select'=5 +'case'=6 +'defer'=7 +'go'=8 +'map'=9 +'struct'=10 +'chan'=11 +'else'=12 +'goto'=13 +'package'=14 +'switch'=15 +'const'=16 +'fallthrough'=17 +'if'=18 +'range'=19 +'type'=20 +'continue'=21 +'for'=22 +'import'=23 +'return'=24 +'var'=25 +'nil'=26 +'('=28 +')'=29 +'{'=30 +'}'=31 +'['=32 +']'=33 +'='=34 +','=35 +';'=36 +':'=37 +'.'=38 +'++'=39 +'--'=40 +':='=41 +'...'=42 +'||'=43 +'&&'=44 +'=='=45 +'!='=46 +'<'=47 +'<='=48 +'>'=49 +'>='=50 +'|'=51 +'/'=52 +'%'=53 +'<<'=54 +'>>'=55 +'&^'=56 +'~'=57 +'!'=58 +'+'=59 +'-'=60 +'^'=61 +'*'=62 +'&'=63 +'<-'=64 diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoMethod.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoMethod.java new file mode 100644 index 000000000..c5ca08e34 --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoMethod.java @@ -0,0 +1,22 @@ +package run.mone.antlr.golang; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * @author goodjava@qq.com + * @date 2024/1/29 16:56 + */ +@Data +@Builder +public class GoMethod { + + private String name; + + private List paramList; + + private String code; + +} diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParam.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParam.java new file mode 100644 index 000000000..10397309f --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParam.java @@ -0,0 +1,18 @@ +package run.mone.antlr.golang; + +import lombok.Builder; +import lombok.Data; + +/** + * @author goodjava@qq.com + * @date 2024/1/29 17:02 + */ +@Data +@Builder +public class GoParam { + + private String name; + + private String type; + +} diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.interp b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.interp new file mode 100644 index 000000000..feb511177 --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.interp @@ -0,0 +1,295 @@ +token literal names: +null +'break' +'default' +'func' +'interface' +'select' +'case' +'defer' +'go' +'map' +'struct' +'chan' +'else' +'goto' +'package' +'switch' +'const' +'fallthrough' +'if' +'range' +'type' +'continue' +'for' +'import' +'return' +'var' +'nil' +null +'(' +')' +'{' +'}' +'[' +']' +'=' +',' +';' +':' +'.' +'++' +'--' +':=' +'...' +'||' +'&&' +'==' +'!=' +'<' +'<=' +'>' +'>=' +'|' +'/' +'%' +'<<' +'>>' +'&^' +'~' +'!' +'+' +'-' +'^' +'*' +'&' +'<-' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +BREAK +DEFAULT +FUNC +INTERFACE +SELECT +CASE +DEFER +GO +MAP +STRUCT +CHAN +ELSE +GOTO +PACKAGE +SWITCH +CONST +FALLTHROUGH +IF +RANGE +TYPE +CONTINUE +FOR +IMPORT +RETURN +VAR +NIL_LIT +IDENTIFIER +L_PAREN +R_PAREN +L_CURLY +R_CURLY +L_BRACKET +R_BRACKET +ASSIGN +COMMA +SEMI +COLON +DOT +PLUS_PLUS +MINUS_MINUS +DECLARE_ASSIGN +ELLIPSIS +LOGICAL_OR +LOGICAL_AND +EQUALS +NOT_EQUALS +LESS +LESS_OR_EQUALS +GREATER +GREATER_OR_EQUALS +OR +DIV +MOD +LSHIFT +RSHIFT +BIT_CLEAR +UNDERLYING +EXCLAMATION +PLUS +MINUS +CARET +STAR +AMPERSAND +RECEIVE +DECIMAL_LIT +BINARY_LIT +OCTAL_LIT +HEX_LIT +FLOAT_LIT +DECIMAL_FLOAT_LIT +HEX_FLOAT_LIT +IMAGINARY_LIT +RUNE_LIT +BYTE_VALUE +OCTAL_BYTE_VALUE +HEX_BYTE_VALUE +LITTLE_U_VALUE +BIG_U_VALUE +RAW_STRING_LIT +INTERPRETED_STRING_LIT +WS +COMMENT +TERMINATOR +LINE_COMMENT +NEWLINE +WS_NLSEMI +COMMENT_NLSEMI +LINE_COMMENT_NLSEMI +EOS +OTHER + +rule names: +sourceFile +packageClause +importDecl +importSpec +importPath +declaration +constDecl +constSpec +identifierList +expressionList +comment +typeDecl +typeSpec +aliasDecl +typeDef +typeParameters +typeParameterDecl +typeElement +typeTerm +functionDecl +methodDecl +receiver +varDecl +varSpec +block +statementList +statement +simpleStmt +expressionStmt +sendStmt +incDecStmt +assignment +assign_op +shortVarDecl +labeledStmt +returnStmt +breakStmt +continueStmt +gotoStmt +fallthroughStmt +deferStmt +ifStmt +switchStmt +exprSwitchStmt +exprCaseClause +exprSwitchCase +typeSwitchStmt +typeSwitchGuard +typeCaseClause +typeSwitchCase +typeList +selectStmt +commClause +commCase +recvStmt +forStmt +forClause +rangeClause +goStmt +type_ +typeArgs +typeName +typeLit +arrayType +arrayLength +elementType +pointerType +interfaceType +sliceType +mapType +channelType +methodSpec +functionType +signature +result +parameters +parameterDecl +expression +primaryExpr +conversion +operand +literal +basicLit +integer +operandName +qualifiedIdent +compositeLit +literalType +literalValue +elementList +keyedElement +key +element +structType +fieldDecl +string_ +embeddedField +functionLit +index +slice_ +typeAssertion +arguments +methodExpr +eos + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 92, 1025, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 216, 10, 2, 12, 2, 14, 2, 219, 11, 2, 3, 2, 3, 2, 3, 2, 5, 2, 224, 10, 2, 3, 2, 3, 2, 7, 2, 228, 10, 2, 12, 2, 14, 2, 231, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 244, 10, 4, 12, 4, 14, 4, 247, 11, 4, 3, 4, 5, 4, 250, 10, 4, 3, 5, 5, 5, 253, 10, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 5, 7, 262, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 270, 10, 8, 12, 8, 14, 8, 273, 11, 8, 3, 8, 5, 8, 276, 10, 8, 3, 9, 3, 9, 5, 9, 280, 10, 9, 3, 9, 3, 9, 5, 9, 284, 10, 9, 3, 10, 3, 10, 3, 10, 7, 10, 289, 10, 10, 12, 10, 14, 10, 292, 11, 10, 3, 11, 3, 11, 3, 11, 7, 11, 297, 10, 11, 12, 11, 14, 11, 300, 11, 11, 3, 12, 3, 12, 3, 13, 7, 13, 305, 10, 13, 12, 13, 14, 13, 308, 11, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 7, 13, 316, 10, 13, 12, 13, 14, 13, 319, 11, 13, 3, 13, 5, 13, 322, 10, 13, 3, 14, 3, 14, 5, 14, 326, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 5, 16, 334, 10, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 342, 10, 17, 12, 17, 14, 17, 345, 11, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 7, 19, 355, 10, 19, 12, 19, 14, 19, 358, 11, 19, 3, 20, 5, 20, 361, 10, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 5, 21, 368, 10, 21, 3, 21, 3, 21, 5, 21, 372, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 379, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 7, 24, 389, 10, 24, 12, 24, 14, 24, 392, 11, 24, 3, 24, 5, 24, 395, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 401, 10, 25, 3, 25, 3, 25, 5, 25, 405, 10, 25, 3, 26, 3, 26, 5, 26, 409, 10, 26, 3, 26, 3, 26, 3, 27, 5, 27, 414, 10, 27, 3, 27, 5, 27, 417, 10, 27, 3, 27, 5, 27, 420, 10, 27, 3, 27, 3, 27, 3, 27, 6, 27, 425, 10, 27, 13, 27, 14, 27, 426, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 444, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 451, 10, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 5, 34, 467, 10, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 5, 36, 478, 10, 36, 3, 37, 3, 37, 5, 37, 482, 10, 37, 3, 38, 3, 38, 5, 38, 486, 10, 38, 3, 39, 3, 39, 5, 39, 490, 10, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 509, 10, 43, 3, 43, 3, 43, 3, 43, 3, 43, 5, 43, 515, 10, 43, 5, 43, 517, 10, 43, 3, 44, 3, 44, 5, 44, 521, 10, 44, 3, 45, 3, 45, 5, 45, 525, 10, 45, 3, 45, 5, 45, 528, 10, 45, 3, 45, 3, 45, 5, 45, 532, 10, 45, 5, 45, 534, 10, 45, 3, 45, 3, 45, 7, 45, 538, 10, 45, 12, 45, 14, 45, 541, 11, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 5, 46, 548, 10, 46, 3, 47, 3, 47, 3, 47, 5, 47, 553, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 564, 10, 48, 3, 48, 3, 48, 7, 48, 568, 10, 48, 12, 48, 14, 48, 571, 11, 48, 3, 48, 3, 48, 3, 49, 3, 49, 5, 49, 577, 10, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 5, 50, 588, 10, 50, 3, 51, 3, 51, 3, 51, 5, 51, 593, 10, 51, 3, 52, 3, 52, 5, 52, 597, 10, 52, 3, 52, 3, 52, 3, 52, 5, 52, 602, 10, 52, 7, 52, 604, 10, 52, 12, 52, 14, 52, 607, 11, 52, 3, 53, 3, 53, 3, 53, 7, 53, 612, 10, 53, 12, 53, 14, 53, 615, 11, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 5, 54, 622, 10, 54, 3, 55, 3, 55, 3, 55, 5, 55, 627, 10, 55, 3, 55, 5, 55, 630, 10, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 638, 10, 56, 3, 56, 3, 56, 3, 57, 3, 57, 5, 57, 644, 10, 57, 3, 57, 3, 57, 5, 57, 648, 10, 57, 5, 57, 650, 10, 57, 3, 57, 3, 57, 3, 58, 5, 58, 655, 10, 58, 3, 58, 3, 58, 5, 58, 659, 10, 58, 3, 58, 3, 58, 5, 58, 663, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 671, 10, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 5, 61, 681, 10, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 688, 10, 61, 3, 62, 3, 62, 3, 62, 5, 62, 693, 10, 62, 3, 62, 3, 62, 3, 63, 3, 63, 5, 63, 699, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 709, 10, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 727, 10, 69, 3, 69, 3, 69, 7, 69, 731, 10, 69, 12, 69, 14, 69, 734, 11, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 753, 10, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 5, 73, 763, 10, 73, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 5, 75, 770, 10, 75, 3, 76, 3, 76, 5, 76, 774, 10, 76, 3, 77, 3, 77, 3, 77, 3, 77, 7, 77, 780, 10, 77, 12, 77, 14, 77, 783, 11, 77, 3, 77, 5, 77, 786, 10, 77, 5, 77, 788, 10, 77, 3, 77, 3, 77, 3, 78, 5, 78, 793, 10, 78, 3, 78, 5, 78, 796, 10, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 5, 79, 804, 10, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 7, 79, 821, 10, 79, 12, 79, 14, 79, 824, 11, 79, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 830, 10, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 839, 10, 80, 7, 80, 841, 10, 80, 12, 80, 14, 80, 844, 11, 80, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 850, 10, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 5, 82, 857, 10, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 863, 10, 82, 3, 83, 3, 83, 3, 83, 5, 83, 868, 10, 83, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 874, 10, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 897, 10, 89, 5, 89, 899, 10, 89, 3, 90, 3, 90, 3, 90, 5, 90, 904, 10, 90, 5, 90, 906, 10, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 7, 91, 913, 10, 91, 12, 91, 14, 91, 916, 11, 91, 3, 92, 3, 92, 3, 92, 5, 92, 921, 10, 92, 3, 92, 3, 92, 3, 93, 3, 93, 5, 93, 927, 10, 93, 3, 94, 3, 94, 5, 94, 931, 10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 7, 95, 938, 10, 95, 12, 95, 14, 95, 941, 11, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 5, 96, 949, 10, 96, 3, 96, 5, 96, 952, 10, 96, 3, 97, 3, 97, 3, 98, 5, 98, 957, 10, 98, 3, 98, 3, 98, 5, 98, 961, 10, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 5, 101, 973, 10, 101, 3, 101, 3, 101, 5, 101, 977, 10, 101, 3, 101, 5, 101, 980, 10, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 987, 10, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 1001, 10, 103, 5, 103, 1003, 10, 103, 3, 103, 5, 103, 1006, 10, 103, 3, 103, 5, 103, 1009, 10, 103, 5, 103, 1011, 10, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 5, 105, 1023, 10, 105, 3, 105, 2, 4, 156, 158, 106, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 2, 12, 4, 2, 29, 29, 40, 40, 4, 2, 84, 84, 86, 86, 3, 2, 41, 42, 4, 2, 53, 58, 61, 65, 3, 2, 60, 66, 4, 2, 54, 58, 64, 65, 4, 2, 53, 53, 61, 63, 3, 2, 47, 52, 4, 2, 67, 70, 74, 75, 3, 2, 81, 82, 2, 1090, 2, 210, 3, 2, 2, 2, 4, 234, 3, 2, 2, 2, 6, 237, 3, 2, 2, 2, 8, 252, 3, 2, 2, 2, 10, 256, 3, 2, 2, 2, 12, 261, 3, 2, 2, 2, 14, 263, 3, 2, 2, 2, 16, 277, 3, 2, 2, 2, 18, 285, 3, 2, 2, 2, 20, 293, 3, 2, 2, 2, 22, 301, 3, 2, 2, 2, 24, 306, 3, 2, 2, 2, 26, 325, 3, 2, 2, 2, 28, 327, 3, 2, 2, 2, 30, 331, 3, 2, 2, 2, 32, 337, 3, 2, 2, 2, 34, 348, 3, 2, 2, 2, 36, 351, 3, 2, 2, 2, 38, 360, 3, 2, 2, 2, 40, 364, 3, 2, 2, 2, 42, 373, 3, 2, 2, 2, 44, 380, 3, 2, 2, 2, 46, 382, 3, 2, 2, 2, 48, 396, 3, 2, 2, 2, 50, 406, 3, 2, 2, 2, 52, 424, 3, 2, 2, 2, 54, 443, 3, 2, 2, 2, 56, 450, 3, 2, 2, 2, 58, 452, 3, 2, 2, 2, 60, 454, 3, 2, 2, 2, 62, 458, 3, 2, 2, 2, 64, 461, 3, 2, 2, 2, 66, 466, 3, 2, 2, 2, 68, 470, 3, 2, 2, 2, 70, 474, 3, 2, 2, 2, 72, 479, 3, 2, 2, 2, 74, 483, 3, 2, 2, 2, 76, 487, 3, 2, 2, 2, 78, 491, 3, 2, 2, 2, 80, 494, 3, 2, 2, 2, 82, 496, 3, 2, 2, 2, 84, 499, 3, 2, 2, 2, 86, 520, 3, 2, 2, 2, 88, 522, 3, 2, 2, 2, 90, 544, 3, 2, 2, 2, 92, 552, 3, 2, 2, 2, 94, 554, 3, 2, 2, 2, 96, 576, 3, 2, 2, 2, 98, 584, 3, 2, 2, 2, 100, 592, 3, 2, 2, 2, 102, 596, 3, 2, 2, 2, 104, 608, 3, 2, 2, 2, 106, 618, 3, 2, 2, 2, 108, 629, 3, 2, 2, 2, 110, 637, 3, 2, 2, 2, 112, 641, 3, 2, 2, 2, 114, 654, 3, 2, 2, 2, 116, 670, 3, 2, 2, 2, 118, 675, 3, 2, 2, 2, 120, 687, 3, 2, 2, 2, 122, 689, 3, 2, 2, 2, 124, 698, 3, 2, 2, 2, 126, 708, 3, 2, 2, 2, 128, 710, 3, 2, 2, 2, 130, 715, 3, 2, 2, 2, 132, 717, 3, 2, 2, 2, 134, 719, 3, 2, 2, 2, 136, 722, 3, 2, 2, 2, 138, 737, 3, 2, 2, 2, 140, 741, 3, 2, 2, 2, 142, 752, 3, 2, 2, 2, 144, 762, 3, 2, 2, 2, 146, 764, 3, 2, 2, 2, 148, 767, 3, 2, 2, 2, 150, 773, 3, 2, 2, 2, 152, 775, 3, 2, 2, 2, 154, 792, 3, 2, 2, 2, 156, 803, 3, 2, 2, 2, 158, 829, 3, 2, 2, 2, 160, 845, 3, 2, 2, 2, 162, 862, 3, 2, 2, 2, 164, 867, 3, 2, 2, 2, 166, 873, 3, 2, 2, 2, 168, 875, 3, 2, 2, 2, 170, 877, 3, 2, 2, 2, 172, 879, 3, 2, 2, 2, 174, 883, 3, 2, 2, 2, 176, 898, 3, 2, 2, 2, 178, 900, 3, 2, 2, 2, 180, 909, 3, 2, 2, 2, 182, 920, 3, 2, 2, 2, 184, 926, 3, 2, 2, 2, 186, 930, 3, 2, 2, 2, 188, 932, 3, 2, 2, 2, 190, 948, 3, 2, 2, 2, 192, 953, 3, 2, 2, 2, 194, 956, 3, 2, 2, 2, 196, 962, 3, 2, 2, 2, 198, 966, 3, 2, 2, 2, 200, 970, 3, 2, 2, 2, 202, 990, 3, 2, 2, 2, 204, 995, 3, 2, 2, 2, 206, 1014, 3, 2, 2, 2, 208, 1022, 3, 2, 2, 2, 210, 211, 5, 4, 3, 2, 211, 217, 5, 208, 105, 2, 212, 213, 5, 6, 4, 2, 213, 214, 5, 208, 105, 2, 214, 216, 3, 2, 2, 2, 215, 212, 3, 2, 2, 2, 216, 219, 3, 2, 2, 2, 217, 215, 3, 2, 2, 2, 217, 218, 3, 2, 2, 2, 218, 229, 3, 2, 2, 2, 219, 217, 3, 2, 2, 2, 220, 224, 5, 40, 21, 2, 221, 224, 5, 42, 22, 2, 222, 224, 5, 12, 7, 2, 223, 220, 3, 2, 2, 2, 223, 221, 3, 2, 2, 2, 223, 222, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 226, 5, 208, 105, 2, 226, 228, 3, 2, 2, 2, 227, 223, 3, 2, 2, 2, 228, 231, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 229, 230, 3, 2, 2, 2, 230, 232, 3, 2, 2, 2, 231, 229, 3, 2, 2, 2, 232, 233, 7, 2, 2, 3, 233, 3, 3, 2, 2, 2, 234, 235, 7, 16, 2, 2, 235, 236, 7, 29, 2, 2, 236, 5, 3, 2, 2, 2, 237, 249, 7, 25, 2, 2, 238, 250, 5, 8, 5, 2, 239, 245, 7, 30, 2, 2, 240, 241, 5, 8, 5, 2, 241, 242, 5, 208, 105, 2, 242, 244, 3, 2, 2, 2, 243, 240, 3, 2, 2, 2, 244, 247, 3, 2, 2, 2, 245, 243, 3, 2, 2, 2, 245, 246, 3, 2, 2, 2, 246, 248, 3, 2, 2, 2, 247, 245, 3, 2, 2, 2, 248, 250, 7, 31, 2, 2, 249, 238, 3, 2, 2, 2, 249, 239, 3, 2, 2, 2, 250, 7, 3, 2, 2, 2, 251, 253, 9, 2, 2, 2, 252, 251, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 254, 3, 2, 2, 2, 254, 255, 5, 10, 6, 2, 255, 9, 3, 2, 2, 2, 256, 257, 5, 192, 97, 2, 257, 11, 3, 2, 2, 2, 258, 262, 5, 14, 8, 2, 259, 262, 5, 24, 13, 2, 260, 262, 5, 46, 24, 2, 261, 258, 3, 2, 2, 2, 261, 259, 3, 2, 2, 2, 261, 260, 3, 2, 2, 2, 262, 13, 3, 2, 2, 2, 263, 275, 7, 18, 2, 2, 264, 276, 5, 16, 9, 2, 265, 271, 7, 30, 2, 2, 266, 267, 5, 16, 9, 2, 267, 268, 5, 208, 105, 2, 268, 270, 3, 2, 2, 2, 269, 266, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 274, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 7, 31, 2, 2, 275, 264, 3, 2, 2, 2, 275, 265, 3, 2, 2, 2, 276, 15, 3, 2, 2, 2, 277, 283, 5, 18, 10, 2, 278, 280, 5, 120, 61, 2, 279, 278, 3, 2, 2, 2, 279, 280, 3, 2, 2, 2, 280, 281, 3, 2, 2, 2, 281, 282, 7, 36, 2, 2, 282, 284, 5, 20, 11, 2, 283, 279, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 17, 3, 2, 2, 2, 285, 290, 7, 29, 2, 2, 286, 287, 7, 37, 2, 2, 287, 289, 7, 29, 2, 2, 288, 286, 3, 2, 2, 2, 289, 292, 3, 2, 2, 2, 290, 288, 3, 2, 2, 2, 290, 291, 3, 2, 2, 2, 291, 19, 3, 2, 2, 2, 292, 290, 3, 2, 2, 2, 293, 298, 5, 156, 79, 2, 294, 295, 7, 37, 2, 2, 295, 297, 5, 156, 79, 2, 296, 294, 3, 2, 2, 2, 297, 300, 3, 2, 2, 2, 298, 296, 3, 2, 2, 2, 298, 299, 3, 2, 2, 2, 299, 21, 3, 2, 2, 2, 300, 298, 3, 2, 2, 2, 301, 302, 9, 3, 2, 2, 302, 23, 3, 2, 2, 2, 303, 305, 5, 22, 12, 2, 304, 303, 3, 2, 2, 2, 305, 308, 3, 2, 2, 2, 306, 304, 3, 2, 2, 2, 306, 307, 3, 2, 2, 2, 307, 309, 3, 2, 2, 2, 308, 306, 3, 2, 2, 2, 309, 321, 7, 22, 2, 2, 310, 322, 5, 26, 14, 2, 311, 317, 7, 30, 2, 2, 312, 313, 5, 26, 14, 2, 313, 314, 5, 208, 105, 2, 314, 316, 3, 2, 2, 2, 315, 312, 3, 2, 2, 2, 316, 319, 3, 2, 2, 2, 317, 315, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 320, 3, 2, 2, 2, 319, 317, 3, 2, 2, 2, 320, 322, 7, 31, 2, 2, 321, 310, 3, 2, 2, 2, 321, 311, 3, 2, 2, 2, 322, 25, 3, 2, 2, 2, 323, 326, 5, 28, 15, 2, 324, 326, 5, 30, 16, 2, 325, 323, 3, 2, 2, 2, 325, 324, 3, 2, 2, 2, 326, 27, 3, 2, 2, 2, 327, 328, 7, 29, 2, 2, 328, 329, 7, 36, 2, 2, 329, 330, 5, 120, 61, 2, 330, 29, 3, 2, 2, 2, 331, 333, 7, 29, 2, 2, 332, 334, 5, 32, 17, 2, 333, 332, 3, 2, 2, 2, 333, 334, 3, 2, 2, 2, 334, 335, 3, 2, 2, 2, 335, 336, 5, 120, 61, 2, 336, 31, 3, 2, 2, 2, 337, 338, 7, 34, 2, 2, 338, 343, 5, 34, 18, 2, 339, 340, 7, 37, 2, 2, 340, 342, 5, 34, 18, 2, 341, 339, 3, 2, 2, 2, 342, 345, 3, 2, 2, 2, 343, 341, 3, 2, 2, 2, 343, 344, 3, 2, 2, 2, 344, 346, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2, 346, 347, 7, 35, 2, 2, 347, 33, 3, 2, 2, 2, 348, 349, 5, 18, 10, 2, 349, 350, 5, 36, 19, 2, 350, 35, 3, 2, 2, 2, 351, 356, 5, 38, 20, 2, 352, 353, 7, 53, 2, 2, 353, 355, 5, 38, 20, 2, 354, 352, 3, 2, 2, 2, 355, 358, 3, 2, 2, 2, 356, 354, 3, 2, 2, 2, 356, 357, 3, 2, 2, 2, 357, 37, 3, 2, 2, 2, 358, 356, 3, 2, 2, 2, 359, 361, 7, 59, 2, 2, 360, 359, 3, 2, 2, 2, 360, 361, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 363, 5, 120, 61, 2, 363, 39, 3, 2, 2, 2, 364, 365, 7, 5, 2, 2, 365, 367, 7, 29, 2, 2, 366, 368, 5, 32, 17, 2, 367, 366, 3, 2, 2, 2, 367, 368, 3, 2, 2, 2, 368, 369, 3, 2, 2, 2, 369, 371, 5, 148, 75, 2, 370, 372, 5, 50, 26, 2, 371, 370, 3, 2, 2, 2, 371, 372, 3, 2, 2, 2, 372, 41, 3, 2, 2, 2, 373, 374, 7, 5, 2, 2, 374, 375, 5, 44, 23, 2, 375, 376, 7, 29, 2, 2, 376, 378, 5, 148, 75, 2, 377, 379, 5, 50, 26, 2, 378, 377, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 43, 3, 2, 2, 2, 380, 381, 5, 152, 77, 2, 381, 45, 3, 2, 2, 2, 382, 394, 7, 27, 2, 2, 383, 395, 5, 48, 25, 2, 384, 390, 7, 30, 2, 2, 385, 386, 5, 48, 25, 2, 386, 387, 5, 208, 105, 2, 387, 389, 3, 2, 2, 2, 388, 385, 3, 2, 2, 2, 389, 392, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 390, 391, 3, 2, 2, 2, 391, 393, 3, 2, 2, 2, 392, 390, 3, 2, 2, 2, 393, 395, 7, 31, 2, 2, 394, 383, 3, 2, 2, 2, 394, 384, 3, 2, 2, 2, 395, 47, 3, 2, 2, 2, 396, 404, 5, 18, 10, 2, 397, 400, 5, 120, 61, 2, 398, 399, 7, 36, 2, 2, 399, 401, 5, 20, 11, 2, 400, 398, 3, 2, 2, 2, 400, 401, 3, 2, 2, 2, 401, 405, 3, 2, 2, 2, 402, 403, 7, 36, 2, 2, 403, 405, 5, 20, 11, 2, 404, 397, 3, 2, 2, 2, 404, 402, 3, 2, 2, 2, 405, 49, 3, 2, 2, 2, 406, 408, 7, 32, 2, 2, 407, 409, 5, 52, 27, 2, 408, 407, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 410, 3, 2, 2, 2, 410, 411, 7, 33, 2, 2, 411, 51, 3, 2, 2, 2, 412, 414, 7, 38, 2, 2, 413, 412, 3, 2, 2, 2, 413, 414, 3, 2, 2, 2, 414, 420, 3, 2, 2, 2, 415, 417, 7, 91, 2, 2, 416, 415, 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 420, 3, 2, 2, 2, 418, 420, 6, 27, 2, 2, 419, 413, 3, 2, 2, 2, 419, 416, 3, 2, 2, 2, 419, 418, 3, 2, 2, 2, 420, 421, 3, 2, 2, 2, 421, 422, 5, 54, 28, 2, 422, 423, 5, 208, 105, 2, 423, 425, 3, 2, 2, 2, 424, 419, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 426, 427, 3, 2, 2, 2, 427, 53, 3, 2, 2, 2, 428, 444, 5, 12, 7, 2, 429, 444, 5, 70, 36, 2, 430, 444, 5, 56, 29, 2, 431, 444, 5, 118, 60, 2, 432, 444, 5, 72, 37, 2, 433, 444, 5, 74, 38, 2, 434, 444, 5, 76, 39, 2, 435, 444, 5, 78, 40, 2, 436, 444, 5, 80, 41, 2, 437, 444, 5, 50, 26, 2, 438, 444, 5, 84, 43, 2, 439, 444, 5, 86, 44, 2, 440, 444, 5, 104, 53, 2, 441, 444, 5, 112, 57, 2, 442, 444, 5, 82, 42, 2, 443, 428, 3, 2, 2, 2, 443, 429, 3, 2, 2, 2, 443, 430, 3, 2, 2, 2, 443, 431, 3, 2, 2, 2, 443, 432, 3, 2, 2, 2, 443, 433, 3, 2, 2, 2, 443, 434, 3, 2, 2, 2, 443, 435, 3, 2, 2, 2, 443, 436, 3, 2, 2, 2, 443, 437, 3, 2, 2, 2, 443, 438, 3, 2, 2, 2, 443, 439, 3, 2, 2, 2, 443, 440, 3, 2, 2, 2, 443, 441, 3, 2, 2, 2, 443, 442, 3, 2, 2, 2, 444, 55, 3, 2, 2, 2, 445, 451, 5, 60, 31, 2, 446, 451, 5, 62, 32, 2, 447, 451, 5, 64, 33, 2, 448, 451, 5, 58, 30, 2, 449, 451, 5, 68, 35, 2, 450, 445, 3, 2, 2, 2, 450, 446, 3, 2, 2, 2, 450, 447, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 450, 449, 3, 2, 2, 2, 451, 57, 3, 2, 2, 2, 452, 453, 5, 156, 79, 2, 453, 59, 3, 2, 2, 2, 454, 455, 5, 156, 79, 2, 455, 456, 7, 66, 2, 2, 456, 457, 5, 156, 79, 2, 457, 61, 3, 2, 2, 2, 458, 459, 5, 156, 79, 2, 459, 460, 9, 4, 2, 2, 460, 63, 3, 2, 2, 2, 461, 462, 5, 20, 11, 2, 462, 463, 5, 66, 34, 2, 463, 464, 5, 20, 11, 2, 464, 65, 3, 2, 2, 2, 465, 467, 9, 5, 2, 2, 466, 465, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 7, 36, 2, 2, 469, 67, 3, 2, 2, 2, 470, 471, 5, 18, 10, 2, 471, 472, 7, 43, 2, 2, 472, 473, 5, 20, 11, 2, 473, 69, 3, 2, 2, 2, 474, 475, 7, 29, 2, 2, 475, 477, 7, 39, 2, 2, 476, 478, 5, 54, 28, 2, 477, 476, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 71, 3, 2, 2, 2, 479, 481, 7, 26, 2, 2, 480, 482, 5, 20, 11, 2, 481, 480, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 73, 3, 2, 2, 2, 483, 485, 7, 3, 2, 2, 484, 486, 7, 29, 2, 2, 485, 484, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 75, 3, 2, 2, 2, 487, 489, 7, 23, 2, 2, 488, 490, 7, 29, 2, 2, 489, 488, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 77, 3, 2, 2, 2, 491, 492, 7, 15, 2, 2, 492, 493, 7, 29, 2, 2, 493, 79, 3, 2, 2, 2, 494, 495, 7, 19, 2, 2, 495, 81, 3, 2, 2, 2, 496, 497, 7, 9, 2, 2, 497, 498, 5, 156, 79, 2, 498, 83, 3, 2, 2, 2, 499, 508, 7, 20, 2, 2, 500, 509, 5, 156, 79, 2, 501, 502, 5, 208, 105, 2, 502, 503, 5, 156, 79, 2, 503, 509, 3, 2, 2, 2, 504, 505, 5, 56, 29, 2, 505, 506, 5, 208, 105, 2, 506, 507, 5, 156, 79, 2, 507, 509, 3, 2, 2, 2, 508, 500, 3, 2, 2, 2, 508, 501, 3, 2, 2, 2, 508, 504, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 516, 5, 50, 26, 2, 511, 514, 7, 14, 2, 2, 512, 515, 5, 84, 43, 2, 513, 515, 5, 50, 26, 2, 514, 512, 3, 2, 2, 2, 514, 513, 3, 2, 2, 2, 515, 517, 3, 2, 2, 2, 516, 511, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 85, 3, 2, 2, 2, 518, 521, 5, 88, 45, 2, 519, 521, 5, 94, 48, 2, 520, 518, 3, 2, 2, 2, 520, 519, 3, 2, 2, 2, 521, 87, 3, 2, 2, 2, 522, 533, 7, 17, 2, 2, 523, 525, 5, 156, 79, 2, 524, 523, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 534, 3, 2, 2, 2, 526, 528, 5, 56, 29, 2, 527, 526, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 531, 5, 208, 105, 2, 530, 532, 5, 156, 79, 2, 531, 530, 3, 2, 2, 2, 531, 532, 3, 2, 2, 2, 532, 534, 3, 2, 2, 2, 533, 524, 3, 2, 2, 2, 533, 527, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 539, 7, 32, 2, 2, 536, 538, 5, 90, 46, 2, 537, 536, 3, 2, 2, 2, 538, 541, 3, 2, 2, 2, 539, 537, 3, 2, 2, 2, 539, 540, 3, 2, 2, 2, 540, 542, 3, 2, 2, 2, 541, 539, 3, 2, 2, 2, 542, 543, 7, 33, 2, 2, 543, 89, 3, 2, 2, 2, 544, 545, 5, 92, 47, 2, 545, 547, 7, 39, 2, 2, 546, 548, 5, 52, 27, 2, 547, 546, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 91, 3, 2, 2, 2, 549, 550, 7, 8, 2, 2, 550, 553, 5, 20, 11, 2, 551, 553, 7, 4, 2, 2, 552, 549, 3, 2, 2, 2, 552, 551, 3, 2, 2, 2, 553, 93, 3, 2, 2, 2, 554, 563, 7, 17, 2, 2, 555, 564, 5, 96, 49, 2, 556, 557, 5, 208, 105, 2, 557, 558, 5, 96, 49, 2, 558, 564, 3, 2, 2, 2, 559, 560, 5, 56, 29, 2, 560, 561, 5, 208, 105, 2, 561, 562, 5, 96, 49, 2, 562, 564, 3, 2, 2, 2, 563, 555, 3, 2, 2, 2, 563, 556, 3, 2, 2, 2, 563, 559, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 569, 7, 32, 2, 2, 566, 568, 5, 98, 50, 2, 567, 566, 3, 2, 2, 2, 568, 571, 3, 2, 2, 2, 569, 567, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 572, 3, 2, 2, 2, 571, 569, 3, 2, 2, 2, 572, 573, 7, 33, 2, 2, 573, 95, 3, 2, 2, 2, 574, 575, 7, 29, 2, 2, 575, 577, 7, 43, 2, 2, 576, 574, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 578, 3, 2, 2, 2, 578, 579, 5, 158, 80, 2, 579, 580, 7, 40, 2, 2, 580, 581, 7, 30, 2, 2, 581, 582, 7, 22, 2, 2, 582, 583, 7, 31, 2, 2, 583, 97, 3, 2, 2, 2, 584, 585, 5, 100, 51, 2, 585, 587, 7, 39, 2, 2, 586, 588, 5, 52, 27, 2, 587, 586, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 99, 3, 2, 2, 2, 589, 590, 7, 8, 2, 2, 590, 593, 5, 102, 52, 2, 591, 593, 7, 4, 2, 2, 592, 589, 3, 2, 2, 2, 592, 591, 3, 2, 2, 2, 593, 101, 3, 2, 2, 2, 594, 597, 5, 120, 61, 2, 595, 597, 7, 28, 2, 2, 596, 594, 3, 2, 2, 2, 596, 595, 3, 2, 2, 2, 597, 605, 3, 2, 2, 2, 598, 601, 7, 37, 2, 2, 599, 602, 5, 120, 61, 2, 600, 602, 7, 28, 2, 2, 601, 599, 3, 2, 2, 2, 601, 600, 3, 2, 2, 2, 602, 604, 3, 2, 2, 2, 603, 598, 3, 2, 2, 2, 604, 607, 3, 2, 2, 2, 605, 603, 3, 2, 2, 2, 605, 606, 3, 2, 2, 2, 606, 103, 3, 2, 2, 2, 607, 605, 3, 2, 2, 2, 608, 609, 7, 7, 2, 2, 609, 613, 7, 32, 2, 2, 610, 612, 5, 106, 54, 2, 611, 610, 3, 2, 2, 2, 612, 615, 3, 2, 2, 2, 613, 611, 3, 2, 2, 2, 613, 614, 3, 2, 2, 2, 614, 616, 3, 2, 2, 2, 615, 613, 3, 2, 2, 2, 616, 617, 7, 33, 2, 2, 617, 105, 3, 2, 2, 2, 618, 619, 5, 108, 55, 2, 619, 621, 7, 39, 2, 2, 620, 622, 5, 52, 27, 2, 621, 620, 3, 2, 2, 2, 621, 622, 3, 2, 2, 2, 622, 107, 3, 2, 2, 2, 623, 626, 7, 8, 2, 2, 624, 627, 5, 60, 31, 2, 625, 627, 5, 110, 56, 2, 626, 624, 3, 2, 2, 2, 626, 625, 3, 2, 2, 2, 627, 630, 3, 2, 2, 2, 628, 630, 7, 4, 2, 2, 629, 623, 3, 2, 2, 2, 629, 628, 3, 2, 2, 2, 630, 109, 3, 2, 2, 2, 631, 632, 5, 20, 11, 2, 632, 633, 7, 36, 2, 2, 633, 638, 3, 2, 2, 2, 634, 635, 5, 18, 10, 2, 635, 636, 7, 43, 2, 2, 636, 638, 3, 2, 2, 2, 637, 631, 3, 2, 2, 2, 637, 634, 3, 2, 2, 2, 637, 638, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 640, 5, 156, 79, 2, 640, 111, 3, 2, 2, 2, 641, 649, 7, 24, 2, 2, 642, 644, 5, 156, 79, 2, 643, 642, 3, 2, 2, 2, 643, 644, 3, 2, 2, 2, 644, 650, 3, 2, 2, 2, 645, 650, 5, 114, 58, 2, 646, 648, 5, 116, 59, 2, 647, 646, 3, 2, 2, 2, 647, 648, 3, 2, 2, 2, 648, 650, 3, 2, 2, 2, 649, 643, 3, 2, 2, 2, 649, 645, 3, 2, 2, 2, 649, 647, 3, 2, 2, 2, 650, 651, 3, 2, 2, 2, 651, 652, 5, 50, 26, 2, 652, 113, 3, 2, 2, 2, 653, 655, 5, 56, 29, 2, 654, 653, 3, 2, 2, 2, 654, 655, 3, 2, 2, 2, 655, 656, 3, 2, 2, 2, 656, 658, 5, 208, 105, 2, 657, 659, 5, 156, 79, 2, 658, 657, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 662, 5, 208, 105, 2, 661, 663, 5, 56, 29, 2, 662, 661, 3, 2, 2, 2, 662, 663, 3, 2, 2, 2, 663, 115, 3, 2, 2, 2, 664, 665, 5, 20, 11, 2, 665, 666, 7, 36, 2, 2, 666, 671, 3, 2, 2, 2, 667, 668, 5, 18, 10, 2, 668, 669, 7, 43, 2, 2, 669, 671, 3, 2, 2, 2, 670, 664, 3, 2, 2, 2, 670, 667, 3, 2, 2, 2, 670, 671, 3, 2, 2, 2, 671, 672, 3, 2, 2, 2, 672, 673, 7, 21, 2, 2, 673, 674, 5, 156, 79, 2, 674, 117, 3, 2, 2, 2, 675, 676, 7, 10, 2, 2, 676, 677, 5, 156, 79, 2, 677, 119, 3, 2, 2, 2, 678, 680, 5, 124, 63, 2, 679, 681, 5, 122, 62, 2, 680, 679, 3, 2, 2, 2, 680, 681, 3, 2, 2, 2, 681, 688, 3, 2, 2, 2, 682, 688, 5, 126, 64, 2, 683, 684, 7, 30, 2, 2, 684, 685, 5, 120, 61, 2, 685, 686, 7, 31, 2, 2, 686, 688, 3, 2, 2, 2, 687, 678, 3, 2, 2, 2, 687, 682, 3, 2, 2, 2, 687, 683, 3, 2, 2, 2, 688, 121, 3, 2, 2, 2, 689, 690, 7, 34, 2, 2, 690, 692, 5, 102, 52, 2, 691, 693, 7, 37, 2, 2, 692, 691, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 695, 7, 35, 2, 2, 695, 123, 3, 2, 2, 2, 696, 699, 5, 172, 87, 2, 697, 699, 7, 29, 2, 2, 698, 696, 3, 2, 2, 2, 698, 697, 3, 2, 2, 2, 699, 125, 3, 2, 2, 2, 700, 709, 5, 128, 65, 2, 701, 709, 5, 188, 95, 2, 702, 709, 5, 134, 68, 2, 703, 709, 5, 146, 74, 2, 704, 709, 5, 136, 69, 2, 705, 709, 5, 138, 70, 2, 706, 709, 5, 140, 71, 2, 707, 709, 5, 142, 72, 2, 708, 700, 3, 2, 2, 2, 708, 701, 3, 2, 2, 2, 708, 702, 3, 2, 2, 2, 708, 703, 3, 2, 2, 2, 708, 704, 3, 2, 2, 2, 708, 705, 3, 2, 2, 2, 708, 706, 3, 2, 2, 2, 708, 707, 3, 2, 2, 2, 709, 127, 3, 2, 2, 2, 710, 711, 7, 34, 2, 2, 711, 712, 5, 130, 66, 2, 712, 713, 7, 35, 2, 2, 713, 714, 5, 132, 67, 2, 714, 129, 3, 2, 2, 2, 715, 716, 5, 156, 79, 2, 716, 131, 3, 2, 2, 2, 717, 718, 5, 120, 61, 2, 718, 133, 3, 2, 2, 2, 719, 720, 7, 64, 2, 2, 720, 721, 5, 120, 61, 2, 721, 135, 3, 2, 2, 2, 722, 723, 7, 6, 2, 2, 723, 732, 7, 32, 2, 2, 724, 727, 5, 144, 73, 2, 725, 727, 5, 36, 19, 2, 726, 724, 3, 2, 2, 2, 726, 725, 3, 2, 2, 2, 727, 728, 3, 2, 2, 2, 728, 729, 5, 208, 105, 2, 729, 731, 3, 2, 2, 2, 730, 726, 3, 2, 2, 2, 731, 734, 3, 2, 2, 2, 732, 730, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 735, 3, 2, 2, 2, 734, 732, 3, 2, 2, 2, 735, 736, 7, 33, 2, 2, 736, 137, 3, 2, 2, 2, 737, 738, 7, 34, 2, 2, 738, 739, 7, 35, 2, 2, 739, 740, 5, 132, 67, 2, 740, 139, 3, 2, 2, 2, 741, 742, 7, 11, 2, 2, 742, 743, 7, 34, 2, 2, 743, 744, 5, 120, 61, 2, 744, 745, 7, 35, 2, 2, 745, 746, 5, 132, 67, 2, 746, 141, 3, 2, 2, 2, 747, 753, 7, 13, 2, 2, 748, 749, 7, 13, 2, 2, 749, 753, 7, 66, 2, 2, 750, 751, 7, 66, 2, 2, 751, 753, 7, 13, 2, 2, 752, 747, 3, 2, 2, 2, 752, 748, 3, 2, 2, 2, 752, 750, 3, 2, 2, 2, 753, 754, 3, 2, 2, 2, 754, 755, 5, 132, 67, 2, 755, 143, 3, 2, 2, 2, 756, 757, 7, 29, 2, 2, 757, 758, 5, 152, 77, 2, 758, 759, 5, 150, 76, 2, 759, 763, 3, 2, 2, 2, 760, 761, 7, 29, 2, 2, 761, 763, 5, 152, 77, 2, 762, 756, 3, 2, 2, 2, 762, 760, 3, 2, 2, 2, 763, 145, 3, 2, 2, 2, 764, 765, 7, 5, 2, 2, 765, 766, 5, 148, 75, 2, 766, 147, 3, 2, 2, 2, 767, 769, 5, 152, 77, 2, 768, 770, 5, 150, 76, 2, 769, 768, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 149, 3, 2, 2, 2, 771, 774, 5, 152, 77, 2, 772, 774, 5, 120, 61, 2, 773, 771, 3, 2, 2, 2, 773, 772, 3, 2, 2, 2, 774, 151, 3, 2, 2, 2, 775, 787, 7, 30, 2, 2, 776, 781, 5, 154, 78, 2, 777, 778, 7, 37, 2, 2, 778, 780, 5, 154, 78, 2, 779, 777, 3, 2, 2, 2, 780, 783, 3, 2, 2, 2, 781, 779, 3, 2, 2, 2, 781, 782, 3, 2, 2, 2, 782, 785, 3, 2, 2, 2, 783, 781, 3, 2, 2, 2, 784, 786, 7, 37, 2, 2, 785, 784, 3, 2, 2, 2, 785, 786, 3, 2, 2, 2, 786, 788, 3, 2, 2, 2, 787, 776, 3, 2, 2, 2, 787, 788, 3, 2, 2, 2, 788, 789, 3, 2, 2, 2, 789, 790, 7, 31, 2, 2, 790, 153, 3, 2, 2, 2, 791, 793, 5, 18, 10, 2, 792, 791, 3, 2, 2, 2, 792, 793, 3, 2, 2, 2, 793, 795, 3, 2, 2, 2, 794, 796, 7, 44, 2, 2, 795, 794, 3, 2, 2, 2, 795, 796, 3, 2, 2, 2, 796, 797, 3, 2, 2, 2, 797, 798, 5, 120, 61, 2, 798, 155, 3, 2, 2, 2, 799, 800, 8, 79, 1, 2, 800, 804, 5, 158, 80, 2, 801, 802, 9, 6, 2, 2, 802, 804, 5, 156, 79, 8, 803, 799, 3, 2, 2, 2, 803, 801, 3, 2, 2, 2, 804, 822, 3, 2, 2, 2, 805, 806, 12, 7, 2, 2, 806, 807, 9, 7, 2, 2, 807, 821, 5, 156, 79, 8, 808, 809, 12, 6, 2, 2, 809, 810, 9, 8, 2, 2, 810, 821, 5, 156, 79, 7, 811, 812, 12, 5, 2, 2, 812, 813, 9, 9, 2, 2, 813, 821, 5, 156, 79, 6, 814, 815, 12, 4, 2, 2, 815, 816, 7, 46, 2, 2, 816, 821, 5, 156, 79, 5, 817, 818, 12, 3, 2, 2, 818, 819, 7, 45, 2, 2, 819, 821, 5, 156, 79, 4, 820, 805, 3, 2, 2, 2, 820, 808, 3, 2, 2, 2, 820, 811, 3, 2, 2, 2, 820, 814, 3, 2, 2, 2, 820, 817, 3, 2, 2, 2, 821, 824, 3, 2, 2, 2, 822, 820, 3, 2, 2, 2, 822, 823, 3, 2, 2, 2, 823, 157, 3, 2, 2, 2, 824, 822, 3, 2, 2, 2, 825, 826, 8, 80, 1, 2, 826, 830, 5, 162, 82, 2, 827, 830, 5, 160, 81, 2, 828, 830, 5, 206, 104, 2, 829, 825, 3, 2, 2, 2, 829, 827, 3, 2, 2, 2, 829, 828, 3, 2, 2, 2, 830, 842, 3, 2, 2, 2, 831, 838, 12, 3, 2, 2, 832, 833, 7, 40, 2, 2, 833, 839, 7, 29, 2, 2, 834, 839, 5, 198, 100, 2, 835, 839, 5, 200, 101, 2, 836, 839, 5, 202, 102, 2, 837, 839, 5, 204, 103, 2, 838, 832, 3, 2, 2, 2, 838, 834, 3, 2, 2, 2, 838, 835, 3, 2, 2, 2, 838, 836, 3, 2, 2, 2, 838, 837, 3, 2, 2, 2, 839, 841, 3, 2, 2, 2, 840, 831, 3, 2, 2, 2, 841, 844, 3, 2, 2, 2, 842, 840, 3, 2, 2, 2, 842, 843, 3, 2, 2, 2, 843, 159, 3, 2, 2, 2, 844, 842, 3, 2, 2, 2, 845, 846, 5, 120, 61, 2, 846, 847, 7, 30, 2, 2, 847, 849, 5, 156, 79, 2, 848, 850, 7, 37, 2, 2, 849, 848, 3, 2, 2, 2, 849, 850, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 852, 7, 31, 2, 2, 852, 161, 3, 2, 2, 2, 853, 863, 5, 164, 83, 2, 854, 856, 5, 170, 86, 2, 855, 857, 5, 122, 62, 2, 856, 855, 3, 2, 2, 2, 856, 857, 3, 2, 2, 2, 857, 863, 3, 2, 2, 2, 858, 859, 7, 30, 2, 2, 859, 860, 5, 156, 79, 2, 860, 861, 7, 31, 2, 2, 861, 863, 3, 2, 2, 2, 862, 853, 3, 2, 2, 2, 862, 854, 3, 2, 2, 2, 862, 858, 3, 2, 2, 2, 863, 163, 3, 2, 2, 2, 864, 868, 5, 166, 84, 2, 865, 868, 5, 174, 88, 2, 866, 868, 5, 196, 99, 2, 867, 864, 3, 2, 2, 2, 867, 865, 3, 2, 2, 2, 867, 866, 3, 2, 2, 2, 868, 165, 3, 2, 2, 2, 869, 874, 7, 28, 2, 2, 870, 874, 5, 168, 85, 2, 871, 874, 5, 192, 97, 2, 872, 874, 7, 71, 2, 2, 873, 869, 3, 2, 2, 2, 873, 870, 3, 2, 2, 2, 873, 871, 3, 2, 2, 2, 873, 872, 3, 2, 2, 2, 874, 167, 3, 2, 2, 2, 875, 876, 9, 10, 2, 2, 876, 169, 3, 2, 2, 2, 877, 878, 7, 29, 2, 2, 878, 171, 3, 2, 2, 2, 879, 880, 7, 29, 2, 2, 880, 881, 7, 40, 2, 2, 881, 882, 7, 29, 2, 2, 882, 173, 3, 2, 2, 2, 883, 884, 5, 176, 89, 2, 884, 885, 5, 178, 90, 2, 885, 175, 3, 2, 2, 2, 886, 899, 5, 188, 95, 2, 887, 899, 5, 128, 65, 2, 888, 889, 7, 34, 2, 2, 889, 890, 7, 44, 2, 2, 890, 891, 7, 35, 2, 2, 891, 899, 5, 132, 67, 2, 892, 899, 5, 138, 70, 2, 893, 899, 5, 140, 71, 2, 894, 896, 5, 124, 63, 2, 895, 897, 5, 122, 62, 2, 896, 895, 3, 2, 2, 2, 896, 897, 3, 2, 2, 2, 897, 899, 3, 2, 2, 2, 898, 886, 3, 2, 2, 2, 898, 887, 3, 2, 2, 2, 898, 888, 3, 2, 2, 2, 898, 892, 3, 2, 2, 2, 898, 893, 3, 2, 2, 2, 898, 894, 3, 2, 2, 2, 899, 177, 3, 2, 2, 2, 900, 905, 7, 32, 2, 2, 901, 903, 5, 180, 91, 2, 902, 904, 7, 37, 2, 2, 903, 902, 3, 2, 2, 2, 903, 904, 3, 2, 2, 2, 904, 906, 3, 2, 2, 2, 905, 901, 3, 2, 2, 2, 905, 906, 3, 2, 2, 2, 906, 907, 3, 2, 2, 2, 907, 908, 7, 33, 2, 2, 908, 179, 3, 2, 2, 2, 909, 914, 5, 182, 92, 2, 910, 911, 7, 37, 2, 2, 911, 913, 5, 182, 92, 2, 912, 910, 3, 2, 2, 2, 913, 916, 3, 2, 2, 2, 914, 912, 3, 2, 2, 2, 914, 915, 3, 2, 2, 2, 915, 181, 3, 2, 2, 2, 916, 914, 3, 2, 2, 2, 917, 918, 5, 184, 93, 2, 918, 919, 7, 39, 2, 2, 919, 921, 3, 2, 2, 2, 920, 917, 3, 2, 2, 2, 920, 921, 3, 2, 2, 2, 921, 922, 3, 2, 2, 2, 922, 923, 5, 186, 94, 2, 923, 183, 3, 2, 2, 2, 924, 927, 5, 156, 79, 2, 925, 927, 5, 178, 90, 2, 926, 924, 3, 2, 2, 2, 926, 925, 3, 2, 2, 2, 927, 185, 3, 2, 2, 2, 928, 931, 5, 156, 79, 2, 929, 931, 5, 178, 90, 2, 930, 928, 3, 2, 2, 2, 930, 929, 3, 2, 2, 2, 931, 187, 3, 2, 2, 2, 932, 933, 7, 12, 2, 2, 933, 939, 7, 32, 2, 2, 934, 935, 5, 190, 96, 2, 935, 936, 5, 208, 105, 2, 936, 938, 3, 2, 2, 2, 937, 934, 3, 2, 2, 2, 938, 941, 3, 2, 2, 2, 939, 937, 3, 2, 2, 2, 939, 940, 3, 2, 2, 2, 940, 942, 3, 2, 2, 2, 941, 939, 3, 2, 2, 2, 942, 943, 7, 33, 2, 2, 943, 189, 3, 2, 2, 2, 944, 945, 5, 18, 10, 2, 945, 946, 5, 120, 61, 2, 946, 949, 3, 2, 2, 2, 947, 949, 5, 194, 98, 2, 948, 944, 3, 2, 2, 2, 948, 947, 3, 2, 2, 2, 949, 951, 3, 2, 2, 2, 950, 952, 5, 192, 97, 2, 951, 950, 3, 2, 2, 2, 951, 952, 3, 2, 2, 2, 952, 191, 3, 2, 2, 2, 953, 954, 9, 11, 2, 2, 954, 193, 3, 2, 2, 2, 955, 957, 7, 64, 2, 2, 956, 955, 3, 2, 2, 2, 956, 957, 3, 2, 2, 2, 957, 958, 3, 2, 2, 2, 958, 960, 5, 124, 63, 2, 959, 961, 5, 122, 62, 2, 960, 959, 3, 2, 2, 2, 960, 961, 3, 2, 2, 2, 961, 195, 3, 2, 2, 2, 962, 963, 7, 5, 2, 2, 963, 964, 5, 148, 75, 2, 964, 965, 5, 50, 26, 2, 965, 197, 3, 2, 2, 2, 966, 967, 7, 34, 2, 2, 967, 968, 5, 156, 79, 2, 968, 969, 7, 35, 2, 2, 969, 199, 3, 2, 2, 2, 970, 986, 7, 34, 2, 2, 971, 973, 5, 156, 79, 2, 972, 971, 3, 2, 2, 2, 972, 973, 3, 2, 2, 2, 973, 974, 3, 2, 2, 2, 974, 976, 7, 39, 2, 2, 975, 977, 5, 156, 79, 2, 976, 975, 3, 2, 2, 2, 976, 977, 3, 2, 2, 2, 977, 987, 3, 2, 2, 2, 978, 980, 5, 156, 79, 2, 979, 978, 3, 2, 2, 2, 979, 980, 3, 2, 2, 2, 980, 981, 3, 2, 2, 2, 981, 982, 7, 39, 2, 2, 982, 983, 5, 156, 79, 2, 983, 984, 7, 39, 2, 2, 984, 985, 5, 156, 79, 2, 985, 987, 3, 2, 2, 2, 986, 972, 3, 2, 2, 2, 986, 979, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 989, 7, 35, 2, 2, 989, 201, 3, 2, 2, 2, 990, 991, 7, 40, 2, 2, 991, 992, 7, 30, 2, 2, 992, 993, 5, 120, 61, 2, 993, 994, 7, 31, 2, 2, 994, 203, 3, 2, 2, 2, 995, 1010, 7, 30, 2, 2, 996, 1003, 5, 20, 11, 2, 997, 1000, 5, 120, 61, 2, 998, 999, 7, 37, 2, 2, 999, 1001, 5, 20, 11, 2, 1000, 998, 3, 2, 2, 2, 1000, 1001, 3, 2, 2, 2, 1001, 1003, 3, 2, 2, 2, 1002, 996, 3, 2, 2, 2, 1002, 997, 3, 2, 2, 2, 1003, 1005, 3, 2, 2, 2, 1004, 1006, 7, 44, 2, 2, 1005, 1004, 3, 2, 2, 2, 1005, 1006, 3, 2, 2, 2, 1006, 1008, 3, 2, 2, 2, 1007, 1009, 7, 37, 2, 2, 1008, 1007, 3, 2, 2, 2, 1008, 1009, 3, 2, 2, 2, 1009, 1011, 3, 2, 2, 2, 1010, 1002, 3, 2, 2, 2, 1010, 1011, 3, 2, 2, 2, 1011, 1012, 3, 2, 2, 2, 1012, 1013, 7, 31, 2, 2, 1013, 205, 3, 2, 2, 2, 1014, 1015, 5, 120, 61, 2, 1015, 1016, 7, 40, 2, 2, 1016, 1017, 7, 29, 2, 2, 1017, 207, 3, 2, 2, 2, 1018, 1023, 7, 38, 2, 2, 1019, 1023, 7, 2, 2, 3, 1020, 1023, 7, 91, 2, 2, 1021, 1023, 6, 105, 9, 2, 1022, 1018, 3, 2, 2, 2, 1022, 1019, 3, 2, 2, 2, 1022, 1020, 3, 2, 2, 2, 1022, 1021, 3, 2, 2, 2, 1023, 209, 3, 2, 2, 2, 123, 217, 223, 229, 245, 249, 252, 261, 271, 275, 279, 283, 290, 298, 306, 317, 321, 325, 333, 343, 356, 360, 367, 371, 378, 390, 394, 400, 404, 408, 413, 416, 419, 426, 443, 450, 466, 477, 481, 485, 489, 508, 514, 516, 520, 524, 527, 531, 533, 539, 547, 552, 563, 569, 576, 587, 592, 596, 601, 605, 613, 621, 626, 629, 637, 643, 647, 649, 654, 658, 662, 670, 680, 687, 692, 698, 708, 726, 732, 752, 762, 769, 773, 781, 785, 787, 792, 795, 803, 820, 822, 829, 838, 842, 849, 856, 862, 867, 873, 896, 898, 903, 905, 914, 920, 926, 930, 939, 948, 951, 956, 960, 972, 976, 979, 986, 1000, 1002, 1005, 1008, 1010, 1022] \ No newline at end of file diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.java new file mode 100644 index 000000000..3c47df2ec --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.java @@ -0,0 +1,7752 @@ +package run.mone.antlr.golang;// Generated from GoParser.g4 by ANTLR 4.7.1 +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class GoParser extends GoParserBase { + static { RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + BREAK=1, DEFAULT=2, FUNC=3, INTERFACE=4, SELECT=5, CASE=6, DEFER=7, GO=8, + MAP=9, STRUCT=10, CHAN=11, ELSE=12, GOTO=13, PACKAGE=14, SWITCH=15, CONST=16, + FALLTHROUGH=17, IF=18, RANGE=19, TYPE=20, CONTINUE=21, FOR=22, IMPORT=23, + RETURN=24, VAR=25, NIL_LIT=26, IDENTIFIER=27, L_PAREN=28, R_PAREN=29, + L_CURLY=30, R_CURLY=31, L_BRACKET=32, R_BRACKET=33, ASSIGN=34, COMMA=35, + SEMI=36, COLON=37, DOT=38, PLUS_PLUS=39, MINUS_MINUS=40, DECLARE_ASSIGN=41, + ELLIPSIS=42, LOGICAL_OR=43, LOGICAL_AND=44, EQUALS=45, NOT_EQUALS=46, + LESS=47, LESS_OR_EQUALS=48, GREATER=49, GREATER_OR_EQUALS=50, OR=51, DIV=52, + MOD=53, LSHIFT=54, RSHIFT=55, BIT_CLEAR=56, UNDERLYING=57, EXCLAMATION=58, + PLUS=59, MINUS=60, CARET=61, STAR=62, AMPERSAND=63, RECEIVE=64, DECIMAL_LIT=65, + BINARY_LIT=66, OCTAL_LIT=67, HEX_LIT=68, FLOAT_LIT=69, DECIMAL_FLOAT_LIT=70, + HEX_FLOAT_LIT=71, IMAGINARY_LIT=72, RUNE_LIT=73, BYTE_VALUE=74, OCTAL_BYTE_VALUE=75, + HEX_BYTE_VALUE=76, LITTLE_U_VALUE=77, BIG_U_VALUE=78, RAW_STRING_LIT=79, + INTERPRETED_STRING_LIT=80, WS=81, COMMENT=82, TERMINATOR=83, LINE_COMMENT=84, + NEWLINE=85, WS_NLSEMI=86, COMMENT_NLSEMI=87, LINE_COMMENT_NLSEMI=88, EOS=89, + OTHER=90; + public static final int + RULE_sourceFile = 0, RULE_packageClause = 1, RULE_importDecl = 2, RULE_importSpec = 3, + RULE_importPath = 4, RULE_declaration = 5, RULE_constDecl = 6, RULE_constSpec = 7, + RULE_identifierList = 8, RULE_expressionList = 9, RULE_comment = 10, RULE_typeDecl = 11, + RULE_typeSpec = 12, RULE_aliasDecl = 13, RULE_typeDef = 14, RULE_typeParameters = 15, + RULE_typeParameterDecl = 16, RULE_typeElement = 17, RULE_typeTerm = 18, + RULE_functionDecl = 19, RULE_methodDecl = 20, RULE_receiver = 21, RULE_varDecl = 22, + RULE_varSpec = 23, RULE_block = 24, RULE_statementList = 25, RULE_statement = 26, + RULE_simpleStmt = 27, RULE_expressionStmt = 28, RULE_sendStmt = 29, RULE_incDecStmt = 30, + RULE_assignment = 31, RULE_assign_op = 32, RULE_shortVarDecl = 33, RULE_labeledStmt = 34, + RULE_returnStmt = 35, RULE_breakStmt = 36, RULE_continueStmt = 37, RULE_gotoStmt = 38, + RULE_fallthroughStmt = 39, RULE_deferStmt = 40, RULE_ifStmt = 41, RULE_switchStmt = 42, + RULE_exprSwitchStmt = 43, RULE_exprCaseClause = 44, RULE_exprSwitchCase = 45, + RULE_typeSwitchStmt = 46, RULE_typeSwitchGuard = 47, RULE_typeCaseClause = 48, + RULE_typeSwitchCase = 49, RULE_typeList = 50, RULE_selectStmt = 51, RULE_commClause = 52, + RULE_commCase = 53, RULE_recvStmt = 54, RULE_forStmt = 55, RULE_forClause = 56, + RULE_rangeClause = 57, RULE_goStmt = 58, RULE_type_ = 59, RULE_typeArgs = 60, + RULE_typeName = 61, RULE_typeLit = 62, RULE_arrayType = 63, RULE_arrayLength = 64, + RULE_elementType = 65, RULE_pointerType = 66, RULE_interfaceType = 67, + RULE_sliceType = 68, RULE_mapType = 69, RULE_channelType = 70, RULE_methodSpec = 71, + RULE_functionType = 72, RULE_signature = 73, RULE_result = 74, RULE_parameters = 75, + RULE_parameterDecl = 76, RULE_expression = 77, RULE_primaryExpr = 78, + RULE_conversion = 79, RULE_operand = 80, RULE_literal = 81, RULE_basicLit = 82, + RULE_integer = 83, RULE_operandName = 84, RULE_qualifiedIdent = 85, RULE_compositeLit = 86, + RULE_literalType = 87, RULE_literalValue = 88, RULE_elementList = 89, + RULE_keyedElement = 90, RULE_key = 91, RULE_element = 92, RULE_structType = 93, + RULE_fieldDecl = 94, RULE_string_ = 95, RULE_embeddedField = 96, RULE_functionLit = 97, + RULE_index = 98, RULE_slice_ = 99, RULE_typeAssertion = 100, RULE_arguments = 101, + RULE_methodExpr = 102, RULE_eos = 103; + public static final String[] ruleNames = { + "sourceFile", "packageClause", "importDecl", "importSpec", "importPath", + "declaration", "constDecl", "constSpec", "identifierList", "expressionList", + "comment", "typeDecl", "typeSpec", "aliasDecl", "typeDef", "typeParameters", + "typeParameterDecl", "typeElement", "typeTerm", "functionDecl", "methodDecl", + "receiver", "varDecl", "varSpec", "block", "statementList", "statement", + "simpleStmt", "expressionStmt", "sendStmt", "incDecStmt", "assignment", + "assign_op", "shortVarDecl", "labeledStmt", "returnStmt", "breakStmt", + "continueStmt", "gotoStmt", "fallthroughStmt", "deferStmt", "ifStmt", + "switchStmt", "exprSwitchStmt", "exprCaseClause", "exprSwitchCase", "typeSwitchStmt", + "typeSwitchGuard", "typeCaseClause", "typeSwitchCase", "typeList", "selectStmt", + "commClause", "commCase", "recvStmt", "forStmt", "forClause", "rangeClause", + "goStmt", "type_", "typeArgs", "typeName", "typeLit", "arrayType", "arrayLength", + "elementType", "pointerType", "interfaceType", "sliceType", "mapType", + "channelType", "methodSpec", "functionType", "signature", "result", "parameters", + "parameterDecl", "expression", "primaryExpr", "conversion", "operand", + "literal", "basicLit", "integer", "operandName", "qualifiedIdent", "compositeLit", + "literalType", "literalValue", "elementList", "keyedElement", "key", "element", + "structType", "fieldDecl", "string_", "embeddedField", "functionLit", + "index", "slice_", "typeAssertion", "arguments", "methodExpr", "eos" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'", + "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'", + "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'", + "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'", + null, "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", "':'", + "'.'", "'++'", "'--'", "':='", "'...'", "'||'", "'&&'", "'=='", "'!='", + "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", "'>>'", "'&^'", + "'~'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", + "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", + "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", + "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", + "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "COLON", "DOT", "PLUS_PLUS", + "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "LOGICAL_OR", "LOGICAL_AND", + "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", + "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR", "UNDERLYING", "EXCLAMATION", + "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", + "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", + "HEX_FLOAT_LIT", "IMAGINARY_LIT", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", + "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", + "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT", "NEWLINE", "WS_NLSEMI", + "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI", "EOS", "OTHER" + }; + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = ""; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "GoParser.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public GoParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + public static class SourceFileContext extends ParserRuleContext { + public PackageClauseContext packageClause() { + return getRuleContext(PackageClauseContext.class,0); + } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public TerminalNode EOF() { return getToken(GoParser.EOF, 0); } + public List importDecl() { + return getRuleContexts(ImportDeclContext.class); + } + public ImportDeclContext importDecl(int i) { + return getRuleContext(ImportDeclContext.class,i); + } + public List functionDecl() { + return getRuleContexts(FunctionDeclContext.class); + } + public FunctionDeclContext functionDecl(int i) { + return getRuleContext(FunctionDeclContext.class,i); + } + public List methodDecl() { + return getRuleContexts(MethodDeclContext.class); + } + public MethodDeclContext methodDecl(int i) { + return getRuleContext(MethodDeclContext.class,i); + } + public List declaration() { + return getRuleContexts(DeclarationContext.class); + } + public DeclarationContext declaration(int i) { + return getRuleContext(DeclarationContext.class,i); + } + public SourceFileContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sourceFile; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSourceFile(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSourceFile(this); + } + } + + public final SourceFileContext sourceFile() throws RecognitionException { + SourceFileContext _localctx = new SourceFileContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_sourceFile); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(208); + packageClause(); + setState(209); + eos(); + setState(215); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IMPORT) { + { + { + setState(210); + importDecl(); + setState(211); + eos(); + } + } + setState(217); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(227); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << CONST) | (1L << TYPE) | (1L << VAR))) != 0) || _la==COMMENT || _la==LINE_COMMENT) { + { + { + setState(221); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { + case 1: + { + setState(218); + functionDecl(); + } + break; + case 2: + { + setState(219); + methodDecl(); + } + break; + case 3: + { + setState(220); + declaration(); + } + break; + } + setState(223); + eos(); + } + } + setState(229); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(230); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PackageClauseContext extends ParserRuleContext { + public Token packageName; + public TerminalNode PACKAGE() { return getToken(GoParser.PACKAGE, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public PackageClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_packageClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterPackageClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitPackageClause(this); + } + } + + public final PackageClauseContext packageClause() throws RecognitionException { + PackageClauseContext _localctx = new PackageClauseContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_packageClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(232); + match(PACKAGE); + setState(233); + ((PackageClauseContext)_localctx).packageName = match(IDENTIFIER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ImportDeclContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(GoParser.IMPORT, 0); } + public List importSpec() { + return getRuleContexts(ImportSpecContext.class); + } + public ImportSpecContext importSpec(int i) { + return getRuleContext(ImportSpecContext.class,i); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public ImportDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterImportDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitImportDecl(this); + } + } + + public final ImportDeclContext importDecl() throws RecognitionException { + ImportDeclContext _localctx = new ImportDeclContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_importDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(235); + match(IMPORT); + setState(247); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + case DOT: + case RAW_STRING_LIT: + case INTERPRETED_STRING_LIT: + { + setState(236); + importSpec(); + } + break; + case L_PAREN: + { + setState(237); + match(L_PAREN); + setState(243); + _errHandler.sync(this); + _la = _input.LA(1); + while (((((_la - 27)) & ~0x3f) == 0 && ((1L << (_la - 27)) & ((1L << (IDENTIFIER - 27)) | (1L << (DOT - 27)) | (1L << (RAW_STRING_LIT - 27)) | (1L << (INTERPRETED_STRING_LIT - 27)))) != 0)) { + { + { + setState(238); + importSpec(); + setState(239); + eos(); + } + } + setState(245); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(246); + match(R_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ImportSpecContext extends ParserRuleContext { + public Token alias; + public ImportPathContext importPath() { + return getRuleContext(ImportPathContext.class,0); + } + public TerminalNode DOT() { return getToken(GoParser.DOT, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public ImportSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterImportSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitImportSpec(this); + } + } + + public final ImportSpecContext importSpec() throws RecognitionException { + ImportSpecContext _localctx = new ImportSpecContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_importSpec); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(250); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==IDENTIFIER || _la==DOT) { + { + setState(249); + ((ImportSpecContext)_localctx).alias = _input.LT(1); + _la = _input.LA(1); + if ( !(_la==IDENTIFIER || _la==DOT) ) { + ((ImportSpecContext)_localctx).alias = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(252); + importPath(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ImportPathContext extends ParserRuleContext { + public String_Context string_() { + return getRuleContext(String_Context.class,0); + } + public ImportPathContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_importPath; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterImportPath(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitImportPath(this); + } + } + + public final ImportPathContext importPath() throws RecognitionException { + ImportPathContext _localctx = new ImportPathContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_importPath); + try { + enterOuterAlt(_localctx, 1); + { + setState(254); + string_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeclarationContext extends ParserRuleContext { + public ConstDeclContext constDecl() { + return getRuleContext(ConstDeclContext.class,0); + } + public TypeDeclContext typeDecl() { + return getRuleContext(TypeDeclContext.class,0); + } + public VarDeclContext varDecl() { + return getRuleContext(VarDeclContext.class,0); + } + public DeclarationContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_declaration; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterDeclaration(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitDeclaration(this); + } + } + + public final DeclarationContext declaration() throws RecognitionException { + DeclarationContext _localctx = new DeclarationContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_declaration); + try { + setState(259); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CONST: + enterOuterAlt(_localctx, 1); + { + setState(256); + constDecl(); + } + break; + case TYPE: + case COMMENT: + case LINE_COMMENT: + enterOuterAlt(_localctx, 2); + { + setState(257); + typeDecl(); + } + break; + case VAR: + enterOuterAlt(_localctx, 3); + { + setState(258); + varDecl(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstDeclContext extends ParserRuleContext { + public TerminalNode CONST() { return getToken(GoParser.CONST, 0); } + public List constSpec() { + return getRuleContexts(ConstSpecContext.class); + } + public ConstSpecContext constSpec(int i) { + return getRuleContext(ConstSpecContext.class,i); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public ConstDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterConstDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitConstDecl(this); + } + } + + public final ConstDeclContext constDecl() throws RecognitionException { + ConstDeclContext _localctx = new ConstDeclContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_constDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(261); + match(CONST); + setState(273); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + { + setState(262); + constSpec(); + } + break; + case L_PAREN: + { + setState(263); + match(L_PAREN); + setState(269); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IDENTIFIER) { + { + { + setState(264); + constSpec(); + setState(265); + eos(); + } + } + setState(271); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(272); + match(R_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstSpecContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public ConstSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterConstSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitConstSpec(this); + } + } + + public final ConstSpecContext constSpec() throws RecognitionException { + ConstSpecContext _localctx = new ConstSpecContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_constSpec); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(275); + identifierList(); + setState(281); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { + case 1: + { + setState(277); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (FUNC - 3)) | (1L << (INTERFACE - 3)) | (1L << (MAP - 3)) | (1L << (STRUCT - 3)) | (1L << (CHAN - 3)) | (1L << (IDENTIFIER - 3)) | (1L << (L_PAREN - 3)) | (1L << (L_BRACKET - 3)) | (1L << (STAR - 3)) | (1L << (RECEIVE - 3)))) != 0)) { + { + setState(276); + type_(); + } + } + + setState(279); + match(ASSIGN); + setState(280); + expressionList(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierListContext extends ParserRuleContext { + public List IDENTIFIER() { return getTokens(GoParser.IDENTIFIER); } + public TerminalNode IDENTIFIER(int i) { + return getToken(GoParser.IDENTIFIER, i); + } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public IdentifierListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifierList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterIdentifierList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitIdentifierList(this); + } + } + + public final IdentifierListContext identifierList() throws RecognitionException { + IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_identifierList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(283); + match(IDENTIFIER); + setState(288); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,11,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(284); + match(COMMA); + setState(285); + match(IDENTIFIER); + } + } + } + setState(290); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,11,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionListContext extends ParserRuleContext { + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public ExpressionListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterExpressionList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitExpressionList(this); + } + } + + public final ExpressionListContext expressionList() throws RecognitionException { + ExpressionListContext _localctx = new ExpressionListContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_expressionList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(291); + expression(0); + setState(296); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,12,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(292); + match(COMMA); + setState(293); + expression(0); + } + } + } + setState(298); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,12,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CommentContext extends ParserRuleContext { + public TerminalNode COMMENT() { return getToken(GoParser.COMMENT, 0); } + public TerminalNode LINE_COMMENT() { return getToken(GoParser.LINE_COMMENT, 0); } + public CommentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterComment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitComment(this); + } + } + + public final CommentContext comment() throws RecognitionException { + CommentContext _localctx = new CommentContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_comment); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(299); + _la = _input.LA(1); + if ( !(_la==COMMENT || _la==LINE_COMMENT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeDeclContext extends ParserRuleContext { + public TerminalNode TYPE() { return getToken(GoParser.TYPE, 0); } + public List typeSpec() { + return getRuleContexts(TypeSpecContext.class); + } + public TypeSpecContext typeSpec(int i) { + return getRuleContext(TypeSpecContext.class,i); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public List comment() { + return getRuleContexts(CommentContext.class); + } + public CommentContext comment(int i) { + return getRuleContext(CommentContext.class,i); + } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public TypeDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeDecl(this); + } + } + + public final TypeDeclContext typeDecl() throws RecognitionException { + TypeDeclContext _localctx = new TypeDeclContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_typeDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(304); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMENT || _la==LINE_COMMENT) { + { + { + setState(301); + comment(); + } + } + setState(306); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(307); + match(TYPE); + setState(319); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + { + setState(308); + typeSpec(); + } + break; + case L_PAREN: + { + setState(309); + match(L_PAREN); + setState(315); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IDENTIFIER) { + { + { + setState(310); + typeSpec(); + setState(311); + eos(); + } + } + setState(317); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(318); + match(R_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeSpecContext extends ParserRuleContext { + public AliasDeclContext aliasDecl() { + return getRuleContext(AliasDeclContext.class,0); + } + public TypeDefContext typeDef() { + return getRuleContext(TypeDefContext.class,0); + } + public TypeSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeSpec(this); + } + } + + public final TypeSpecContext typeSpec() throws RecognitionException { + TypeSpecContext _localctx = new TypeSpecContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_typeSpec); + try { + setState(323); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(321); + aliasDecl(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(322); + typeDef(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AliasDeclContext extends ParserRuleContext { + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public AliasDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_aliasDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterAliasDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitAliasDecl(this); + } + } + + public final AliasDeclContext aliasDecl() throws RecognitionException { + AliasDeclContext _localctx = new AliasDeclContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_aliasDecl); + try { + enterOuterAlt(_localctx, 1); + { + setState(325); + match(IDENTIFIER); + setState(326); + match(ASSIGN); + setState(327); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeDefContext extends ParserRuleContext { + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public TypeDefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeDef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeDef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeDef(this); + } + } + + public final TypeDefContext typeDef() throws RecognitionException { + TypeDefContext _localctx = new TypeDefContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_typeDef); + try { + enterOuterAlt(_localctx, 1); + { + setState(329); + match(IDENTIFIER); + setState(331); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { + case 1: + { + setState(330); + typeParameters(); + } + break; + } + setState(333); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParametersContext extends ParserRuleContext { + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public List typeParameterDecl() { + return getRuleContexts(TypeParameterDeclContext.class); + } + public TypeParameterDeclContext typeParameterDecl(int i) { + return getRuleContext(TypeParameterDeclContext.class,i); + } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public TypeParametersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeParameters(this); + } + } + + public final TypeParametersContext typeParameters() throws RecognitionException { + TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_typeParameters); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(335); + match(L_BRACKET); + setState(336); + typeParameterDecl(); + setState(341); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(337); + match(COMMA); + setState(338); + typeParameterDecl(); + } + } + setState(343); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(344); + match(R_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeParameterDeclContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TypeElementContext typeElement() { + return getRuleContext(TypeElementContext.class,0); + } + public TypeParameterDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeParameterDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeParameterDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeParameterDecl(this); + } + } + + public final TypeParameterDeclContext typeParameterDecl() throws RecognitionException { + TypeParameterDeclContext _localctx = new TypeParameterDeclContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_typeParameterDecl); + try { + enterOuterAlt(_localctx, 1); + { + setState(346); + identifierList(); + setState(347); + typeElement(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeElementContext extends ParserRuleContext { + public List typeTerm() { + return getRuleContexts(TypeTermContext.class); + } + public TypeTermContext typeTerm(int i) { + return getRuleContext(TypeTermContext.class,i); + } + public List OR() { return getTokens(GoParser.OR); } + public TerminalNode OR(int i) { + return getToken(GoParser.OR, i); + } + public TypeElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeElement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeElement(this); + } + } + + public final TypeElementContext typeElement() throws RecognitionException { + TypeElementContext _localctx = new TypeElementContext(_ctx, getState()); + enterRule(_localctx, 34, RULE_typeElement); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(349); + typeTerm(); + setState(354); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,19,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(350); + match(OR); + setState(351); + typeTerm(); + } + } + } + setState(356); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,19,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeTermContext extends ParserRuleContext { + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode UNDERLYING() { return getToken(GoParser.UNDERLYING, 0); } + public TypeTermContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeTerm; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeTerm(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeTerm(this); + } + } + + public final TypeTermContext typeTerm() throws RecognitionException { + TypeTermContext _localctx = new TypeTermContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_typeTerm); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(358); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==UNDERLYING) { + { + setState(357); + match(UNDERLYING); + } + } + + setState(360); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionDeclContext extends ParserRuleContext { + public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public SignatureContext signature() { + return getRuleContext(SignatureContext.class,0); + } + public TypeParametersContext typeParameters() { + return getRuleContext(TypeParametersContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public FunctionDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterFunctionDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitFunctionDecl(this); + } + } + + public final FunctionDeclContext functionDecl() throws RecognitionException { + FunctionDeclContext _localctx = new FunctionDeclContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_functionDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(362); + match(FUNC); + setState(363); + match(IDENTIFIER); + setState(365); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==L_BRACKET) { + { + setState(364); + typeParameters(); + } + } + + setState(367); + signature(); + setState(369); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { + case 1: + { + setState(368); + block(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodDeclContext extends ParserRuleContext { + public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); } + public ReceiverContext receiver() { + return getRuleContext(ReceiverContext.class,0); + } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public SignatureContext signature() { + return getRuleContext(SignatureContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public MethodDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterMethodDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitMethodDecl(this); + } + } + + public final MethodDeclContext methodDecl() throws RecognitionException { + MethodDeclContext _localctx = new MethodDeclContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_methodDecl); + try { + enterOuterAlt(_localctx, 1); + { + setState(371); + match(FUNC); + setState(372); + receiver(); + setState(373); + match(IDENTIFIER); + setState(374); + signature(); + setState(376); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { + case 1: + { + setState(375); + block(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReceiverContext extends ParserRuleContext { + public ParametersContext parameters() { + return getRuleContext(ParametersContext.class,0); + } + public ReceiverContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_receiver; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterReceiver(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitReceiver(this); + } + } + + public final ReceiverContext receiver() throws RecognitionException { + ReceiverContext _localctx = new ReceiverContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_receiver); + try { + enterOuterAlt(_localctx, 1); + { + setState(378); + parameters(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VarDeclContext extends ParserRuleContext { + public TerminalNode VAR() { return getToken(GoParser.VAR, 0); } + public List varSpec() { + return getRuleContexts(VarSpecContext.class); + } + public VarSpecContext varSpec(int i) { + return getRuleContext(VarSpecContext.class,i); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public VarDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_varDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterVarDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitVarDecl(this); + } + } + + public final VarDeclContext varDecl() throws RecognitionException { + VarDeclContext _localctx = new VarDeclContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_varDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(380); + match(VAR); + setState(392); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + { + setState(381); + varSpec(); + } + break; + case L_PAREN: + { + setState(382); + match(L_PAREN); + setState(388); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IDENTIFIER) { + { + { + setState(383); + varSpec(); + setState(384); + eos(); + } + } + setState(390); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(391); + match(R_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class VarSpecContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public VarSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_varSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterVarSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitVarSpec(this); + } + } + + public final VarSpecContext varSpec() throws RecognitionException { + VarSpecContext _localctx = new VarSpecContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_varSpec); + try { + enterOuterAlt(_localctx, 1); + { + setState(394); + identifierList(); + setState(402); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FUNC: + case INTERFACE: + case MAP: + case STRUCT: + case CHAN: + case IDENTIFIER: + case L_PAREN: + case L_BRACKET: + case STAR: + case RECEIVE: + { + setState(395); + type_(); + setState(398); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { + case 1: + { + setState(396); + match(ASSIGN); + setState(397); + expressionList(); + } + break; + } + } + break; + case ASSIGN: + { + setState(400); + match(ASSIGN); + setState(401); + expressionList(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BlockContext extends ParserRuleContext { + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public StatementListContext statementList() { + return getRuleContext(StatementListContext.class,0); + } + public BlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitBlock(this); + } + } + + public final BlockContext block() throws RecognitionException { + BlockContext _localctx = new BlockContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_block); + try { + enterOuterAlt(_localctx, 1); + { + setState(404); + match(L_CURLY); + setState(406); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) { + case 1: + { + setState(405); + statementList(); + } + break; + } + setState(408); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementListContext extends ParserRuleContext { + public List statement() { + return getRuleContexts(StatementContext.class); + } + public StatementContext statement(int i) { + return getRuleContext(StatementContext.class,i); + } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public List SEMI() { return getTokens(GoParser.SEMI); } + public TerminalNode SEMI(int i) { + return getToken(GoParser.SEMI, i); + } + public List EOS() { return getTokens(GoParser.EOS); } + public TerminalNode EOS(int i) { + return getToken(GoParser.EOS, i); + } + public StatementListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statementList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterStatementList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitStatementList(this); + } + } + + public final StatementListContext statementList() throws RecognitionException { + StatementListContext _localctx = new StatementListContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_statementList); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(422); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(417); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { + case 1: + { + setState(411); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SEMI) { + { + setState(410); + match(SEMI); + } + } + + } + break; + case 2: + { + setState(414); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==EOS) { + { + setState(413); + match(EOS); + } + } + + } + break; + case 3: + { + setState(416); + if (!(this.closingBracket())) throw new FailedPredicateException(this, "this.closingBracket()"); + } + break; + } + setState(419); + statement(); + setState(420); + eos(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(424); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,32,_ctx); + } while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StatementContext extends ParserRuleContext { + public DeclarationContext declaration() { + return getRuleContext(DeclarationContext.class,0); + } + public LabeledStmtContext labeledStmt() { + return getRuleContext(LabeledStmtContext.class,0); + } + public SimpleStmtContext simpleStmt() { + return getRuleContext(SimpleStmtContext.class,0); + } + public GoStmtContext goStmt() { + return getRuleContext(GoStmtContext.class,0); + } + public ReturnStmtContext returnStmt() { + return getRuleContext(ReturnStmtContext.class,0); + } + public BreakStmtContext breakStmt() { + return getRuleContext(BreakStmtContext.class,0); + } + public ContinueStmtContext continueStmt() { + return getRuleContext(ContinueStmtContext.class,0); + } + public GotoStmtContext gotoStmt() { + return getRuleContext(GotoStmtContext.class,0); + } + public FallthroughStmtContext fallthroughStmt() { + return getRuleContext(FallthroughStmtContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public IfStmtContext ifStmt() { + return getRuleContext(IfStmtContext.class,0); + } + public SwitchStmtContext switchStmt() { + return getRuleContext(SwitchStmtContext.class,0); + } + public SelectStmtContext selectStmt() { + return getRuleContext(SelectStmtContext.class,0); + } + public ForStmtContext forStmt() { + return getRuleContext(ForStmtContext.class,0); + } + public DeferStmtContext deferStmt() { + return getRuleContext(DeferStmtContext.class,0); + } + public StatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_statement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitStatement(this); + } + } + + public final StatementContext statement() throws RecognitionException { + StatementContext _localctx = new StatementContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_statement); + try { + setState(441); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(426); + declaration(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(427); + labeledStmt(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(428); + simpleStmt(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(429); + goStmt(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(430); + returnStmt(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(431); + breakStmt(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(432); + continueStmt(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(433); + gotoStmt(); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(434); + fallthroughStmt(); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(435); + block(); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(436); + ifStmt(); + } + break; + case 12: + enterOuterAlt(_localctx, 12); + { + setState(437); + switchStmt(); + } + break; + case 13: + enterOuterAlt(_localctx, 13); + { + setState(438); + selectStmt(); + } + break; + case 14: + enterOuterAlt(_localctx, 14); + { + setState(439); + forStmt(); + } + break; + case 15: + enterOuterAlt(_localctx, 15); + { + setState(440); + deferStmt(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SimpleStmtContext extends ParserRuleContext { + public SendStmtContext sendStmt() { + return getRuleContext(SendStmtContext.class,0); + } + public IncDecStmtContext incDecStmt() { + return getRuleContext(IncDecStmtContext.class,0); + } + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public ExpressionStmtContext expressionStmt() { + return getRuleContext(ExpressionStmtContext.class,0); + } + public ShortVarDeclContext shortVarDecl() { + return getRuleContext(ShortVarDeclContext.class,0); + } + public SimpleStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simpleStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSimpleStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSimpleStmt(this); + } + } + + public final SimpleStmtContext simpleStmt() throws RecognitionException { + SimpleStmtContext _localctx = new SimpleStmtContext(_ctx, getState()); + enterRule(_localctx, 54, RULE_simpleStmt); + try { + setState(448); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(443); + sendStmt(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(444); + incDecStmt(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(445); + assignment(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(446); + expressionStmt(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(447); + shortVarDecl(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionStmtContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ExpressionStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expressionStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterExpressionStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitExpressionStmt(this); + } + } + + public final ExpressionStmtContext expressionStmt() throws RecognitionException { + ExpressionStmtContext _localctx = new ExpressionStmtContext(_ctx, getState()); + enterRule(_localctx, 56, RULE_expressionStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(450); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SendStmtContext extends ParserRuleContext { + public ExpressionContext channel; + public TerminalNode RECEIVE() { return getToken(GoParser.RECEIVE, 0); } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public SendStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sendStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSendStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSendStmt(this); + } + } + + public final SendStmtContext sendStmt() throws RecognitionException { + SendStmtContext _localctx = new SendStmtContext(_ctx, getState()); + enterRule(_localctx, 58, RULE_sendStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(452); + ((SendStmtContext)_localctx).channel = expression(0); + setState(453); + match(RECEIVE); + setState(454); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IncDecStmtContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode PLUS_PLUS() { return getToken(GoParser.PLUS_PLUS, 0); } + public TerminalNode MINUS_MINUS() { return getToken(GoParser.MINUS_MINUS, 0); } + public IncDecStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_incDecStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterIncDecStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitIncDecStmt(this); + } + } + + public final IncDecStmtContext incDecStmt() throws RecognitionException { + IncDecStmtContext _localctx = new IncDecStmtContext(_ctx, getState()); + enterRule(_localctx, 60, RULE_incDecStmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(456); + expression(0); + setState(457); + _la = _input.LA(1); + if ( !(_la==PLUS_PLUS || _la==MINUS_MINUS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class AssignmentContext extends ParserRuleContext { + public List expressionList() { + return getRuleContexts(ExpressionListContext.class); + } + public ExpressionListContext expressionList(int i) { + return getRuleContext(ExpressionListContext.class,i); + } + public Assign_opContext assign_op() { + return getRuleContext(Assign_opContext.class,0); + } + public AssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitAssignment(this); + } + } + + public final AssignmentContext assignment() throws RecognitionException { + AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); + enterRule(_localctx, 62, RULE_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(459); + expressionList(); + setState(460); + assign_op(); + setState(461); + expressionList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Assign_opContext extends ParserRuleContext { + public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); } + public TerminalNode PLUS() { return getToken(GoParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(GoParser.MINUS, 0); } + public TerminalNode OR() { return getToken(GoParser.OR, 0); } + public TerminalNode CARET() { return getToken(GoParser.CARET, 0); } + public TerminalNode STAR() { return getToken(GoParser.STAR, 0); } + public TerminalNode DIV() { return getToken(GoParser.DIV, 0); } + public TerminalNode MOD() { return getToken(GoParser.MOD, 0); } + public TerminalNode LSHIFT() { return getToken(GoParser.LSHIFT, 0); } + public TerminalNode RSHIFT() { return getToken(GoParser.RSHIFT, 0); } + public TerminalNode AMPERSAND() { return getToken(GoParser.AMPERSAND, 0); } + public TerminalNode BIT_CLEAR() { return getToken(GoParser.BIT_CLEAR, 0); } + public Assign_opContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assign_op; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterAssign_op(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitAssign_op(this); + } + } + + public final Assign_opContext assign_op() throws RecognitionException { + Assign_opContext _localctx = new Assign_opContext(_ctx, getState()); + enterRule(_localctx, 64, RULE_assign_op); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(464); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR) | (1L << DIV) | (1L << MOD) | (1L << LSHIFT) | (1L << RSHIFT) | (1L << BIT_CLEAR) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0)) { + { + setState(463); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR) | (1L << DIV) | (1L << MOD) | (1L << LSHIFT) | (1L << RSHIFT) | (1L << BIT_CLEAR) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + + setState(466); + match(ASSIGN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ShortVarDeclContext extends ParserRuleContext { + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public ShortVarDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_shortVarDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterShortVarDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitShortVarDecl(this); + } + } + + public final ShortVarDeclContext shortVarDecl() throws RecognitionException { + ShortVarDeclContext _localctx = new ShortVarDeclContext(_ctx, getState()); + enterRule(_localctx, 66, RULE_shortVarDecl); + try { + enterOuterAlt(_localctx, 1); + { + setState(468); + identifierList(); + setState(469); + match(DECLARE_ASSIGN); + setState(470); + expressionList(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LabeledStmtContext extends ParserRuleContext { + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public TerminalNode COLON() { return getToken(GoParser.COLON, 0); } + public StatementContext statement() { + return getRuleContext(StatementContext.class,0); + } + public LabeledStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_labeledStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterLabeledStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitLabeledStmt(this); + } + } + + public final LabeledStmtContext labeledStmt() throws RecognitionException { + LabeledStmtContext _localctx = new LabeledStmtContext(_ctx, getState()); + enterRule(_localctx, 68, RULE_labeledStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(472); + match(IDENTIFIER); + setState(473); + match(COLON); + setState(475); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { + case 1: + { + setState(474); + statement(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ReturnStmtContext extends ParserRuleContext { + public TerminalNode RETURN() { return getToken(GoParser.RETURN, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public ReturnStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_returnStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterReturnStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitReturnStmt(this); + } + } + + public final ReturnStmtContext returnStmt() throws RecognitionException { + ReturnStmtContext _localctx = new ReturnStmtContext(_ctx, getState()); + enterRule(_localctx, 70, RULE_returnStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(477); + match(RETURN); + setState(479); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { + case 1: + { + setState(478); + expressionList(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BreakStmtContext extends ParserRuleContext { + public TerminalNode BREAK() { return getToken(GoParser.BREAK, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public BreakStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_breakStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterBreakStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitBreakStmt(this); + } + } + + public final BreakStmtContext breakStmt() throws RecognitionException { + BreakStmtContext _localctx = new BreakStmtContext(_ctx, getState()); + enterRule(_localctx, 72, RULE_breakStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(481); + match(BREAK); + setState(483); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) { + case 1: + { + setState(482); + match(IDENTIFIER); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ContinueStmtContext extends ParserRuleContext { + public TerminalNode CONTINUE() { return getToken(GoParser.CONTINUE, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public ContinueStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_continueStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterContinueStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitContinueStmt(this); + } + } + + public final ContinueStmtContext continueStmt() throws RecognitionException { + ContinueStmtContext _localctx = new ContinueStmtContext(_ctx, getState()); + enterRule(_localctx, 74, RULE_continueStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(485); + match(CONTINUE); + setState(487); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) { + case 1: + { + setState(486); + match(IDENTIFIER); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GotoStmtContext extends ParserRuleContext { + public TerminalNode GOTO() { return getToken(GoParser.GOTO, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public GotoStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_gotoStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterGotoStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitGotoStmt(this); + } + } + + public final GotoStmtContext gotoStmt() throws RecognitionException { + GotoStmtContext _localctx = new GotoStmtContext(_ctx, getState()); + enterRule(_localctx, 76, RULE_gotoStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(489); + match(GOTO); + setState(490); + match(IDENTIFIER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FallthroughStmtContext extends ParserRuleContext { + public TerminalNode FALLTHROUGH() { return getToken(GoParser.FALLTHROUGH, 0); } + public FallthroughStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fallthroughStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterFallthroughStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitFallthroughStmt(this); + } + } + + public final FallthroughStmtContext fallthroughStmt() throws RecognitionException { + FallthroughStmtContext _localctx = new FallthroughStmtContext(_ctx, getState()); + enterRule(_localctx, 78, RULE_fallthroughStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(492); + match(FALLTHROUGH); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class DeferStmtContext extends ParserRuleContext { + public TerminalNode DEFER() { return getToken(GoParser.DEFER, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public DeferStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_deferStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterDeferStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitDeferStmt(this); + } + } + + public final DeferStmtContext deferStmt() throws RecognitionException { + DeferStmtContext _localctx = new DeferStmtContext(_ctx, getState()); + enterRule(_localctx, 80, RULE_deferStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(494); + match(DEFER); + setState(495); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IfStmtContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(GoParser.IF, 0); } + public List block() { + return getRuleContexts(BlockContext.class); + } + public BlockContext block(int i) { + return getRuleContext(BlockContext.class,i); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public EosContext eos() { + return getRuleContext(EosContext.class,0); + } + public SimpleStmtContext simpleStmt() { + return getRuleContext(SimpleStmtContext.class,0); + } + public TerminalNode ELSE() { return getToken(GoParser.ELSE, 0); } + public IfStmtContext ifStmt() { + return getRuleContext(IfStmtContext.class,0); + } + public IfStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ifStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterIfStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitIfStmt(this); + } + } + + public final IfStmtContext ifStmt() throws RecognitionException { + IfStmtContext _localctx = new IfStmtContext(_ctx, getState()); + enterRule(_localctx, 82, RULE_ifStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(497); + match(IF); + setState(506); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) { + case 1: + { + setState(498); + expression(0); + } + break; + case 2: + { + setState(499); + eos(); + setState(500); + expression(0); + } + break; + case 3: + { + setState(502); + simpleStmt(); + setState(503); + eos(); + setState(504); + expression(0); + } + break; + } + setState(508); + block(); + setState(514); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) { + case 1: + { + setState(509); + match(ELSE); + setState(512); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IF: + { + setState(510); + ifStmt(); + } + break; + case L_CURLY: + { + setState(511); + block(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SwitchStmtContext extends ParserRuleContext { + public ExprSwitchStmtContext exprSwitchStmt() { + return getRuleContext(ExprSwitchStmtContext.class,0); + } + public TypeSwitchStmtContext typeSwitchStmt() { + return getRuleContext(TypeSwitchStmtContext.class,0); + } + public SwitchStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_switchStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSwitchStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSwitchStmt(this); + } + } + + public final SwitchStmtContext switchStmt() throws RecognitionException { + SwitchStmtContext _localctx = new SwitchStmtContext(_ctx, getState()); + enterRule(_localctx, 84, RULE_switchStmt); + try { + setState(518); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(516); + exprSwitchStmt(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(517); + typeSwitchStmt(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExprSwitchStmtContext extends ParserRuleContext { + public TerminalNode SWITCH() { return getToken(GoParser.SWITCH, 0); } + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public EosContext eos() { + return getRuleContext(EosContext.class,0); + } + public List exprCaseClause() { + return getRuleContexts(ExprCaseClauseContext.class); + } + public ExprCaseClauseContext exprCaseClause(int i) { + return getRuleContext(ExprCaseClauseContext.class,i); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public SimpleStmtContext simpleStmt() { + return getRuleContext(SimpleStmtContext.class,0); + } + public ExprSwitchStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exprSwitchStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterExprSwitchStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitExprSwitchStmt(this); + } + } + + public final ExprSwitchStmtContext exprSwitchStmt() throws RecognitionException { + ExprSwitchStmtContext _localctx = new ExprSwitchStmtContext(_ctx, getState()); + enterRule(_localctx, 86, RULE_exprSwitchStmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(520); + match(SWITCH); + setState(531); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) { + case 1: + { + setState(522); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(521); + expression(0); + } + } + + } + break; + case 2: + { + setState(525); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) { + case 1: + { + setState(524); + simpleStmt(); + } + break; + } + setState(527); + eos(); + setState(529); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(528); + expression(0); + } + } + + } + break; + } + setState(533); + match(L_CURLY); + setState(537); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DEFAULT || _la==CASE) { + { + { + setState(534); + exprCaseClause(); + } + } + setState(539); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(540); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExprCaseClauseContext extends ParserRuleContext { + public ExprSwitchCaseContext exprSwitchCase() { + return getRuleContext(ExprSwitchCaseContext.class,0); + } + public TerminalNode COLON() { return getToken(GoParser.COLON, 0); } + public StatementListContext statementList() { + return getRuleContext(StatementListContext.class,0); + } + public ExprCaseClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exprCaseClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterExprCaseClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitExprCaseClause(this); + } + } + + public final ExprCaseClauseContext exprCaseClause() throws RecognitionException { + ExprCaseClauseContext _localctx = new ExprCaseClauseContext(_ctx, getState()); + enterRule(_localctx, 88, RULE_exprCaseClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(542); + exprSwitchCase(); + setState(543); + match(COLON); + setState(545); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) { + case 1: + { + setState(544); + statementList(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExprSwitchCaseContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(GoParser.CASE, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(GoParser.DEFAULT, 0); } + public ExprSwitchCaseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exprSwitchCase; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterExprSwitchCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitExprSwitchCase(this); + } + } + + public final ExprSwitchCaseContext exprSwitchCase() throws RecognitionException { + ExprSwitchCaseContext _localctx = new ExprSwitchCaseContext(_ctx, getState()); + enterRule(_localctx, 90, RULE_exprSwitchCase); + try { + setState(550); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CASE: + enterOuterAlt(_localctx, 1); + { + setState(547); + match(CASE); + setState(548); + expressionList(); + } + break; + case DEFAULT: + enterOuterAlt(_localctx, 2); + { + setState(549); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeSwitchStmtContext extends ParserRuleContext { + public TerminalNode SWITCH() { return getToken(GoParser.SWITCH, 0); } + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public TypeSwitchGuardContext typeSwitchGuard() { + return getRuleContext(TypeSwitchGuardContext.class,0); + } + public EosContext eos() { + return getRuleContext(EosContext.class,0); + } + public SimpleStmtContext simpleStmt() { + return getRuleContext(SimpleStmtContext.class,0); + } + public List typeCaseClause() { + return getRuleContexts(TypeCaseClauseContext.class); + } + public TypeCaseClauseContext typeCaseClause(int i) { + return getRuleContext(TypeCaseClauseContext.class,i); + } + public TypeSwitchStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeSwitchStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeSwitchStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeSwitchStmt(this); + } + } + + public final TypeSwitchStmtContext typeSwitchStmt() throws RecognitionException { + TypeSwitchStmtContext _localctx = new TypeSwitchStmtContext(_ctx, getState()); + enterRule(_localctx, 92, RULE_typeSwitchStmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(552); + match(SWITCH); + setState(561); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) { + case 1: + { + setState(553); + typeSwitchGuard(); + } + break; + case 2: + { + setState(554); + eos(); + setState(555); + typeSwitchGuard(); + } + break; + case 3: + { + setState(557); + simpleStmt(); + setState(558); + eos(); + setState(559); + typeSwitchGuard(); + } + break; + } + setState(563); + match(L_CURLY); + setState(567); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DEFAULT || _la==CASE) { + { + { + setState(564); + typeCaseClause(); + } + } + setState(569); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(570); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeSwitchGuardContext extends ParserRuleContext { + public PrimaryExprContext primaryExpr() { + return getRuleContext(PrimaryExprContext.class,0); + } + public TerminalNode DOT() { return getToken(GoParser.DOT, 0); } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode TYPE() { return getToken(GoParser.TYPE, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); } + public TypeSwitchGuardContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeSwitchGuard; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeSwitchGuard(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeSwitchGuard(this); + } + } + + public final TypeSwitchGuardContext typeSwitchGuard() throws RecognitionException { + TypeSwitchGuardContext _localctx = new TypeSwitchGuardContext(_ctx, getState()); + enterRule(_localctx, 94, RULE_typeSwitchGuard); + try { + enterOuterAlt(_localctx, 1); + { + setState(574); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) { + case 1: + { + setState(572); + match(IDENTIFIER); + setState(573); + match(DECLARE_ASSIGN); + } + break; + } + setState(576); + primaryExpr(0); + setState(577); + match(DOT); + setState(578); + match(L_PAREN); + setState(579); + match(TYPE); + setState(580); + match(R_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeCaseClauseContext extends ParserRuleContext { + public TypeSwitchCaseContext typeSwitchCase() { + return getRuleContext(TypeSwitchCaseContext.class,0); + } + public TerminalNode COLON() { return getToken(GoParser.COLON, 0); } + public StatementListContext statementList() { + return getRuleContext(StatementListContext.class,0); + } + public TypeCaseClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeCaseClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeCaseClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeCaseClause(this); + } + } + + public final TypeCaseClauseContext typeCaseClause() throws RecognitionException { + TypeCaseClauseContext _localctx = new TypeCaseClauseContext(_ctx, getState()); + enterRule(_localctx, 96, RULE_typeCaseClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(582); + typeSwitchCase(); + setState(583); + match(COLON); + setState(585); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { + case 1: + { + setState(584); + statementList(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeSwitchCaseContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(GoParser.CASE, 0); } + public TypeListContext typeList() { + return getRuleContext(TypeListContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(GoParser.DEFAULT, 0); } + public TypeSwitchCaseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeSwitchCase; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeSwitchCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeSwitchCase(this); + } + } + + public final TypeSwitchCaseContext typeSwitchCase() throws RecognitionException { + TypeSwitchCaseContext _localctx = new TypeSwitchCaseContext(_ctx, getState()); + enterRule(_localctx, 98, RULE_typeSwitchCase); + try { + setState(590); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CASE: + enterOuterAlt(_localctx, 1); + { + setState(587); + match(CASE); + setState(588); + typeList(); + } + break; + case DEFAULT: + enterOuterAlt(_localctx, 2); + { + setState(589); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeListContext extends ParserRuleContext { + public List type_() { + return getRuleContexts(Type_Context.class); + } + public Type_Context type_(int i) { + return getRuleContext(Type_Context.class,i); + } + public List NIL_LIT() { return getTokens(GoParser.NIL_LIT); } + public TerminalNode NIL_LIT(int i) { + return getToken(GoParser.NIL_LIT, i); + } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public TypeListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeList(this); + } + } + + public final TypeListContext typeList() throws RecognitionException { + TypeListContext _localctx = new TypeListContext(_ctx, getState()); + enterRule(_localctx, 100, RULE_typeList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(594); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FUNC: + case INTERFACE: + case MAP: + case STRUCT: + case CHAN: + case IDENTIFIER: + case L_PAREN: + case L_BRACKET: + case STAR: + case RECEIVE: + { + setState(592); + type_(); + } + break; + case NIL_LIT: + { + setState(593); + match(NIL_LIT); + } + break; + default: + throw new NoViableAltException(this); + } + setState(603); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,58,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(596); + match(COMMA); + setState(599); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FUNC: + case INTERFACE: + case MAP: + case STRUCT: + case CHAN: + case IDENTIFIER: + case L_PAREN: + case L_BRACKET: + case STAR: + case RECEIVE: + { + setState(597); + type_(); + } + break; + case NIL_LIT: + { + setState(598); + match(NIL_LIT); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + } + setState(605); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,58,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SelectStmtContext extends ParserRuleContext { + public TerminalNode SELECT() { return getToken(GoParser.SELECT, 0); } + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public List commClause() { + return getRuleContexts(CommClauseContext.class); + } + public CommClauseContext commClause(int i) { + return getRuleContext(CommClauseContext.class,i); + } + public SelectStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_selectStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSelectStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSelectStmt(this); + } + } + + public final SelectStmtContext selectStmt() throws RecognitionException { + SelectStmtContext _localctx = new SelectStmtContext(_ctx, getState()); + enterRule(_localctx, 102, RULE_selectStmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(606); + match(SELECT); + setState(607); + match(L_CURLY); + setState(611); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DEFAULT || _la==CASE) { + { + { + setState(608); + commClause(); + } + } + setState(613); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(614); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CommClauseContext extends ParserRuleContext { + public CommCaseContext commCase() { + return getRuleContext(CommCaseContext.class,0); + } + public TerminalNode COLON() { return getToken(GoParser.COLON, 0); } + public StatementListContext statementList() { + return getRuleContext(StatementListContext.class,0); + } + public CommClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_commClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterCommClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitCommClause(this); + } + } + + public final CommClauseContext commClause() throws RecognitionException { + CommClauseContext _localctx = new CommClauseContext(_ctx, getState()); + enterRule(_localctx, 104, RULE_commClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(616); + commCase(); + setState(617); + match(COLON); + setState(619); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) { + case 1: + { + setState(618); + statementList(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CommCaseContext extends ParserRuleContext { + public TerminalNode CASE() { return getToken(GoParser.CASE, 0); } + public SendStmtContext sendStmt() { + return getRuleContext(SendStmtContext.class,0); + } + public RecvStmtContext recvStmt() { + return getRuleContext(RecvStmtContext.class,0); + } + public TerminalNode DEFAULT() { return getToken(GoParser.DEFAULT, 0); } + public CommCaseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_commCase; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterCommCase(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitCommCase(this); + } + } + + public final CommCaseContext commCase() throws RecognitionException { + CommCaseContext _localctx = new CommCaseContext(_ctx, getState()); + enterRule(_localctx, 106, RULE_commCase); + try { + setState(627); + _errHandler.sync(this); + switch (_input.LA(1)) { + case CASE: + enterOuterAlt(_localctx, 1); + { + setState(621); + match(CASE); + setState(624); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { + case 1: + { + setState(622); + sendStmt(); + } + break; + case 2: + { + setState(623); + recvStmt(); + } + break; + } + } + break; + case DEFAULT: + enterOuterAlt(_localctx, 2); + { + setState(626); + match(DEFAULT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RecvStmtContext extends ParserRuleContext { + public ExpressionContext recvExpr; + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); } + public RecvStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_recvStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterRecvStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitRecvStmt(this); + } + } + + public final RecvStmtContext recvStmt() throws RecognitionException { + RecvStmtContext _localctx = new RecvStmtContext(_ctx, getState()); + enterRule(_localctx, 108, RULE_recvStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(635); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { + case 1: + { + setState(629); + expressionList(); + setState(630); + match(ASSIGN); + } + break; + case 2: + { + setState(632); + identifierList(); + setState(633); + match(DECLARE_ASSIGN); + } + break; + } + setState(637); + ((RecvStmtContext)_localctx).recvExpr = expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForStmtContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(GoParser.FOR, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public ForClauseContext forClause() { + return getRuleContext(ForClauseContext.class,0); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public RangeClauseContext rangeClause() { + return getRuleContext(RangeClauseContext.class,0); + } + public ForStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterForStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitForStmt(this); + } + } + + public final ForStmtContext forStmt() throws RecognitionException { + ForStmtContext _localctx = new ForStmtContext(_ctx, getState()); + enterRule(_localctx, 110, RULE_forStmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(639); + match(FOR); + setState(647); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) { + case 1: + { + setState(641); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(640); + expression(0); + } + } + + } + break; + case 2: + { + setState(643); + forClause(); + } + break; + case 3: + { + setState(645); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << RANGE) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(644); + rangeClause(); + } + } + + } + break; + } + setState(649); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ForClauseContext extends ParserRuleContext { + public SimpleStmtContext initStmt; + public SimpleStmtContext postStmt; + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public List simpleStmt() { + return getRuleContexts(SimpleStmtContext.class); + } + public SimpleStmtContext simpleStmt(int i) { + return getRuleContext(SimpleStmtContext.class,i); + } + public ForClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_forClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterForClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitForClause(this); + } + } + + public final ForClauseContext forClause() throws RecognitionException { + ForClauseContext _localctx = new ForClauseContext(_ctx, getState()); + enterRule(_localctx, 112, RULE_forClause); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(652); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) { + case 1: + { + setState(651); + ((ForClauseContext)_localctx).initStmt = simpleStmt(); + } + break; + } + setState(654); + eos(); + setState(656); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) { + case 1: + { + setState(655); + expression(0); + } + break; + } + setState(658); + eos(); + setState(660); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(659); + ((ForClauseContext)_localctx).postStmt = simpleStmt(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class RangeClauseContext extends ParserRuleContext { + public TerminalNode RANGE() { return getToken(GoParser.RANGE, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(GoParser.ASSIGN, 0); } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode DECLARE_ASSIGN() { return getToken(GoParser.DECLARE_ASSIGN, 0); } + public RangeClauseContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_rangeClause; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterRangeClause(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitRangeClause(this); + } + } + + public final RangeClauseContext rangeClause() throws RecognitionException { + RangeClauseContext _localctx = new RangeClauseContext(_ctx, getState()); + enterRule(_localctx, 114, RULE_rangeClause); + try { + enterOuterAlt(_localctx, 1); + { + setState(668); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) { + case 1: + { + setState(662); + expressionList(); + setState(663); + match(ASSIGN); + } + break; + case 2: + { + setState(665); + identifierList(); + setState(666); + match(DECLARE_ASSIGN); + } + break; + } + setState(670); + match(RANGE); + setState(671); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class GoStmtContext extends ParserRuleContext { + public TerminalNode GO() { return getToken(GoParser.GO, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public GoStmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_goStmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterGoStmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitGoStmt(this); + } + } + + public final GoStmtContext goStmt() throws RecognitionException { + GoStmtContext _localctx = new GoStmtContext(_ctx, getState()); + enterRule(_localctx, 116, RULE_goStmt); + try { + enterOuterAlt(_localctx, 1); + { + setState(673); + match(GO); + setState(674); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Type_Context extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TypeArgsContext typeArgs() { + return getRuleContext(TypeArgsContext.class,0); + } + public TypeLitContext typeLit() { + return getRuleContext(TypeLitContext.class,0); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public Type_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_type_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterType_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitType_(this); + } + } + + public final Type_Context type_() throws RecognitionException { + Type_Context _localctx = new Type_Context(_ctx, getState()); + enterRule(_localctx, 118, RULE_type_); + try { + setState(685); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + enterOuterAlt(_localctx, 1); + { + setState(676); + typeName(); + setState(678); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) { + case 1: + { + setState(677); + typeArgs(); + } + break; + } + } + break; + case FUNC: + case INTERFACE: + case MAP: + case STRUCT: + case CHAN: + case L_BRACKET: + case STAR: + case RECEIVE: + enterOuterAlt(_localctx, 2); + { + setState(680); + typeLit(); + } + break; + case L_PAREN: + enterOuterAlt(_localctx, 3); + { + setState(681); + match(L_PAREN); + setState(682); + type_(); + setState(683); + match(R_PAREN); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeArgsContext extends ParserRuleContext { + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public TypeListContext typeList() { + return getRuleContext(TypeListContext.class,0); + } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public TerminalNode COMMA() { return getToken(GoParser.COMMA, 0); } + public TypeArgsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeArgs; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeArgs(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeArgs(this); + } + } + + public final TypeArgsContext typeArgs() throws RecognitionException { + TypeArgsContext _localctx = new TypeArgsContext(_ctx, getState()); + enterRule(_localctx, 120, RULE_typeArgs); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(687); + match(L_BRACKET); + setState(688); + typeList(); + setState(690); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(689); + match(COMMA); + } + } + + setState(692); + match(R_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeNameContext extends ParserRuleContext { + public QualifiedIdentContext qualifiedIdent() { + return getRuleContext(QualifiedIdentContext.class,0); + } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public TypeNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeName(this); + } + } + + public final TypeNameContext typeName() throws RecognitionException { + TypeNameContext _localctx = new TypeNameContext(_ctx, getState()); + enterRule(_localctx, 122, RULE_typeName); + try { + setState(696); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(694); + qualifiedIdent(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(695); + match(IDENTIFIER); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeLitContext extends ParserRuleContext { + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public StructTypeContext structType() { + return getRuleContext(StructTypeContext.class,0); + } + public PointerTypeContext pointerType() { + return getRuleContext(PointerTypeContext.class,0); + } + public FunctionTypeContext functionType() { + return getRuleContext(FunctionTypeContext.class,0); + } + public InterfaceTypeContext interfaceType() { + return getRuleContext(InterfaceTypeContext.class,0); + } + public SliceTypeContext sliceType() { + return getRuleContext(SliceTypeContext.class,0); + } + public MapTypeContext mapType() { + return getRuleContext(MapTypeContext.class,0); + } + public ChannelTypeContext channelType() { + return getRuleContext(ChannelTypeContext.class,0); + } + public TypeLitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeLit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeLit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeLit(this); + } + } + + public final TypeLitContext typeLit() throws RecognitionException { + TypeLitContext _localctx = new TypeLitContext(_ctx, getState()); + enterRule(_localctx, 124, RULE_typeLit); + try { + setState(706); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(698); + arrayType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(699); + structType(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(700); + pointerType(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(701); + functionType(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(702); + interfaceType(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(703); + sliceType(); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(704); + mapType(); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(705); + channelType(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayTypeContext extends ParserRuleContext { + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public ArrayLengthContext arrayLength() { + return getRuleContext(ArrayLengthContext.class,0); + } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public ElementTypeContext elementType() { + return getRuleContext(ElementTypeContext.class,0); + } + public ArrayTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterArrayType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitArrayType(this); + } + } + + public final ArrayTypeContext arrayType() throws RecognitionException { + ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState()); + enterRule(_localctx, 126, RULE_arrayType); + try { + enterOuterAlt(_localctx, 1); + { + setState(708); + match(L_BRACKET); + setState(709); + arrayLength(); + setState(710); + match(R_BRACKET); + setState(711); + elementType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArrayLengthContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ArrayLengthContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arrayLength; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterArrayLength(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitArrayLength(this); + } + } + + public final ArrayLengthContext arrayLength() throws RecognitionException { + ArrayLengthContext _localctx = new ArrayLengthContext(_ctx, getState()); + enterRule(_localctx, 128, RULE_arrayLength); + try { + enterOuterAlt(_localctx, 1); + { + setState(713); + expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementTypeContext extends ParserRuleContext { + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public ElementTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterElementType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitElementType(this); + } + } + + public final ElementTypeContext elementType() throws RecognitionException { + ElementTypeContext _localctx = new ElementTypeContext(_ctx, getState()); + enterRule(_localctx, 130, RULE_elementType); + try { + enterOuterAlt(_localctx, 1); + { + setState(715); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PointerTypeContext extends ParserRuleContext { + public TerminalNode STAR() { return getToken(GoParser.STAR, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public PointerTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_pointerType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterPointerType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitPointerType(this); + } + } + + public final PointerTypeContext pointerType() throws RecognitionException { + PointerTypeContext _localctx = new PointerTypeContext(_ctx, getState()); + enterRule(_localctx, 132, RULE_pointerType); + try { + enterOuterAlt(_localctx, 1); + { + setState(717); + match(STAR); + setState(718); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class InterfaceTypeContext extends ParserRuleContext { + public TerminalNode INTERFACE() { return getToken(GoParser.INTERFACE, 0); } + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public List methodSpec() { + return getRuleContexts(MethodSpecContext.class); + } + public MethodSpecContext methodSpec(int i) { + return getRuleContext(MethodSpecContext.class,i); + } + public List typeElement() { + return getRuleContexts(TypeElementContext.class); + } + public TypeElementContext typeElement(int i) { + return getRuleContext(TypeElementContext.class,i); + } + public InterfaceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_interfaceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterInterfaceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitInterfaceType(this); + } + } + + public final InterfaceTypeContext interfaceType() throws RecognitionException { + InterfaceTypeContext _localctx = new InterfaceTypeContext(_ctx, getState()); + enterRule(_localctx, 134, RULE_interfaceType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(720); + match(INTERFACE); + setState(721); + match(L_CURLY); + setState(730); + _errHandler.sync(this); + _la = _input.LA(1); + while (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (FUNC - 3)) | (1L << (INTERFACE - 3)) | (1L << (MAP - 3)) | (1L << (STRUCT - 3)) | (1L << (CHAN - 3)) | (1L << (IDENTIFIER - 3)) | (1L << (L_PAREN - 3)) | (1L << (L_BRACKET - 3)) | (1L << (UNDERLYING - 3)) | (1L << (STAR - 3)) | (1L << (RECEIVE - 3)))) != 0)) { + { + { + setState(724); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,76,_ctx) ) { + case 1: + { + setState(722); + methodSpec(); + } + break; + case 2: + { + setState(723); + typeElement(); + } + break; + } + setState(726); + eos(); + } + } + setState(732); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(733); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SliceTypeContext extends ParserRuleContext { + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public ElementTypeContext elementType() { + return getRuleContext(ElementTypeContext.class,0); + } + public SliceTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sliceType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSliceType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSliceType(this); + } + } + + public final SliceTypeContext sliceType() throws RecognitionException { + SliceTypeContext _localctx = new SliceTypeContext(_ctx, getState()); + enterRule(_localctx, 136, RULE_sliceType); + try { + enterOuterAlt(_localctx, 1); + { + setState(735); + match(L_BRACKET); + setState(736); + match(R_BRACKET); + setState(737); + elementType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MapTypeContext extends ParserRuleContext { + public TerminalNode MAP() { return getToken(GoParser.MAP, 0); } + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public ElementTypeContext elementType() { + return getRuleContext(ElementTypeContext.class,0); + } + public MapTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_mapType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterMapType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitMapType(this); + } + } + + public final MapTypeContext mapType() throws RecognitionException { + MapTypeContext _localctx = new MapTypeContext(_ctx, getState()); + enterRule(_localctx, 138, RULE_mapType); + try { + enterOuterAlt(_localctx, 1); + { + setState(739); + match(MAP); + setState(740); + match(L_BRACKET); + setState(741); + type_(); + setState(742); + match(R_BRACKET); + setState(743); + elementType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ChannelTypeContext extends ParserRuleContext { + public ElementTypeContext elementType() { + return getRuleContext(ElementTypeContext.class,0); + } + public TerminalNode CHAN() { return getToken(GoParser.CHAN, 0); } + public TerminalNode RECEIVE() { return getToken(GoParser.RECEIVE, 0); } + public ChannelTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_channelType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterChannelType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitChannelType(this); + } + } + + public final ChannelTypeContext channelType() throws RecognitionException { + ChannelTypeContext _localctx = new ChannelTypeContext(_ctx, getState()); + enterRule(_localctx, 140, RULE_channelType); + try { + enterOuterAlt(_localctx, 1); + { + setState(750); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) { + case 1: + { + setState(745); + match(CHAN); + } + break; + case 2: + { + setState(746); + match(CHAN); + setState(747); + match(RECEIVE); + } + break; + case 3: + { + setState(748); + match(RECEIVE); + setState(749); + match(CHAN); + } + break; + } + setState(752); + elementType(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodSpecContext extends ParserRuleContext { + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public ParametersContext parameters() { + return getRuleContext(ParametersContext.class,0); + } + public ResultContext result() { + return getRuleContext(ResultContext.class,0); + } + public MethodSpecContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodSpec; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterMethodSpec(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitMethodSpec(this); + } + } + + public final MethodSpecContext methodSpec() throws RecognitionException { + MethodSpecContext _localctx = new MethodSpecContext(_ctx, getState()); + enterRule(_localctx, 142, RULE_methodSpec); + try { + setState(760); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(754); + match(IDENTIFIER); + setState(755); + parameters(); + setState(756); + result(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(758); + match(IDENTIFIER); + setState(759); + parameters(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionTypeContext extends ParserRuleContext { + public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); } + public SignatureContext signature() { + return getRuleContext(SignatureContext.class,0); + } + public FunctionTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterFunctionType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitFunctionType(this); + } + } + + public final FunctionTypeContext functionType() throws RecognitionException { + FunctionTypeContext _localctx = new FunctionTypeContext(_ctx, getState()); + enterRule(_localctx, 144, RULE_functionType); + try { + enterOuterAlt(_localctx, 1); + { + setState(762); + match(FUNC); + setState(763); + signature(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SignatureContext extends ParserRuleContext { + public ParametersContext parameters() { + return getRuleContext(ParametersContext.class,0); + } + public ResultContext result() { + return getRuleContext(ResultContext.class,0); + } + public SignatureContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_signature; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSignature(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSignature(this); + } + } + + public final SignatureContext signature() throws RecognitionException { + SignatureContext _localctx = new SignatureContext(_ctx, getState()); + enterRule(_localctx, 146, RULE_signature); + try { + enterOuterAlt(_localctx, 1); + { + setState(765); + parameters(); + setState(767); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) { + case 1: + { + setState(766); + result(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ResultContext extends ParserRuleContext { + public ParametersContext parameters() { + return getRuleContext(ParametersContext.class,0); + } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public ResultContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_result; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterResult(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitResult(this); + } + } + + public final ResultContext result() throws RecognitionException { + ResultContext _localctx = new ResultContext(_ctx, getState()); + enterRule(_localctx, 148, RULE_result); + try { + setState(771); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(769); + parameters(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(770); + type_(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParametersContext extends ParserRuleContext { + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public List parameterDecl() { + return getRuleContexts(ParameterDeclContext.class); + } + public ParameterDeclContext parameterDecl(int i) { + return getRuleContext(ParameterDeclContext.class,i); + } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public ParametersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitParameters(this); + } + } + + public final ParametersContext parameters() throws RecognitionException { + ParametersContext _localctx = new ParametersContext(_ctx, getState()); + enterRule(_localctx, 150, RULE_parameters); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(773); + match(L_PAREN); + setState(785); + _errHandler.sync(this); + _la = _input.LA(1); + if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (FUNC - 3)) | (1L << (INTERFACE - 3)) | (1L << (MAP - 3)) | (1L << (STRUCT - 3)) | (1L << (CHAN - 3)) | (1L << (IDENTIFIER - 3)) | (1L << (L_PAREN - 3)) | (1L << (L_BRACKET - 3)) | (1L << (ELLIPSIS - 3)) | (1L << (STAR - 3)) | (1L << (RECEIVE - 3)))) != 0)) { + { + setState(774); + parameterDecl(); + setState(779); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,82,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(775); + match(COMMA); + setState(776); + parameterDecl(); + } + } + } + setState(781); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,82,_ctx); + } + setState(783); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(782); + match(COMMA); + } + } + + } + } + + setState(787); + match(R_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ParameterDeclContext extends ParserRuleContext { + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public TerminalNode ELLIPSIS() { return getToken(GoParser.ELLIPSIS, 0); } + public ParameterDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parameterDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterParameterDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitParameterDecl(this); + } + } + + public final ParameterDeclContext parameterDecl() throws RecognitionException { + ParameterDeclContext _localctx = new ParameterDeclContext(_ctx, getState()); + enterRule(_localctx, 152, RULE_parameterDecl); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(790); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) { + case 1: + { + setState(789); + identifierList(); + } + break; + } + setState(793); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELLIPSIS) { + { + setState(792); + match(ELLIPSIS); + } + } + + setState(795); + type_(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ExpressionContext extends ParserRuleContext { + public Token unary_op; + public Token mul_op; + public Token add_op; + public Token rel_op; + public PrimaryExprContext primaryExpr() { + return getRuleContext(PrimaryExprContext.class,0); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public TerminalNode PLUS() { return getToken(GoParser.PLUS, 0); } + public TerminalNode MINUS() { return getToken(GoParser.MINUS, 0); } + public TerminalNode EXCLAMATION() { return getToken(GoParser.EXCLAMATION, 0); } + public TerminalNode CARET() { return getToken(GoParser.CARET, 0); } + public TerminalNode STAR() { return getToken(GoParser.STAR, 0); } + public TerminalNode AMPERSAND() { return getToken(GoParser.AMPERSAND, 0); } + public TerminalNode RECEIVE() { return getToken(GoParser.RECEIVE, 0); } + public TerminalNode DIV() { return getToken(GoParser.DIV, 0); } + public TerminalNode MOD() { return getToken(GoParser.MOD, 0); } + public TerminalNode LSHIFT() { return getToken(GoParser.LSHIFT, 0); } + public TerminalNode RSHIFT() { return getToken(GoParser.RSHIFT, 0); } + public TerminalNode BIT_CLEAR() { return getToken(GoParser.BIT_CLEAR, 0); } + public TerminalNode OR() { return getToken(GoParser.OR, 0); } + public TerminalNode EQUALS() { return getToken(GoParser.EQUALS, 0); } + public TerminalNode NOT_EQUALS() { return getToken(GoParser.NOT_EQUALS, 0); } + public TerminalNode LESS() { return getToken(GoParser.LESS, 0); } + public TerminalNode LESS_OR_EQUALS() { return getToken(GoParser.LESS_OR_EQUALS, 0); } + public TerminalNode GREATER() { return getToken(GoParser.GREATER, 0); } + public TerminalNode GREATER_OR_EQUALS() { return getToken(GoParser.GREATER_OR_EQUALS, 0); } + public TerminalNode LOGICAL_AND() { return getToken(GoParser.LOGICAL_AND, 0); } + public TerminalNode LOGICAL_OR() { return getToken(GoParser.LOGICAL_OR, 0); } + public ExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expression; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterExpression(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitExpression(this); + } + } + + public final ExpressionContext expression() throws RecognitionException { + return expression(0); + } + + private ExpressionContext expression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); + ExpressionContext _prevctx = _localctx; + int _startState = 154; + enterRecursionRule(_localctx, 154, RULE_expression, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(801); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { + case 1: + { + setState(798); + primaryExpr(0); + } + break; + case 2: + { + setState(799); + ((ExpressionContext)_localctx).unary_op = _input.LT(1); + _la = _input.LA(1); + if ( !(((((_la - 58)) & ~0x3f) == 0 && ((1L << (_la - 58)) & ((1L << (EXCLAMATION - 58)) | (1L << (PLUS - 58)) | (1L << (MINUS - 58)) | (1L << (CARET - 58)) | (1L << (STAR - 58)) | (1L << (AMPERSAND - 58)) | (1L << (RECEIVE - 58)))) != 0)) ) { + ((ExpressionContext)_localctx).unary_op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(800); + expression(6); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(820); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,89,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(818); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) { + case 1: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(803); + if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); + setState(804); + ((ExpressionContext)_localctx).mul_op = _input.LT(1); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DIV) | (1L << MOD) | (1L << LSHIFT) | (1L << RSHIFT) | (1L << BIT_CLEAR) | (1L << STAR) | (1L << AMPERSAND))) != 0)) ) { + ((ExpressionContext)_localctx).mul_op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(805); + expression(6); + } + break; + case 2: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(806); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(807); + ((ExpressionContext)_localctx).add_op = _input.LT(1); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << OR) | (1L << PLUS) | (1L << MINUS) | (1L << CARET))) != 0)) ) { + ((ExpressionContext)_localctx).add_op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(808); + expression(5); + } + break; + case 3: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(809); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(810); + ((ExpressionContext)_localctx).rel_op = _input.LT(1); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQUALS) | (1L << NOT_EQUALS) | (1L << LESS) | (1L << LESS_OR_EQUALS) | (1L << GREATER) | (1L << GREATER_OR_EQUALS))) != 0)) ) { + ((ExpressionContext)_localctx).rel_op = (Token)_errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(811); + expression(4); + } + break; + case 4: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(812); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(813); + match(LOGICAL_AND); + setState(814); + expression(3); + } + break; + case 5: + { + _localctx = new ExpressionContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expression); + setState(815); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(816); + match(LOGICAL_OR); + setState(817); + expression(2); + } + break; + } + } + } + setState(822); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,89,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class PrimaryExprContext extends ParserRuleContext { + public OperandContext operand() { + return getRuleContext(OperandContext.class,0); + } + public ConversionContext conversion() { + return getRuleContext(ConversionContext.class,0); + } + public MethodExprContext methodExpr() { + return getRuleContext(MethodExprContext.class,0); + } + public PrimaryExprContext primaryExpr() { + return getRuleContext(PrimaryExprContext.class,0); + } + public TerminalNode DOT() { return getToken(GoParser.DOT, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public IndexContext index() { + return getRuleContext(IndexContext.class,0); + } + public Slice_Context slice_() { + return getRuleContext(Slice_Context.class,0); + } + public TypeAssertionContext typeAssertion() { + return getRuleContext(TypeAssertionContext.class,0); + } + public ArgumentsContext arguments() { + return getRuleContext(ArgumentsContext.class,0); + } + public PrimaryExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterPrimaryExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitPrimaryExpr(this); + } + } + + public final PrimaryExprContext primaryExpr() throws RecognitionException { + return primaryExpr(0); + } + + private PrimaryExprContext primaryExpr(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + PrimaryExprContext _localctx = new PrimaryExprContext(_ctx, _parentState); + PrimaryExprContext _prevctx = _localctx; + int _startState = 156; + enterRecursionRule(_localctx, 156, RULE_primaryExpr, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(827); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) { + case 1: + { + setState(824); + operand(); + } + break; + case 2: + { + setState(825); + conversion(); + } + break; + case 3: + { + setState(826); + methodExpr(); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(840); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,92,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new PrimaryExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_primaryExpr); + setState(829); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(836); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) { + case 1: + { + setState(830); + match(DOT); + setState(831); + match(IDENTIFIER); + } + break; + case 2: + { + setState(832); + index(); + } + break; + case 3: + { + setState(833); + slice_(); + } + break; + case 4: + { + setState(834); + typeAssertion(); + } + break; + case 5: + { + setState(835); + arguments(); + } + break; + } + } + } + } + setState(842); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,92,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class ConversionContext extends ParserRuleContext { + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public TerminalNode COMMA() { return getToken(GoParser.COMMA, 0); } + public ConversionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_conversion; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterConversion(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitConversion(this); + } + } + + public final ConversionContext conversion() throws RecognitionException { + ConversionContext _localctx = new ConversionContext(_ctx, getState()); + enterRule(_localctx, 158, RULE_conversion); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(843); + type_(); + setState(844); + match(L_PAREN); + setState(845); + expression(0); + setState(847); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(846); + match(COMMA); + } + } + + setState(849); + match(R_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OperandContext extends ParserRuleContext { + public LiteralContext literal() { + return getRuleContext(LiteralContext.class,0); + } + public OperandNameContext operandName() { + return getRuleContext(OperandNameContext.class,0); + } + public TypeArgsContext typeArgs() { + return getRuleContext(TypeArgsContext.class,0); + } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public OperandContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operand; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterOperand(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitOperand(this); + } + } + + public final OperandContext operand() throws RecognitionException { + OperandContext _localctx = new OperandContext(_ctx, getState()); + enterRule(_localctx, 160, RULE_operand); + try { + setState(860); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(851); + literal(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(852); + operandName(); + setState(854); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) { + case 1: + { + setState(853); + typeArgs(); + } + break; + } + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(856); + match(L_PAREN); + setState(857); + expression(0); + setState(858); + match(R_PAREN); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LiteralContext extends ParserRuleContext { + public BasicLitContext basicLit() { + return getRuleContext(BasicLitContext.class,0); + } + public CompositeLitContext compositeLit() { + return getRuleContext(CompositeLitContext.class,0); + } + public FunctionLitContext functionLit() { + return getRuleContext(FunctionLitContext.class,0); + } + public LiteralContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literal; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterLiteral(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitLiteral(this); + } + } + + public final LiteralContext literal() throws RecognitionException { + LiteralContext _localctx = new LiteralContext(_ctx, getState()); + enterRule(_localctx, 162, RULE_literal); + try { + setState(865); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NIL_LIT: + case DECIMAL_LIT: + case BINARY_LIT: + case OCTAL_LIT: + case HEX_LIT: + case FLOAT_LIT: + case IMAGINARY_LIT: + case RUNE_LIT: + case RAW_STRING_LIT: + case INTERPRETED_STRING_LIT: + enterOuterAlt(_localctx, 1); + { + setState(862); + basicLit(); + } + break; + case MAP: + case STRUCT: + case IDENTIFIER: + case L_BRACKET: + enterOuterAlt(_localctx, 2); + { + setState(863); + compositeLit(); + } + break; + case FUNC: + enterOuterAlt(_localctx, 3); + { + setState(864); + functionLit(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BasicLitContext extends ParserRuleContext { + public TerminalNode NIL_LIT() { return getToken(GoParser.NIL_LIT, 0); } + public IntegerContext integer() { + return getRuleContext(IntegerContext.class,0); + } + public String_Context string_() { + return getRuleContext(String_Context.class,0); + } + public TerminalNode FLOAT_LIT() { return getToken(GoParser.FLOAT_LIT, 0); } + public BasicLitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_basicLit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterBasicLit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitBasicLit(this); + } + } + + public final BasicLitContext basicLit() throws RecognitionException { + BasicLitContext _localctx = new BasicLitContext(_ctx, getState()); + enterRule(_localctx, 164, RULE_basicLit); + try { + setState(871); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NIL_LIT: + enterOuterAlt(_localctx, 1); + { + setState(867); + match(NIL_LIT); + } + break; + case DECIMAL_LIT: + case BINARY_LIT: + case OCTAL_LIT: + case HEX_LIT: + case IMAGINARY_LIT: + case RUNE_LIT: + enterOuterAlt(_localctx, 2); + { + setState(868); + integer(); + } + break; + case RAW_STRING_LIT: + case INTERPRETED_STRING_LIT: + enterOuterAlt(_localctx, 3); + { + setState(869); + string_(); + } + break; + case FLOAT_LIT: + enterOuterAlt(_localctx, 4); + { + setState(870); + match(FLOAT_LIT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IntegerContext extends ParserRuleContext { + public TerminalNode DECIMAL_LIT() { return getToken(GoParser.DECIMAL_LIT, 0); } + public TerminalNode BINARY_LIT() { return getToken(GoParser.BINARY_LIT, 0); } + public TerminalNode OCTAL_LIT() { return getToken(GoParser.OCTAL_LIT, 0); } + public TerminalNode HEX_LIT() { return getToken(GoParser.HEX_LIT, 0); } + public TerminalNode IMAGINARY_LIT() { return getToken(GoParser.IMAGINARY_LIT, 0); } + public TerminalNode RUNE_LIT() { return getToken(GoParser.RUNE_LIT, 0); } + public IntegerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_integer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterInteger(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitInteger(this); + } + } + + public final IntegerContext integer() throws RecognitionException { + IntegerContext _localctx = new IntegerContext(_ctx, getState()); + enterRule(_localctx, 166, RULE_integer); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(873); + _la = _input.LA(1); + if ( !(((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (DECIMAL_LIT - 65)) | (1L << (BINARY_LIT - 65)) | (1L << (OCTAL_LIT - 65)) | (1L << (HEX_LIT - 65)) | (1L << (IMAGINARY_LIT - 65)) | (1L << (RUNE_LIT - 65)))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class OperandNameContext extends ParserRuleContext { + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public OperandNameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_operandName; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterOperandName(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitOperandName(this); + } + } + + public final OperandNameContext operandName() throws RecognitionException { + OperandNameContext _localctx = new OperandNameContext(_ctx, getState()); + enterRule(_localctx, 168, RULE_operandName); + try { + enterOuterAlt(_localctx, 1); + { + setState(875); + match(IDENTIFIER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class QualifiedIdentContext extends ParserRuleContext { + public List IDENTIFIER() { return getTokens(GoParser.IDENTIFIER); } + public TerminalNode IDENTIFIER(int i) { + return getToken(GoParser.IDENTIFIER, i); + } + public TerminalNode DOT() { return getToken(GoParser.DOT, 0); } + public QualifiedIdentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_qualifiedIdent; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterQualifiedIdent(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitQualifiedIdent(this); + } + } + + public final QualifiedIdentContext qualifiedIdent() throws RecognitionException { + QualifiedIdentContext _localctx = new QualifiedIdentContext(_ctx, getState()); + enterRule(_localctx, 170, RULE_qualifiedIdent); + try { + enterOuterAlt(_localctx, 1); + { + setState(877); + match(IDENTIFIER); + setState(878); + match(DOT); + setState(879); + match(IDENTIFIER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class CompositeLitContext extends ParserRuleContext { + public LiteralTypeContext literalType() { + return getRuleContext(LiteralTypeContext.class,0); + } + public LiteralValueContext literalValue() { + return getRuleContext(LiteralValueContext.class,0); + } + public CompositeLitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compositeLit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterCompositeLit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitCompositeLit(this); + } + } + + public final CompositeLitContext compositeLit() throws RecognitionException { + CompositeLitContext _localctx = new CompositeLitContext(_ctx, getState()); + enterRule(_localctx, 172, RULE_compositeLit); + try { + enterOuterAlt(_localctx, 1); + { + setState(881); + literalType(); + setState(882); + literalValue(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LiteralTypeContext extends ParserRuleContext { + public StructTypeContext structType() { + return getRuleContext(StructTypeContext.class,0); + } + public ArrayTypeContext arrayType() { + return getRuleContext(ArrayTypeContext.class,0); + } + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public TerminalNode ELLIPSIS() { return getToken(GoParser.ELLIPSIS, 0); } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public ElementTypeContext elementType() { + return getRuleContext(ElementTypeContext.class,0); + } + public SliceTypeContext sliceType() { + return getRuleContext(SliceTypeContext.class,0); + } + public MapTypeContext mapType() { + return getRuleContext(MapTypeContext.class,0); + } + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TypeArgsContext typeArgs() { + return getRuleContext(TypeArgsContext.class,0); + } + public LiteralTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literalType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterLiteralType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitLiteralType(this); + } + } + + public final LiteralTypeContext literalType() throws RecognitionException { + LiteralTypeContext _localctx = new LiteralTypeContext(_ctx, getState()); + enterRule(_localctx, 174, RULE_literalType); + int _la; + try { + setState(896); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(884); + structType(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(885); + arrayType(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(886); + match(L_BRACKET); + setState(887); + match(ELLIPSIS); + setState(888); + match(R_BRACKET); + setState(889); + elementType(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(890); + sliceType(); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(891); + mapType(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(892); + typeName(); + setState(894); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==L_BRACKET) { + { + setState(893); + typeArgs(); + } + } + + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LiteralValueContext extends ParserRuleContext { + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public ElementListContext elementList() { + return getRuleContext(ElementListContext.class,0); + } + public TerminalNode COMMA() { return getToken(GoParser.COMMA, 0); } + public LiteralValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_literalValue; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterLiteralValue(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitLiteralValue(this); + } + } + + public final LiteralValueContext literalValue() throws RecognitionException { + LiteralValueContext _localctx = new LiteralValueContext(_ctx, getState()); + enterRule(_localctx, 176, RULE_literalValue); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(898); + match(L_CURLY); + setState(903); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_CURLY) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(899); + elementList(); + setState(901); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(900); + match(COMMA); + } + } + + } + } + + setState(905); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementListContext extends ParserRuleContext { + public List keyedElement() { + return getRuleContexts(KeyedElementContext.class); + } + public KeyedElementContext keyedElement(int i) { + return getRuleContext(KeyedElementContext.class,i); + } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public ElementListContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_elementList; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterElementList(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitElementList(this); + } + } + + public final ElementListContext elementList() throws RecognitionException { + ElementListContext _localctx = new ElementListContext(_ctx, getState()); + enterRule(_localctx, 178, RULE_elementList); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(907); + keyedElement(); + setState(912); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,102,_ctx); + while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(908); + match(COMMA); + setState(909); + keyedElement(); + } + } + } + setState(914); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,102,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeyedElementContext extends ParserRuleContext { + public ElementContext element() { + return getRuleContext(ElementContext.class,0); + } + public KeyContext key() { + return getRuleContext(KeyContext.class,0); + } + public TerminalNode COLON() { return getToken(GoParser.COLON, 0); } + public KeyedElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_keyedElement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterKeyedElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitKeyedElement(this); + } + } + + public final KeyedElementContext keyedElement() throws RecognitionException { + KeyedElementContext _localctx = new KeyedElementContext(_ctx, getState()); + enterRule(_localctx, 180, RULE_keyedElement); + try { + enterOuterAlt(_localctx, 1); + { + setState(918); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) { + case 1: + { + setState(915); + key(); + setState(916); + match(COLON); + } + break; + } + setState(920); + element(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class KeyContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public LiteralValueContext literalValue() { + return getRuleContext(LiteralValueContext.class,0); + } + public KeyContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_key; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterKey(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitKey(this); + } + } + + public final KeyContext key() throws RecognitionException { + KeyContext _localctx = new KeyContext(_ctx, getState()); + enterRule(_localctx, 182, RULE_key); + try { + setState(924); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FUNC: + case INTERFACE: + case MAP: + case STRUCT: + case CHAN: + case NIL_LIT: + case IDENTIFIER: + case L_PAREN: + case L_BRACKET: + case EXCLAMATION: + case PLUS: + case MINUS: + case CARET: + case STAR: + case AMPERSAND: + case RECEIVE: + case DECIMAL_LIT: + case BINARY_LIT: + case OCTAL_LIT: + case HEX_LIT: + case FLOAT_LIT: + case IMAGINARY_LIT: + case RUNE_LIT: + case RAW_STRING_LIT: + case INTERPRETED_STRING_LIT: + enterOuterAlt(_localctx, 1); + { + setState(922); + expression(0); + } + break; + case L_CURLY: + enterOuterAlt(_localctx, 2); + { + setState(923); + literalValue(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ElementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public LiteralValueContext literalValue() { + return getRuleContext(LiteralValueContext.class,0); + } + public ElementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_element; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterElement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitElement(this); + } + } + + public final ElementContext element() throws RecognitionException { + ElementContext _localctx = new ElementContext(_ctx, getState()); + enterRule(_localctx, 184, RULE_element); + try { + setState(928); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FUNC: + case INTERFACE: + case MAP: + case STRUCT: + case CHAN: + case NIL_LIT: + case IDENTIFIER: + case L_PAREN: + case L_BRACKET: + case EXCLAMATION: + case PLUS: + case MINUS: + case CARET: + case STAR: + case AMPERSAND: + case RECEIVE: + case DECIMAL_LIT: + case BINARY_LIT: + case OCTAL_LIT: + case HEX_LIT: + case FLOAT_LIT: + case IMAGINARY_LIT: + case RUNE_LIT: + case RAW_STRING_LIT: + case INTERPRETED_STRING_LIT: + enterOuterAlt(_localctx, 1); + { + setState(926); + expression(0); + } + break; + case L_CURLY: + enterOuterAlt(_localctx, 2); + { + setState(927); + literalValue(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class StructTypeContext extends ParserRuleContext { + public TerminalNode STRUCT() { return getToken(GoParser.STRUCT, 0); } + public TerminalNode L_CURLY() { return getToken(GoParser.L_CURLY, 0); } + public TerminalNode R_CURLY() { return getToken(GoParser.R_CURLY, 0); } + public List fieldDecl() { + return getRuleContexts(FieldDeclContext.class); + } + public FieldDeclContext fieldDecl(int i) { + return getRuleContext(FieldDeclContext.class,i); + } + public List eos() { + return getRuleContexts(EosContext.class); + } + public EosContext eos(int i) { + return getRuleContext(EosContext.class,i); + } + public StructTypeContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_structType; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterStructType(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitStructType(this); + } + } + + public final StructTypeContext structType() throws RecognitionException { + StructTypeContext _localctx = new StructTypeContext(_ctx, getState()); + enterRule(_localctx, 186, RULE_structType); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(930); + match(STRUCT); + setState(931); + match(L_CURLY); + setState(937); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==IDENTIFIER || _la==STAR) { + { + { + setState(932); + fieldDecl(); + setState(933); + eos(); + } + } + setState(939); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(940); + match(R_CURLY); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FieldDeclContext extends ParserRuleContext { + public String_Context tag; + public IdentifierListContext identifierList() { + return getRuleContext(IdentifierListContext.class,0); + } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public EmbeddedFieldContext embeddedField() { + return getRuleContext(EmbeddedFieldContext.class,0); + } + public String_Context string_() { + return getRuleContext(String_Context.class,0); + } + public FieldDeclContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_fieldDecl; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterFieldDecl(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitFieldDecl(this); + } + } + + public final FieldDeclContext fieldDecl() throws RecognitionException { + FieldDeclContext _localctx = new FieldDeclContext(_ctx, getState()); + enterRule(_localctx, 188, RULE_fieldDecl); + try { + enterOuterAlt(_localctx, 1); + { + setState(946); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) { + case 1: + { + setState(942); + identifierList(); + setState(943); + type_(); + } + break; + case 2: + { + setState(945); + embeddedField(); + } + break; + } + setState(949); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,108,_ctx) ) { + case 1: + { + setState(948); + ((FieldDeclContext)_localctx).tag = string_(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class String_Context extends ParserRuleContext { + public TerminalNode RAW_STRING_LIT() { return getToken(GoParser.RAW_STRING_LIT, 0); } + public TerminalNode INTERPRETED_STRING_LIT() { return getToken(GoParser.INTERPRETED_STRING_LIT, 0); } + public String_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_string_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterString_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitString_(this); + } + } + + public final String_Context string_() throws RecognitionException { + String_Context _localctx = new String_Context(_ctx, getState()); + enterRule(_localctx, 190, RULE_string_); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(951); + _la = _input.LA(1); + if ( !(_la==RAW_STRING_LIT || _la==INTERPRETED_STRING_LIT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EmbeddedFieldContext extends ParserRuleContext { + public TypeNameContext typeName() { + return getRuleContext(TypeNameContext.class,0); + } + public TerminalNode STAR() { return getToken(GoParser.STAR, 0); } + public TypeArgsContext typeArgs() { + return getRuleContext(TypeArgsContext.class,0); + } + public EmbeddedFieldContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_embeddedField; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterEmbeddedField(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitEmbeddedField(this); + } + } + + public final EmbeddedFieldContext embeddedField() throws RecognitionException { + EmbeddedFieldContext _localctx = new EmbeddedFieldContext(_ctx, getState()); + enterRule(_localctx, 192, RULE_embeddedField); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(954); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==STAR) { + { + setState(953); + match(STAR); + } + } + + setState(956); + typeName(); + setState(958); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) { + case 1: + { + setState(957); + typeArgs(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionLitContext extends ParserRuleContext { + public TerminalNode FUNC() { return getToken(GoParser.FUNC, 0); } + public SignatureContext signature() { + return getRuleContext(SignatureContext.class,0); + } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public FunctionLitContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionLit; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterFunctionLit(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitFunctionLit(this); + } + } + + public final FunctionLitContext functionLit() throws RecognitionException { + FunctionLitContext _localctx = new FunctionLitContext(_ctx, getState()); + enterRule(_localctx, 194, RULE_functionLit); + try { + enterOuterAlt(_localctx, 1); + { + setState(960); + match(FUNC); + setState(961); + signature(); + setState(962); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IndexContext extends ParserRuleContext { + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public IndexContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_index; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterIndex(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitIndex(this); + } + } + + public final IndexContext index() throws RecognitionException { + IndexContext _localctx = new IndexContext(_ctx, getState()); + enterRule(_localctx, 196, RULE_index); + try { + enterOuterAlt(_localctx, 1); + { + setState(964); + match(L_BRACKET); + setState(965); + expression(0); + setState(966); + match(R_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Slice_Context extends ParserRuleContext { + public TerminalNode L_BRACKET() { return getToken(GoParser.L_BRACKET, 0); } + public TerminalNode R_BRACKET() { return getToken(GoParser.R_BRACKET, 0); } + public List COLON() { return getTokens(GoParser.COLON); } + public TerminalNode COLON(int i) { + return getToken(GoParser.COLON, i); + } + public List expression() { + return getRuleContexts(ExpressionContext.class); + } + public ExpressionContext expression(int i) { + return getRuleContext(ExpressionContext.class,i); + } + public Slice_Context(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_slice_; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterSlice_(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitSlice_(this); + } + } + + public final Slice_Context slice_() throws RecognitionException { + Slice_Context _localctx = new Slice_Context(_ctx, getState()); + enterRule(_localctx, 198, RULE_slice_); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(968); + match(L_BRACKET); + setState(984); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) { + case 1: + { + setState(970); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(969); + expression(0); + } + } + + setState(972); + match(COLON); + setState(974); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(973); + expression(0); + } + } + + } + break; + case 2: + { + setState(977); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(976); + expression(0); + } + } + + setState(979); + match(COLON); + setState(980); + expression(0); + setState(981); + match(COLON); + setState(982); + expression(0); + } + break; + } + setState(986); + match(R_BRACKET); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class TypeAssertionContext extends ParserRuleContext { + public TerminalNode DOT() { return getToken(GoParser.DOT, 0); } + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public TypeAssertionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_typeAssertion; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterTypeAssertion(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitTypeAssertion(this); + } + } + + public final TypeAssertionContext typeAssertion() throws RecognitionException { + TypeAssertionContext _localctx = new TypeAssertionContext(_ctx, getState()); + enterRule(_localctx, 200, RULE_typeAssertion); + try { + enterOuterAlt(_localctx, 1); + { + setState(988); + match(DOT); + setState(989); + match(L_PAREN); + setState(990); + type_(); + setState(991); + match(R_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ArgumentsContext extends ParserRuleContext { + public TerminalNode L_PAREN() { return getToken(GoParser.L_PAREN, 0); } + public TerminalNode R_PAREN() { return getToken(GoParser.R_PAREN, 0); } + public ExpressionListContext expressionList() { + return getRuleContext(ExpressionListContext.class,0); + } + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode ELLIPSIS() { return getToken(GoParser.ELLIPSIS, 0); } + public List COMMA() { return getTokens(GoParser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(GoParser.COMMA, i); + } + public ArgumentsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arguments; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterArguments(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitArguments(this); + } + } + + public final ArgumentsContext arguments() throws RecognitionException { + ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState()); + enterRule(_localctx, 202, RULE_arguments); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(993); + match(L_PAREN); + setState(1008); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FUNC) | (1L << INTERFACE) | (1L << MAP) | (1L << STRUCT) | (1L << CHAN) | (1L << NIL_LIT) | (1L << IDENTIFIER) | (1L << L_PAREN) | (1L << L_BRACKET) | (1L << EXCLAMATION) | (1L << PLUS) | (1L << MINUS) | (1L << CARET) | (1L << STAR) | (1L << AMPERSAND))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (RECEIVE - 64)) | (1L << (DECIMAL_LIT - 64)) | (1L << (BINARY_LIT - 64)) | (1L << (OCTAL_LIT - 64)) | (1L << (HEX_LIT - 64)) | (1L << (FLOAT_LIT - 64)) | (1L << (IMAGINARY_LIT - 64)) | (1L << (RUNE_LIT - 64)) | (1L << (RAW_STRING_LIT - 64)) | (1L << (INTERPRETED_STRING_LIT - 64)))) != 0)) { + { + setState(1000); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,116,_ctx) ) { + case 1: + { + setState(994); + expressionList(); + } + break; + case 2: + { + setState(995); + type_(); + setState(998); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,115,_ctx) ) { + case 1: + { + setState(996); + match(COMMA); + setState(997); + expressionList(); + } + break; + } + } + break; + } + setState(1003); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELLIPSIS) { + { + setState(1002); + match(ELLIPSIS); + } + } + + setState(1006); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(1005); + match(COMMA); + } + } + + } + } + + setState(1010); + match(R_PAREN); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class MethodExprContext extends ParserRuleContext { + public Type_Context type_() { + return getRuleContext(Type_Context.class,0); + } + public TerminalNode DOT() { return getToken(GoParser.DOT, 0); } + public TerminalNode IDENTIFIER() { return getToken(GoParser.IDENTIFIER, 0); } + public MethodExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_methodExpr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterMethodExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitMethodExpr(this); + } + } + + public final MethodExprContext methodExpr() throws RecognitionException { + MethodExprContext _localctx = new MethodExprContext(_ctx, getState()); + enterRule(_localctx, 204, RULE_methodExpr); + try { + enterOuterAlt(_localctx, 1); + { + setState(1012); + type_(); + setState(1013); + match(DOT); + setState(1014); + match(IDENTIFIER); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EosContext extends ParserRuleContext { + public TerminalNode SEMI() { return getToken(GoParser.SEMI, 0); } + public TerminalNode EOF() { return getToken(GoParser.EOF, 0); } + public TerminalNode EOS() { return getToken(GoParser.EOS, 0); } + public EosContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_eos; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).enterEos(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof GoParserListener) ((GoParserListener)listener).exitEos(this); + } + } + + public final EosContext eos() throws RecognitionException { + EosContext _localctx = new EosContext(_ctx, getState()); + enterRule(_localctx, 206, RULE_eos); + try { + setState(1020); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,120,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(1016); + match(SEMI); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(1017); + match(EOF); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(1018); + match(EOS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(1019); + if (!(this.closingBracket())) throw new FailedPredicateException(this, "this.closingBracket()"); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 25: + return statementList_sempred((StatementListContext)_localctx, predIndex); + case 77: + return expression_sempred((ExpressionContext)_localctx, predIndex); + case 78: + return primaryExpr_sempred((PrimaryExprContext)_localctx, predIndex); + case 103: + return eos_sempred((EosContext)_localctx, predIndex); + } + return true; + } + private boolean statementList_sempred(StatementListContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return this.closingBracket(); + } + return true; + } + private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 1: + return precpred(_ctx, 5); + case 2: + return precpred(_ctx, 4); + case 3: + return precpred(_ctx, 3); + case 4: + return precpred(_ctx, 2); + case 5: + return precpred(_ctx, 1); + } + return true; + } + private boolean primaryExpr_sempred(PrimaryExprContext _localctx, int predIndex) { + switch (predIndex) { + case 6: + return precpred(_ctx, 1); + } + return true; + } + private boolean eos_sempred(EosContext _localctx, int predIndex) { + switch (predIndex) { + case 7: + return this.closingBracket(); + } + return true; + } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\\\u0401\4\2\t\2\4"+ + "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ + "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ + "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ + "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\3\2\3\2\3\2"+ + "\3\2\3\2\7\2\u00d8\n\2\f\2\16\2\u00db\13\2\3\2\3\2\3\2\5\2\u00e0\n\2\3"+ + "\2\3\2\7\2\u00e4\n\2\f\2\16\2\u00e7\13\2\3\2\3\2\3\3\3\3\3\3\3\4\3\4\3"+ + "\4\3\4\3\4\3\4\7\4\u00f4\n\4\f\4\16\4\u00f7\13\4\3\4\5\4\u00fa\n\4\3\5"+ + "\5\5\u00fd\n\5\3\5\3\5\3\6\3\6\3\7\3\7\3\7\5\7\u0106\n\7\3\b\3\b\3\b\3"+ + "\b\3\b\3\b\7\b\u010e\n\b\f\b\16\b\u0111\13\b\3\b\5\b\u0114\n\b\3\t\3\t"+ + "\5\t\u0118\n\t\3\t\3\t\5\t\u011c\n\t\3\n\3\n\3\n\7\n\u0121\n\n\f\n\16"+ + "\n\u0124\13\n\3\13\3\13\3\13\7\13\u0129\n\13\f\13\16\13\u012c\13\13\3"+ + "\f\3\f\3\r\7\r\u0131\n\r\f\r\16\r\u0134\13\r\3\r\3\r\3\r\3\r\3\r\3\r\7"+ + "\r\u013c\n\r\f\r\16\r\u013f\13\r\3\r\5\r\u0142\n\r\3\16\3\16\5\16\u0146"+ + "\n\16\3\17\3\17\3\17\3\17\3\20\3\20\5\20\u014e\n\20\3\20\3\20\3\21\3\21"+ + "\3\21\3\21\7\21\u0156\n\21\f\21\16\21\u0159\13\21\3\21\3\21\3\22\3\22"+ + "\3\22\3\23\3\23\3\23\7\23\u0163\n\23\f\23\16\23\u0166\13\23\3\24\5\24"+ + "\u0169\n\24\3\24\3\24\3\25\3\25\3\25\5\25\u0170\n\25\3\25\3\25\5\25\u0174"+ + "\n\25\3\26\3\26\3\26\3\26\3\26\5\26\u017b\n\26\3\27\3\27\3\30\3\30\3\30"+ + "\3\30\3\30\3\30\7\30\u0185\n\30\f\30\16\30\u0188\13\30\3\30\5\30\u018b"+ + "\n\30\3\31\3\31\3\31\3\31\5\31\u0191\n\31\3\31\3\31\5\31\u0195\n\31\3"+ + "\32\3\32\5\32\u0199\n\32\3\32\3\32\3\33\5\33\u019e\n\33\3\33\5\33\u01a1"+ + "\n\33\3\33\5\33\u01a4\n\33\3\33\3\33\3\33\6\33\u01a9\n\33\r\33\16\33\u01aa"+ + "\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34"+ + "\3\34\5\34\u01bc\n\34\3\35\3\35\3\35\3\35\3\35\5\35\u01c3\n\35\3\36\3"+ + "\36\3\37\3\37\3\37\3\37\3 \3 \3 \3!\3!\3!\3!\3\"\5\"\u01d3\n\"\3\"\3\""+ + "\3#\3#\3#\3#\3$\3$\3$\5$\u01de\n$\3%\3%\5%\u01e2\n%\3&\3&\5&\u01e6\n&"+ + "\3\'\3\'\5\'\u01ea\n\'\3(\3(\3(\3)\3)\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3"+ + "+\3+\5+\u01fd\n+\3+\3+\3+\3+\5+\u0203\n+\5+\u0205\n+\3,\3,\5,\u0209\n"+ + ",\3-\3-\5-\u020d\n-\3-\5-\u0210\n-\3-\3-\5-\u0214\n-\5-\u0216\n-\3-\3"+ + "-\7-\u021a\n-\f-\16-\u021d\13-\3-\3-\3.\3.\3.\5.\u0224\n.\3/\3/\3/\5/"+ + "\u0229\n/\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\5\60\u0234\n\60"+ + "\3\60\3\60\7\60\u0238\n\60\f\60\16\60\u023b\13\60\3\60\3\60\3\61\3\61"+ + "\5\61\u0241\n\61\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\5\62\u024c"+ + "\n\62\3\63\3\63\3\63\5\63\u0251\n\63\3\64\3\64\5\64\u0255\n\64\3\64\3"+ + "\64\3\64\5\64\u025a\n\64\7\64\u025c\n\64\f\64\16\64\u025f\13\64\3\65\3"+ + "\65\3\65\7\65\u0264\n\65\f\65\16\65\u0267\13\65\3\65\3\65\3\66\3\66\3"+ + "\66\5\66\u026e\n\66\3\67\3\67\3\67\5\67\u0273\n\67\3\67\5\67\u0276\n\67"+ + "\38\38\38\38\38\38\58\u027e\n8\38\38\39\39\59\u0284\n9\39\39\59\u0288"+ + "\n9\59\u028a\n9\39\39\3:\5:\u028f\n:\3:\3:\5:\u0293\n:\3:\3:\5:\u0297"+ + "\n:\3;\3;\3;\3;\3;\3;\5;\u029f\n;\3;\3;\3;\3<\3<\3<\3=\3=\5=\u02a9\n="+ + "\3=\3=\3=\3=\3=\5=\u02b0\n=\3>\3>\3>\5>\u02b5\n>\3>\3>\3?\3?\5?\u02bb"+ + "\n?\3@\3@\3@\3@\3@\3@\3@\3@\5@\u02c5\n@\3A\3A\3A\3A\3A\3B\3B\3C\3C\3D"+ + "\3D\3D\3E\3E\3E\3E\5E\u02d7\nE\3E\3E\7E\u02db\nE\fE\16E\u02de\13E\3E\3"+ + "E\3F\3F\3F\3F\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\5H\u02f1\nH\3H\3H\3I\3"+ + "I\3I\3I\3I\3I\5I\u02fb\nI\3J\3J\3J\3K\3K\5K\u0302\nK\3L\3L\5L\u0306\n"+ + "L\3M\3M\3M\3M\7M\u030c\nM\fM\16M\u030f\13M\3M\5M\u0312\nM\5M\u0314\nM"+ + "\3M\3M\3N\5N\u0319\nN\3N\5N\u031c\nN\3N\3N\3O\3O\3O\3O\5O\u0324\nO\3O"+ + "\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\7O\u0335\nO\fO\16O\u0338\13"+ + "O\3P\3P\3P\3P\5P\u033e\nP\3P\3P\3P\3P\3P\3P\3P\5P\u0347\nP\7P\u0349\n"+ + "P\fP\16P\u034c\13P\3Q\3Q\3Q\3Q\5Q\u0352\nQ\3Q\3Q\3R\3R\3R\5R\u0359\nR"+ + "\3R\3R\3R\3R\5R\u035f\nR\3S\3S\3S\5S\u0364\nS\3T\3T\3T\3T\5T\u036a\nT"+ + "\3U\3U\3V\3V\3W\3W\3W\3W\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\5Y\u0381"+ + "\nY\5Y\u0383\nY\3Z\3Z\3Z\5Z\u0388\nZ\5Z\u038a\nZ\3Z\3Z\3[\3[\3[\7[\u0391"+ + "\n[\f[\16[\u0394\13[\3\\\3\\\3\\\5\\\u0399\n\\\3\\\3\\\3]\3]\5]\u039f"+ + "\n]\3^\3^\5^\u03a3\n^\3_\3_\3_\3_\3_\7_\u03aa\n_\f_\16_\u03ad\13_\3_\3"+ + "_\3`\3`\3`\3`\5`\u03b5\n`\3`\5`\u03b8\n`\3a\3a\3b\5b\u03bd\nb\3b\3b\5"+ + "b\u03c1\nb\3c\3c\3c\3c\3d\3d\3d\3d\3e\3e\5e\u03cd\ne\3e\3e\5e\u03d1\n"+ + "e\3e\5e\u03d4\ne\3e\3e\3e\3e\3e\5e\u03db\ne\3e\3e\3f\3f\3f\3f\3f\3g\3"+ + "g\3g\3g\3g\5g\u03e9\ng\5g\u03eb\ng\3g\5g\u03ee\ng\3g\5g\u03f1\ng\5g\u03f3"+ + "\ng\3g\3g\3h\3h\3h\3h\3i\3i\3i\3i\5i\u03ff\ni\3i\2\4\u009c\u009ej\2\4"+ + "\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNP"+ + "RTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e"+ + "\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6"+ + "\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be"+ + "\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\2\f\4\2\35\35("+ + "(\4\2TTVV\3\2)*\4\2\65:=A\3\2\u01ca\3\2\2\2@\u01cd\3\2\2\2B\u01d2\3\2\2\2D\u01d6\3\2\2\2F\u01da"+ + "\3\2\2\2H\u01df\3\2\2\2J\u01e3\3\2\2\2L\u01e7\3\2\2\2N\u01eb\3\2\2\2P"+ + "\u01ee\3\2\2\2R\u01f0\3\2\2\2T\u01f3\3\2\2\2V\u0208\3\2\2\2X\u020a\3\2"+ + "\2\2Z\u0220\3\2\2\2\\\u0228\3\2\2\2^\u022a\3\2\2\2`\u0240\3\2\2\2b\u0248"+ + "\3\2\2\2d\u0250\3\2\2\2f\u0254\3\2\2\2h\u0260\3\2\2\2j\u026a\3\2\2\2l"+ + "\u0275\3\2\2\2n\u027d\3\2\2\2p\u0281\3\2\2\2r\u028e\3\2\2\2t\u029e\3\2"+ + "\2\2v\u02a3\3\2\2\2x\u02af\3\2\2\2z\u02b1\3\2\2\2|\u02ba\3\2\2\2~\u02c4"+ + "\3\2\2\2\u0080\u02c6\3\2\2\2\u0082\u02cb\3\2\2\2\u0084\u02cd\3\2\2\2\u0086"+ + "\u02cf\3\2\2\2\u0088\u02d2\3\2\2\2\u008a\u02e1\3\2\2\2\u008c\u02e5\3\2"+ + "\2\2\u008e\u02f0\3\2\2\2\u0090\u02fa\3\2\2\2\u0092\u02fc\3\2\2\2\u0094"+ + "\u02ff\3\2\2\2\u0096\u0305\3\2\2\2\u0098\u0307\3\2\2\2\u009a\u0318\3\2"+ + "\2\2\u009c\u0323\3\2\2\2\u009e\u033d\3\2\2\2\u00a0\u034d\3\2\2\2\u00a2"+ + "\u035e\3\2\2\2\u00a4\u0363\3\2\2\2\u00a6\u0369\3\2\2\2\u00a8\u036b\3\2"+ + "\2\2\u00aa\u036d\3\2\2\2\u00ac\u036f\3\2\2\2\u00ae\u0373\3\2\2\2\u00b0"+ + "\u0382\3\2\2\2\u00b2\u0384\3\2\2\2\u00b4\u038d\3\2\2\2\u00b6\u0398\3\2"+ + "\2\2\u00b8\u039e\3\2\2\2\u00ba\u03a2\3\2\2\2\u00bc\u03a4\3\2\2\2\u00be"+ + "\u03b4\3\2\2\2\u00c0\u03b9\3\2\2\2\u00c2\u03bc\3\2\2\2\u00c4\u03c2\3\2"+ + "\2\2\u00c6\u03c6\3\2\2\2\u00c8\u03ca\3\2\2\2\u00ca\u03de\3\2\2\2\u00cc"+ + "\u03e3\3\2\2\2\u00ce\u03f6\3\2\2\2\u00d0\u03fe\3\2\2\2\u00d2\u00d3\5\4"+ + "\3\2\u00d3\u00d9\5\u00d0i\2\u00d4\u00d5\5\6\4\2\u00d5\u00d6\5\u00d0i\2"+ + "\u00d6\u00d8\3\2\2\2\u00d7\u00d4\3\2\2\2\u00d8\u00db\3\2\2\2\u00d9\u00d7"+ + "\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00e5\3\2\2\2\u00db\u00d9\3\2\2\2\u00dc"+ + "\u00e0\5(\25\2\u00dd\u00e0\5*\26\2\u00de\u00e0\5\f\7\2\u00df\u00dc\3\2"+ + "\2\2\u00df\u00dd\3\2\2\2\u00df\u00de\3\2\2\2\u00e0\u00e1\3\2\2\2\u00e1"+ + "\u00e2\5\u00d0i\2\u00e2\u00e4\3\2\2\2\u00e3\u00df\3\2\2\2\u00e4\u00e7"+ + "\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e5\u00e6\3\2\2\2\u00e6\u00e8\3\2\2\2\u00e7"+ + "\u00e5\3\2\2\2\u00e8\u00e9\7\2\2\3\u00e9\3\3\2\2\2\u00ea\u00eb\7\20\2"+ + "\2\u00eb\u00ec\7\35\2\2\u00ec\5\3\2\2\2\u00ed\u00f9\7\31\2\2\u00ee\u00fa"+ + "\5\b\5\2\u00ef\u00f5\7\36\2\2\u00f0\u00f1\5\b\5\2\u00f1\u00f2\5\u00d0"+ + "i\2\u00f2\u00f4\3\2\2\2\u00f3\u00f0\3\2\2\2\u00f4\u00f7\3\2\2\2\u00f5"+ + "\u00f3\3\2\2\2\u00f5\u00f6\3\2\2\2\u00f6\u00f8\3\2\2\2\u00f7\u00f5\3\2"+ + "\2\2\u00f8\u00fa\7\37\2\2\u00f9\u00ee\3\2\2\2\u00f9\u00ef\3\2\2\2\u00fa"+ + "\7\3\2\2\2\u00fb\u00fd\t\2\2\2\u00fc\u00fb\3\2\2\2\u00fc\u00fd\3\2\2\2"+ + "\u00fd\u00fe\3\2\2\2\u00fe\u00ff\5\n\6\2\u00ff\t\3\2\2\2\u0100\u0101\5"+ + "\u00c0a\2\u0101\13\3\2\2\2\u0102\u0106\5\16\b\2\u0103\u0106\5\30\r\2\u0104"+ + "\u0106\5.\30\2\u0105\u0102\3\2\2\2\u0105\u0103\3\2\2\2\u0105\u0104\3\2"+ + "\2\2\u0106\r\3\2\2\2\u0107\u0113\7\22\2\2\u0108\u0114\5\20\t\2\u0109\u010f"+ + "\7\36\2\2\u010a\u010b\5\20\t\2\u010b\u010c\5\u00d0i\2\u010c\u010e\3\2"+ + "\2\2\u010d\u010a\3\2\2\2\u010e\u0111\3\2\2\2\u010f\u010d\3\2\2\2\u010f"+ + "\u0110\3\2\2\2\u0110\u0112\3\2\2\2\u0111\u010f\3\2\2\2\u0112\u0114\7\37"+ + "\2\2\u0113\u0108\3\2\2\2\u0113\u0109\3\2\2\2\u0114\17\3\2\2\2\u0115\u011b"+ + "\5\22\n\2\u0116\u0118\5x=\2\u0117\u0116\3\2\2\2\u0117\u0118\3\2\2\2\u0118"+ + "\u0119\3\2\2\2\u0119\u011a\7$\2\2\u011a\u011c\5\24\13\2\u011b\u0117\3"+ + "\2\2\2\u011b\u011c\3\2\2\2\u011c\21\3\2\2\2\u011d\u0122\7\35\2\2\u011e"+ + "\u011f\7%\2\2\u011f\u0121\7\35\2\2\u0120\u011e\3\2\2\2\u0121\u0124\3\2"+ + "\2\2\u0122\u0120\3\2\2\2\u0122\u0123\3\2\2\2\u0123\23\3\2\2\2\u0124\u0122"+ + "\3\2\2\2\u0125\u012a\5\u009cO\2\u0126\u0127\7%\2\2\u0127\u0129\5\u009c"+ + "O\2\u0128\u0126\3\2\2\2\u0129\u012c\3\2\2\2\u012a\u0128\3\2\2\2\u012a"+ + "\u012b\3\2\2\2\u012b\25\3\2\2\2\u012c\u012a\3\2\2\2\u012d\u012e\t\3\2"+ + "\2\u012e\27\3\2\2\2\u012f\u0131\5\26\f\2\u0130\u012f\3\2\2\2\u0131\u0134"+ + "\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0135\3\2\2\2\u0134"+ + "\u0132\3\2\2\2\u0135\u0141\7\26\2\2\u0136\u0142\5\32\16\2\u0137\u013d"+ + "\7\36\2\2\u0138\u0139\5\32\16\2\u0139\u013a\5\u00d0i\2\u013a\u013c\3\2"+ + "\2\2\u013b\u0138\3\2\2\2\u013c\u013f\3\2\2\2\u013d\u013b\3\2\2\2\u013d"+ + "\u013e\3\2\2\2\u013e\u0140\3\2\2\2\u013f\u013d\3\2\2\2\u0140\u0142\7\37"+ + "\2\2\u0141\u0136\3\2\2\2\u0141\u0137\3\2\2\2\u0142\31\3\2\2\2\u0143\u0146"+ + "\5\34\17\2\u0144\u0146\5\36\20\2\u0145\u0143\3\2\2\2\u0145\u0144\3\2\2"+ + "\2\u0146\33\3\2\2\2\u0147\u0148\7\35\2\2\u0148\u0149\7$\2\2\u0149\u014a"+ + "\5x=\2\u014a\35\3\2\2\2\u014b\u014d\7\35\2\2\u014c\u014e\5 \21\2\u014d"+ + "\u014c\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u014f\3\2\2\2\u014f\u0150\5x"+ + "=\2\u0150\37\3\2\2\2\u0151\u0152\7\"\2\2\u0152\u0157\5\"\22\2\u0153\u0154"+ + "\7%\2\2\u0154\u0156\5\"\22\2\u0155\u0153\3\2\2\2\u0156\u0159\3\2\2\2\u0157"+ + "\u0155\3\2\2\2\u0157\u0158\3\2\2\2\u0158\u015a\3\2\2\2\u0159\u0157\3\2"+ + "\2\2\u015a\u015b\7#\2\2\u015b!\3\2\2\2\u015c\u015d\5\22\n\2\u015d\u015e"+ + "\5$\23\2\u015e#\3\2\2\2\u015f\u0164\5&\24\2\u0160\u0161\7\65\2\2\u0161"+ + "\u0163\5&\24\2\u0162\u0160\3\2\2\2\u0163\u0166\3\2\2\2\u0164\u0162\3\2"+ + "\2\2\u0164\u0165\3\2\2\2\u0165%\3\2\2\2\u0166\u0164\3\2\2\2\u0167\u0169"+ + "\7;\2\2\u0168\u0167\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016a\3\2\2\2\u016a"+ + "\u016b\5x=\2\u016b\'\3\2\2\2\u016c\u016d\7\5\2\2\u016d\u016f\7\35\2\2"+ + "\u016e\u0170\5 \21\2\u016f\u016e\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u0171"+ + "\3\2\2\2\u0171\u0173\5\u0094K\2\u0172\u0174\5\62\32\2\u0173\u0172\3\2"+ + "\2\2\u0173\u0174\3\2\2\2\u0174)\3\2\2\2\u0175\u0176\7\5\2\2\u0176\u0177"+ + "\5,\27\2\u0177\u0178\7\35\2\2\u0178\u017a\5\u0094K\2\u0179\u017b\5\62"+ + "\32\2\u017a\u0179\3\2\2\2\u017a\u017b\3\2\2\2\u017b+\3\2\2\2\u017c\u017d"+ + "\5\u0098M\2\u017d-\3\2\2\2\u017e\u018a\7\33\2\2\u017f\u018b\5\60\31\2"+ + "\u0180\u0186\7\36\2\2\u0181\u0182\5\60\31\2\u0182\u0183\5\u00d0i\2\u0183"+ + "\u0185\3\2\2\2\u0184\u0181\3\2\2\2\u0185\u0188\3\2\2\2\u0186\u0184\3\2"+ + "\2\2\u0186\u0187\3\2\2\2\u0187\u0189\3\2\2\2\u0188\u0186\3\2\2\2\u0189"+ + "\u018b\7\37\2\2\u018a\u017f\3\2\2\2\u018a\u0180\3\2\2\2\u018b/\3\2\2\2"+ + "\u018c\u0194\5\22\n\2\u018d\u0190\5x=\2\u018e\u018f\7$\2\2\u018f\u0191"+ + "\5\24\13\2\u0190\u018e\3\2\2\2\u0190\u0191\3\2\2\2\u0191\u0195\3\2\2\2"+ + "\u0192\u0193\7$\2\2\u0193\u0195\5\24\13\2\u0194\u018d\3\2\2\2\u0194\u0192"+ + "\3\2\2\2\u0195\61\3\2\2\2\u0196\u0198\7 \2\2\u0197\u0199\5\64\33\2\u0198"+ + "\u0197\3\2\2\2\u0198\u0199\3\2\2\2\u0199\u019a\3\2\2\2\u019a\u019b\7!"+ + "\2\2\u019b\63\3\2\2\2\u019c\u019e\7&\2\2\u019d\u019c\3\2\2\2\u019d\u019e"+ + "\3\2\2\2\u019e\u01a4\3\2\2\2\u019f\u01a1\7[\2\2\u01a0\u019f\3\2\2\2\u01a0"+ + "\u01a1\3\2\2\2\u01a1\u01a4\3\2\2\2\u01a2\u01a4\6\33\2\2\u01a3\u019d\3"+ + "\2\2\2\u01a3\u01a0\3\2\2\2\u01a3\u01a2\3\2\2\2\u01a4\u01a5\3\2\2\2\u01a5"+ + "\u01a6\5\66\34\2\u01a6\u01a7\5\u00d0i\2\u01a7\u01a9\3\2\2\2\u01a8\u01a3"+ + "\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa\u01a8\3\2\2\2\u01aa\u01ab\3\2\2\2\u01ab"+ + "\65\3\2\2\2\u01ac\u01bc\5\f\7\2\u01ad\u01bc\5F$\2\u01ae\u01bc\58\35\2"+ + "\u01af\u01bc\5v<\2\u01b0\u01bc\5H%\2\u01b1\u01bc\5J&\2\u01b2\u01bc\5L"+ + "\'\2\u01b3\u01bc\5N(\2\u01b4\u01bc\5P)\2\u01b5\u01bc\5\62\32\2\u01b6\u01bc"+ + "\5T+\2\u01b7\u01bc\5V,\2\u01b8\u01bc\5h\65\2\u01b9\u01bc\5p9\2\u01ba\u01bc"+ + "\5R*\2\u01bb\u01ac\3\2\2\2\u01bb\u01ad\3\2\2\2\u01bb\u01ae\3\2\2\2\u01bb"+ + "\u01af\3\2\2\2\u01bb\u01b0\3\2\2\2\u01bb\u01b1\3\2\2\2\u01bb\u01b2\3\2"+ + "\2\2\u01bb\u01b3\3\2\2\2\u01bb\u01b4\3\2\2\2\u01bb\u01b5\3\2\2\2\u01bb"+ + "\u01b6\3\2\2\2\u01bb\u01b7\3\2\2\2\u01bb\u01b8\3\2\2\2\u01bb\u01b9\3\2"+ + "\2\2\u01bb\u01ba\3\2\2\2\u01bc\67\3\2\2\2\u01bd\u01c3\5<\37\2\u01be\u01c3"+ + "\5> \2\u01bf\u01c3\5@!\2\u01c0\u01c3\5:\36\2\u01c1\u01c3\5D#\2\u01c2\u01bd"+ + "\3\2\2\2\u01c2\u01be\3\2\2\2\u01c2\u01bf\3\2\2\2\u01c2\u01c0\3\2\2\2\u01c2"+ + "\u01c1\3\2\2\2\u01c39\3\2\2\2\u01c4\u01c5\5\u009cO\2\u01c5;\3\2\2\2\u01c6"+ + "\u01c7\5\u009cO\2\u01c7\u01c8\7B\2\2\u01c8\u01c9\5\u009cO\2\u01c9=\3\2"+ + "\2\2\u01ca\u01cb\5\u009cO\2\u01cb\u01cc\t\4\2\2\u01cc?\3\2\2\2\u01cd\u01ce"+ + "\5\24\13\2\u01ce\u01cf\5B\"\2\u01cf\u01d0\5\24\13\2\u01d0A\3\2\2\2\u01d1"+ + "\u01d3\t\5\2\2\u01d2\u01d1\3\2\2\2\u01d2\u01d3\3\2\2\2\u01d3\u01d4\3\2"+ + "\2\2\u01d4\u01d5\7$\2\2\u01d5C\3\2\2\2\u01d6\u01d7\5\22\n\2\u01d7\u01d8"+ + "\7+\2\2\u01d8\u01d9\5\24\13\2\u01d9E\3\2\2\2\u01da\u01db\7\35\2\2\u01db"+ + "\u01dd\7\'\2\2\u01dc\u01de\5\66\34\2\u01dd\u01dc\3\2\2\2\u01dd\u01de\3"+ + "\2\2\2\u01deG\3\2\2\2\u01df\u01e1\7\32\2\2\u01e0\u01e2\5\24\13\2\u01e1"+ + "\u01e0\3\2\2\2\u01e1\u01e2\3\2\2\2\u01e2I\3\2\2\2\u01e3\u01e5\7\3\2\2"+ + "\u01e4\u01e6\7\35\2\2\u01e5\u01e4\3\2\2\2\u01e5\u01e6\3\2\2\2\u01e6K\3"+ + "\2\2\2\u01e7\u01e9\7\27\2\2\u01e8\u01ea\7\35\2\2\u01e9\u01e8\3\2\2\2\u01e9"+ + "\u01ea\3\2\2\2\u01eaM\3\2\2\2\u01eb\u01ec\7\17\2\2\u01ec\u01ed\7\35\2"+ + "\2\u01edO\3\2\2\2\u01ee\u01ef\7\23\2\2\u01efQ\3\2\2\2\u01f0\u01f1\7\t"+ + "\2\2\u01f1\u01f2\5\u009cO\2\u01f2S\3\2\2\2\u01f3\u01fc\7\24\2\2\u01f4"+ + "\u01fd\5\u009cO\2\u01f5\u01f6\5\u00d0i\2\u01f6\u01f7\5\u009cO\2\u01f7"+ + "\u01fd\3\2\2\2\u01f8\u01f9\58\35\2\u01f9\u01fa\5\u00d0i\2\u01fa\u01fb"+ + "\5\u009cO\2\u01fb\u01fd\3\2\2\2\u01fc\u01f4\3\2\2\2\u01fc\u01f5\3\2\2"+ + "\2\u01fc\u01f8\3\2\2\2\u01fd\u01fe\3\2\2\2\u01fe\u0204\5\62\32\2\u01ff"+ + "\u0202\7\16\2\2\u0200\u0203\5T+\2\u0201\u0203\5\62\32\2\u0202\u0200\3"+ + "\2\2\2\u0202\u0201\3\2\2\2\u0203\u0205\3\2\2\2\u0204\u01ff\3\2\2\2\u0204"+ + "\u0205\3\2\2\2\u0205U\3\2\2\2\u0206\u0209\5X-\2\u0207\u0209\5^\60\2\u0208"+ + "\u0206\3\2\2\2\u0208\u0207\3\2\2\2\u0209W\3\2\2\2\u020a\u0215\7\21\2\2"+ + "\u020b\u020d\5\u009cO\2\u020c\u020b\3\2\2\2\u020c\u020d\3\2\2\2\u020d"+ + "\u0216\3\2\2\2\u020e\u0210\58\35\2\u020f\u020e\3\2\2\2\u020f\u0210\3\2"+ + "\2\2\u0210\u0211\3\2\2\2\u0211\u0213\5\u00d0i\2\u0212\u0214\5\u009cO\2"+ + "\u0213\u0212\3\2\2\2\u0213\u0214\3\2\2\2\u0214\u0216\3\2\2\2\u0215\u020c"+ + "\3\2\2\2\u0215\u020f\3\2\2\2\u0216\u0217\3\2\2\2\u0217\u021b\7 \2\2\u0218"+ + "\u021a\5Z.\2\u0219\u0218\3\2\2\2\u021a\u021d\3\2\2\2\u021b\u0219\3\2\2"+ + "\2\u021b\u021c\3\2\2\2\u021c\u021e\3\2\2\2\u021d\u021b\3\2\2\2\u021e\u021f"+ + "\7!\2\2\u021fY\3\2\2\2\u0220\u0221\5\\/\2\u0221\u0223\7\'\2\2\u0222\u0224"+ + "\5\64\33\2\u0223\u0222\3\2\2\2\u0223\u0224\3\2\2\2\u0224[\3\2\2\2\u0225"+ + "\u0226\7\b\2\2\u0226\u0229\5\24\13\2\u0227\u0229\7\4\2\2\u0228\u0225\3"+ + "\2\2\2\u0228\u0227\3\2\2\2\u0229]\3\2\2\2\u022a\u0233\7\21\2\2\u022b\u0234"+ + "\5`\61\2\u022c\u022d\5\u00d0i\2\u022d\u022e\5`\61\2\u022e\u0234\3\2\2"+ + "\2\u022f\u0230\58\35\2\u0230\u0231\5\u00d0i\2\u0231\u0232\5`\61\2\u0232"+ + "\u0234\3\2\2\2\u0233\u022b\3\2\2\2\u0233\u022c\3\2\2\2\u0233\u022f\3\2"+ + "\2\2\u0234\u0235\3\2\2\2\u0235\u0239\7 \2\2\u0236\u0238\5b\62\2\u0237"+ + "\u0236\3\2\2\2\u0238\u023b\3\2\2\2\u0239\u0237\3\2\2\2\u0239\u023a\3\2"+ + "\2\2\u023a\u023c\3\2\2\2\u023b\u0239\3\2\2\2\u023c\u023d\7!\2\2\u023d"+ + "_\3\2\2\2\u023e\u023f\7\35\2\2\u023f\u0241\7+\2\2\u0240\u023e\3\2\2\2"+ + "\u0240\u0241\3\2\2\2\u0241\u0242\3\2\2\2\u0242\u0243\5\u009eP\2\u0243"+ + "\u0244\7(\2\2\u0244\u0245\7\36\2\2\u0245\u0246\7\26\2\2\u0246\u0247\7"+ + "\37\2\2\u0247a\3\2\2\2\u0248\u0249\5d\63\2\u0249\u024b\7\'\2\2\u024a\u024c"+ + "\5\64\33\2\u024b\u024a\3\2\2\2\u024b\u024c\3\2\2\2\u024cc\3\2\2\2\u024d"+ + "\u024e\7\b\2\2\u024e\u0251\5f\64\2\u024f\u0251\7\4\2\2\u0250\u024d\3\2"+ + "\2\2\u0250\u024f\3\2\2\2\u0251e\3\2\2\2\u0252\u0255\5x=\2\u0253\u0255"+ + "\7\34\2\2\u0254\u0252\3\2\2\2\u0254\u0253\3\2\2\2\u0255\u025d\3\2\2\2"+ + "\u0256\u0259\7%\2\2\u0257\u025a\5x=\2\u0258\u025a\7\34\2\2\u0259\u0257"+ + "\3\2\2\2\u0259\u0258\3\2\2\2\u025a\u025c\3\2\2\2\u025b\u0256\3\2\2\2\u025c"+ + "\u025f\3\2\2\2\u025d\u025b\3\2\2\2\u025d\u025e\3\2\2\2\u025eg\3\2\2\2"+ + "\u025f\u025d\3\2\2\2\u0260\u0261\7\7\2\2\u0261\u0265\7 \2\2\u0262\u0264"+ + "\5j\66\2\u0263\u0262\3\2\2\2\u0264\u0267\3\2\2\2\u0265\u0263\3\2\2\2\u0265"+ + "\u0266\3\2\2\2\u0266\u0268\3\2\2\2\u0267\u0265\3\2\2\2\u0268\u0269\7!"+ + "\2\2\u0269i\3\2\2\2\u026a\u026b\5l\67\2\u026b\u026d\7\'\2\2\u026c\u026e"+ + "\5\64\33\2\u026d\u026c\3\2\2\2\u026d\u026e\3\2\2\2\u026ek\3\2\2\2\u026f"+ + "\u0272\7\b\2\2\u0270\u0273\5<\37\2\u0271\u0273\5n8\2\u0272\u0270\3\2\2"+ + "\2\u0272\u0271\3\2\2\2\u0273\u0276\3\2\2\2\u0274\u0276\7\4\2\2\u0275\u026f"+ + "\3\2\2\2\u0275\u0274\3\2\2\2\u0276m\3\2\2\2\u0277\u0278\5\24\13\2\u0278"+ + "\u0279\7$\2\2\u0279\u027e\3\2\2\2\u027a\u027b\5\22\n\2\u027b\u027c\7+"+ + "\2\2\u027c\u027e\3\2\2\2\u027d\u0277\3\2\2\2\u027d\u027a\3\2\2\2\u027d"+ + "\u027e\3\2\2\2\u027e\u027f\3\2\2\2\u027f\u0280\5\u009cO\2\u0280o\3\2\2"+ + "\2\u0281\u0289\7\30\2\2\u0282\u0284\5\u009cO\2\u0283\u0282\3\2\2\2\u0283"+ + "\u0284\3\2\2\2\u0284\u028a\3\2\2\2\u0285\u028a\5r:\2\u0286\u0288\5t;\2"+ + "\u0287\u0286\3\2\2\2\u0287\u0288\3\2\2\2\u0288\u028a\3\2\2\2\u0289\u0283"+ + "\3\2\2\2\u0289\u0285\3\2\2\2\u0289\u0287\3\2\2\2\u028a\u028b\3\2\2\2\u028b"+ + "\u028c\5\62\32\2\u028cq\3\2\2\2\u028d\u028f\58\35\2\u028e\u028d\3\2\2"+ + "\2\u028e\u028f\3\2\2\2\u028f\u0290\3\2\2\2\u0290\u0292\5\u00d0i\2\u0291"+ + "\u0293\5\u009cO\2\u0292\u0291\3\2\2\2\u0292\u0293\3\2\2\2\u0293\u0294"+ + "\3\2\2\2\u0294\u0296\5\u00d0i\2\u0295\u0297\58\35\2\u0296\u0295\3\2\2"+ + "\2\u0296\u0297\3\2\2\2\u0297s\3\2\2\2\u0298\u0299\5\24\13\2\u0299\u029a"+ + "\7$\2\2\u029a\u029f\3\2\2\2\u029b\u029c\5\22\n\2\u029c\u029d\7+\2\2\u029d"+ + "\u029f\3\2\2\2\u029e\u0298\3\2\2\2\u029e\u029b\3\2\2\2\u029e\u029f\3\2"+ + "\2\2\u029f\u02a0\3\2\2\2\u02a0\u02a1\7\25\2\2\u02a1\u02a2\5\u009cO\2\u02a2"+ + "u\3\2\2\2\u02a3\u02a4\7\n\2\2\u02a4\u02a5\5\u009cO\2\u02a5w\3\2\2\2\u02a6"+ + "\u02a8\5|?\2\u02a7\u02a9\5z>\2\u02a8\u02a7\3\2\2\2\u02a8\u02a9\3\2\2\2"+ + "\u02a9\u02b0\3\2\2\2\u02aa\u02b0\5~@\2\u02ab\u02ac\7\36\2\2\u02ac\u02ad"+ + "\5x=\2\u02ad\u02ae\7\37\2\2\u02ae\u02b0\3\2\2\2\u02af\u02a6\3\2\2\2\u02af"+ + "\u02aa\3\2\2\2\u02af\u02ab\3\2\2\2\u02b0y\3\2\2\2\u02b1\u02b2\7\"\2\2"+ + "\u02b2\u02b4\5f\64\2\u02b3\u02b5\7%\2\2\u02b4\u02b3\3\2\2\2\u02b4\u02b5"+ + "\3\2\2\2\u02b5\u02b6\3\2\2\2\u02b6\u02b7\7#\2\2\u02b7{\3\2\2\2\u02b8\u02bb"+ + "\5\u00acW\2\u02b9\u02bb\7\35\2\2\u02ba\u02b8\3\2\2\2\u02ba\u02b9\3\2\2"+ + "\2\u02bb}\3\2\2\2\u02bc\u02c5\5\u0080A\2\u02bd\u02c5\5\u00bc_\2\u02be"+ + "\u02c5\5\u0086D\2\u02bf\u02c5\5\u0092J\2\u02c0\u02c5\5\u0088E\2\u02c1"+ + "\u02c5\5\u008aF\2\u02c2\u02c5\5\u008cG\2\u02c3\u02c5\5\u008eH\2\u02c4"+ + "\u02bc\3\2\2\2\u02c4\u02bd\3\2\2\2\u02c4\u02be\3\2\2\2\u02c4\u02bf\3\2"+ + "\2\2\u02c4\u02c0\3\2\2\2\u02c4\u02c1\3\2\2\2\u02c4\u02c2\3\2\2\2\u02c4"+ + "\u02c3\3\2\2\2\u02c5\177\3\2\2\2\u02c6\u02c7\7\"\2\2\u02c7\u02c8\5\u0082"+ + "B\2\u02c8\u02c9\7#\2\2\u02c9\u02ca\5\u0084C\2\u02ca\u0081\3\2\2\2\u02cb"+ + "\u02cc\5\u009cO\2\u02cc\u0083\3\2\2\2\u02cd\u02ce\5x=\2\u02ce\u0085\3"+ + "\2\2\2\u02cf\u02d0\7@\2\2\u02d0\u02d1\5x=\2\u02d1\u0087\3\2\2\2\u02d2"+ + "\u02d3\7\6\2\2\u02d3\u02dc\7 \2\2\u02d4\u02d7\5\u0090I\2\u02d5\u02d7\5"+ + "$\23\2\u02d6\u02d4\3\2\2\2\u02d6\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8"+ + "\u02d9\5\u00d0i\2\u02d9\u02db\3\2\2\2\u02da\u02d6\3\2\2\2\u02db\u02de"+ + "\3\2\2\2\u02dc\u02da\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02df\3\2\2\2\u02de"+ + "\u02dc\3\2\2\2\u02df\u02e0\7!\2\2\u02e0\u0089\3\2\2\2\u02e1\u02e2\7\""+ + "\2\2\u02e2\u02e3\7#\2\2\u02e3\u02e4\5\u0084C\2\u02e4\u008b\3\2\2\2\u02e5"+ + "\u02e6\7\13\2\2\u02e6\u02e7\7\"\2\2\u02e7\u02e8\5x=\2\u02e8\u02e9\7#\2"+ + "\2\u02e9\u02ea\5\u0084C\2\u02ea\u008d\3\2\2\2\u02eb\u02f1\7\r\2\2\u02ec"+ + "\u02ed\7\r\2\2\u02ed\u02f1\7B\2\2\u02ee\u02ef\7B\2\2\u02ef\u02f1\7\r\2"+ + "\2\u02f0\u02eb\3\2\2\2\u02f0\u02ec\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f1\u02f2"+ + "\3\2\2\2\u02f2\u02f3\5\u0084C\2\u02f3\u008f\3\2\2\2\u02f4\u02f5\7\35\2"+ + "\2\u02f5\u02f6\5\u0098M\2\u02f6\u02f7\5\u0096L\2\u02f7\u02fb\3\2\2\2\u02f8"+ + "\u02f9\7\35\2\2\u02f9\u02fb\5\u0098M\2\u02fa\u02f4\3\2\2\2\u02fa\u02f8"+ + "\3\2\2\2\u02fb\u0091\3\2\2\2\u02fc\u02fd\7\5\2\2\u02fd\u02fe\5\u0094K"+ + "\2\u02fe\u0093\3\2\2\2\u02ff\u0301\5\u0098M\2\u0300\u0302\5\u0096L\2\u0301"+ + "\u0300\3\2\2\2\u0301\u0302\3\2\2\2\u0302\u0095\3\2\2\2\u0303\u0306\5\u0098"+ + "M\2\u0304\u0306\5x=\2\u0305\u0303\3\2\2\2\u0305\u0304\3\2\2\2\u0306\u0097"+ + "\3\2\2\2\u0307\u0313\7\36\2\2\u0308\u030d\5\u009aN\2\u0309\u030a\7%\2"+ + "\2\u030a\u030c\5\u009aN\2\u030b\u0309\3\2\2\2\u030c\u030f\3\2\2\2\u030d"+ + "\u030b\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u0311\3\2\2\2\u030f\u030d\3\2"+ + "\2\2\u0310\u0312\7%\2\2\u0311\u0310\3\2\2\2\u0311\u0312\3\2\2\2\u0312"+ + "\u0314\3\2\2\2\u0313\u0308\3\2\2\2\u0313\u0314\3\2\2\2\u0314\u0315\3\2"+ + "\2\2\u0315\u0316\7\37\2\2\u0316\u0099\3\2\2\2\u0317\u0319\5\22\n\2\u0318"+ + "\u0317\3\2\2\2\u0318\u0319\3\2\2\2\u0319\u031b\3\2\2\2\u031a\u031c\7,"+ + "\2\2\u031b\u031a\3\2\2\2\u031b\u031c\3\2\2\2\u031c\u031d\3\2\2\2\u031d"+ + "\u031e\5x=\2\u031e\u009b\3\2\2\2\u031f\u0320\bO\1\2\u0320\u0324\5\u009e"+ + "P\2\u0321\u0322\t\6\2\2\u0322\u0324\5\u009cO\b\u0323\u031f\3\2\2\2\u0323"+ + "\u0321\3\2\2\2\u0324\u0336\3\2\2\2\u0325\u0326\f\7\2\2\u0326\u0327\t\7"+ + "\2\2\u0327\u0335\5\u009cO\b\u0328\u0329\f\6\2\2\u0329\u032a\t\b\2\2\u032a"+ + "\u0335\5\u009cO\7\u032b\u032c\f\5\2\2\u032c\u032d\t\t\2\2\u032d\u0335"+ + "\5\u009cO\6\u032e\u032f\f\4\2\2\u032f\u0330\7.\2\2\u0330\u0335\5\u009c"+ + "O\5\u0331\u0332\f\3\2\2\u0332\u0333\7-\2\2\u0333\u0335\5\u009cO\4\u0334"+ + "\u0325\3\2\2\2\u0334\u0328\3\2\2\2\u0334\u032b\3\2\2\2\u0334\u032e\3\2"+ + "\2\2\u0334\u0331\3\2\2\2\u0335\u0338\3\2\2\2\u0336\u0334\3\2\2\2\u0336"+ + "\u0337\3\2\2\2\u0337\u009d\3\2\2\2\u0338\u0336\3\2\2\2\u0339\u033a\bP"+ + "\1\2\u033a\u033e\5\u00a2R\2\u033b\u033e\5\u00a0Q\2\u033c\u033e\5\u00ce"+ + "h\2\u033d\u0339\3\2\2\2\u033d\u033b\3\2\2\2\u033d\u033c\3\2\2\2\u033e"+ + "\u034a\3\2\2\2\u033f\u0346\f\3\2\2\u0340\u0341\7(\2\2\u0341\u0347\7\35"+ + "\2\2\u0342\u0347\5\u00c6d\2\u0343\u0347\5\u00c8e\2\u0344\u0347\5\u00ca"+ + "f\2\u0345\u0347\5\u00ccg\2\u0346\u0340\3\2\2\2\u0346\u0342\3\2\2\2\u0346"+ + "\u0343\3\2\2\2\u0346\u0344\3\2\2\2\u0346\u0345\3\2\2\2\u0347\u0349\3\2"+ + "\2\2\u0348\u033f\3\2\2\2\u0349\u034c\3\2\2\2\u034a\u0348\3\2\2\2\u034a"+ + "\u034b\3\2\2\2\u034b\u009f\3\2\2\2\u034c\u034a\3\2\2\2\u034d\u034e\5x"+ + "=\2\u034e\u034f\7\36\2\2\u034f\u0351\5\u009cO\2\u0350\u0352\7%\2\2\u0351"+ + "\u0350\3\2\2\2\u0351\u0352\3\2\2\2\u0352\u0353\3\2\2\2\u0353\u0354\7\37"+ + "\2\2\u0354\u00a1\3\2\2\2\u0355\u035f\5\u00a4S\2\u0356\u0358\5\u00aaV\2"+ + "\u0357\u0359\5z>\2\u0358\u0357\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u035f"+ + "\3\2\2\2\u035a\u035b\7\36\2\2\u035b\u035c\5\u009cO\2\u035c\u035d\7\37"+ + "\2\2\u035d\u035f\3\2\2\2\u035e\u0355\3\2\2\2\u035e\u0356\3\2\2\2\u035e"+ + "\u035a\3\2\2\2\u035f\u00a3\3\2\2\2\u0360\u0364\5\u00a6T\2\u0361\u0364"+ + "\5\u00aeX\2\u0362\u0364\5\u00c4c\2\u0363\u0360\3\2\2\2\u0363\u0361\3\2"+ + "\2\2\u0363\u0362\3\2\2\2\u0364\u00a5\3\2\2\2\u0365\u036a\7\34\2\2\u0366"+ + "\u036a\5\u00a8U\2\u0367\u036a\5\u00c0a\2\u0368\u036a\7G\2\2\u0369\u0365"+ + "\3\2\2\2\u0369\u0366\3\2\2\2\u0369\u0367\3\2\2\2\u0369\u0368\3\2\2\2\u036a"+ + "\u00a7\3\2\2\2\u036b\u036c\t\n\2\2\u036c\u00a9\3\2\2\2\u036d\u036e\7\35"+ + "\2\2\u036e\u00ab\3\2\2\2\u036f\u0370\7\35\2\2\u0370\u0371\7(\2\2\u0371"+ + "\u0372\7\35\2\2\u0372\u00ad\3\2\2\2\u0373\u0374\5\u00b0Y\2\u0374\u0375"+ + "\5\u00b2Z\2\u0375\u00af\3\2\2\2\u0376\u0383\5\u00bc_\2\u0377\u0383\5\u0080"+ + "A\2\u0378\u0379\7\"\2\2\u0379\u037a\7,\2\2\u037a\u037b\7#\2\2\u037b\u0383"+ + "\5\u0084C\2\u037c\u0383\5\u008aF\2\u037d\u0383\5\u008cG\2\u037e\u0380"+ + "\5|?\2\u037f\u0381\5z>\2\u0380\u037f\3\2\2\2\u0380\u0381\3\2\2\2\u0381"+ + "\u0383\3\2\2\2\u0382\u0376\3\2\2\2\u0382\u0377\3\2\2\2\u0382\u0378\3\2"+ + "\2\2\u0382\u037c\3\2\2\2\u0382\u037d\3\2\2\2\u0382\u037e\3\2\2\2\u0383"+ + "\u00b1\3\2\2\2\u0384\u0389\7 \2\2\u0385\u0387\5\u00b4[\2\u0386\u0388\7"+ + "%\2\2\u0387\u0386\3\2\2\2\u0387\u0388\3\2\2\2\u0388\u038a\3\2\2\2\u0389"+ + "\u0385\3\2\2\2\u0389\u038a\3\2\2\2\u038a\u038b\3\2\2\2\u038b\u038c\7!"+ + "\2\2\u038c\u00b3\3\2\2\2\u038d\u0392\5\u00b6\\\2\u038e\u038f\7%\2\2\u038f"+ + "\u0391\5\u00b6\\\2\u0390\u038e\3\2\2\2\u0391\u0394\3\2\2\2\u0392\u0390"+ + "\3\2\2\2\u0392\u0393\3\2\2\2\u0393\u00b5\3\2\2\2\u0394\u0392\3\2\2\2\u0395"+ + "\u0396\5\u00b8]\2\u0396\u0397\7\'\2\2\u0397\u0399\3\2\2\2\u0398\u0395"+ + "\3\2\2\2\u0398\u0399\3\2\2\2\u0399\u039a\3\2\2\2\u039a\u039b\5\u00ba^"+ + "\2\u039b\u00b7\3\2\2\2\u039c\u039f\5\u009cO\2\u039d\u039f\5\u00b2Z\2\u039e"+ + "\u039c\3\2\2\2\u039e\u039d\3\2\2\2\u039f\u00b9\3\2\2\2\u03a0\u03a3\5\u009c"+ + "O\2\u03a1\u03a3\5\u00b2Z\2\u03a2\u03a0\3\2\2\2\u03a2\u03a1\3\2\2\2\u03a3"+ + "\u00bb\3\2\2\2\u03a4\u03a5\7\f\2\2\u03a5\u03ab\7 \2\2\u03a6\u03a7\5\u00be"+ + "`\2\u03a7\u03a8\5\u00d0i\2\u03a8\u03aa\3\2\2\2\u03a9\u03a6\3\2\2\2\u03aa"+ + "\u03ad\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ab\u03ac\3\2\2\2\u03ac\u03ae\3\2"+ + "\2\2\u03ad\u03ab\3\2\2\2\u03ae\u03af\7!\2\2\u03af\u00bd\3\2\2\2\u03b0"+ + "\u03b1\5\22\n\2\u03b1\u03b2\5x=\2\u03b2\u03b5\3\2\2\2\u03b3\u03b5\5\u00c2"+ + "b\2\u03b4\u03b0\3\2\2\2\u03b4\u03b3\3\2\2\2\u03b5\u03b7\3\2\2\2\u03b6"+ + "\u03b8\5\u00c0a\2\u03b7\u03b6\3\2\2\2\u03b7\u03b8\3\2\2\2\u03b8\u00bf"+ + "\3\2\2\2\u03b9\u03ba\t\13\2\2\u03ba\u00c1\3\2\2\2\u03bb\u03bd\7@\2\2\u03bc"+ + "\u03bb\3\2\2\2\u03bc\u03bd\3\2\2\2\u03bd\u03be\3\2\2\2\u03be\u03c0\5|"+ + "?\2\u03bf\u03c1\5z>\2\u03c0\u03bf\3\2\2\2\u03c0\u03c1\3\2\2\2\u03c1\u00c3"+ + "\3\2\2\2\u03c2\u03c3\7\5\2\2\u03c3\u03c4\5\u0094K\2\u03c4\u03c5\5\62\32"+ + "\2\u03c5\u00c5\3\2\2\2\u03c6\u03c7\7\"\2\2\u03c7\u03c8\5\u009cO\2\u03c8"+ + "\u03c9\7#\2\2\u03c9\u00c7\3\2\2\2\u03ca\u03da\7\"\2\2\u03cb\u03cd\5\u009c"+ + "O\2\u03cc\u03cb\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd\u03ce\3\2\2\2\u03ce"+ + "\u03d0\7\'\2\2\u03cf\u03d1\5\u009cO\2\u03d0\u03cf\3\2\2\2\u03d0\u03d1"+ + "\3\2\2\2\u03d1\u03db\3\2\2\2\u03d2\u03d4\5\u009cO\2\u03d3\u03d2\3\2\2"+ + "\2\u03d3\u03d4\3\2\2\2\u03d4\u03d5\3\2\2\2\u03d5\u03d6\7\'\2\2\u03d6\u03d7"+ + "\5\u009cO\2\u03d7\u03d8\7\'\2\2\u03d8\u03d9\5\u009cO\2\u03d9\u03db\3\2"+ + "\2\2\u03da\u03cc\3\2\2\2\u03da\u03d3\3\2\2\2\u03db\u03dc\3\2\2\2\u03dc"+ + "\u03dd\7#\2\2\u03dd\u00c9\3\2\2\2\u03de\u03df\7(\2\2\u03df\u03e0\7\36"+ + "\2\2\u03e0\u03e1\5x=\2\u03e1\u03e2\7\37\2\2\u03e2\u00cb\3\2\2\2\u03e3"+ + "\u03f2\7\36\2\2\u03e4\u03eb\5\24\13\2\u03e5\u03e8\5x=\2\u03e6\u03e7\7"+ + "%\2\2\u03e7\u03e9\5\24\13\2\u03e8\u03e6\3\2\2\2\u03e8\u03e9\3\2\2\2\u03e9"+ + "\u03eb\3\2\2\2\u03ea\u03e4\3\2\2\2\u03ea\u03e5\3\2\2\2\u03eb\u03ed\3\2"+ + "\2\2\u03ec\u03ee\7,\2\2\u03ed\u03ec\3\2\2\2\u03ed\u03ee\3\2\2\2\u03ee"+ + "\u03f0\3\2\2\2\u03ef\u03f1\7%\2\2\u03f0\u03ef\3\2\2\2\u03f0\u03f1\3\2"+ + "\2\2\u03f1\u03f3\3\2\2\2\u03f2\u03ea\3\2\2\2\u03f2\u03f3\3\2\2\2\u03f3"+ + "\u03f4\3\2\2\2\u03f4\u03f5\7\37\2\2\u03f5\u00cd\3\2\2\2\u03f6\u03f7\5"+ + "x=\2\u03f7\u03f8\7(\2\2\u03f8\u03f9\7\35\2\2\u03f9\u00cf\3\2\2\2\u03fa"+ + "\u03ff\7&\2\2\u03fb\u03ff\7\2\2\3\u03fc\u03ff\7[\2\2\u03fd\u03ff\6i\t"+ + "\2\u03fe\u03fa\3\2\2\2\u03fe\u03fb\3\2\2\2\u03fe\u03fc\3\2\2\2\u03fe\u03fd"+ + "\3\2\2\2\u03ff\u00d1\3\2\2\2{\u00d9\u00df\u00e5\u00f5\u00f9\u00fc\u0105"+ + "\u010f\u0113\u0117\u011b\u0122\u012a\u0132\u013d\u0141\u0145\u014d\u0157"+ + "\u0164\u0168\u016f\u0173\u017a\u0186\u018a\u0190\u0194\u0198\u019d\u01a0"+ + "\u01a3\u01aa\u01bb\u01c2\u01d2\u01dd\u01e1\u01e5\u01e9\u01fc\u0202\u0204"+ + "\u0208\u020c\u020f\u0213\u0215\u021b\u0223\u0228\u0233\u0239\u0240\u024b"+ + "\u0250\u0254\u0259\u025d\u0265\u026d\u0272\u0275\u027d\u0283\u0287\u0289"+ + "\u028e\u0292\u0296\u029e\u02a8\u02af\u02b4\u02ba\u02c4\u02d6\u02dc\u02f0"+ + "\u02fa\u0301\u0305\u030d\u0311\u0313\u0318\u031b\u0323\u0334\u0336\u033d"+ + "\u0346\u034a\u0351\u0358\u035e\u0363\u0369\u0380\u0382\u0387\u0389\u0392"+ + "\u0398\u039e\u03a2\u03ab\u03b4\u03b7\u03bc\u03c0\u03cc\u03d0\u03d3\u03da"+ + "\u03e8\u03ea\u03ed\u03f0\u03f2\u03fe"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.tokens b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.tokens new file mode 100644 index 000000000..3d04e655a --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParser.tokens @@ -0,0 +1,153 @@ +BREAK=1 +DEFAULT=2 +FUNC=3 +INTERFACE=4 +SELECT=5 +CASE=6 +DEFER=7 +GO=8 +MAP=9 +STRUCT=10 +CHAN=11 +ELSE=12 +GOTO=13 +PACKAGE=14 +SWITCH=15 +CONST=16 +FALLTHROUGH=17 +IF=18 +RANGE=19 +TYPE=20 +CONTINUE=21 +FOR=22 +IMPORT=23 +RETURN=24 +VAR=25 +NIL_LIT=26 +IDENTIFIER=27 +L_PAREN=28 +R_PAREN=29 +L_CURLY=30 +R_CURLY=31 +L_BRACKET=32 +R_BRACKET=33 +ASSIGN=34 +COMMA=35 +SEMI=36 +COLON=37 +DOT=38 +PLUS_PLUS=39 +MINUS_MINUS=40 +DECLARE_ASSIGN=41 +ELLIPSIS=42 +LOGICAL_OR=43 +LOGICAL_AND=44 +EQUALS=45 +NOT_EQUALS=46 +LESS=47 +LESS_OR_EQUALS=48 +GREATER=49 +GREATER_OR_EQUALS=50 +OR=51 +DIV=52 +MOD=53 +LSHIFT=54 +RSHIFT=55 +BIT_CLEAR=56 +UNDERLYING=57 +EXCLAMATION=58 +PLUS=59 +MINUS=60 +CARET=61 +STAR=62 +AMPERSAND=63 +RECEIVE=64 +DECIMAL_LIT=65 +BINARY_LIT=66 +OCTAL_LIT=67 +HEX_LIT=68 +FLOAT_LIT=69 +DECIMAL_FLOAT_LIT=70 +HEX_FLOAT_LIT=71 +IMAGINARY_LIT=72 +RUNE_LIT=73 +BYTE_VALUE=74 +OCTAL_BYTE_VALUE=75 +HEX_BYTE_VALUE=76 +LITTLE_U_VALUE=77 +BIG_U_VALUE=78 +RAW_STRING_LIT=79 +INTERPRETED_STRING_LIT=80 +WS=81 +COMMENT=82 +TERMINATOR=83 +LINE_COMMENT=84 +NEWLINE=85 +WS_NLSEMI=86 +COMMENT_NLSEMI=87 +LINE_COMMENT_NLSEMI=88 +EOS=89 +OTHER=90 +'break'=1 +'default'=2 +'func'=3 +'interface'=4 +'select'=5 +'case'=6 +'defer'=7 +'go'=8 +'map'=9 +'struct'=10 +'chan'=11 +'else'=12 +'goto'=13 +'package'=14 +'switch'=15 +'const'=16 +'fallthrough'=17 +'if'=18 +'range'=19 +'type'=20 +'continue'=21 +'for'=22 +'import'=23 +'return'=24 +'var'=25 +'nil'=26 +'('=28 +')'=29 +'{'=30 +'}'=31 +'['=32 +']'=33 +'='=34 +','=35 +';'=36 +':'=37 +'.'=38 +'++'=39 +'--'=40 +':='=41 +'...'=42 +'||'=43 +'&&'=44 +'=='=45 +'!='=46 +'<'=47 +'<='=48 +'>'=49 +'>='=50 +'|'=51 +'/'=52 +'%'=53 +'<<'=54 +'>>'=55 +'&^'=56 +'~'=57 +'!'=58 +'+'=59 +'-'=60 +'^'=61 +'*'=62 +'&'=63 +'<-'=64 diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserBase.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserBase.java new file mode 100644 index 000000000..6aa5c5da0 --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserBase.java @@ -0,0 +1,28 @@ +package run.mone.antlr.golang; + +import org.antlr.v4.runtime.BufferedTokenStream; +import org.antlr.v4.runtime.Parser; +import org.antlr.v4.runtime.TokenStream; + +/** + * @author goodjava@qq.com + * @date 2024/1/29 16:33 + */ +public abstract class GoParserBase extends Parser +{ + protected GoParserBase(TokenStream input) { + super(input); + } + + + /** + * Returns true if the current Token is a closing bracket (")" or "}") + */ + protected boolean closingBracket() + { + BufferedTokenStream stream = (BufferedTokenStream)_input; + int prevTokenType = stream.LA(1); + + return prevTokenType == GoParser.R_CURLY || prevTokenType == GoParser.R_PAREN; + } +} diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserBaseListener.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserBaseListener.java new file mode 100644 index 000000000..ac039b2dd --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserBaseListener.java @@ -0,0 +1,1286 @@ +package run.mone.antlr.golang;// Generated from GoParser.g4 by ANTLR 4.7.1 + +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ErrorNode; +import org.antlr.v4.runtime.tree.TerminalNode; + +/** + * This class provides an empty implementation of {@link GoParserListener}, + * which can be extended to create a listener which only needs to handle a subset + * of the available methods. + */ +public class GoParserBaseListener implements GoParserListener { + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSourceFile(GoParser.SourceFileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSourceFile(GoParser.SourceFileContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPackageClause(GoParser.PackageClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPackageClause(GoParser.PackageClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportDecl(GoParser.ImportDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportDecl(GoParser.ImportDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportSpec(GoParser.ImportSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportSpec(GoParser.ImportSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterImportPath(GoParser.ImportPathContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitImportPath(GoParser.ImportPathContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeclaration(GoParser.DeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeclaration(GoParser.DeclarationContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstDecl(GoParser.ConstDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstDecl(GoParser.ConstDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConstSpec(GoParser.ConstSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConstSpec(GoParser.ConstSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIdentifierList(GoParser.IdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIdentifierList(GoParser.IdentifierListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpressionList(GoParser.ExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpressionList(GoParser.ExpressionListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterComment(GoParser.CommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitComment(GoParser.CommentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeDecl(GoParser.TypeDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeDecl(GoParser.TypeDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeSpec(GoParser.TypeSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeSpec(GoParser.TypeSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAliasDecl(GoParser.AliasDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAliasDecl(GoParser.AliasDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeDef(GoParser.TypeDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeDef(GoParser.TypeDefContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameters(GoParser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameters(GoParser.TypeParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeParameterDecl(GoParser.TypeParameterDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeParameterDecl(GoParser.TypeParameterDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeElement(GoParser.TypeElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeElement(GoParser.TypeElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeTerm(GoParser.TypeTermContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeTerm(GoParser.TypeTermContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionDecl(GoParser.FunctionDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionDecl(GoParser.FunctionDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodDecl(GoParser.MethodDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodDecl(GoParser.MethodDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReceiver(GoParser.ReceiverContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReceiver(GoParser.ReceiverContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVarDecl(GoParser.VarDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVarDecl(GoParser.VarDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterVarSpec(GoParser.VarSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitVarSpec(GoParser.VarSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBlock(GoParser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBlock(GoParser.BlockContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatementList(GoParser.StatementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatementList(GoParser.StatementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStatement(GoParser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStatement(GoParser.StatementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSimpleStmt(GoParser.SimpleStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSimpleStmt(GoParser.SimpleStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpressionStmt(GoParser.ExpressionStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpressionStmt(GoParser.ExpressionStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSendStmt(GoParser.SendStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSendStmt(GoParser.SendStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIncDecStmt(GoParser.IncDecStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIncDecStmt(GoParser.IncDecStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssignment(GoParser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssignment(GoParser.AssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterAssign_op(GoParser.Assign_opContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitAssign_op(GoParser.Assign_opContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterShortVarDecl(GoParser.ShortVarDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitShortVarDecl(GoParser.ShortVarDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLabeledStmt(GoParser.LabeledStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLabeledStmt(GoParser.LabeledStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterReturnStmt(GoParser.ReturnStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitReturnStmt(GoParser.ReturnStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBreakStmt(GoParser.BreakStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBreakStmt(GoParser.BreakStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterContinueStmt(GoParser.ContinueStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitContinueStmt(GoParser.ContinueStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGotoStmt(GoParser.GotoStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGotoStmt(GoParser.GotoStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFallthroughStmt(GoParser.FallthroughStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFallthroughStmt(GoParser.FallthroughStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterDeferStmt(GoParser.DeferStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitDeferStmt(GoParser.DeferStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIfStmt(GoParser.IfStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIfStmt(GoParser.IfStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSwitchStmt(GoParser.SwitchStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSwitchStmt(GoParser.SwitchStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExprSwitchStmt(GoParser.ExprSwitchStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExprSwitchStmt(GoParser.ExprSwitchStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExprCaseClause(GoParser.ExprCaseClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExprCaseClause(GoParser.ExprCaseClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExprSwitchCase(GoParser.ExprSwitchCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExprSwitchCase(GoParser.ExprSwitchCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeSwitchStmt(GoParser.TypeSwitchStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeSwitchStmt(GoParser.TypeSwitchStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeSwitchGuard(GoParser.TypeSwitchGuardContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeSwitchGuard(GoParser.TypeSwitchGuardContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeCaseClause(GoParser.TypeCaseClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeCaseClause(GoParser.TypeCaseClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeSwitchCase(GoParser.TypeSwitchCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeSwitchCase(GoParser.TypeSwitchCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeList(GoParser.TypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeList(GoParser.TypeListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSelectStmt(GoParser.SelectStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSelectStmt(GoParser.SelectStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommClause(GoParser.CommClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommClause(GoParser.CommClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCommCase(GoParser.CommCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCommCase(GoParser.CommCaseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRecvStmt(GoParser.RecvStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRecvStmt(GoParser.RecvStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForStmt(GoParser.ForStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForStmt(GoParser.ForStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterForClause(GoParser.ForClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitForClause(GoParser.ForClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterRangeClause(GoParser.RangeClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitRangeClause(GoParser.RangeClauseContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterGoStmt(GoParser.GoStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitGoStmt(GoParser.GoStmtContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterType_(GoParser.Type_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitType_(GoParser.Type_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeArgs(GoParser.TypeArgsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeArgs(GoParser.TypeArgsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeName(GoParser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeName(GoParser.TypeNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeLit(GoParser.TypeLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeLit(GoParser.TypeLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayType(GoParser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayType(GoParser.ArrayTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArrayLength(GoParser.ArrayLengthContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArrayLength(GoParser.ArrayLengthContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementType(GoParser.ElementTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementType(GoParser.ElementTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPointerType(GoParser.PointerTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPointerType(GoParser.PointerTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInterfaceType(GoParser.InterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInterfaceType(GoParser.InterfaceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSliceType(GoParser.SliceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSliceType(GoParser.SliceTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMapType(GoParser.MapTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMapType(GoParser.MapTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterChannelType(GoParser.ChannelTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitChannelType(GoParser.ChannelTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodSpec(GoParser.MethodSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodSpec(GoParser.MethodSpecContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionType(GoParser.FunctionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionType(GoParser.FunctionTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSignature(GoParser.SignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSignature(GoParser.SignatureContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterResult(GoParser.ResultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitResult(GoParser.ResultContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameters(GoParser.ParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameters(GoParser.ParametersContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterParameterDecl(GoParser.ParameterDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitParameterDecl(GoParser.ParameterDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExpression(GoParser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExpression(GoParser.ExpressionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterPrimaryExpr(GoParser.PrimaryExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitPrimaryExpr(GoParser.PrimaryExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterConversion(GoParser.ConversionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitConversion(GoParser.ConversionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperand(GoParser.OperandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperand(GoParser.OperandContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteral(GoParser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteral(GoParser.LiteralContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterBasicLit(GoParser.BasicLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitBasicLit(GoParser.BasicLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterInteger(GoParser.IntegerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitInteger(GoParser.IntegerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterOperandName(GoParser.OperandNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitOperandName(GoParser.OperandNameContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterQualifiedIdent(GoParser.QualifiedIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitQualifiedIdent(GoParser.QualifiedIdentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterCompositeLit(GoParser.CompositeLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitCompositeLit(GoParser.CompositeLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteralType(GoParser.LiteralTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteralType(GoParser.LiteralTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterLiteralValue(GoParser.LiteralValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitLiteralValue(GoParser.LiteralValueContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElementList(GoParser.ElementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElementList(GoParser.ElementListContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKeyedElement(GoParser.KeyedElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKeyedElement(GoParser.KeyedElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterKey(GoParser.KeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitKey(GoParser.KeyContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterElement(GoParser.ElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitElement(GoParser.ElementContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterStructType(GoParser.StructTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitStructType(GoParser.StructTypeContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFieldDecl(GoParser.FieldDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFieldDecl(GoParser.FieldDeclContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterString_(GoParser.String_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitString_(GoParser.String_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEmbeddedField(GoParser.EmbeddedFieldContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEmbeddedField(GoParser.EmbeddedFieldContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterFunctionLit(GoParser.FunctionLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitFunctionLit(GoParser.FunctionLitContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterIndex(GoParser.IndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitIndex(GoParser.IndexContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterSlice_(GoParser.Slice_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitSlice_(GoParser.Slice_Context ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterTypeAssertion(GoParser.TypeAssertionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitTypeAssertion(GoParser.TypeAssertionContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterArguments(GoParser.ArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitArguments(GoParser.ArgumentsContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterMethodExpr(GoParser.MethodExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitMethodExpr(GoParser.MethodExprContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEos(GoParser.EosContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEos(GoParser.EosContext ctx) { } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEveryRule(ParserRuleContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitTerminal(TerminalNode node) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void visitErrorNode(ErrorNode node) { } +} \ No newline at end of file diff --git a/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserListener.java b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserListener.java new file mode 100644 index 000000000..63a6b2b43 --- /dev/null +++ b/jcommon/antlr/src/main/java/run/mone/antlr/golang/GoParserListener.java @@ -0,0 +1,1049 @@ +package run.mone.antlr.golang;// Generated from GoParser.g4 by ANTLR 4.7.1 +import org.antlr.v4.runtime.tree.ParseTreeListener; + +/** + * This interface defines a complete listener for a parse tree produced by + * {@link GoParser}. + */ +public interface GoParserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by {@link GoParser#sourceFile}. + * @param ctx the parse tree + */ + void enterSourceFile(GoParser.SourceFileContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#sourceFile}. + * @param ctx the parse tree + */ + void exitSourceFile(GoParser.SourceFileContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#packageClause}. + * @param ctx the parse tree + */ + void enterPackageClause(GoParser.PackageClauseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#packageClause}. + * @param ctx the parse tree + */ + void exitPackageClause(GoParser.PackageClauseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#importDecl}. + * @param ctx the parse tree + */ + void enterImportDecl(GoParser.ImportDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#importDecl}. + * @param ctx the parse tree + */ + void exitImportDecl(GoParser.ImportDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#importSpec}. + * @param ctx the parse tree + */ + void enterImportSpec(GoParser.ImportSpecContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#importSpec}. + * @param ctx the parse tree + */ + void exitImportSpec(GoParser.ImportSpecContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#importPath}. + * @param ctx the parse tree + */ + void enterImportPath(GoParser.ImportPathContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#importPath}. + * @param ctx the parse tree + */ + void exitImportPath(GoParser.ImportPathContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#declaration}. + * @param ctx the parse tree + */ + void enterDeclaration(GoParser.DeclarationContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#declaration}. + * @param ctx the parse tree + */ + void exitDeclaration(GoParser.DeclarationContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#constDecl}. + * @param ctx the parse tree + */ + void enterConstDecl(GoParser.ConstDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#constDecl}. + * @param ctx the parse tree + */ + void exitConstDecl(GoParser.ConstDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#constSpec}. + * @param ctx the parse tree + */ + void enterConstSpec(GoParser.ConstSpecContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#constSpec}. + * @param ctx the parse tree + */ + void exitConstSpec(GoParser.ConstSpecContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#identifierList}. + * @param ctx the parse tree + */ + void enterIdentifierList(GoParser.IdentifierListContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#identifierList}. + * @param ctx the parse tree + */ + void exitIdentifierList(GoParser.IdentifierListContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#expressionList}. + * @param ctx the parse tree + */ + void enterExpressionList(GoParser.ExpressionListContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#expressionList}. + * @param ctx the parse tree + */ + void exitExpressionList(GoParser.ExpressionListContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#comment}. + * @param ctx the parse tree + */ + void enterComment(GoParser.CommentContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#comment}. + * @param ctx the parse tree + */ + void exitComment(GoParser.CommentContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeDecl}. + * @param ctx the parse tree + */ + void enterTypeDecl(GoParser.TypeDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeDecl}. + * @param ctx the parse tree + */ + void exitTypeDecl(GoParser.TypeDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeSpec}. + * @param ctx the parse tree + */ + void enterTypeSpec(GoParser.TypeSpecContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeSpec}. + * @param ctx the parse tree + */ + void exitTypeSpec(GoParser.TypeSpecContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#aliasDecl}. + * @param ctx the parse tree + */ + void enterAliasDecl(GoParser.AliasDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#aliasDecl}. + * @param ctx the parse tree + */ + void exitAliasDecl(GoParser.AliasDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeDef}. + * @param ctx the parse tree + */ + void enterTypeDef(GoParser.TypeDefContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeDef}. + * @param ctx the parse tree + */ + void exitTypeDef(GoParser.TypeDefContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeParameters}. + * @param ctx the parse tree + */ + void enterTypeParameters(GoParser.TypeParametersContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeParameters}. + * @param ctx the parse tree + */ + void exitTypeParameters(GoParser.TypeParametersContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeParameterDecl}. + * @param ctx the parse tree + */ + void enterTypeParameterDecl(GoParser.TypeParameterDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeParameterDecl}. + * @param ctx the parse tree + */ + void exitTypeParameterDecl(GoParser.TypeParameterDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeElement}. + * @param ctx the parse tree + */ + void enterTypeElement(GoParser.TypeElementContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeElement}. + * @param ctx the parse tree + */ + void exitTypeElement(GoParser.TypeElementContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeTerm}. + * @param ctx the parse tree + */ + void enterTypeTerm(GoParser.TypeTermContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeTerm}. + * @param ctx the parse tree + */ + void exitTypeTerm(GoParser.TypeTermContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#functionDecl}. + * @param ctx the parse tree + */ + void enterFunctionDecl(GoParser.FunctionDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#functionDecl}. + * @param ctx the parse tree + */ + void exitFunctionDecl(GoParser.FunctionDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#methodDecl}. + * @param ctx the parse tree + */ + void enterMethodDecl(GoParser.MethodDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#methodDecl}. + * @param ctx the parse tree + */ + void exitMethodDecl(GoParser.MethodDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#receiver}. + * @param ctx the parse tree + */ + void enterReceiver(GoParser.ReceiverContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#receiver}. + * @param ctx the parse tree + */ + void exitReceiver(GoParser.ReceiverContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#varDecl}. + * @param ctx the parse tree + */ + void enterVarDecl(GoParser.VarDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#varDecl}. + * @param ctx the parse tree + */ + void exitVarDecl(GoParser.VarDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#varSpec}. + * @param ctx the parse tree + */ + void enterVarSpec(GoParser.VarSpecContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#varSpec}. + * @param ctx the parse tree + */ + void exitVarSpec(GoParser.VarSpecContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#block}. + * @param ctx the parse tree + */ + void enterBlock(GoParser.BlockContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#block}. + * @param ctx the parse tree + */ + void exitBlock(GoParser.BlockContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#statementList}. + * @param ctx the parse tree + */ + void enterStatementList(GoParser.StatementListContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#statementList}. + * @param ctx the parse tree + */ + void exitStatementList(GoParser.StatementListContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#statement}. + * @param ctx the parse tree + */ + void enterStatement(GoParser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#statement}. + * @param ctx the parse tree + */ + void exitStatement(GoParser.StatementContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#simpleStmt}. + * @param ctx the parse tree + */ + void enterSimpleStmt(GoParser.SimpleStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#simpleStmt}. + * @param ctx the parse tree + */ + void exitSimpleStmt(GoParser.SimpleStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#expressionStmt}. + * @param ctx the parse tree + */ + void enterExpressionStmt(GoParser.ExpressionStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#expressionStmt}. + * @param ctx the parse tree + */ + void exitExpressionStmt(GoParser.ExpressionStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#sendStmt}. + * @param ctx the parse tree + */ + void enterSendStmt(GoParser.SendStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#sendStmt}. + * @param ctx the parse tree + */ + void exitSendStmt(GoParser.SendStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#incDecStmt}. + * @param ctx the parse tree + */ + void enterIncDecStmt(GoParser.IncDecStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#incDecStmt}. + * @param ctx the parse tree + */ + void exitIncDecStmt(GoParser.IncDecStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#assignment}. + * @param ctx the parse tree + */ + void enterAssignment(GoParser.AssignmentContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#assignment}. + * @param ctx the parse tree + */ + void exitAssignment(GoParser.AssignmentContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#assign_op}. + * @param ctx the parse tree + */ + void enterAssign_op(GoParser.Assign_opContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#assign_op}. + * @param ctx the parse tree + */ + void exitAssign_op(GoParser.Assign_opContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#shortVarDecl}. + * @param ctx the parse tree + */ + void enterShortVarDecl(GoParser.ShortVarDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#shortVarDecl}. + * @param ctx the parse tree + */ + void exitShortVarDecl(GoParser.ShortVarDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#labeledStmt}. + * @param ctx the parse tree + */ + void enterLabeledStmt(GoParser.LabeledStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#labeledStmt}. + * @param ctx the parse tree + */ + void exitLabeledStmt(GoParser.LabeledStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#returnStmt}. + * @param ctx the parse tree + */ + void enterReturnStmt(GoParser.ReturnStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#returnStmt}. + * @param ctx the parse tree + */ + void exitReturnStmt(GoParser.ReturnStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#breakStmt}. + * @param ctx the parse tree + */ + void enterBreakStmt(GoParser.BreakStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#breakStmt}. + * @param ctx the parse tree + */ + void exitBreakStmt(GoParser.BreakStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#continueStmt}. + * @param ctx the parse tree + */ + void enterContinueStmt(GoParser.ContinueStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#continueStmt}. + * @param ctx the parse tree + */ + void exitContinueStmt(GoParser.ContinueStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#gotoStmt}. + * @param ctx the parse tree + */ + void enterGotoStmt(GoParser.GotoStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#gotoStmt}. + * @param ctx the parse tree + */ + void exitGotoStmt(GoParser.GotoStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#fallthroughStmt}. + * @param ctx the parse tree + */ + void enterFallthroughStmt(GoParser.FallthroughStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#fallthroughStmt}. + * @param ctx the parse tree + */ + void exitFallthroughStmt(GoParser.FallthroughStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#deferStmt}. + * @param ctx the parse tree + */ + void enterDeferStmt(GoParser.DeferStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#deferStmt}. + * @param ctx the parse tree + */ + void exitDeferStmt(GoParser.DeferStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#ifStmt}. + * @param ctx the parse tree + */ + void enterIfStmt(GoParser.IfStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#ifStmt}. + * @param ctx the parse tree + */ + void exitIfStmt(GoParser.IfStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#switchStmt}. + * @param ctx the parse tree + */ + void enterSwitchStmt(GoParser.SwitchStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#switchStmt}. + * @param ctx the parse tree + */ + void exitSwitchStmt(GoParser.SwitchStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#exprSwitchStmt}. + * @param ctx the parse tree + */ + void enterExprSwitchStmt(GoParser.ExprSwitchStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#exprSwitchStmt}. + * @param ctx the parse tree + */ + void exitExprSwitchStmt(GoParser.ExprSwitchStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#exprCaseClause}. + * @param ctx the parse tree + */ + void enterExprCaseClause(GoParser.ExprCaseClauseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#exprCaseClause}. + * @param ctx the parse tree + */ + void exitExprCaseClause(GoParser.ExprCaseClauseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#exprSwitchCase}. + * @param ctx the parse tree + */ + void enterExprSwitchCase(GoParser.ExprSwitchCaseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#exprSwitchCase}. + * @param ctx the parse tree + */ + void exitExprSwitchCase(GoParser.ExprSwitchCaseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeSwitchStmt}. + * @param ctx the parse tree + */ + void enterTypeSwitchStmt(GoParser.TypeSwitchStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeSwitchStmt}. + * @param ctx the parse tree + */ + void exitTypeSwitchStmt(GoParser.TypeSwitchStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeSwitchGuard}. + * @param ctx the parse tree + */ + void enterTypeSwitchGuard(GoParser.TypeSwitchGuardContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeSwitchGuard}. + * @param ctx the parse tree + */ + void exitTypeSwitchGuard(GoParser.TypeSwitchGuardContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeCaseClause}. + * @param ctx the parse tree + */ + void enterTypeCaseClause(GoParser.TypeCaseClauseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeCaseClause}. + * @param ctx the parse tree + */ + void exitTypeCaseClause(GoParser.TypeCaseClauseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeSwitchCase}. + * @param ctx the parse tree + */ + void enterTypeSwitchCase(GoParser.TypeSwitchCaseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeSwitchCase}. + * @param ctx the parse tree + */ + void exitTypeSwitchCase(GoParser.TypeSwitchCaseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeList}. + * @param ctx the parse tree + */ + void enterTypeList(GoParser.TypeListContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeList}. + * @param ctx the parse tree + */ + void exitTypeList(GoParser.TypeListContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#selectStmt}. + * @param ctx the parse tree + */ + void enterSelectStmt(GoParser.SelectStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#selectStmt}. + * @param ctx the parse tree + */ + void exitSelectStmt(GoParser.SelectStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#commClause}. + * @param ctx the parse tree + */ + void enterCommClause(GoParser.CommClauseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#commClause}. + * @param ctx the parse tree + */ + void exitCommClause(GoParser.CommClauseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#commCase}. + * @param ctx the parse tree + */ + void enterCommCase(GoParser.CommCaseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#commCase}. + * @param ctx the parse tree + */ + void exitCommCase(GoParser.CommCaseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#recvStmt}. + * @param ctx the parse tree + */ + void enterRecvStmt(GoParser.RecvStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#recvStmt}. + * @param ctx the parse tree + */ + void exitRecvStmt(GoParser.RecvStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#forStmt}. + * @param ctx the parse tree + */ + void enterForStmt(GoParser.ForStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#forStmt}. + * @param ctx the parse tree + */ + void exitForStmt(GoParser.ForStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#forClause}. + * @param ctx the parse tree + */ + void enterForClause(GoParser.ForClauseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#forClause}. + * @param ctx the parse tree + */ + void exitForClause(GoParser.ForClauseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#rangeClause}. + * @param ctx the parse tree + */ + void enterRangeClause(GoParser.RangeClauseContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#rangeClause}. + * @param ctx the parse tree + */ + void exitRangeClause(GoParser.RangeClauseContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#goStmt}. + * @param ctx the parse tree + */ + void enterGoStmt(GoParser.GoStmtContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#goStmt}. + * @param ctx the parse tree + */ + void exitGoStmt(GoParser.GoStmtContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#type_}. + * @param ctx the parse tree + */ + void enterType_(GoParser.Type_Context ctx); + /** + * Exit a parse tree produced by {@link GoParser#type_}. + * @param ctx the parse tree + */ + void exitType_(GoParser.Type_Context ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeArgs}. + * @param ctx the parse tree + */ + void enterTypeArgs(GoParser.TypeArgsContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeArgs}. + * @param ctx the parse tree + */ + void exitTypeArgs(GoParser.TypeArgsContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeName}. + * @param ctx the parse tree + */ + void enterTypeName(GoParser.TypeNameContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeName}. + * @param ctx the parse tree + */ + void exitTypeName(GoParser.TypeNameContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeLit}. + * @param ctx the parse tree + */ + void enterTypeLit(GoParser.TypeLitContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeLit}. + * @param ctx the parse tree + */ + void exitTypeLit(GoParser.TypeLitContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#arrayType}. + * @param ctx the parse tree + */ + void enterArrayType(GoParser.ArrayTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#arrayType}. + * @param ctx the parse tree + */ + void exitArrayType(GoParser.ArrayTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#arrayLength}. + * @param ctx the parse tree + */ + void enterArrayLength(GoParser.ArrayLengthContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#arrayLength}. + * @param ctx the parse tree + */ + void exitArrayLength(GoParser.ArrayLengthContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#elementType}. + * @param ctx the parse tree + */ + void enterElementType(GoParser.ElementTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#elementType}. + * @param ctx the parse tree + */ + void exitElementType(GoParser.ElementTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#pointerType}. + * @param ctx the parse tree + */ + void enterPointerType(GoParser.PointerTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#pointerType}. + * @param ctx the parse tree + */ + void exitPointerType(GoParser.PointerTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#interfaceType}. + * @param ctx the parse tree + */ + void enterInterfaceType(GoParser.InterfaceTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#interfaceType}. + * @param ctx the parse tree + */ + void exitInterfaceType(GoParser.InterfaceTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#sliceType}. + * @param ctx the parse tree + */ + void enterSliceType(GoParser.SliceTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#sliceType}. + * @param ctx the parse tree + */ + void exitSliceType(GoParser.SliceTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#mapType}. + * @param ctx the parse tree + */ + void enterMapType(GoParser.MapTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#mapType}. + * @param ctx the parse tree + */ + void exitMapType(GoParser.MapTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#channelType}. + * @param ctx the parse tree + */ + void enterChannelType(GoParser.ChannelTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#channelType}. + * @param ctx the parse tree + */ + void exitChannelType(GoParser.ChannelTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#methodSpec}. + * @param ctx the parse tree + */ + void enterMethodSpec(GoParser.MethodSpecContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#methodSpec}. + * @param ctx the parse tree + */ + void exitMethodSpec(GoParser.MethodSpecContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#functionType}. + * @param ctx the parse tree + */ + void enterFunctionType(GoParser.FunctionTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#functionType}. + * @param ctx the parse tree + */ + void exitFunctionType(GoParser.FunctionTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#signature}. + * @param ctx the parse tree + */ + void enterSignature(GoParser.SignatureContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#signature}. + * @param ctx the parse tree + */ + void exitSignature(GoParser.SignatureContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#result}. + * @param ctx the parse tree + */ + void enterResult(GoParser.ResultContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#result}. + * @param ctx the parse tree + */ + void exitResult(GoParser.ResultContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#parameters}. + * @param ctx the parse tree + */ + void enterParameters(GoParser.ParametersContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#parameters}. + * @param ctx the parse tree + */ + void exitParameters(GoParser.ParametersContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#parameterDecl}. + * @param ctx the parse tree + */ + void enterParameterDecl(GoParser.ParameterDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#parameterDecl}. + * @param ctx the parse tree + */ + void exitParameterDecl(GoParser.ParameterDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#expression}. + * @param ctx the parse tree + */ + void enterExpression(GoParser.ExpressionContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#expression}. + * @param ctx the parse tree + */ + void exitExpression(GoParser.ExpressionContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#primaryExpr}. + * @param ctx the parse tree + */ + void enterPrimaryExpr(GoParser.PrimaryExprContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#primaryExpr}. + * @param ctx the parse tree + */ + void exitPrimaryExpr(GoParser.PrimaryExprContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#conversion}. + * @param ctx the parse tree + */ + void enterConversion(GoParser.ConversionContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#conversion}. + * @param ctx the parse tree + */ + void exitConversion(GoParser.ConversionContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#operand}. + * @param ctx the parse tree + */ + void enterOperand(GoParser.OperandContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#operand}. + * @param ctx the parse tree + */ + void exitOperand(GoParser.OperandContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#literal}. + * @param ctx the parse tree + */ + void enterLiteral(GoParser.LiteralContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#literal}. + * @param ctx the parse tree + */ + void exitLiteral(GoParser.LiteralContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#basicLit}. + * @param ctx the parse tree + */ + void enterBasicLit(GoParser.BasicLitContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#basicLit}. + * @param ctx the parse tree + */ + void exitBasicLit(GoParser.BasicLitContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#integer}. + * @param ctx the parse tree + */ + void enterInteger(GoParser.IntegerContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#integer}. + * @param ctx the parse tree + */ + void exitInteger(GoParser.IntegerContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#operandName}. + * @param ctx the parse tree + */ + void enterOperandName(GoParser.OperandNameContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#operandName}. + * @param ctx the parse tree + */ + void exitOperandName(GoParser.OperandNameContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#qualifiedIdent}. + * @param ctx the parse tree + */ + void enterQualifiedIdent(GoParser.QualifiedIdentContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#qualifiedIdent}. + * @param ctx the parse tree + */ + void exitQualifiedIdent(GoParser.QualifiedIdentContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#compositeLit}. + * @param ctx the parse tree + */ + void enterCompositeLit(GoParser.CompositeLitContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#compositeLit}. + * @param ctx the parse tree + */ + void exitCompositeLit(GoParser.CompositeLitContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#literalType}. + * @param ctx the parse tree + */ + void enterLiteralType(GoParser.LiteralTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#literalType}. + * @param ctx the parse tree + */ + void exitLiteralType(GoParser.LiteralTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#literalValue}. + * @param ctx the parse tree + */ + void enterLiteralValue(GoParser.LiteralValueContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#literalValue}. + * @param ctx the parse tree + */ + void exitLiteralValue(GoParser.LiteralValueContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#elementList}. + * @param ctx the parse tree + */ + void enterElementList(GoParser.ElementListContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#elementList}. + * @param ctx the parse tree + */ + void exitElementList(GoParser.ElementListContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#keyedElement}. + * @param ctx the parse tree + */ + void enterKeyedElement(GoParser.KeyedElementContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#keyedElement}. + * @param ctx the parse tree + */ + void exitKeyedElement(GoParser.KeyedElementContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#key}. + * @param ctx the parse tree + */ + void enterKey(GoParser.KeyContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#key}. + * @param ctx the parse tree + */ + void exitKey(GoParser.KeyContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#element}. + * @param ctx the parse tree + */ + void enterElement(GoParser.ElementContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#element}. + * @param ctx the parse tree + */ + void exitElement(GoParser.ElementContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#structType}. + * @param ctx the parse tree + */ + void enterStructType(GoParser.StructTypeContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#structType}. + * @param ctx the parse tree + */ + void exitStructType(GoParser.StructTypeContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#fieldDecl}. + * @param ctx the parse tree + */ + void enterFieldDecl(GoParser.FieldDeclContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#fieldDecl}. + * @param ctx the parse tree + */ + void exitFieldDecl(GoParser.FieldDeclContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#string_}. + * @param ctx the parse tree + */ + void enterString_(GoParser.String_Context ctx); + /** + * Exit a parse tree produced by {@link GoParser#string_}. + * @param ctx the parse tree + */ + void exitString_(GoParser.String_Context ctx); + /** + * Enter a parse tree produced by {@link GoParser#embeddedField}. + * @param ctx the parse tree + */ + void enterEmbeddedField(GoParser.EmbeddedFieldContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#embeddedField}. + * @param ctx the parse tree + */ + void exitEmbeddedField(GoParser.EmbeddedFieldContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#functionLit}. + * @param ctx the parse tree + */ + void enterFunctionLit(GoParser.FunctionLitContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#functionLit}. + * @param ctx the parse tree + */ + void exitFunctionLit(GoParser.FunctionLitContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#index}. + * @param ctx the parse tree + */ + void enterIndex(GoParser.IndexContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#index}. + * @param ctx the parse tree + */ + void exitIndex(GoParser.IndexContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#slice_}. + * @param ctx the parse tree + */ + void enterSlice_(GoParser.Slice_Context ctx); + /** + * Exit a parse tree produced by {@link GoParser#slice_}. + * @param ctx the parse tree + */ + void exitSlice_(GoParser.Slice_Context ctx); + /** + * Enter a parse tree produced by {@link GoParser#typeAssertion}. + * @param ctx the parse tree + */ + void enterTypeAssertion(GoParser.TypeAssertionContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#typeAssertion}. + * @param ctx the parse tree + */ + void exitTypeAssertion(GoParser.TypeAssertionContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#arguments}. + * @param ctx the parse tree + */ + void enterArguments(GoParser.ArgumentsContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#arguments}. + * @param ctx the parse tree + */ + void exitArguments(GoParser.ArgumentsContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#methodExpr}. + * @param ctx the parse tree + */ + void enterMethodExpr(GoParser.MethodExprContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#methodExpr}. + * @param ctx the parse tree + */ + void exitMethodExpr(GoParser.MethodExprContext ctx); + /** + * Enter a parse tree produced by {@link GoParser#eos}. + * @param ctx the parse tree + */ + void enterEos(GoParser.EosContext ctx); + /** + * Exit a parse tree produced by {@link GoParser#eos}. + * @param ctx the parse tree + */ + void exitEos(GoParser.EosContext ctx); +} \ No newline at end of file diff --git a/jcommon/antlr/src/main/resources/antlr/antlr_help.md b/jcommon/antlr/src/main/resources/antlr/antlr_help.md index 4aef45a03..eda9e775d 100644 --- a/jcommon/antlr/src/main/resources/antlr/antlr_help.md +++ b/jcommon/antlr/src/main/resources/antlr/antlr_help.md @@ -8,6 +8,8 @@ + antlr4 -package com.xiaomi.data.push.antlr.java8 -o /Users/zzy/IdeaProjects/mione/jcommon/antlr/src/main/java/com/xiaomi/data/push/antlr/java8 *.g4 ++ antlr4 -package run.mone.antlr.golang -o /Users/zhangzhiyong/IdeaProjects/goodjava/mone/jcommon/antlr/src/main/resources/antlr/golang/ GoParser.g4 + + antlr4 -package com.xiaomi.data.push.antlr.java8 -o /Users/zzy/IdeaProjects/mione/jcommon/antlr/src/main/java/com/xiaomi/data/push/antlr/java8 Java8.g4 + https://github.com/antlr/codebuff/tree/master/grammars/org/antlr/codebuff diff --git a/jcommon/antlr/src/main/resources/antlr/golang/GoLexer.g4 b/jcommon/antlr/src/main/resources/antlr/golang/GoLexer.g4 new file mode 100644 index 000000000..7f6c80711 --- /dev/null +++ b/jcommon/antlr/src/main/resources/antlr/golang/GoLexer.g4 @@ -0,0 +1,231 @@ +/* + [The "BSD licence"] + Copyright (c) 2017 Sasa Coh, Michał Błotniak + Copyright (c) 2019 Ivan Kochurkin, kvanttt@gmail.com, Positive Technologies + Copyright (c) 2019 Dmitry Rassadin, flipparassa@gmail.com, Positive Technologies + Copyright (c) 2021 Martin Mirchev, mirchevmartin2203@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* + * A Go grammar for ANTLR 4 derived from the Go Language Specification + * https://golang.org/ref/spec + */ + +// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine +// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true + +lexer grammar GoLexer; + +// Keywords + +BREAK : 'break' -> mode(NLSEMI); +DEFAULT : 'default'; +FUNC : 'func'; +INTERFACE : 'interface'; +SELECT : 'select'; +CASE : 'case'; +DEFER : 'defer'; +GO : 'go'; +MAP : 'map'; +STRUCT : 'struct'; +CHAN : 'chan'; +ELSE : 'else'; +GOTO : 'goto'; +PACKAGE : 'package'; +SWITCH : 'switch'; +CONST : 'const'; +FALLTHROUGH : 'fallthrough' -> mode(NLSEMI); +IF : 'if'; +RANGE : 'range'; +TYPE : 'type'; +CONTINUE : 'continue' -> mode(NLSEMI); +FOR : 'for'; +IMPORT : 'import'; +RETURN : 'return' -> mode(NLSEMI); +VAR : 'var'; + +NIL_LIT: 'nil' -> mode(NLSEMI); + +IDENTIFIER: LETTER (LETTER | UNICODE_DIGIT)* -> mode(NLSEMI); + +// Punctuation + +L_PAREN : '('; +R_PAREN : ')' -> mode(NLSEMI); +L_CURLY : '{'; +R_CURLY : '}' -> mode(NLSEMI); +L_BRACKET : '['; +R_BRACKET : ']' -> mode(NLSEMI); +ASSIGN : '='; +COMMA : ','; +SEMI : ';'; +COLON : ':'; +DOT : '.'; +PLUS_PLUS : '++' -> mode(NLSEMI); +MINUS_MINUS : '--' -> mode(NLSEMI); +DECLARE_ASSIGN : ':='; +ELLIPSIS : '...'; + +// Logical + +LOGICAL_OR : '||'; +LOGICAL_AND : '&&'; + +// Relation operators + +EQUALS : '=='; +NOT_EQUALS : '!='; +LESS : '<'; +LESS_OR_EQUALS : '<='; +GREATER : '>'; +GREATER_OR_EQUALS : '>='; + +// Arithmetic operators + +OR : '|'; +DIV : '/'; +MOD : '%'; +LSHIFT : '<<'; +RSHIFT : '>>'; +BIT_CLEAR : '&^'; +UNDERLYING : '~'; + +// Unary operators + +EXCLAMATION: '!'; + +// Mixed operators + +PLUS : '+'; +MINUS : '-'; +CARET : '^'; +STAR : '*'; +AMPERSAND : '&'; +RECEIVE : '<-'; + +// Number literals + +DECIMAL_LIT : ('0' | [1-9] ('_'? [0-9])*) -> mode(NLSEMI); +BINARY_LIT : '0' [bB] ('_'? BIN_DIGIT)+ -> mode(NLSEMI); +OCTAL_LIT : '0' [oO]? ('_'? OCTAL_DIGIT)+ -> mode(NLSEMI); +HEX_LIT : '0' [xX] ('_'? HEX_DIGIT)+ -> mode(NLSEMI); + +FLOAT_LIT: (DECIMAL_FLOAT_LIT | HEX_FLOAT_LIT) -> mode(NLSEMI); + +DECIMAL_FLOAT_LIT: DECIMALS ('.' DECIMALS? EXPONENT? | EXPONENT) | '.' DECIMALS EXPONENT?; + +HEX_FLOAT_LIT: '0' [xX] HEX_MANTISSA HEX_EXPONENT; + +fragment HEX_MANTISSA: + ('_'? HEX_DIGIT)+ ('.' ( '_'? HEX_DIGIT)*)? + | '.' HEX_DIGIT ('_'? HEX_DIGIT)* +; + +fragment HEX_EXPONENT: [pP] [+-]? DECIMALS; + +IMAGINARY_LIT: (DECIMAL_LIT | BINARY_LIT | OCTAL_LIT | HEX_LIT | FLOAT_LIT) 'i' -> mode(NLSEMI); + +// Rune literals + +fragment RUNE: '\'' (UNICODE_VALUE | BYTE_VALUE) '\''; //: '\'' (~[\n\\] | ESCAPED_VALUE) '\''; + +RUNE_LIT: RUNE -> mode(NLSEMI); + +BYTE_VALUE: OCTAL_BYTE_VALUE | HEX_BYTE_VALUE; + +OCTAL_BYTE_VALUE: '\\' OCTAL_DIGIT OCTAL_DIGIT OCTAL_DIGIT; + +HEX_BYTE_VALUE: '\\' 'x' HEX_DIGIT HEX_DIGIT; + +LITTLE_U_VALUE: '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT; + +BIG_U_VALUE: + '\\' 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT +; + +// String literals + +RAW_STRING_LIT : '`' ~'`'* '`' -> mode(NLSEMI); +INTERPRETED_STRING_LIT : '"' (~["\\] | ESCAPED_VALUE)* '"' -> mode(NLSEMI); + +// Hidden tokens + +WS : [ \t]+ -> channel(HIDDEN); +COMMENT : '/*' .*? '*/' -> channel(HIDDEN); +TERMINATOR : [\r\n]+ -> channel(HIDDEN); +LINE_COMMENT : '//' ~[\r\n]* -> channel(HIDDEN); + + +NEWLINE : '\r'? '\n' | '\r'+ | '\n'+; + +//COMMENT : '/*' .*? '*/'; +//LINE_COMMENT : '//' ~[\r\n]*; + + +fragment UNICODE_VALUE: ~[\r\n'] | LITTLE_U_VALUE | BIG_U_VALUE | ESCAPED_VALUE; + +// Fragments + +fragment ESCAPED_VALUE: + '\\' ( + 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT + | 'U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT + | [abfnrtv\\'"] + | OCTAL_DIGIT OCTAL_DIGIT OCTAL_DIGIT + | 'x' HEX_DIGIT HEX_DIGIT + ) +; + +fragment DECIMALS: [0-9] ('_'? [0-9])*; + +fragment OCTAL_DIGIT: [0-7]; + +fragment HEX_DIGIT: [0-9a-fA-F]; + +fragment BIN_DIGIT: [01]; + +fragment EXPONENT: [eE] [+-]? DECIMALS; + +fragment LETTER: UNICODE_LETTER | '_'; + +//[\p{Nd}] matches a digit zero through nine in any script except ideographic scripts +fragment UNICODE_DIGIT: [\p{Nd}]; +//[\p{L}] matches any kind of letter from any language +fragment UNICODE_LETTER: [\p{L}]; + +mode NLSEMI; + +// Treat whitespace as normal +WS_NLSEMI: [ \t]+ -> channel(HIDDEN); +// Ignore any comments that only span one line +COMMENT_NLSEMI : '/*' ~[\r\n]*? '*/' -> channel(HIDDEN); +LINE_COMMENT_NLSEMI : '//' ~[\r\n]* -> channel(HIDDEN); +// Emit an EOS token for any newlines, semicolon, multiline comments or the EOF and +//return to normal lexing +EOS: ([\r\n]+ | ';' | '/*' .*? '*/' | EOF) -> mode(DEFAULT_MODE); +// Did not find an EOS, so go back to normal lexing +OTHER: -> mode(DEFAULT_MODE), channel(HIDDEN); \ No newline at end of file diff --git a/jcommon/antlr/src/main/resources/antlr/golang/GoParser.g4 b/jcommon/antlr/src/main/resources/antlr/golang/GoParser.g4 new file mode 100644 index 000000000..fc4c30033 --- /dev/null +++ b/jcommon/antlr/src/main/resources/antlr/golang/GoParser.g4 @@ -0,0 +1,533 @@ +/* + [The "BSD licence"] Copyright (c) 2017 Sasa Coh, Michał Błotniak + Copyright (c) 2019 Ivan Kochurkin, kvanttt@gmail.com, Positive Technologies + Copyright (c) 2019 Dmitry Rassadin, flipparassa@gmail.com,Positive Technologies All rights reserved. + Copyright (c) 2021 Martin Mirchev, mirchevmartin2203@gmail.com + Copyright (c) 2023 Dmitry Litovchenko, i@dlitovchenko.ru + + Redistribution and use in source and binary forms, with or without modification, are permitted + provided that the following conditions are met: 1. Redistributions of source code must retain the + above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in + binary form must reproduce the above copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided with the distribution. 3. The name + of the author may not be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * A Go grammar for ANTLR 4 derived from the Go Language Specification https://golang.org/ref/spec + */ + +// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging + +parser grammar GoParser; + +options { + tokenVocab = GoLexer; + superClass = GoParserBase; +} + +sourceFile + : packageClause eos (importDecl eos)* ((functionDecl | methodDecl | declaration) eos)* EOF + ; + +packageClause + : PACKAGE packageName = IDENTIFIER + ; + +importDecl + : IMPORT (importSpec | L_PAREN (importSpec eos)* R_PAREN) + ; + +importSpec + : alias = (DOT | IDENTIFIER)? importPath + ; + +importPath + : string_ + ; + +declaration + : constDecl + | typeDecl + | varDecl + ; + +constDecl + : CONST (constSpec | L_PAREN (constSpec eos)* R_PAREN) + ; + +constSpec + : identifierList (type_? ASSIGN expressionList)? + ; + +identifierList + : IDENTIFIER (COMMA IDENTIFIER)* + ; + +expressionList + : expression (COMMA expression)* + ; + +comment + : COMMENT + | LINE_COMMENT + ; + +typeDecl + : comment* TYPE (typeSpec | L_PAREN (typeSpec eos)* R_PAREN) + ; + +typeSpec + : aliasDecl + | typeDef + ; + +aliasDecl + : IDENTIFIER ASSIGN type_ + ; + +typeDef + : IDENTIFIER typeParameters? type_ + ; + +typeParameters + : L_BRACKET typeParameterDecl (COMMA typeParameterDecl)* R_BRACKET + ; + +typeParameterDecl + : identifierList typeElement + ; + +typeElement + : typeTerm (OR typeTerm)* + ; + +typeTerm + : UNDERLYING? type_ + ; + +// Function declarations +functionDecl + : FUNC IDENTIFIER typeParameters? signature block? + ; + +methodDecl + : FUNC receiver IDENTIFIER signature block? + ; + +receiver + : parameters + ; + +varDecl + : VAR (varSpec | L_PAREN (varSpec eos)* R_PAREN) + ; + +varSpec + : identifierList (type_ (ASSIGN expressionList)? | ASSIGN expressionList) + ; + +block + : L_CURLY statementList? R_CURLY + ; + +statementList + : ((SEMI? | EOS? | {this.closingBracket()}?) statement eos)+ + ; + +statement + : declaration + | labeledStmt + | simpleStmt + | goStmt + | returnStmt + | breakStmt + | continueStmt + | gotoStmt + | fallthroughStmt + | block + | ifStmt + | switchStmt + | selectStmt + | forStmt + | deferStmt + ; + +simpleStmt + : sendStmt + | incDecStmt + | assignment + | expressionStmt + | shortVarDecl + ; + +expressionStmt + : expression + ; + +sendStmt + : channel = expression RECEIVE expression + ; + +incDecStmt + : expression (PLUS_PLUS | MINUS_MINUS) + ; + +assignment + : expressionList assign_op expressionList + ; + +assign_op + : (PLUS | MINUS | OR | CARET | STAR | DIV | MOD | LSHIFT | RSHIFT | AMPERSAND | BIT_CLEAR)? ASSIGN + ; + +shortVarDecl + : identifierList DECLARE_ASSIGN expressionList + ; + +labeledStmt + : IDENTIFIER COLON statement? + ; + +returnStmt + : RETURN expressionList? + ; + +breakStmt + : BREAK IDENTIFIER? + ; + +continueStmt + : CONTINUE IDENTIFIER? + ; + +gotoStmt + : GOTO IDENTIFIER + ; + +fallthroughStmt + : FALLTHROUGH + ; + +deferStmt + : DEFER expression + ; + +ifStmt + : IF (expression | eos expression | simpleStmt eos expression) block (ELSE (ifStmt | block))? + ; + +switchStmt + : exprSwitchStmt + | typeSwitchStmt + ; + +exprSwitchStmt + : SWITCH (expression? | simpleStmt? eos expression?) L_CURLY exprCaseClause* R_CURLY + ; + +exprCaseClause + : exprSwitchCase COLON statementList? + ; + +exprSwitchCase + : CASE expressionList + | DEFAULT + ; + +typeSwitchStmt + : SWITCH (typeSwitchGuard | eos typeSwitchGuard | simpleStmt eos typeSwitchGuard) L_CURLY typeCaseClause* R_CURLY + ; + +typeSwitchGuard + : (IDENTIFIER DECLARE_ASSIGN)? primaryExpr DOT L_PAREN TYPE R_PAREN + ; + +typeCaseClause + : typeSwitchCase COLON statementList? + ; + +typeSwitchCase + : CASE typeList + | DEFAULT + ; + +typeList + : (type_ | NIL_LIT) (COMMA (type_ | NIL_LIT))* + ; + +selectStmt + : SELECT L_CURLY commClause* R_CURLY + ; + +commClause + : commCase COLON statementList? + ; + +commCase + : CASE (sendStmt | recvStmt) + | DEFAULT + ; + +recvStmt + : (expressionList ASSIGN | identifierList DECLARE_ASSIGN)? recvExpr = expression + ; + +forStmt + : FOR (expression? | forClause | rangeClause?) block + ; + +forClause + : initStmt = simpleStmt? eos expression? eos postStmt = simpleStmt? + ; + +rangeClause + : (expressionList ASSIGN | identifierList DECLARE_ASSIGN)? RANGE expression + ; + +goStmt + : GO expression + ; + +type_ + : typeName typeArgs? + | typeLit + | L_PAREN type_ R_PAREN + ; + +typeArgs + : L_BRACKET typeList COMMA? R_BRACKET + ; + +typeName + : qualifiedIdent + | IDENTIFIER + ; + +typeLit + : arrayType + | structType + | pointerType + | functionType + | interfaceType + | sliceType + | mapType + | channelType + ; + +arrayType + : L_BRACKET arrayLength R_BRACKET elementType + ; + +arrayLength + : expression + ; + +elementType + : type_ + ; + +pointerType + : STAR type_ + ; + +interfaceType + : INTERFACE L_CURLY ((methodSpec | typeElement) eos)* R_CURLY + ; + +sliceType + : L_BRACKET R_BRACKET elementType + ; + +// It's possible to replace `type` with more restricted typeLit list and also pay attention to nil maps +mapType + : MAP L_BRACKET type_ R_BRACKET elementType + ; + +channelType + : (CHAN | CHAN RECEIVE | RECEIVE CHAN) elementType + ; + +methodSpec + : IDENTIFIER parameters result + | IDENTIFIER parameters + ; + +functionType + : FUNC signature + ; + +signature + : parameters result? + ; + +result + : parameters + | type_ + ; + +parameters + : L_PAREN (parameterDecl (COMMA parameterDecl)* COMMA?)? R_PAREN + ; + +parameterDecl + : identifierList? ELLIPSIS? type_ + ; + +expression + : primaryExpr + | unary_op = (PLUS | MINUS | EXCLAMATION | CARET | STAR | AMPERSAND | RECEIVE) expression + | expression mul_op = (STAR | DIV | MOD | LSHIFT | RSHIFT | AMPERSAND | BIT_CLEAR) expression + | expression add_op = (PLUS | MINUS | OR | CARET) expression + | expression rel_op = ( + EQUALS + | NOT_EQUALS + | LESS + | LESS_OR_EQUALS + | GREATER + | GREATER_OR_EQUALS + ) expression + | expression LOGICAL_AND expression + | expression LOGICAL_OR expression + ; + +primaryExpr + : operand + | conversion + | methodExpr + | primaryExpr ( DOT IDENTIFIER | index | slice_ | typeAssertion | arguments) + ; + +conversion + : type_ L_PAREN expression COMMA? R_PAREN + ; + +operand + : literal + | operandName typeArgs? + | L_PAREN expression R_PAREN + ; + +literal + : basicLit + | compositeLit + | functionLit + ; + +basicLit + : NIL_LIT + | integer + | string_ + | FLOAT_LIT + ; + +integer + : DECIMAL_LIT + | BINARY_LIT + | OCTAL_LIT + | HEX_LIT + | IMAGINARY_LIT + | RUNE_LIT + ; + +operandName + : IDENTIFIER + ; + +qualifiedIdent + : IDENTIFIER DOT IDENTIFIER + ; + +compositeLit + : literalType literalValue + ; + +literalType + : structType + | arrayType + | L_BRACKET ELLIPSIS R_BRACKET elementType + | sliceType + | mapType + | typeName typeArgs? + ; + +literalValue + : L_CURLY (elementList COMMA?)? R_CURLY + ; + +elementList + : keyedElement (COMMA keyedElement)* + ; + +keyedElement + : (key COLON)? element + ; + +key + : expression + | literalValue + ; + +element + : expression + | literalValue + ; + +structType + : STRUCT L_CURLY (fieldDecl eos)* R_CURLY + ; + +fieldDecl + : (identifierList type_ | embeddedField) tag = string_? + ; + +string_ + : RAW_STRING_LIT + | INTERPRETED_STRING_LIT + ; + +embeddedField + : STAR? typeName typeArgs? + ; + +functionLit + : FUNC signature block + ; // function + +index + : L_BRACKET expression R_BRACKET + ; + +slice_ + : L_BRACKET (expression? COLON expression? | expression? COLON expression COLON expression) R_BRACKET + ; + +typeAssertion + : DOT L_PAREN type_ R_PAREN + ; + +arguments + : L_PAREN ((expressionList | type_ (COMMA expressionList)?) ELLIPSIS? COMMA?)? R_PAREN + ; + +methodExpr + : type_ DOT IDENTIFIER + ; + +eos + : SEMI + | EOF + | EOS + | {this.closingBracket()}? + ; \ No newline at end of file diff --git a/jcommon/antlr/src/main/resources/antlr/java8/Java8.g4 b/jcommon/antlr/src/main/resources/antlr/java8/Java8.g4 deleted file mode 100644 index 3ef033b4c..000000000 --- a/jcommon/antlr/src/main/resources/antlr/java8/Java8.g4 +++ /dev/null @@ -1,1779 +0,0 @@ -/* - * [The "BSD license"] - * Copyright (c) 2014 Terence Parr - * Copyright (c) 2014 Sam Harwell - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * A Java 8 grammar for ANTLR 4 derived from the Java Language Specification - * chapter 19. - * - * NOTE: This grammar results in a generated parser that is much slower - * than the Java 7 grammar in the grammars-v4/java directory. This - * one is, however, extremely close to the spec. - * - * You can test with - * - * $ antlr4 Java8.g4 - * $ javac *.java - * $ grun Java8 compilationUnit *.java - * - * Or, -~/antlr/code/grammars-v4/java8 $ java Test . -/Users/parrt/antlr/code/grammars-v4/java8/./Java8BaseListener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Lexer.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Listener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Parser.java -/Users/parrt/antlr/code/grammars-v4/java8/./Test.java -Total lexer+parser time 30844ms. - */ -grammar Java8; - -/* - * Productions from §3 (Lexical Structure) - */ - -literal - : IntegerLiteral - | FloatingPointLiteral - | BooleanLiteral - | CharacterLiteral - | StringLiteral - | NullLiteral - ; - -/* - * Productions from §4 (Types, Values, and Variables) - */ - -type - : primitiveType - | referenceType - ; - -primitiveType - : annotation* numericType - | annotation* 'boolean' - ; - -numericType - : integralType - | floatingPointType - ; - -integralType - : 'byte' - | 'short' - | 'int' - | 'long' - | 'char' - ; - -floatingPointType - : 'float' - | 'double' - ; - -referenceType - : classOrInterfaceType - | typeVariable - | arrayType - ; - -classOrInterfaceType - : ( classType_lfno_classOrInterfaceType - | interfaceType_lfno_classOrInterfaceType - ) - ( classType_lf_classOrInterfaceType - | interfaceType_lf_classOrInterfaceType - )* - ; - -classType - : annotation* Identifier typeArguments? - | classOrInterfaceType '.' annotation* Identifier typeArguments? - ; - -classType_lf_classOrInterfaceType - : '.' annotation* Identifier typeArguments? - ; - -classType_lfno_classOrInterfaceType - : annotation* Identifier typeArguments? - ; - -interfaceType - : classType - ; - -interfaceType_lf_classOrInterfaceType - : classType_lf_classOrInterfaceType - ; - -interfaceType_lfno_classOrInterfaceType - : classType_lfno_classOrInterfaceType - ; - -typeVariable - : annotation* Identifier - ; - -arrayType - : primitiveType dims - | classOrInterfaceType dims - | typeVariable dims - ; - -dims - : annotation* '[' ']' (annotation* '[' ']')* - ; - -typeParameter - : typeParameterModifier* Identifier typeBound? - ; - -typeParameterModifier - : annotation - ; - -typeBound - : 'extends' typeVariable - | 'extends' classOrInterfaceType additionalBound* - ; - -additionalBound - : '&' interfaceType - ; - -typeArguments - : '<' typeArgumentList '>' - ; - -typeArgumentList - : typeArgument (',' typeArgument)* - ; - -typeArgument - : referenceType - | wildcard - ; - -wildcard - : annotation* '?' wildcardBounds? - ; - -wildcardBounds - : 'extends' referenceType - | 'super' referenceType - ; - -/* - * Productions from §6 (Names) - */ - -packageName - : Identifier - | packageName '.' Identifier - ; - -typeName - : Identifier - | packageOrTypeName '.' Identifier - ; - -packageOrTypeName - : Identifier - | packageOrTypeName '.' Identifier - ; - -expressionName - : Identifier - | ambiguousName '.' Identifier - ; - -methodName - : Identifier - ; - -ambiguousName - : Identifier - | ambiguousName '.' Identifier - ; - -/* - * Productions from §7 (Packages) - */ - -compilationUnit - : packageDeclaration? importDeclaration* typeDeclaration* EOF - ; - -packageDeclaration - : packageModifier* 'package' Identifier ('.' Identifier)* ';' - ; - -packageModifier - : annotation - ; - -importDeclaration - : singleTypeImportDeclaration - | typeImportOnDemandDeclaration - | singleStaticImportDeclaration - | staticImportOnDemandDeclaration - ; - -singleTypeImportDeclaration - : 'import' typeName ';' - ; - -typeImportOnDemandDeclaration - : 'import' packageOrTypeName '.' '*' ';' - ; - -singleStaticImportDeclaration - : 'import' 'static' typeName '.' Identifier ';' - ; - -staticImportOnDemandDeclaration - : 'import' 'static' typeName '.' '*' ';' - ; - -typeDeclaration - : classDeclaration - | interfaceDeclaration - | ';' - ; - -/* - * Productions from §8 (Classes) - */ - -classDeclaration - : normalClassDeclaration - | enumDeclaration - ; - -normalClassDeclaration - : classModifier* 'class' Identifier typeParameters? superclass? superinterfaces? classBody - ; - -classModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'final' - | 'strictfp' - ; - -typeParameters - : '<' typeParameterList '>' - ; - -typeParameterList - : typeParameter (',' typeParameter)* - ; - -superclass - : 'extends' classType - ; - -superinterfaces - : 'implements' interfaceTypeList - ; - -interfaceTypeList - : interfaceType (',' interfaceType)* - ; - -classBody - : '{' classBodyDeclaration* '}' - ; - -classBodyDeclaration - : classMemberDeclaration - | instanceInitializer - | staticInitializer - | constructorDeclaration - ; - -classMemberDeclaration - : fieldDeclaration - | methodDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -fieldDeclaration - : fieldModifier* unannType variableDeclaratorList ';' - ; - -fieldModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'static' - | 'final' - | 'transient' - | 'volatile' - ; - -variableDeclaratorList - : variableDeclarator (',' variableDeclarator)* - ; - -variableDeclarator - : variableDeclaratorId ('=' variableInitializer)? - ; - -variableDeclaratorId - : Identifier dims? - ; - -variableInitializer - : expression - | arrayInitializer - ; - -unannType - : unannPrimitiveType - | unannReferenceType - ; - -unannPrimitiveType - : numericType - | 'boolean' - ; - -unannReferenceType - : unannClassOrInterfaceType - | unannTypeVariable - | unannArrayType - ; - -unannClassOrInterfaceType - : ( unannClassType_lfno_unannClassOrInterfaceType - | unannInterfaceType_lfno_unannClassOrInterfaceType - ) - ( unannClassType_lf_unannClassOrInterfaceType - | unannInterfaceType_lf_unannClassOrInterfaceType - )* - ; - -unannClassType - : Identifier typeArguments? - | unannClassOrInterfaceType '.' annotation* Identifier typeArguments? - ; - -unannClassType_lf_unannClassOrInterfaceType - : '.' annotation* Identifier typeArguments? - ; - -unannClassType_lfno_unannClassOrInterfaceType - : Identifier typeArguments? - ; - -unannInterfaceType - : unannClassType - ; - -unannInterfaceType_lf_unannClassOrInterfaceType - : unannClassType_lf_unannClassOrInterfaceType - ; - -unannInterfaceType_lfno_unannClassOrInterfaceType - : unannClassType_lfno_unannClassOrInterfaceType - ; - -unannTypeVariable - : Identifier - ; - -unannArrayType - : unannPrimitiveType dims - | unannClassOrInterfaceType dims - | unannTypeVariable dims - ; - -methodDeclaration - : methodModifier* methodHeader methodBody - ; - -methodModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'final' - | 'synchronized' - | 'native' - | 'strictfp' - ; - -methodHeader - : result methodDeclarator throws_? - | typeParameters annotation* result methodDeclarator throws_? - ; - -result - : unannType - | 'void' - ; - -methodDeclarator - : Identifier '(' formalParameterList? ')' dims? - ; - -formalParameterList - : formalParameters ',' lastFormalParameter - | lastFormalParameter - ; - -formalParameters - : formalParameter (',' formalParameter)* - | receiverParameter (',' formalParameter)* - ; - -formalParameter - : variableModifier* unannType variableDeclaratorId - ; - -variableModifier - : annotation - | 'final' - ; - -lastFormalParameter - : variableModifier* unannType annotation* '...' variableDeclaratorId - | formalParameter - ; - -receiverParameter - : annotation* unannType (Identifier '.')? 'this' - ; - -throws_ - : 'throws' exceptionTypeList - ; - -exceptionTypeList - : exceptionType (',' exceptionType)* - ; - -exceptionType - : classType - | typeVariable - ; - -methodBody - : block - | ';' - ; - -instanceInitializer - : block - ; - -staticInitializer - : 'static' block - ; - -constructorDeclaration - : constructorModifier* constructorDeclarator throws_? constructorBody - ; - -constructorModifier - : annotation - | 'public' - | 'protected' - | 'private' - ; - -constructorDeclarator - : typeParameters? simpleTypeName '(' formalParameterList? ')' - ; - -simpleTypeName - : Identifier - ; - -constructorBody - : '{' explicitConstructorInvocation? blockStatements? '}' - ; - -explicitConstructorInvocation - : typeArguments? 'this' '(' argumentList? ')' ';' - | typeArguments? 'super' '(' argumentList? ')' ';' - | expressionName '.' typeArguments? 'super' '(' argumentList? ')' ';' - | primary '.' typeArguments? 'super' '(' argumentList? ')' ';' - ; - -enumDeclaration - : classModifier* 'enum' Identifier superinterfaces? enumBody - ; - -enumBody - : '{' enumConstantList? ','? enumBodyDeclarations? '}' - ; - -enumConstantList - : enumConstant (',' enumConstant)* - ; - -enumConstant - : enumConstantModifier* Identifier ('(' argumentList? ')')? classBody? - ; - -enumConstantModifier - : annotation - ; - -enumBodyDeclarations - : ';' classBodyDeclaration* - ; - -/* - * Productions from §9 (Interfaces) - */ - -interfaceDeclaration - : normalInterfaceDeclaration - | annotationTypeDeclaration - ; - -normalInterfaceDeclaration - : interfaceModifier* 'interface' Identifier typeParameters? extendsInterfaces? interfaceBody - ; - -interfaceModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'strictfp' - ; - -extendsInterfaces - : 'extends' interfaceTypeList - ; - -interfaceBody - : '{' interfaceMemberDeclaration* '}' - ; - -interfaceMemberDeclaration - : constantDeclaration - | interfaceMethodDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -constantDeclaration - : constantModifier* unannType variableDeclaratorList ';' - ; - -constantModifier - : annotation - | 'public' - | 'static' - | 'final' - ; - -interfaceMethodDeclaration - : interfaceMethodModifier* methodHeader methodBody - ; - -interfaceMethodModifier - : annotation - | 'public' - | 'abstract' - | 'default' - | 'static' - | 'strictfp' - ; - -annotationTypeDeclaration - : interfaceModifier* '@' 'interface' Identifier annotationTypeBody - ; - -annotationTypeBody - : '{' annotationTypeMemberDeclaration* '}' - ; - -annotationTypeMemberDeclaration - : annotationTypeElementDeclaration - | constantDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -annotationTypeElementDeclaration - : annotationTypeElementModifier* unannType Identifier '(' ')' dims? defaultValue? ';' - ; - -annotationTypeElementModifier - : annotation - | 'public' - | 'abstract' - ; - -defaultValue - : 'default' elementValue - ; - -annotation - : normalAnnotation - | markerAnnotation - | singleElementAnnotation - ; - -normalAnnotation - : '@' typeName '(' elementValuePairList? ')' - ; - -elementValuePairList - : elementValuePair (',' elementValuePair)* - ; - -elementValuePair - : Identifier '=' elementValue - ; - -elementValue - : conditionalExpression - | elementValueArrayInitializer - | annotation - ; - -elementValueArrayInitializer - : '{' elementValueList? ','? '}' - ; - -elementValueList - : elementValue (',' elementValue)* - ; - -markerAnnotation - : '@' typeName - ; - -singleElementAnnotation - : '@' typeName '(' elementValue ')' - ; - -/* - * Productions from §10 (Arrays) - */ - -arrayInitializer - : '{' variableInitializerList? ','? '}' - ; - -variableInitializerList - : variableInitializer (',' variableInitializer)* - ; - -/* - * Productions from §14 (Blocks and Statements) - */ - -block - : '{' blockStatements? '}' - ; - -blockStatements - : blockStatement blockStatement* - ; - -blockStatement - : localVariableDeclarationStatement - | classDeclaration - | statement - ; - -localVariableDeclarationStatement - : localVariableDeclaration ';' - ; - -localVariableDeclaration - : variableModifier* unannType variableDeclaratorList - ; - -statement - : statementWithoutTrailingSubstatement - | labeledStatement - | ifThenStatement - | ifThenElseStatement - | whileStatement - | forStatement - ; - -statementNoShortIf - : statementWithoutTrailingSubstatement - | labeledStatementNoShortIf - | ifThenElseStatementNoShortIf - | whileStatementNoShortIf - | forStatementNoShortIf - ; - -statementWithoutTrailingSubstatement - : block - | emptyStatement - | expressionStatement - | assertStatement - | switchStatement - | doStatement - | breakStatement - | continueStatement - | returnStatement - | synchronizedStatement - | throwStatement - | tryStatement - ; - -emptyStatement - : ';' - ; - -labeledStatement - : Identifier ':' statement - ; - -labeledStatementNoShortIf - : Identifier ':' statementNoShortIf - ; - -expressionStatement - : statementExpression ';' - ; - -statementExpression - : assignment - | preIncrementExpression - | preDecrementExpression - | postIncrementExpression - | postDecrementExpression - | methodInvocation - | classInstanceCreationExpression - ; - -ifThenStatement - : 'if' '(' expression ')' statement - ; - -ifThenElseStatement - : 'if' '(' expression ')' statementNoShortIf 'else' statement - ; - -ifThenElseStatementNoShortIf - : 'if' '(' expression ')' statementNoShortIf 'else' statementNoShortIf - ; - -assertStatement - : 'assert' expression ';' - | 'assert' expression ':' expression ';' - ; - -switchStatement - : 'switch' '(' expression ')' switchBlock - ; - -switchBlock - : '{' switchBlockStatementGroup* switchLabel* '}' - ; - -switchBlockStatementGroup - : switchLabels blockStatements - ; - -switchLabels - : switchLabel switchLabel* - ; - -switchLabel - : 'case' constantExpression ':' - | 'case' enumConstantName ':' - | 'default' ':' - ; - -enumConstantName - : Identifier - ; - -whileStatement - : 'while' '(' expression ')' statement - ; - -whileStatementNoShortIf - : 'while' '(' expression ')' statementNoShortIf - ; - -doStatement - : 'do' statement 'while' '(' expression ')' ';' - ; - -forStatement - : basicForStatement - | enhancedForStatement - ; - -forStatementNoShortIf - : basicForStatementNoShortIf - | enhancedForStatementNoShortIf - ; - -basicForStatement - : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statement - ; - -basicForStatementNoShortIf - : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statementNoShortIf - ; - -forInit - : statementExpressionList - | localVariableDeclaration - ; - -forUpdate - : statementExpressionList - ; - -statementExpressionList - : statementExpression (',' statementExpression)* - ; - -enhancedForStatement - : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statement - ; - -enhancedForStatementNoShortIf - : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statementNoShortIf - ; - -breakStatement - : 'break' Identifier? ';' - ; - -continueStatement - : 'continue' Identifier? ';' - ; - -returnStatement - : 'return' expression? ';' - ; - -throwStatement - : 'throw' expression ';' - ; - -synchronizedStatement - : 'synchronized' '(' expression ')' block - ; - -tryStatement - : 'try' block catches - | 'try' block catches? finally_ - | tryWithResourcesStatement - ; - -catches - : catchClause catchClause* - ; - -catchClause - : 'catch' '(' catchFormalParameter ')' block - ; - -catchFormalParameter - : variableModifier* catchType variableDeclaratorId - ; - -catchType - : unannClassType ('|' classType)* - ; - -finally_ - : 'finally' block - ; - -tryWithResourcesStatement - : 'try' resourceSpecification block catches? finally_? - ; - -resourceSpecification - : '(' resourceList ';'? ')' - ; - -resourceList - : resource (';' resource)* - ; - -resource - : variableModifier* unannType variableDeclaratorId '=' expression - ; - -/* - * Productions from §15 (Expressions) - */ - -primary - : ( primaryNoNewArray_lfno_primary - | arrayCreationExpression - ) - ( primaryNoNewArray_lf_primary - )* - ; - -primaryNoNewArray - : literal - | typeName ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression - | fieldAccess - | arrayAccess - | methodInvocation - | methodReference - ; - -primaryNoNewArray_lf_arrayAccess - : - ; - -primaryNoNewArray_lfno_arrayAccess - : literal - | typeName ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression - | fieldAccess - | methodInvocation - | methodReference - ; - -primaryNoNewArray_lf_primary - : classInstanceCreationExpression_lf_primary - | fieldAccess_lf_primary - | arrayAccess_lf_primary - | methodInvocation_lf_primary - | methodReference_lf_primary - ; - -primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary - : - ; - -primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary - : classInstanceCreationExpression_lf_primary - | fieldAccess_lf_primary - | methodInvocation_lf_primary - | methodReference_lf_primary - ; - -primaryNoNewArray_lfno_primary - : literal - | typeName ('[' ']')* '.' 'class' - | unannPrimitiveType ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression_lfno_primary - | fieldAccess_lfno_primary - | arrayAccess_lfno_primary - | methodInvocation_lfno_primary - | methodReference_lfno_primary - ; - -primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary - : - ; - -primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary - : literal - | typeName ('[' ']')* '.' 'class' - | unannPrimitiveType ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression_lfno_primary - | fieldAccess_lfno_primary - | methodInvocation_lfno_primary - | methodReference_lfno_primary - ; - -classInstanceCreationExpression - : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | primary '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -classInstanceCreationExpression_lf_primary - : '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -classInstanceCreationExpression_lfno_primary - : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -typeArgumentsOrDiamond - : typeArguments - | '<' '>' - ; - -fieldAccess - : primary '.' Identifier - | 'super' '.' Identifier - | typeName '.' 'super' '.' Identifier - ; - -fieldAccess_lf_primary - : '.' Identifier - ; - -fieldAccess_lfno_primary - : 'super' '.' Identifier - | typeName '.' 'super' '.' Identifier - ; - -arrayAccess - : ( expressionName '[' expression ']' - | primaryNoNewArray_lfno_arrayAccess '[' expression ']' - ) - ( primaryNoNewArray_lf_arrayAccess '[' expression ']' - )* - ; - -arrayAccess_lf_primary - : ( primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary '[' expression ']' - ) - ( primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary '[' expression ']' - )* - ; - -arrayAccess_lfno_primary - : ( expressionName '[' expression ']' - | primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary '[' expression ']' - ) - ( primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary '[' expression ']' - )* - ; - -methodInvocation - : methodName '(' argumentList? ')' - | typeName '.' typeArguments? Identifier '(' argumentList? ')' - | expressionName '.' typeArguments? Identifier '(' argumentList? ')' - | primary '.' typeArguments? Identifier '(' argumentList? ')' - | 'super' '.' typeArguments? Identifier '(' argumentList? ')' - | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' - ; - -methodInvocation_lf_primary - : '.' typeArguments? Identifier '(' argumentList? ')' - ; - -methodInvocation_lfno_primary - : methodName '(' argumentList? ')' - | typeName '.' typeArguments? Identifier '(' argumentList? ')' - | expressionName '.' typeArguments? Identifier '(' argumentList? ')' - | 'super' '.' typeArguments? Identifier '(' argumentList? ')' - | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' - ; - -argumentList - : expression (',' expression)* - ; - -methodReference - : expressionName '::' typeArguments? Identifier - | referenceType '::' typeArguments? Identifier - | primary '::' typeArguments? Identifier - | 'super' '::' typeArguments? Identifier - | typeName '.' 'super' '::' typeArguments? Identifier - | classType '::' typeArguments? 'new' - | arrayType '::' 'new' - ; - -methodReference_lf_primary - : '::' typeArguments? Identifier - ; - -methodReference_lfno_primary - : expressionName '::' typeArguments? Identifier - | referenceType '::' typeArguments? Identifier - | 'super' '::' typeArguments? Identifier - | typeName '.' 'super' '::' typeArguments? Identifier - | classType '::' typeArguments? 'new' - | arrayType '::' 'new' - ; - -arrayCreationExpression - : 'new' primitiveType dimExprs dims? - | 'new' classOrInterfaceType dimExprs dims? - | 'new' primitiveType dims arrayInitializer - | 'new' classOrInterfaceType dims arrayInitializer - ; - -dimExprs - : dimExpr dimExpr* - ; - -dimExpr - : annotation* '[' expression ']' - ; - -constantExpression - : expression - ; - -expression - : lambdaExpression - | assignmentExpression - ; - -lambdaExpression - : lambdaParameters '->' lambdaBody - ; - -lambdaParameters - : Identifier - | '(' formalParameterList? ')' - | '(' inferredFormalParameterList ')' - ; - -inferredFormalParameterList - : Identifier (',' Identifier)* - ; - -lambdaBody - : expression - | block - ; - -assignmentExpression - : conditionalExpression - | assignment - ; - -assignment - : leftHandSide assignmentOperator expression - ; - -leftHandSide - : expressionName - | fieldAccess - | arrayAccess - ; - -assignmentOperator - : '=' - | '*=' - | '/=' - | '%=' - | '+=' - | '-=' - | '<<=' - | '>>=' - | '>>>=' - | '&=' - | '^=' - | '|=' - ; - -conditionalExpression - : conditionalOrExpression - | conditionalOrExpression '?' expression ':' conditionalExpression - ; - -conditionalOrExpression - : conditionalAndExpression - | conditionalOrExpression '||' conditionalAndExpression - ; - -conditionalAndExpression - : inclusiveOrExpression - | conditionalAndExpression '&&' inclusiveOrExpression - ; - -inclusiveOrExpression - : exclusiveOrExpression - | inclusiveOrExpression '|' exclusiveOrExpression - ; - -exclusiveOrExpression - : andExpression - | exclusiveOrExpression '^' andExpression - ; - -andExpression - : equalityExpression - | andExpression '&' equalityExpression - ; - -equalityExpression - : relationalExpression - | equalityExpression '==' relationalExpression - | equalityExpression '!=' relationalExpression - ; - -relationalExpression - : shiftExpression - | relationalExpression '<' shiftExpression - | relationalExpression '>' shiftExpression - | relationalExpression '<=' shiftExpression - | relationalExpression '>=' shiftExpression - | relationalExpression 'instanceof' referenceType - ; - -shiftExpression - : additiveExpression - | shiftExpression '<' '<' additiveExpression - | shiftExpression '>' '>' additiveExpression - | shiftExpression '>' '>' '>' additiveExpression - ; - -additiveExpression - : multiplicativeExpression - | additiveExpression '+' multiplicativeExpression - | additiveExpression '-' multiplicativeExpression - ; - -multiplicativeExpression - : unaryExpression - | multiplicativeExpression '*' unaryExpression - | multiplicativeExpression '/' unaryExpression - | multiplicativeExpression '%' unaryExpression - ; - -unaryExpression - : preIncrementExpression - | preDecrementExpression - | '+' unaryExpression - | '-' unaryExpression - | unaryExpressionNotPlusMinus - ; - -preIncrementExpression - : '++' unaryExpression - ; - -preDecrementExpression - : '--' unaryExpression - ; - -unaryExpressionNotPlusMinus - : postfixExpression - | '~' unaryExpression - | '!' unaryExpression - | castExpression - ; - -postfixExpression - : ( primary - | expressionName - ) - ( postIncrementExpression_lf_postfixExpression - | postDecrementExpression_lf_postfixExpression - )* - ; - -postIncrementExpression - : postfixExpression '++' - ; - -postIncrementExpression_lf_postfixExpression - : '++' - ; - -postDecrementExpression - : postfixExpression '--' - ; - -postDecrementExpression_lf_postfixExpression - : '--' - ; - -castExpression - : '(' primitiveType ')' unaryExpression - | '(' referenceType additionalBound* ')' unaryExpressionNotPlusMinus - | '(' referenceType additionalBound* ')' lambdaExpression - ; - -// LEXER - -// §3.9 Keywords - -ABSTRACT : 'abstract'; -ASSERT : 'assert'; -BOOLEAN : 'boolean'; -BREAK : 'break'; -BYTE : 'byte'; -CASE : 'case'; -CATCH : 'catch'; -CHAR : 'char'; -CLASS : 'class'; -CONST : 'const'; -CONTINUE : 'continue'; -DEFAULT : 'default'; -DO : 'do'; -DOUBLE : 'double'; -ELSE : 'else'; -ENUM : 'enum'; -EXTENDS : 'extends'; -FINAL : 'final'; -FINALLY : 'finally'; -FLOAT : 'float'; -FOR : 'for'; -IF : 'if'; -GOTO : 'goto'; -IMPLEMENTS : 'implements'; -IMPORT : 'import'; -INSTANCEOF : 'instanceof'; -INT : 'int'; -INTERFACE : 'interface'; -LONG : 'long'; -NATIVE : 'native'; -NEW : 'new'; -PACKAGE : 'package'; -PRIVATE : 'private'; -PROTECTED : 'protected'; -PUBLIC : 'public'; -RETURN : 'return'; -SHORT : 'short'; -STATIC : 'static'; -STRICTFP : 'strictfp'; -SUPER : 'super'; -SWITCH : 'switch'; -SYNCHRONIZED : 'synchronized'; -THIS : 'this'; -THROW : 'throw'; -THROWS : 'throws'; -TRANSIENT : 'transient'; -TRY : 'try'; -VOID : 'void'; -VOLATILE : 'volatile'; -WHILE : 'while'; - -// §3.10.1 Integer Literals - -IntegerLiteral - : DecimalIntegerLiteral - | HexIntegerLiteral - | OctalIntegerLiteral - | BinaryIntegerLiteral - ; - -fragment -DecimalIntegerLiteral - : DecimalNumeral IntegerTypeSuffix? - ; - -fragment -HexIntegerLiteral - : HexNumeral IntegerTypeSuffix? - ; - -fragment -OctalIntegerLiteral - : OctalNumeral IntegerTypeSuffix? - ; - -fragment -BinaryIntegerLiteral - : BinaryNumeral IntegerTypeSuffix? - ; - -fragment -IntegerTypeSuffix - : [lL] - ; - -fragment -DecimalNumeral - : '0' - | NonZeroDigit (Digits? | Underscores Digits) - ; - -fragment -Digits - : Digit (DigitsAndUnderscores? Digit)? - ; - -fragment -Digit - : '0' - | NonZeroDigit - ; - -fragment -NonZeroDigit - : [1-9] - ; - -fragment -DigitsAndUnderscores - : DigitOrUnderscore+ - ; - -fragment -DigitOrUnderscore - : Digit - | '_' - ; - -fragment -Underscores - : '_'+ - ; - -fragment -HexNumeral - : '0' [xX] HexDigits - ; - -fragment -HexDigits - : HexDigit (HexDigitsAndUnderscores? HexDigit)? - ; - -fragment -HexDigit - : [0-9a-fA-F] - ; - -fragment -HexDigitsAndUnderscores - : HexDigitOrUnderscore+ - ; - -fragment -HexDigitOrUnderscore - : HexDigit - | '_' - ; - -fragment -OctalNumeral - : '0' Underscores? OctalDigits - ; - -fragment -OctalDigits - : OctalDigit (OctalDigitsAndUnderscores? OctalDigit)? - ; - -fragment -OctalDigit - : [0-7] - ; - -fragment -OctalDigitsAndUnderscores - : OctalDigitOrUnderscore+ - ; - -fragment -OctalDigitOrUnderscore - : OctalDigit - | '_' - ; - -fragment -BinaryNumeral - : '0' [bB] BinaryDigits - ; - -fragment -BinaryDigits - : BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)? - ; - -fragment -BinaryDigit - : [01] - ; - -fragment -BinaryDigitsAndUnderscores - : BinaryDigitOrUnderscore+ - ; - -fragment -BinaryDigitOrUnderscore - : BinaryDigit - | '_' - ; - -// §3.10.2 Floating-Point Literals - -FloatingPointLiteral - : DecimalFloatingPointLiteral - | HexadecimalFloatingPointLiteral - ; - -fragment -DecimalFloatingPointLiteral - : Digits '.' Digits? ExponentPart? FloatTypeSuffix? - | '.' Digits ExponentPart? FloatTypeSuffix? - | Digits ExponentPart FloatTypeSuffix? - | Digits FloatTypeSuffix - ; - -fragment -ExponentPart - : ExponentIndicator SignedInteger - ; - -fragment -ExponentIndicator - : [eE] - ; - -fragment -SignedInteger - : Sign? Digits - ; - -fragment -Sign - : [+-] - ; - -fragment -FloatTypeSuffix - : [fFdD] - ; - -fragment -HexadecimalFloatingPointLiteral - : HexSignificand BinaryExponent FloatTypeSuffix? - ; - -fragment -HexSignificand - : HexNumeral '.'? - | '0' [xX] HexDigits? '.' HexDigits - ; - -fragment -BinaryExponent - : BinaryExponentIndicator SignedInteger - ; - -fragment -BinaryExponentIndicator - : [pP] - ; - -// §3.10.3 Boolean Literals - -BooleanLiteral - : 'true' - | 'false' - ; - -// §3.10.4 Character Literals - -CharacterLiteral - : '\'' SingleCharacter '\'' - | '\'' EscapeSequence '\'' - ; - -fragment -SingleCharacter - : ~['\\] - ; - -// §3.10.5 String Literals - -StringLiteral - : '"' StringCharacters? '"' - ; - -fragment -StringCharacters - : StringCharacter+ - ; - -fragment -StringCharacter - : ~["\\] - | EscapeSequence - ; - -// §3.10.6 Escape Sequences for Character and String Literals - -fragment -EscapeSequence - : '\\' [btnfr"'\\] - | OctalEscape - | UnicodeEscape // This is not in the spec but prevents having to preprocess the input - ; - -fragment -OctalEscape - : '\\' OctalDigit - | '\\' OctalDigit OctalDigit - | '\\' ZeroToThree OctalDigit OctalDigit - ; - -fragment -ZeroToThree - : [0-3] - ; - -// This is not in the spec but prevents having to preprocess the input -fragment -UnicodeEscape - : '\\' 'u' HexDigit HexDigit HexDigit HexDigit - ; - -// §3.10.7 The Null Literal - -NullLiteral - : 'null' - ; - -// §3.11 Separators - -LPAREN : '('; -RPAREN : ')'; -LBRACE : '{'; -RBRACE : '}'; -LBRACK : '['; -RBRACK : ']'; -SEMI : ';'; -COMMA : ','; -DOT : '.'; - -// §3.12 Operators - -ASSIGN : '='; -GT : '>'; -LT : '<'; -BANG : '!'; -TILDE : '~'; -QUESTION : '?'; -COLON : ':'; -EQUAL : '=='; -LE : '<='; -GE : '>='; -NOTEQUAL : '!='; -AND : '&&'; -OR : '||'; -INC : '++'; -DEC : '--'; -ADD : '+'; -SUB : '-'; -MUL : '*'; -DIV : '/'; -BITAND : '&'; -BITOR : '|'; -CARET : '^'; -MOD : '%'; -ARROW : '->'; -COLONCOLON : '::'; - -ADD_ASSIGN : '+='; -SUB_ASSIGN : '-='; -MUL_ASSIGN : '*='; -DIV_ASSIGN : '/='; -AND_ASSIGN : '&='; -OR_ASSIGN : '|='; -XOR_ASSIGN : '^='; -MOD_ASSIGN : '%='; -LSHIFT_ASSIGN : '<<='; -RSHIFT_ASSIGN : '>>='; -URSHIFT_ASSIGN : '>>>='; - -// §3.8 Identifiers (must appear after all keywords in the grammar) - -Identifier - : JavaLetter JavaLetterOrDigit* - ; - -fragment -JavaLetter - : [a-zA-Z$_] // these are the "java letters" below 0x7F - | // covers all characters above 0x7F which are not a surrogate - ~[\u0000-\u007F\uD800-\uDBFF] - {Character.isJavaIdentifierStart(_input.LA(-1))}? - | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF - [\uD800-\uDBFF] [\uDC00-\uDFFF] - {Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}? - ; - -fragment -JavaLetterOrDigit - : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F - | // covers all characters above 0x7F which are not a surrogate - ~[\u0000-\u007F\uD800-\uDBFF] - {Character.isJavaIdentifierPart(_input.LA(-1))}? - | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF - [\uD800-\uDBFF] [\uDC00-\uDFFF] - {Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)))}? - ; - -// -// Additional symbols not defined in the lexical specification -// - -AT : '@'; -ELLIPSIS : '...'; - -// -// Whitespace and comments -// - -WS : [ \t\r\n\u000C]+ -> channel(HIDDEN) - ; - -COMMENT - : '/*' .*? '*/' -> channel(HIDDEN) - ; - -LINE_COMMENT - : '//' ~[\r\n]* -> channel(HIDDEN) - ; diff --git a/jcommon/antlr/src/main/resources/antlr/java8/Java8Lexer.g4 b/jcommon/antlr/src/main/resources/antlr/java8/Java8Lexer.g4 deleted file mode 100644 index 2e6541f86..000000000 --- a/jcommon/antlr/src/main/resources/antlr/java8/Java8Lexer.g4 +++ /dev/null @@ -1,1126 +0,0 @@ -/* - * [The "BSD license"] - * Copyright (c) 2014 Terence Parr - * Copyright (c) 2014 Sam Harwell - * Copyright (c) 2019 Student Main (Make it universal) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * A Java 8 grammar for ANTLR 4 derived from the Java Language Specification - * chapter 19. - * - * NOTE: This grammar results in a generated parser that is much slower - * than the Java 7 grammar in the grammars-v4/java directory. This - * one is, however, extremely close to the spec. - * - * You can test with - * - * $ antlr4 Java8.g4 - * $ javac *.java - * $ grun Java8 compilationUnit *.java - * - * Or, -~/antlr/code/grammars-v4/java8 $ java Test . -/Users/parrt/antlr/code/grammars-v4/java8/./Java8BaseListener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Lexer.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Listener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Parser.java -/Users/parrt/antlr/code/grammars-v4/java8/./Test.java -Total lexer+parser time 30844ms. - */ -lexer grammar Java8Lexer; - -// LEXER - -// §3.9 Keywords - -ABSTRACT : 'abstract'; -ASSERT : 'assert'; -BOOLEAN : 'boolean'; -BREAK : 'break'; -BYTE : 'byte'; -CASE : 'case'; -CATCH : 'catch'; -CHAR : 'char'; -CLASS : 'class'; -CONST : 'const'; -CONTINUE : 'continue'; -DEFAULT : 'default'; -DO : 'do'; -DOUBLE : 'double'; -ELSE : 'else'; -ENUM : 'enum'; -EXTENDS : 'extends'; -FINAL : 'final'; -FINALLY : 'finally'; -FLOAT : 'float'; -FOR : 'for'; -IF : 'if'; -GOTO : 'goto'; -IMPLEMENTS : 'implements'; -IMPORT : 'import'; -INSTANCEOF : 'instanceof'; -INT : 'int'; -INTERFACE : 'interface'; -LONG : 'long'; -NATIVE : 'native'; -NEW : 'new'; -PACKAGE : 'package'; -PRIVATE : 'private'; -PROTECTED : 'protected'; -PUBLIC : 'public'; -RETURN : 'return'; -SHORT : 'short'; -STATIC : 'static'; -STRICTFP : 'strictfp'; -SUPER : 'super'; -SWITCH : 'switch'; -SYNCHRONIZED : 'synchronized'; -THIS : 'this'; -THROW : 'throw'; -THROWS : 'throws'; -TRANSIENT : 'transient'; -TRY : 'try'; -VOID : 'void'; -VOLATILE : 'volatile'; -WHILE : 'while'; - -// §3.10.1 Integer Literals - -IntegerLiteral - : DecimalIntegerLiteral - | HexIntegerLiteral - | OctalIntegerLiteral - | BinaryIntegerLiteral - ; - -fragment -DecimalIntegerLiteral - : DecimalNumeral IntegerTypeSuffix? - ; - -fragment -HexIntegerLiteral - : HexNumeral IntegerTypeSuffix? - ; - -fragment -OctalIntegerLiteral - : OctalNumeral IntegerTypeSuffix? - ; - -fragment -BinaryIntegerLiteral - : BinaryNumeral IntegerTypeSuffix? - ; - -fragment -IntegerTypeSuffix - : [lL] - ; - -fragment -DecimalNumeral - : '0' - | NonZeroDigit (Digits? | Underscores Digits) - ; - -fragment -Digits - : Digit (DigitsAndUnderscores? Digit)? - ; - -fragment -Digit - : '0' - | NonZeroDigit - ; - -fragment -NonZeroDigit - : [1-9] - ; - -fragment -DigitsAndUnderscores - : DigitOrUnderscore+ - ; - -fragment -DigitOrUnderscore - : Digit - | '_' - ; - -fragment -Underscores - : '_'+ - ; - -fragment -HexNumeral - : '0' [xX] HexDigits - ; - -fragment -HexDigits - : HexDigit (HexDigitsAndUnderscores? HexDigit)? - ; - -fragment -HexDigit - : [0-9a-fA-F] - ; - -fragment -HexDigitsAndUnderscores - : HexDigitOrUnderscore+ - ; - -fragment -HexDigitOrUnderscore - : HexDigit - | '_' - ; - -fragment -OctalNumeral - : '0' Underscores? OctalDigits - ; - -fragment -OctalDigits - : OctalDigit (OctalDigitsAndUnderscores? OctalDigit)? - ; - -fragment -OctalDigit - : [0-7] - ; - -fragment -OctalDigitsAndUnderscores - : OctalDigitOrUnderscore+ - ; - -fragment -OctalDigitOrUnderscore - : OctalDigit - | '_' - ; - -fragment -BinaryNumeral - : '0' [bB] BinaryDigits - ; - -fragment -BinaryDigits - : BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)? - ; - -fragment -BinaryDigit - : [01] - ; - -fragment -BinaryDigitsAndUnderscores - : BinaryDigitOrUnderscore+ - ; - -fragment -BinaryDigitOrUnderscore - : BinaryDigit - | '_' - ; - -// §3.10.2 Floating-Point Literals - -FloatingPointLiteral - : DecimalFloatingPointLiteral - | HexadecimalFloatingPointLiteral - ; - -fragment -DecimalFloatingPointLiteral - : Digits '.' Digits? ExponentPart? FloatTypeSuffix? - | '.' Digits ExponentPart? FloatTypeSuffix? - | Digits ExponentPart FloatTypeSuffix? - | Digits FloatTypeSuffix - ; - -fragment -ExponentPart - : ExponentIndicator SignedInteger - ; - -fragment -ExponentIndicator - : [eE] - ; - -fragment -SignedInteger - : Sign? Digits - ; - -fragment -Sign - : [+-] - ; - -fragment -FloatTypeSuffix - : [fFdD] - ; - -fragment -HexadecimalFloatingPointLiteral - : HexSignificand BinaryExponent FloatTypeSuffix? - ; - -fragment -HexSignificand - : HexNumeral '.'? - | '0' [xX] HexDigits? '.' HexDigits - ; - -fragment -BinaryExponent - : BinaryExponentIndicator SignedInteger - ; - -fragment -BinaryExponentIndicator - : [pP] - ; - -// §3.10.3 Boolean Literals - -BooleanLiteral - : 'true' - | 'false' - ; - -// §3.10.4 Character Literals - -CharacterLiteral - : '\'' SingleCharacter '\'' - | '\'' EscapeSequence '\'' - ; - -fragment -SingleCharacter - : ~['\\\r\n] - ; - -// §3.10.5 String Literals - -StringLiteral - : '"' StringCharacters? '"' - ; - -fragment -StringCharacters - : StringCharacter+ - ; - -fragment -StringCharacter - : ~["\\\r\n] - | EscapeSequence - ; - -// §3.10.6 Escape Sequences for Character and String Literals - -fragment -EscapeSequence - : '\\' [btnfr"'\\] - | OctalEscape - | UnicodeEscape // This is not in the spec but prevents having to preprocess the input - ; - -fragment -OctalEscape - : '\\' OctalDigit - | '\\' OctalDigit OctalDigit - | '\\' ZeroToThree OctalDigit OctalDigit - ; - -fragment -ZeroToThree - : [0-3] - ; - -// This is not in the spec but prevents having to preprocess the input -fragment -UnicodeEscape - : '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit - ; - -// §3.10.7 The Null Literal - -NullLiteral - : 'null' - ; - -// §3.11 Separators - -LPAREN : '('; -RPAREN : ')'; -LBRACE : '{'; -RBRACE : '}'; -LBRACK : '['; -RBRACK : ']'; -SEMI : ';'; -COMMA : ','; -DOT : '.'; - -// §3.12 Operators - -ASSIGN : '='; -GT : '>'; -LT : '<'; -BANG : '!'; -TILDE : '~'; -QUESTION : '?'; -COLON : ':'; -EQUAL : '=='; -LE : '<='; -GE : '>='; -NOTEQUAL : '!='; -AND : '&&'; -OR : '||'; -INC : '++'; -DEC : '--'; -ADD : '+'; -SUB : '-'; -MUL : '*'; -DIV : '/'; -BITAND : '&'; -BITOR : '|'; -CARET : '^'; -MOD : '%'; -ARROW : '->'; -COLONCOLON : '::'; - -ADD_ASSIGN : '+='; -SUB_ASSIGN : '-='; -MUL_ASSIGN : '*='; -DIV_ASSIGN : '/='; -AND_ASSIGN : '&='; -OR_ASSIGN : '|='; -XOR_ASSIGN : '^='; -MOD_ASSIGN : '%='; -LSHIFT_ASSIGN : '<<='; -RSHIFT_ASSIGN : '>>='; -URSHIFT_ASSIGN : '>>>='; - -// §3.8 Identifiers (must appear after all keywords in the grammar) - -Identifier - : IdentifierStart IdentifierPart* - ; -/* -fragment -JavaLetter - : [a-zA-Z$_] // these are the "java letters" below 0x7F - | // covers all characters above 0x7F which are not a surrogate - ~[\u0000-\u007F\uD800-\uDBFF] {this.wasJavaIdentiferStart()}? - | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF - [\uD800-\uDBFF] [\uDC00-\uDFFF] {this.wasJavaIdentiferStartUTF16()}? - ; - -fragment -JavaLetterOrDigit - : [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F - | // covers all characters above 0x7F which are not a surrogate - ~[\u0000-\u007F\uD800-\uDBFF] {this.wasJavaIdentiferPart()}? - | // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF - [\uD800-\uDBFF] [\uDC00-\uDFFF] {this.wasJavaIdentiferPartUTF16()}? - ;*/ - -// Dropped SMP support as ANTLR has no native support for it -fragment IdentifierStart - : [\u0024] - | [\u0041-\u005A] - | [\u005F] - | [\u0061-\u007A] - | [\u00A2-\u00A5] - | [\u00AA] - | [\u00B5] - | [\u00BA] - | [\u00C0-\u00D6] - | [\u00D8-\u00F6] - | [\u00F8-\u02C1] - | [\u02C6-\u02D1] - | [\u02E0-\u02E4] - | [\u02EC] - | [\u02EE] - | [\u0370-\u0374] - | [\u0376-\u0377] - | [\u037A-\u037D] - | [\u037F] - | [\u0386] - | [\u0388-\u038A] - | [\u038C] - | [\u038E-\u03A1] - | [\u03A3-\u03F5] - | [\u03F7-\u0481] - | [\u048A-\u052F] - | [\u0531-\u0556] - | [\u0559] - | [\u0561-\u0587] - | [\u058F] - | [\u05D0-\u05EA] - | [\u05F0-\u05F2] - | [\u060B] - | [\u0620-\u064A] - | [\u066E-\u066F] - | [\u0671-\u06D3] - | [\u06D5] - | [\u06E5-\u06E6] - | [\u06EE-\u06EF] - | [\u06FA-\u06FC] - | [\u06FF] - | [\u0710] - | [\u0712-\u072F] - | [\u074D-\u07A5] - | [\u07B1] - | [\u07CA-\u07EA] - | [\u07F4-\u07F5] - | [\u07FA] - | [\u0800-\u0815] - | [\u081A] - | [\u0824] - | [\u0828] - | [\u0840-\u0858] - | [\u0860-\u086A] - | [\u08A0-\u08B4] - | [\u08B6-\u08BD] - | [\u0904-\u0939] - | [\u093D] - | [\u0950] - | [\u0958-\u0961] - | [\u0971-\u0980] - | [\u0985-\u098C] - | [\u098F-\u0990] - | [\u0993-\u09A8] - | [\u09AA-\u09B0] - | [\u09B2] - | [\u09B6-\u09B9] - | [\u09BD] - | [\u09CE] - | [\u09DC-\u09DD] - | [\u09DF-\u09E1] - | [\u09F0-\u09F3] - | [\u09FB-\u09FC] - | [\u0A05-\u0A0A] - | [\u0A0F-\u0A10] - | [\u0A13-\u0A28] - | [\u0A2A-\u0A30] - | [\u0A32-\u0A33] - | [\u0A35-\u0A36] - | [\u0A38-\u0A39] - | [\u0A59-\u0A5C] - | [\u0A5E] - | [\u0A72-\u0A74] - | [\u0A85-\u0A8D] - | [\u0A8F-\u0A91] - | [\u0A93-\u0AA8] - | [\u0AAA-\u0AB0] - | [\u0AB2-\u0AB3] - | [\u0AB5-\u0AB9] - | [\u0ABD] - | [\u0AD0] - | [\u0AE0-\u0AE1] - | [\u0AF1] - | [\u0AF9] - | [\u0B05-\u0B0C] - | [\u0B0F-\u0B10] - | [\u0B13-\u0B28] - | [\u0B2A-\u0B30] - | [\u0B32-\u0B33] - | [\u0B35-\u0B39] - | [\u0B3D] - | [\u0B5C-\u0B5D] - | [\u0B5F-\u0B61] - | [\u0B71] - | [\u0B83] - | [\u0B85-\u0B8A] - | [\u0B8E-\u0B90] - | [\u0B92-\u0B95] - | [\u0B99-\u0B9A] - | [\u0B9C] - | [\u0B9E-\u0B9F] - | [\u0BA3-\u0BA4] - | [\u0BA8-\u0BAA] - | [\u0BAE-\u0BB9] - | [\u0BD0] - | [\u0BF9] - | [\u0C05-\u0C0C] - | [\u0C0E-\u0C10] - | [\u0C12-\u0C28] - | [\u0C2A-\u0C39] - | [\u0C3D] - | [\u0C58-\u0C5A] - | [\u0C60-\u0C61] - | [\u0C80] - | [\u0C85-\u0C8C] - | [\u0C8E-\u0C90] - | [\u0C92-\u0CA8] - | [\u0CAA-\u0CB3] - | [\u0CB5-\u0CB9] - | [\u0CBD] - | [\u0CDE] - | [\u0CE0-\u0CE1] - | [\u0CF1-\u0CF2] - | [\u0D05-\u0D0C] - | [\u0D0E-\u0D10] - | [\u0D12-\u0D3A] - | [\u0D3D] - | [\u0D4E] - | [\u0D54-\u0D56] - | [\u0D5F-\u0D61] - | [\u0D7A-\u0D7F] - | [\u0D85-\u0D96] - | [\u0D9A-\u0DB1] - | [\u0DB3-\u0DBB] - | [\u0DBD] - | [\u0DC0-\u0DC6] - | [\u0E01-\u0E30] - | [\u0E32-\u0E33] - | [\u0E3F-\u0E46] - | [\u0E81-\u0E82] - | [\u0E84] - | [\u0E87-\u0E88] - | [\u0E8A] - | [\u0E8D] - | [\u0E94-\u0E97] - | [\u0E99-\u0E9F] - | [\u0EA1-\u0EA3] - | [\u0EA5] - | [\u0EA7] - | [\u0EAA-\u0EAB] - | [\u0EAD-\u0EB0] - | [\u0EB2-\u0EB3] - | [\u0EBD] - | [\u0EC0-\u0EC4] - | [\u0EC6] - | [\u0EDC-\u0EDF] - | [\u0F00] - | [\u0F40-\u0F47] - | [\u0F49-\u0F6C] - | [\u0F88-\u0F8C] - | [\u1000-\u102A] - | [\u103F] - | [\u1050-\u1055] - | [\u105A-\u105D] - | [\u1061] - | [\u1065-\u1066] - | [\u106E-\u1070] - | [\u1075-\u1081] - | [\u108E] - | [\u10A0-\u10C5] - | [\u10C7] - | [\u10CD] - | [\u10D0-\u10FA] - | [\u10FC-\u1248] - | [\u124A-\u124D] - | [\u1250-\u1256] - | [\u1258] - | [\u125A-\u125D] - | [\u1260-\u1288] - | [\u128A-\u128D] - | [\u1290-\u12B0] - | [\u12B2-\u12B5] - | [\u12B8-\u12BE] - | [\u12C0] - | [\u12C2-\u12C5] - | [\u12C8-\u12D6] - | [\u12D8-\u1310] - | [\u1312-\u1315] - | [\u1318-\u135A] - | [\u1380-\u138F] - | [\u13A0-\u13F5] - | [\u13F8-\u13FD] - | [\u1401-\u166C] - | [\u166F-\u167F] - | [\u1681-\u169A] - | [\u16A0-\u16EA] - | [\u16EE-\u16F8] - | [\u1700-\u170C] - | [\u170E-\u1711] - | [\u1720-\u1731] - | [\u1740-\u1751] - | [\u1760-\u176C] - | [\u176E-\u1770] - | [\u1780-\u17B3] - | [\u17D7] - | [\u17DB-\u17DC] - | [\u1820-\u1877] - | [\u1880-\u1884] - | [\u1887-\u18A8] - | [\u18AA] - | [\u18B0-\u18F5] - | [\u1900-\u191E] - | [\u1950-\u196D] - | [\u1970-\u1974] - | [\u1980-\u19AB] - | [\u19B0-\u19C9] - | [\u1A00-\u1A16] - | [\u1A20-\u1A54] - | [\u1AA7] - | [\u1B05-\u1B33] - | [\u1B45-\u1B4B] - | [\u1B83-\u1BA0] - | [\u1BAE-\u1BAF] - | [\u1BBA-\u1BE5] - | [\u1C00-\u1C23] - | [\u1C4D-\u1C4F] - | [\u1C5A-\u1C7D] - | [\u1C80-\u1C88] - | [\u1CE9-\u1CEC] - | [\u1CEE-\u1CF1] - | [\u1CF5-\u1CF6] - | [\u1D00-\u1DBF] - | [\u1E00-\u1F15] - | [\u1F18-\u1F1D] - | [\u1F20-\u1F45] - | [\u1F48-\u1F4D] - | [\u1F50-\u1F57] - | [\u1F59] - | [\u1F5B] - | [\u1F5D] - | [\u1F5F-\u1F7D] - | [\u1F80-\u1FB4] - | [\u1FB6-\u1FBC] - | [\u1FBE] - | [\u1FC2-\u1FC4] - | [\u1FC6-\u1FCC] - | [\u1FD0-\u1FD3] - | [\u1FD6-\u1FDB] - | [\u1FE0-\u1FEC] - | [\u1FF2-\u1FF4] - | [\u1FF6-\u1FFC] - | [\u203F-\u2040] - | [\u2054] - | [\u2071] - | [\u207F] - | [\u2090-\u209C] - | [\u20A0-\u20BF] - | [\u2102] - | [\u2107] - | [\u210A-\u2113] - | [\u2115] - | [\u2119-\u211D] - | [\u2124] - | [\u2126] - | [\u2128] - | [\u212A-\u212D] - | [\u212F-\u2139] - | [\u213C-\u213F] - | [\u2145-\u2149] - | [\u214E] - | [\u2160-\u2188] - | [\u2C00-\u2C2E] - | [\u2C30-\u2C5E] - | [\u2C60-\u2CE4] - | [\u2CEB-\u2CEE] - | [\u2CF2-\u2CF3] - | [\u2D00-\u2D25] - | [\u2D27] - | [\u2D2D] - | [\u2D30-\u2D67] - | [\u2D6F] - | [\u2D80-\u2D96] - | [\u2DA0-\u2DA6] - | [\u2DA8-\u2DAE] - | [\u2DB0-\u2DB6] - | [\u2DB8-\u2DBE] - | [\u2DC0-\u2DC6] - | [\u2DC8-\u2DCE] - | [\u2DD0-\u2DD6] - | [\u2DD8-\u2DDE] - | [\u2E2F] - | [\u3005-\u3007] - | [\u3021-\u3029] - | [\u3031-\u3035] - | [\u3038-\u303C] - | [\u3041-\u3096] - | [\u309D-\u309F] - | [\u30A1-\u30FA] - | [\u30FC-\u30FF] - | [\u3105-\u312E] - | [\u3131-\u318E] - | [\u31A0-\u31BA] - | [\u31F0-\u31FF] - | [\u3400-\u4DB5] - | [\u4E00-\u9FEA] - | [\uA000-\uA48C] - | [\uA4D0-\uA4FD] - | [\uA500-\uA60C] - | [\uA610-\uA61F] - | [\uA62A-\uA62B] - | [\uA640-\uA66E] - | [\uA67F-\uA69D] - | [\uA6A0-\uA6EF] - | [\uA717-\uA71F] - | [\uA722-\uA788] - | [\uA78B-\uA7AE] - | [\uA7B0-\uA7B7] - | [\uA7F7-\uA801] - | [\uA803-\uA805] - | [\uA807-\uA80A] - | [\uA80C-\uA822] - | [\uA838] - | [\uA840-\uA873] - | [\uA882-\uA8B3] - | [\uA8F2-\uA8F7] - | [\uA8FB] - | [\uA8FD] - | [\uA90A-\uA925] - | [\uA930-\uA946] - | [\uA960-\uA97C] - | [\uA984-\uA9B2] - | [\uA9CF] - | [\uA9E0-\uA9E4] - | [\uA9E6-\uA9EF] - | [\uA9FA-\uA9FE] - | [\uAA00-\uAA28] - | [\uAA40-\uAA42] - | [\uAA44-\uAA4B] - | [\uAA60-\uAA76] - | [\uAA7A] - | [\uAA7E-\uAAAF] - | [\uAAB1] - | [\uAAB5-\uAAB6] - | [\uAAB9-\uAABD] - | [\uAAC0] - | [\uAAC2] - | [\uAADB-\uAADD] - | [\uAAE0-\uAAEA] - | [\uAAF2-\uAAF4] - | [\uAB01-\uAB06] - | [\uAB09-\uAB0E] - | [\uAB11-\uAB16] - | [\uAB20-\uAB26] - | [\uAB28-\uAB2E] - | [\uAB30-\uAB5A] - | [\uAB5C-\uAB65] - | [\uAB70-\uABE2] - | [\uAC00-\uD7A3] - | [\uD7B0-\uD7C6] - | [\uD7CB-\uD7FB] - | [\uF900-\uFA6D] - | [\uFA70-\uFAD9] - | [\uFB00-\uFB06] - | [\uFB13-\uFB17] - | [\uFB1D] - | [\uFB1F-\uFB28] - | [\uFB2A-\uFB36] - | [\uFB38-\uFB3C] - | [\uFB3E] - | [\uFB40-\uFB41] - | [\uFB43-\uFB44] - | [\uFB46-\uFBB1] - | [\uFBD3-\uFD3D] - | [\uFD50-\uFD8F] - | [\uFD92-\uFDC7] - | [\uFDF0-\uFDFC] - | [\uFE33-\uFE34] - | [\uFE4D-\uFE4F] - | [\uFE69] - | [\uFE70-\uFE74] - | [\uFE76-\uFEFC] - | [\uFF04] - | [\uFF21-\uFF3A] - | [\uFF3F] - | [\uFF41-\uFF5A] - | [\uFF66-\uFFBE] - | [\uFFC2-\uFFC7] - | [\uFFCA-\uFFCF] - | [\uFFD2-\uFFD7] - | [\uFFDA-\uFFDC] - | [\uFFE0-\uFFE1] - | [\uFFE5-\uFFE6] - ; - -fragment IdentifierPart - : IdentifierStart - | [\u0030-\u0039] - | [\u007F-\u009F] - | [\u00AD] - | [\u0300-\u036F] - | [\u0483-\u0487] - | [\u0591-\u05BD] - | [\u05BF] - | [\u05C1-\u05C2] - | [\u05C4-\u05C5] - | [\u05C7] - | [\u0600-\u0605] - | [\u0610-\u061A] - | [\u061C] - | [\u064B-\u0669] - | [\u0670] - | [\u06D6-\u06DD] - | [\u06DF-\u06E4] - | [\u06E7-\u06E8] - | [\u06EA-\u06ED] - | [\u06F0-\u06F9] - | [\u070F] - | [\u0711] - | [\u0730-\u074A] - | [\u07A6-\u07B0] - | [\u07C0-\u07C9] - | [\u07EB-\u07F3] - | [\u0816-\u0819] - | [\u081B-\u0823] - | [\u0825-\u0827] - | [\u0829-\u082D] - | [\u0859-\u085B] - | [\u08D4-\u0903] - | [\u093A-\u093C] - | [\u093E-\u094F] - | [\u0951-\u0957] - | [\u0962-\u0963] - | [\u0966-\u096F] - | [\u0981-\u0983] - | [\u09BC] - | [\u09BE-\u09C4] - | [\u09C7-\u09C8] - | [\u09CB-\u09CD] - | [\u09D7] - | [\u09E2-\u09E3] - | [\u09E6-\u09EF] - | [\u0A01-\u0A03] - | [\u0A3C] - | [\u0A3E-\u0A42] - | [\u0A47-\u0A48] - | [\u0A4B-\u0A4D] - | [\u0A51] - | [\u0A66-\u0A71] - | [\u0A75] - | [\u0A81-\u0A83] - | [\u0ABC] - | [\u0ABE-\u0AC5] - | [\u0AC7-\u0AC9] - | [\u0ACB-\u0ACD] - | [\u0AE2-\u0AE3] - | [\u0AE6-\u0AEF] - | [\u0AFA-\u0AFF] - | [\u0B01-\u0B03] - | [\u0B3C] - | [\u0B3E-\u0B44] - | [\u0B47-\u0B48] - | [\u0B4B-\u0B4D] - | [\u0B56-\u0B57] - | [\u0B62-\u0B63] - | [\u0B66-\u0B6F] - | [\u0B82] - | [\u0BBE-\u0BC2] - | [\u0BC6-\u0BC8] - | [\u0BCA-\u0BCD] - | [\u0BD7] - | [\u0BE6-\u0BEF] - | [\u0C00-\u0C03] - | [\u0C3E-\u0C44] - | [\u0C46-\u0C48] - | [\u0C4A-\u0C4D] - | [\u0C55-\u0C56] - | [\u0C62-\u0C63] - | [\u0C66-\u0C6F] - | [\u0C81-\u0C83] - | [\u0CBC] - | [\u0CBE-\u0CC4] - | [\u0CC6-\u0CC8] - | [\u0CCA-\u0CCD] - | [\u0CD5-\u0CD6] - | [\u0CE2-\u0CE3] - | [\u0CE6-\u0CEF] - | [\u0D00-\u0D03] - | [\u0D3B-\u0D3C] - | [\u0D3E-\u0D44] - | [\u0D46-\u0D48] - | [\u0D4A-\u0D4D] - | [\u0D57] - | [\u0D62-\u0D63] - | [\u0D66-\u0D6F] - | [\u0D82-\u0D83] - | [\u0DCA] - | [\u0DCF-\u0DD4] - | [\u0DD6] - | [\u0DD8-\u0DDF] - | [\u0DE6-\u0DEF] - | [\u0DF2-\u0DF3] - | [\u0E31] - | [\u0E34-\u0E3A] - | [\u0E47-\u0E4E] - | [\u0E50-\u0E59] - | [\u0EB1] - | [\u0EB4-\u0EB9] - | [\u0EBB-\u0EBC] - | [\u0EC8-\u0ECD] - | [\u0ED0-\u0ED9] - | [\u0F18-\u0F19] - | [\u0F20-\u0F29] - | [\u0F35] - | [\u0F37] - | [\u0F39] - | [\u0F3E-\u0F3F] - | [\u0F71-\u0F84] - | [\u0F86-\u0F87] - | [\u0F8D-\u0F97] - | [\u0F99-\u0FBC] - | [\u0FC6] - | [\u102B-\u103E] - | [\u1040-\u1049] - | [\u1056-\u1059] - | [\u105E-\u1060] - | [\u1062-\u1064] - | [\u1067-\u106D] - | [\u1071-\u1074] - | [\u1082-\u108D] - | [\u108F-\u109D] - | [\u135D-\u135F] - | [\u1712-\u1714] - | [\u1732-\u1734] - | [\u1752-\u1753] - | [\u1772-\u1773] - | [\u17B4-\u17D3] - | [\u17DD] - | [\u17E0-\u17E9] - | [\u180B-\u180E] - | [\u1810-\u1819] - | [\u1885-\u1886] - | [\u18A9] - | [\u1920-\u192B] - | [\u1930-\u193B] - | [\u1946-\u194F] - | [\u19D0-\u19D9] - | [\u1A17-\u1A1B] - | [\u1A55-\u1A5E] - | [\u1A60-\u1A7C] - | [\u1A7F-\u1A89] - | [\u1A90-\u1A99] - | [\u1AB0-\u1ABD] - | [\u1B00-\u1B04] - | [\u1B34-\u1B44] - | [\u1B50-\u1B59] - | [\u1B6B-\u1B73] - | [\u1B80-\u1B82] - | [\u1BA1-\u1BAD] - | [\u1BB0-\u1BB9] - | [\u1BE6-\u1BF3] - | [\u1C24-\u1C37] - | [\u1C40-\u1C49] - | [\u1C50-\u1C59] - | [\u1CD0-\u1CD2] - | [\u1CD4-\u1CE8] - | [\u1CED] - | [\u1CF2-\u1CF4] - | [\u1CF7-\u1CF9] - | [\u1DC0-\u1DF9] - | [\u1DFB-\u1DFF] - | [\u200B-\u200F] - | [\u202A-\u202E] - | [\u2060-\u2064] - | [\u2066-\u206F] - | [\u20D0-\u20DC] - | [\u20E1] - | [\u20E5-\u20F0] - | [\u2CEF-\u2CF1] - | [\u2D7F] - | [\u2DE0-\u2DFF] - | [\u302A-\u302F] - | [\u3099-\u309A] - | [\uA620-\uA629] - | [\uA66F] - | [\uA674-\uA67D] - | [\uA69E-\uA69F] - | [\uA6F0-\uA6F1] - | [\uA802] - | [\uA806] - | [\uA80B] - | [\uA823-\uA827] - | [\uA880-\uA881] - | [\uA8B4-\uA8C5] - | [\uA8D0-\uA8D9] - | [\uA8E0-\uA8F1] - | [\uA900-\uA909] - | [\uA926-\uA92D] - | [\uA947-\uA953] - | [\uA980-\uA983] - | [\uA9B3-\uA9C0] - | [\uA9D0-\uA9D9] - | [\uA9E5] - | [\uA9F0-\uA9F9] - | [\uAA29-\uAA36] - | [\uAA43] - | [\uAA4C-\uAA4D] - | [\uAA50-\uAA59] - | [\uAA7B-\uAA7D] - | [\uAAB0] - | [\uAAB2-\uAAB4] - | [\uAAB7-\uAAB8] - | [\uAABE-\uAABF] - | [\uAAC1] - | [\uAAEB-\uAAEF] - | [\uAAF5-\uAAF6] - | [\uABE3-\uABEA] - | [\uABEC-\uABED] - | [\uABF0-\uABF9] - | [\uFB1E] - | [\uFE00-\uFE0F] - | [\uFE20-\uFE2F] - | [\uFEFF] - | [\uFF10-\uFF19] - | [\uFFF9-\uFFFB] - ; - -// -// Additional symbols not defined in the lexical specification -// - -AT : '@'; -ELLIPSIS : '...'; - -// -// Whitespace and comments -// - -WS : [ \t\r\n\u000C]+ -> skip - ; - -COMMENT - : '/*' .*? '*/' -> skip - ; - -LINE_COMMENT - : '//' ~[\r\n]* -> skip - ; diff --git a/jcommon/antlr/src/main/resources/antlr/java8/Java8Parser.g4 b/jcommon/antlr/src/main/resources/antlr/java8/Java8Parser.g4 deleted file mode 100644 index 1e19b6dee..000000000 --- a/jcommon/antlr/src/main/resources/antlr/java8/Java8Parser.g4 +++ /dev/null @@ -1,1341 +0,0 @@ -/* - * [The "BSD license"] - * Copyright (c) 2014 Terence Parr - * Copyright (c) 2014 Sam Harwell - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * A Java 8 grammar for ANTLR 4 derived from the Java Language Specification - * chapter 19. - * - * NOTE: This grammar results in a generated parser that is much slower - * than the Java 7 grammar in the grammars-v4/java directory. This - * one is, however, extremely close to the spec. - * - * You can test with - * - * $ antlr4 Java8.g4 - * $ javac *.java - * $ grun Java8 compilationUnit *.java - * - * Or, -~/antlr/code/grammars-v4/java8 $ java Test . -/Users/parrt/antlr/code/grammars-v4/java8/./Java8BaseListener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Lexer.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Listener.java -/Users/parrt/antlr/code/grammars-v4/java8/./Java8Parser.java -/Users/parrt/antlr/code/grammars-v4/java8/./Test.java -Total lexer+parser time 30844ms. - */ -parser grammar Java8Parser; - -options { - tokenVocab=Java8Lexer; -} -/* - * Productions from §3 (Lexical Structure) - */ - -literal - : IntegerLiteral - | FloatingPointLiteral - | BooleanLiteral - | CharacterLiteral - | StringLiteral - | NullLiteral - ; - -/* - * Productions from §4 (Types, Values, and Variables) - */ - -primitiveType - : annotation* numericType - | annotation* 'boolean' - ; - -numericType - : integralType - | floatingPointType - ; - -integralType - : 'byte' - | 'short' - | 'int' - | 'long' - | 'char' - ; - -floatingPointType - : 'float' - | 'double' - ; - -referenceType - : classOrInterfaceType - | typeVariable - | arrayType - ; - -classOrInterfaceType - : ( classType_lfno_classOrInterfaceType - | interfaceType_lfno_classOrInterfaceType - ) - ( classType_lf_classOrInterfaceType - | interfaceType_lf_classOrInterfaceType - )* - ; - -classType - : annotation* Identifier typeArguments? - | classOrInterfaceType '.' annotation* Identifier typeArguments? - ; - -classType_lf_classOrInterfaceType - : '.' annotation* Identifier typeArguments? - ; - -classType_lfno_classOrInterfaceType - : annotation* Identifier typeArguments? - ; - -interfaceType - : classType - ; - -interfaceType_lf_classOrInterfaceType - : classType_lf_classOrInterfaceType - ; - -interfaceType_lfno_classOrInterfaceType - : classType_lfno_classOrInterfaceType - ; - -typeVariable - : annotation* Identifier - ; - -arrayType - : primitiveType dims - | classOrInterfaceType dims - | typeVariable dims - ; - -dims - : annotation* '[' ']' (annotation* '[' ']')* - ; - -typeParameter - : typeParameterModifier* Identifier typeBound? - ; - -typeParameterModifier - : annotation - ; - -typeBound - : 'extends' typeVariable - | 'extends' classOrInterfaceType additionalBound* - ; - -additionalBound - : '&' interfaceType - ; - -typeArguments - : '<' typeArgumentList '>' - ; - -typeArgumentList - : typeArgument (',' typeArgument)* - ; - -typeArgument - : referenceType - | wildcard - ; - -wildcard - : annotation* '?' wildcardBounds? - ; - -wildcardBounds - : 'extends' referenceType - | 'super' referenceType - ; - -/* - * Productions from §6 (Names) - */ - -packageName - : Identifier - | packageName '.' Identifier - ; - -typeName - : Identifier - | packageOrTypeName '.' Identifier - ; - -packageOrTypeName - : Identifier - | packageOrTypeName '.' Identifier - ; - -expressionName - : Identifier - | ambiguousName '.' Identifier - ; - -methodName - : Identifier - ; - -ambiguousName - : Identifier - | ambiguousName '.' Identifier - ; - -/* - * Productions from §7 (Packages) - */ - -compilationUnit - : packageDeclaration? importDeclaration* typeDeclaration* EOF - ; - -packageDeclaration - : packageModifier* 'package' packageName ';' - ; - -packageModifier - : annotation - ; - -importDeclaration - : singleTypeImportDeclaration - | typeImportOnDemandDeclaration - | singleStaticImportDeclaration - | staticImportOnDemandDeclaration - ; - -singleTypeImportDeclaration - : 'import' typeName ';' - ; - -typeImportOnDemandDeclaration - : 'import' packageOrTypeName '.' '*' ';' - ; - -singleStaticImportDeclaration - : 'import' 'static' typeName '.' Identifier ';' - ; - -staticImportOnDemandDeclaration - : 'import' 'static' typeName '.' '*' ';' - ; - -typeDeclaration - : classDeclaration - | interfaceDeclaration - | ';' - ; - -/* - * Productions from §8 (Classes) - */ - -classDeclaration - : normalClassDeclaration - | enumDeclaration - ; - -normalClassDeclaration - : classModifier* 'class' Identifier typeParameters? superclass? superinterfaces? classBody - ; - -classModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'final' - | 'strictfp' - ; - -typeParameters - : '<' typeParameterList '>' - ; - -typeParameterList - : typeParameter (',' typeParameter)* - ; - -superclass - : 'extends' classType - ; - -superinterfaces - : 'implements' interfaceTypeList - ; - -interfaceTypeList - : interfaceType (',' interfaceType)* - ; - -classBody - : '{' classBodyDeclaration* '}' - ; - -classBodyDeclaration - : classMemberDeclaration - | instanceInitializer - | staticInitializer - | constructorDeclaration - ; - -classMemberDeclaration - : fieldDeclaration - | methodDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -fieldDeclaration - : fieldModifier* unannType variableDeclaratorList ';' - ; - -fieldModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'static' - | 'final' - | 'transient' - | 'volatile' - ; - -variableDeclaratorList - : variableDeclarator (',' variableDeclarator)* - ; - -variableDeclarator - : variableDeclaratorId ('=' variableInitializer)? - ; - -variableDeclaratorId - : Identifier dims? - ; - -variableInitializer - : expression - | arrayInitializer - ; - -unannType - : unannPrimitiveType - | unannReferenceType - ; - -unannPrimitiveType - : numericType - | 'boolean' - ; - -unannReferenceType - : unannClassOrInterfaceType - | unannTypeVariable - | unannArrayType - ; - -unannClassOrInterfaceType - : ( unannClassType_lfno_unannClassOrInterfaceType - | unannInterfaceType_lfno_unannClassOrInterfaceType - ) - ( unannClassType_lf_unannClassOrInterfaceType - | unannInterfaceType_lf_unannClassOrInterfaceType - )* - ; - -unannClassType - : Identifier typeArguments? - | unannClassOrInterfaceType '.' annotation* Identifier typeArguments? - ; - -unannClassType_lf_unannClassOrInterfaceType - : '.' annotation* Identifier typeArguments? - ; - -unannClassType_lfno_unannClassOrInterfaceType - : Identifier typeArguments? - ; - -unannInterfaceType - : unannClassType - ; - -unannInterfaceType_lf_unannClassOrInterfaceType - : unannClassType_lf_unannClassOrInterfaceType - ; - -unannInterfaceType_lfno_unannClassOrInterfaceType - : unannClassType_lfno_unannClassOrInterfaceType - ; - -unannTypeVariable - : Identifier - ; - -unannArrayType - : unannPrimitiveType dims - | unannClassOrInterfaceType dims - | unannTypeVariable dims - ; - -methodDeclaration - : methodModifier* methodHeader methodBody - ; - -methodModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'final' - | 'synchronized' - | 'native' - | 'strictfp' - ; - -methodHeader - : result methodDeclarator throws_? - | typeParameters annotation* result methodDeclarator throws_? - ; - -result - : unannType - | 'void' - ; - -methodDeclarator - : Identifier '(' formalParameterList? ')' dims? - ; - -formalParameterList - : receiverParameter - | formalParameters ',' lastFormalParameter - | lastFormalParameter - ; - -formalParameters - : formalParameter (',' formalParameter)* - | receiverParameter (',' formalParameter)* - ; - -formalParameter - : variableModifier* unannType variableDeclaratorId - ; - -variableModifier - : annotation - | 'final' - ; - -lastFormalParameter - : variableModifier* unannType annotation* '...' variableDeclaratorId - | formalParameter - ; - -receiverParameter - : annotation* unannType (Identifier '.')? 'this' - ; - -throws_ - : 'throws' exceptionTypeList - ; - -exceptionTypeList - : exceptionType (',' exceptionType)* - ; - -exceptionType - : classType - | typeVariable - ; - -methodBody - : block - | ';' - ; - -instanceInitializer - : block - ; - -staticInitializer - : 'static' block - ; - -constructorDeclaration - : constructorModifier* constructorDeclarator throws_? constructorBody - ; - -constructorModifier - : annotation - | 'public' - | 'protected' - | 'private' - ; - -constructorDeclarator - : typeParameters? simpleTypeName '(' formalParameterList? ')' - ; - -simpleTypeName - : Identifier - ; - -constructorBody - : '{' explicitConstructorInvocation? blockStatements? '}' - ; - -explicitConstructorInvocation - : typeArguments? 'this' '(' argumentList? ')' ';' - | typeArguments? 'super' '(' argumentList? ')' ';' - | expressionName '.' typeArguments? 'super' '(' argumentList? ')' ';' - | primary '.' typeArguments? 'super' '(' argumentList? ')' ';' - ; - -enumDeclaration - : classModifier* 'enum' Identifier superinterfaces? enumBody - ; - -enumBody - : '{' enumConstantList? ','? enumBodyDeclarations? '}' - ; - -enumConstantList - : enumConstant (',' enumConstant)* - ; - -enumConstant - : enumConstantModifier* Identifier ('(' argumentList? ')')? classBody? - ; - -enumConstantModifier - : annotation - ; - -enumBodyDeclarations - : ';' classBodyDeclaration* - ; - -/* - * Productions from §9 (Interfaces) - */ - -interfaceDeclaration - : normalInterfaceDeclaration - | annotationTypeDeclaration - ; - -normalInterfaceDeclaration - : interfaceModifier* 'interface' Identifier typeParameters? extendsInterfaces? interfaceBody - ; - -interfaceModifier - : annotation - | 'public' - | 'protected' - | 'private' - | 'abstract' - | 'static' - | 'strictfp' - ; - -extendsInterfaces - : 'extends' interfaceTypeList - ; - -interfaceBody - : '{' interfaceMemberDeclaration* '}' - ; - -interfaceMemberDeclaration - : constantDeclaration - | interfaceMethodDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -constantDeclaration - : constantModifier* unannType variableDeclaratorList ';' - ; - -constantModifier - : annotation - | 'public' - | 'static' - | 'final' - ; - -interfaceMethodDeclaration - : interfaceMethodModifier* methodHeader methodBody - ; - -interfaceMethodModifier - : annotation - | 'public' - | 'abstract' - | 'default' - | 'static' - | 'strictfp' - ; - -annotationTypeDeclaration - : interfaceModifier* '@' 'interface' Identifier annotationTypeBody - ; - -annotationTypeBody - : '{' annotationTypeMemberDeclaration* '}' - ; - -annotationTypeMemberDeclaration - : annotationTypeElementDeclaration - | constantDeclaration - | classDeclaration - | interfaceDeclaration - | ';' - ; - -annotationTypeElementDeclaration - : annotationTypeElementModifier* unannType Identifier '(' ')' dims? defaultValue? ';' - ; - -annotationTypeElementModifier - : annotation - | 'public' - | 'abstract' - ; - -defaultValue - : 'default' elementValue - ; - -annotation - : normalAnnotation - | markerAnnotation - | singleElementAnnotation - ; - -normalAnnotation - : '@' typeName '(' elementValuePairList? ')' - ; - -elementValuePairList - : elementValuePair (',' elementValuePair)* - ; - -elementValuePair - : Identifier '=' elementValue - ; - -elementValue - : conditionalExpression - | elementValueArrayInitializer - | annotation - ; - -elementValueArrayInitializer - : '{' elementValueList? ','? '}' - ; - -elementValueList - : elementValue (',' elementValue)* - ; - -markerAnnotation - : '@' typeName - ; - -singleElementAnnotation - : '@' typeName '(' elementValue ')' - ; - -/* - * Productions from §10 (Arrays) - */ - -arrayInitializer - : '{' variableInitializerList? ','? '}' - ; - -variableInitializerList - : variableInitializer (',' variableInitializer)* - ; - -/* - * Productions from §14 (Blocks and Statements) - */ - -block - : '{' blockStatements? '}' - ; - -blockStatements - : blockStatement+ - ; - -blockStatement - : localVariableDeclarationStatement - | classDeclaration - | statement - ; - -localVariableDeclarationStatement - : localVariableDeclaration ';' - ; - -localVariableDeclaration - : variableModifier* unannType variableDeclaratorList - ; - -statement - : statementWithoutTrailingSubstatement - | labeledStatement - | ifThenStatement - | ifThenElseStatement - | whileStatement - | forStatement - ; - -statementNoShortIf - : statementWithoutTrailingSubstatement - | labeledStatementNoShortIf - | ifThenElseStatementNoShortIf - | whileStatementNoShortIf - | forStatementNoShortIf - ; - -statementWithoutTrailingSubstatement - : block - | emptyStatement - | expressionStatement - | assertStatement - | switchStatement - | doStatement - | breakStatement - | continueStatement - | returnStatement - | synchronizedStatement - | throwStatement - | tryStatement - ; - -emptyStatement - : ';' - ; - -labeledStatement - : Identifier ':' statement - ; - -labeledStatementNoShortIf - : Identifier ':' statementNoShortIf - ; - -expressionStatement - : statementExpression ';' - ; - -statementExpression - : assignment - | preIncrementExpression - | preDecrementExpression - | postIncrementExpression - | postDecrementExpression - | methodInvocation - | classInstanceCreationExpression - ; - -ifThenStatement - : 'if' '(' expression ')' statement - ; - -ifThenElseStatement - : 'if' '(' expression ')' statementNoShortIf 'else' statement - ; - -ifThenElseStatementNoShortIf - : 'if' '(' expression ')' statementNoShortIf 'else' statementNoShortIf - ; - -assertStatement - : 'assert' expression ';' - | 'assert' expression ':' expression ';' - ; - -switchStatement - : 'switch' '(' expression ')' switchBlock - ; - -switchBlock - : '{' switchBlockStatementGroup* switchLabel* '}' - ; - -switchBlockStatementGroup - : switchLabels blockStatements - ; - -switchLabels - : switchLabel switchLabel* - ; - -switchLabel - : 'case' constantExpression ':' - | 'case' enumConstantName ':' - | 'default' ':' - ; - -enumConstantName - : Identifier - ; - -whileStatement - : 'while' '(' expression ')' statement - ; - -whileStatementNoShortIf - : 'while' '(' expression ')' statementNoShortIf - ; - -doStatement - : 'do' statement 'while' '(' expression ')' ';' - ; - -forStatement - : basicForStatement - | enhancedForStatement - ; - -forStatementNoShortIf - : basicForStatementNoShortIf - | enhancedForStatementNoShortIf - ; - -basicForStatement - : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statement - ; - -basicForStatementNoShortIf - : 'for' '(' forInit? ';' expression? ';' forUpdate? ')' statementNoShortIf - ; - -forInit - : statementExpressionList - | localVariableDeclaration - ; - -forUpdate - : statementExpressionList - ; - -statementExpressionList - : statementExpression (',' statementExpression)* - ; - -enhancedForStatement - : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statement - ; - -enhancedForStatementNoShortIf - : 'for' '(' variableModifier* unannType variableDeclaratorId ':' expression ')' statementNoShortIf - ; - -breakStatement - : 'break' Identifier? ';' - ; - -continueStatement - : 'continue' Identifier? ';' - ; - -returnStatement - : 'return' expression? ';' - ; - -throwStatement - : 'throw' expression ';' - ; - -synchronizedStatement - : 'synchronized' '(' expression ')' block - ; - -tryStatement - : 'try' block catches - | 'try' block catches? finally_ - | tryWithResourcesStatement - ; - -catches - : catchClause catchClause* - ; - -catchClause - : 'catch' '(' catchFormalParameter ')' block - ; - -catchFormalParameter - : variableModifier* catchType variableDeclaratorId - ; - -catchType - : unannClassType ('|' classType)* - ; - -finally_ - : 'finally' block - ; - -tryWithResourcesStatement - : 'try' resourceSpecification block catches? finally_? - ; - -resourceSpecification - : '(' resourceList ';'? ')' - ; - -resourceList - : resource (';' resource)* - ; - -resource - : variableModifier* unannType variableDeclaratorId '=' expression - ; - -/* - * Productions from §15 (Expressions) - */ - -primary - : ( primaryNoNewArray_lfno_primary - | arrayCreationExpression - ) - ( primaryNoNewArray_lf_primary - )* - ; - -primaryNoNewArray - : literal - | typeName ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression - | fieldAccess - | arrayAccess - | methodInvocation - | methodReference - ; - -primaryNoNewArray_lf_arrayAccess - : - ; - -primaryNoNewArray_lfno_arrayAccess - : literal - | typeName ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression - | fieldAccess - | methodInvocation - | methodReference - ; - -primaryNoNewArray_lf_primary - : classInstanceCreationExpression_lf_primary - | fieldAccess_lf_primary - | arrayAccess_lf_primary - | methodInvocation_lf_primary - | methodReference_lf_primary - ; - -primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary - : - ; - -primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary - : classInstanceCreationExpression_lf_primary - | fieldAccess_lf_primary - | methodInvocation_lf_primary - | methodReference_lf_primary - ; - -primaryNoNewArray_lfno_primary - : literal - | typeName ('[' ']')* '.' 'class' - | unannPrimitiveType ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression_lfno_primary - | fieldAccess_lfno_primary - | arrayAccess_lfno_primary - | methodInvocation_lfno_primary - | methodReference_lfno_primary - ; - -primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary - : - ; - -primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary - : literal - | typeName ('[' ']')* '.' 'class' - | unannPrimitiveType ('[' ']')* '.' 'class' - | 'void' '.' 'class' - | 'this' - | typeName '.' 'this' - | '(' expression ')' - | classInstanceCreationExpression_lfno_primary - | fieldAccess_lfno_primary - | methodInvocation_lfno_primary - | methodReference_lfno_primary - ; - -classInstanceCreationExpression - : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | primary '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -classInstanceCreationExpression_lf_primary - : '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -classInstanceCreationExpression_lfno_primary - : 'new' typeArguments? annotation* Identifier ('.' annotation* Identifier)* typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody? - ; - -typeArgumentsOrDiamond - : typeArguments - | '<' '>' - ; - -fieldAccess - : primary '.' Identifier - | 'super' '.' Identifier - | typeName '.' 'super' '.' Identifier - ; - -fieldAccess_lf_primary - : '.' Identifier - ; - -fieldAccess_lfno_primary - : 'super' '.' Identifier - | typeName '.' 'super' '.' Identifier - ; - -arrayAccess - : ( expressionName '[' expression ']' - | primaryNoNewArray_lfno_arrayAccess '[' expression ']' - ) - ( primaryNoNewArray_lf_arrayAccess '[' expression ']' - )* - ; - -arrayAccess_lf_primary - : ( primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary '[' expression ']' - ) - ( primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary '[' expression ']' - )* - ; - -arrayAccess_lfno_primary - : ( expressionName '[' expression ']' - | primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary '[' expression ']' - ) - ( primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary '[' expression ']' - )* - ; - -methodInvocation - : methodName '(' argumentList? ')' - | typeName '.' typeArguments? Identifier '(' argumentList? ')' - | expressionName '.' typeArguments? Identifier '(' argumentList? ')' - | primary '.' typeArguments? Identifier '(' argumentList? ')' - | 'super' '.' typeArguments? Identifier '(' argumentList? ')' - | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' - ; - -methodInvocation_lf_primary - : '.' typeArguments? Identifier '(' argumentList? ')' - ; - -methodInvocation_lfno_primary - : methodName '(' argumentList? ')' - | typeName '.' typeArguments? Identifier '(' argumentList? ')' - | expressionName '.' typeArguments? Identifier '(' argumentList? ')' - | 'super' '.' typeArguments? Identifier '(' argumentList? ')' - | typeName '.' 'super' '.' typeArguments? Identifier '(' argumentList? ')' - ; - -argumentList - : expression (',' expression)* - ; - -methodReference - : expressionName '::' typeArguments? Identifier - | referenceType '::' typeArguments? Identifier - | primary '::' typeArguments? Identifier - | 'super' '::' typeArguments? Identifier - | typeName '.' 'super' '::' typeArguments? Identifier - | classType '::' typeArguments? 'new' - | arrayType '::' 'new' - ; - -methodReference_lf_primary - : '::' typeArguments? Identifier - ; - -methodReference_lfno_primary - : expressionName '::' typeArguments? Identifier - | referenceType '::' typeArguments? Identifier - | 'super' '::' typeArguments? Identifier - | typeName '.' 'super' '::' typeArguments? Identifier - | classType '::' typeArguments? 'new' - | arrayType '::' 'new' - ; - -arrayCreationExpression - : 'new' primitiveType dimExprs dims? - | 'new' classOrInterfaceType dimExprs dims? - | 'new' primitiveType dims arrayInitializer - | 'new' classOrInterfaceType dims arrayInitializer - ; - -dimExprs - : dimExpr dimExpr* - ; - -dimExpr - : annotation* '[' expression ']' - ; - -constantExpression - : expression - ; - -expression - : lambdaExpression - | assignmentExpression - ; - -lambdaExpression - : lambdaParameters '->' lambdaBody - ; - -lambdaParameters - : Identifier - | '(' formalParameterList? ')' - | '(' inferredFormalParameterList ')' - ; - -inferredFormalParameterList - : Identifier (',' Identifier)* - ; - -lambdaBody - : expression - | block - ; - -assignmentExpression - : conditionalExpression - | assignment - ; - -assignment - : leftHandSide assignmentOperator expression - ; - -leftHandSide - : expressionName - | fieldAccess - | arrayAccess - ; - -assignmentOperator - : '=' - | '*=' - | '/=' - | '%=' - | '+=' - | '-=' - | '<<=' - | '>>=' - | '>>>=' - | '&=' - | '^=' - | '|=' - ; - -conditionalExpression - : conditionalOrExpression - | conditionalOrExpression '?' expression ':' conditionalExpression - ; - -conditionalOrExpression - : conditionalAndExpression - | conditionalOrExpression '||' conditionalAndExpression - ; - -conditionalAndExpression - : inclusiveOrExpression - | conditionalAndExpression '&&' inclusiveOrExpression - ; - -inclusiveOrExpression - : exclusiveOrExpression - | inclusiveOrExpression '|' exclusiveOrExpression - ; - -exclusiveOrExpression - : andExpression - | exclusiveOrExpression '^' andExpression - ; - -andExpression - : equalityExpression - | andExpression '&' equalityExpression - ; - -equalityExpression - : relationalExpression - | equalityExpression '==' relationalExpression - | equalityExpression '!=' relationalExpression - ; - -relationalExpression - : shiftExpression - | relationalExpression '<' shiftExpression - | relationalExpression '>' shiftExpression - | relationalExpression '<=' shiftExpression - | relationalExpression '>=' shiftExpression - | relationalExpression 'instanceof' referenceType - ; - -shiftExpression - : additiveExpression - | shiftExpression '<' '<' additiveExpression - | shiftExpression '>' '>' additiveExpression - | shiftExpression '>' '>' '>' additiveExpression - ; - -additiveExpression - : multiplicativeExpression - | additiveExpression '+' multiplicativeExpression - | additiveExpression '-' multiplicativeExpression - ; - -multiplicativeExpression - : unaryExpression - | multiplicativeExpression '*' unaryExpression - | multiplicativeExpression '/' unaryExpression - | multiplicativeExpression '%' unaryExpression - ; - -unaryExpression - : preIncrementExpression - | preDecrementExpression - | '+' unaryExpression - | '-' unaryExpression - | unaryExpressionNotPlusMinus - ; - -preIncrementExpression - : '++' unaryExpression - ; - -preDecrementExpression - : '--' unaryExpression - ; - -unaryExpressionNotPlusMinus - : postfixExpression - | '~' unaryExpression - | '!' unaryExpression - | castExpression - ; - -postfixExpression - : ( primary - | expressionName - ) - ( postIncrementExpression_lf_postfixExpression - | postDecrementExpression_lf_postfixExpression - )* - ; - -postIncrementExpression - : postfixExpression '++' - ; - -postIncrementExpression_lf_postfixExpression - : '++' - ; - -postDecrementExpression - : postfixExpression '--' - ; - -postDecrementExpression_lf_postfixExpression - : '--' - ; - -castExpression - : '(' primitiveType ')' unaryExpression - | '(' referenceType additionalBound* ')' unaryExpressionNotPlusMinus - | '(' referenceType additionalBound* ')' lambdaExpression - ; diff --git a/jcommon/antlr/src/test/java/comxiaomi/data/push/test/Field.java b/jcommon/antlr/src/test/java/comxiaomi/data/push/test/Field.java new file mode 100644 index 000000000..a478063a3 --- /dev/null +++ b/jcommon/antlr/src/test/java/comxiaomi/data/push/test/Field.java @@ -0,0 +1,21 @@ +package comxiaomi.data.push.test; + +import lombok.Builder; +import lombok.Data; + +/** + * @author goodjava@qq.com + * @date 2024/2/1 18:11 + */ +@Data +@Builder +public class Field { + + public String k; + + public String v; + + public String type; + + +} diff --git a/jcommon/antlr/src/test/java/comxiaomi/data/push/test/GolangTest.java b/jcommon/antlr/src/test/java/comxiaomi/data/push/test/GolangTest.java new file mode 100644 index 000000000..3a95a443b --- /dev/null +++ b/jcommon/antlr/src/test/java/comxiaomi/data/push/test/GolangTest.java @@ -0,0 +1,192 @@ +package comxiaomi.data.push.test; + +import lombok.Builder; +import lombok.Data; +import lombok.SneakyThrows; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.tree.ParseTreeWalker; +import org.junit.Test; +import run.mone.antlr.golang.*; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author goodjava@qq.com + * @date 2024/1/29 16:28 + */ +public class GolangTest { + + @Data + @Builder + static class MI { + public String name; + public List paramList; + } + + + @SneakyThrows + @Test + public void test1() { + String code = new String(Files.readAllBytes(Paths.get("/Users/zhangzhiyong/GolandProjects/zzystudy/common/a.go"))); + GoLexer lexer = new GoLexer(new ANTLRInputStream(code)); + CommonTokenStream tokens = new CommonTokenStream(lexer); + GoParser parser = new GoParser(tokens); + + parser.addErrorListener(new BaseErrorListener() { + @Override + public void syntaxError(Recognizer recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { + System.out.println("line:" + line + " msg:" + msg); + } + }); + + ParseTree tree = parser.sourceFile(); + ParseTreeWalker walker = new ParseTreeWalker(); + + + List list = new ArrayList<>(); + + Map> map = new HashMap<>(); + + + GoParserListener listener = new GoParserBaseListener() { + + @Override + public void enterCompositeLit(GoParser.CompositeLitContext ctx) { + // 遍历所有的键值初始化 + for (GoParser.KeyedElementContext keyedElement : ctx.literalValue().elementList().keyedElement()) { + String key = keyedElement.key().getText(); + System.out.println("key:" + key + " value:" + keyedElement.element().getText()); + list.add(Field.builder().k(key).v(keyedElement.element().getText()).type("CompositeLit").build()); + } + } + + @Override + public void enterVarSpec(GoParser.VarSpecContext ctx) { + // 获取变量名 + String varName = ctx.identifierList().getText(); + // 获取变量的初始化值 + String varValue = ctx.expressionList().getText(); + list.add(Field.builder().k(varName).v(varValue).type("VarSpec").build()); + } + + + @Override + public void enterArguments(GoParser.ArgumentsContext ctx) { + int count = ctx.getChildCount(); + if (count == 3) { + list.add(Field.builder().k(ctx.getParent().getChild(0).getText()).v(ctx.getChild(1).getText()).type("method").build()); + } + } + + @Override + public void enterFunctionDecl(GoParser.FunctionDeclContext ctx) { + + //解析方法名和参数名 + List pList = ctx.signature().parameters().parameterDecl(); + List l2 = pList.stream().map(it -> { + return it.identifierList().IDENTIFIER().stream().map(it2 -> it2.getText()).collect(Collectors.joining(",")); + }).collect(Collectors.toList()); + + map.put(ctx.getChild(1).getText(),l2); + + // 获取函数体的起始和结束token + Token startToken = ctx.getStart(); + + // 获取方法体的起始token + Token openBraceToken = ctx.block().getStart(); + + // 获取原始的、格式化的函数文本 + int startIndex = startToken.getTokenIndex(); + int stopIndex = openBraceToken.getTokenIndex() - 1; + List t = tokens.getTokens(startIndex, stopIndex); + StringBuilder functionText = new StringBuilder(); + for (Token token : t) { + functionText.append(token.getText()); + } + + // 获取函数声明前的隐藏注释 + List hiddenTokens = tokens.getHiddenTokensToLeft(startIndex); + StringBuilder comments = new StringBuilder(); + if (hiddenTokens != null) { + for (Token hiddenToken : hiddenTokens) { + if (hiddenToken.getChannel() == Lexer.HIDDEN) { + comments.append(hiddenToken.getText()); + } + } + } + + + // 打印格式化的函数体 + System.out.println("Function content with formatting: \n" + comments + functionText.toString()); + } + + + @Override + public void enterMethodDecl(GoParser.MethodDeclContext ctx) { + // 检查是否是结构体的方法 + if (ctx.receiver() != null) { + + //解析方法名和参数名 + List pList = ctx.signature().parameters().parameterDecl(); + List l2 = pList.stream().map(it -> { + return it.identifierList().IDENTIFIER().stream().map(it2 -> it2.getText()).collect(Collectors.joining(",")); + }).collect(Collectors.toList()); + + //0 func 1 receiver 2 methodName + map.put(ctx.getChild(2).getText(),l2); + + + // 获取方法签名的起始token + Token startToken = ctx.getStart(); + // 获取方法体的起始token + Token openBraceToken = ctx.block().getStart(); + + // 获取原始的、格式化的方法签名文本 + int startIndex = startToken.getTokenIndex(); + int stopIndex = openBraceToken.getTokenIndex() - 1; // 方法体之前的最后一个token + + // 获取函数声明前的隐藏注释 + List hiddenTokens = tokens.getHiddenTokensToLeft(startIndex); + StringBuilder comments = new StringBuilder(); + if (hiddenTokens != null) { + for (Token hiddenToken : hiddenTokens) { + if (hiddenToken.getChannel() == Lexer.HIDDEN) { + comments.append(hiddenToken.getText()); + } + } + } + + + List tokens2 = tokens.getTokens(startIndex, stopIndex); + StringBuilder methodSignature = new StringBuilder(); + for (Token token : tokens2) { + methodSignature.append(token.getText()); + } + + // 打印格式化的方法签名 + System.out.println("Formatted Method Signature: \n" + comments + methodSignature.toString().trim()); + } + + } + }; + walker.walk(listener, tree); + System.out.println(list); + + System.out.println(map); + } + + + @SneakyThrows + @Test + public void test2() { + String code = new String(Files.readAllBytes(Paths.get("/tmp/test.go"))); + System.out.println(GoCode.methods(code)); + } +} diff --git a/jcommon/aop/pom.xml b/jcommon/aop/pom.xml index c092ac81c..d3bc774b7 100644 --- a/jcommon/aop/pom.xml +++ b/jcommon/aop/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT aop ${submodule-release.version} diff --git a/jcommon/api/pom.xml b/jcommon/api/pom.xml index bf4f6b090..76da99f6e 100644 --- a/jcommon/api/pom.xml +++ b/jcommon/api/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT api ${submodule-release.version} diff --git a/jcommon/buddy/buddy-common/pom.xml b/jcommon/buddy/buddy-common/pom.xml index 451f90bf9..faeb20d70 100644 --- a/jcommon/buddy/buddy-common/pom.xml +++ b/jcommon/buddy/buddy-common/pom.xml @@ -5,14 +5,15 @@ run.mone buddy - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT buddy-common + org.apache.maven.plugins maven-assembly-plugin - 2.6 + 3.1.0 assemble-all diff --git a/jcommon/buddy/buddy-demo/pom.xml b/jcommon/buddy/buddy-demo/pom.xml index 839b07aac..0a110bf6a 100644 --- a/jcommon/buddy/buddy-demo/pom.xml +++ b/jcommon/buddy/buddy-demo/pom.xml @@ -5,7 +5,7 @@ run.mone buddy - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT buddy-demo diff --git a/jcommon/buddy/pom.xml b/jcommon/buddy/pom.xml index bd3f53258..44cfac03e 100644 --- a/jcommon/buddy/pom.xml +++ b/jcommon/buddy/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT buddy pom diff --git a/jcommon/catPlugin/pom.xml b/jcommon/catPlugin/pom.xml index d9b750c94..2e7c9de39 100644 --- a/jcommon/catPlugin/pom.xml +++ b/jcommon/catPlugin/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT catPlugin diff --git a/jcommon/codecheck/pom.xml b/jcommon/codecheck/pom.xml index 76557ae59..6b10bcdcb 100644 --- a/jcommon/codecheck/pom.xml +++ b/jcommon/codecheck/pom.xml @@ -5,10 +5,10 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT codecheck - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT dom4j diff --git a/jcommon/codegen/pom.xml b/jcommon/codegen/pom.xml index 0498007e6..1ce33b9f6 100644 --- a/jcommon/codegen/pom.xml +++ b/jcommon/codegen/pom.xml @@ -5,10 +5,10 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT codegen - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT commons-io @@ -36,7 +36,7 @@ run.mone infra-result - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT thrift diff --git a/jcommon/coloregg/pom.xml b/jcommon/coloregg/pom.xml index 15b403202..02c37c381 100644 --- a/jcommon/coloregg/pom.xml +++ b/jcommon/coloregg/pom.xml @@ -5,8 +5,8 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT coloregg - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/common/pom.xml b/jcommon/common/pom.xml index 27475f709..f0943dcec 100644 --- a/jcommon/common/pom.xml +++ b/jcommon/common/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT common ${submodule-release.version} @@ -99,7 +99,7 @@ run.mone crypto - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT com.alibaba diff --git a/jcommon/cron/pom.xml b/jcommon/cron/pom.xml index 7e02112cf..763e72979 100644 --- a/jcommon/cron/pom.xml +++ b/jcommon/cron/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT cron diff --git a/jcommon/crypto/pom.xml b/jcommon/crypto/pom.xml index 83916430c..1d376221b 100644 --- a/jcommon/crypto/pom.xml +++ b/jcommon/crypto/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT crypto ${submodule-release.version} diff --git a/jcommon/dbLocking/pom.xml b/jcommon/dbLocking/pom.xml index 19ea79561..2a4df42ab 100644 --- a/jcommon/dbLocking/pom.xml +++ b/jcommon/dbLocking/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT dbLocking diff --git a/jcommon/df/pom.xml b/jcommon/df/pom.xml index 57745394a..9fe65e5fd 100644 --- a/jcommon/df/pom.xml +++ b/jcommon/df/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT df diff --git a/jcommon/disruptor/pom.xml b/jcommon/disruptor/pom.xml index 60cf2c326..db9bb51a3 100644 --- a/jcommon/disruptor/pom.xml +++ b/jcommon/disruptor/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone.disruptor disruptor diff --git a/jcommon/docean-plugin/docean-plugin-akka/pom.xml b/jcommon/docean-plugin/docean-plugin-akka/pom.xml index 21bac236e..d1908217b 100644 --- a/jcommon/docean-plugin/docean-plugin-akka/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-akka/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-akka diff --git a/jcommon/docean-plugin/docean-plugin-aop/pom.xml b/jcommon/docean-plugin/docean-plugin-aop/pom.xml index fe85d020a..e3eece607 100644 --- a/jcommon/docean-plugin/docean-plugin-aop/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-aop/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-aop diff --git a/jcommon/docean-plugin/docean-plugin-api/pom.xml b/jcommon/docean-plugin/docean-plugin-api/pom.xml index 1265b2c55..875ffaee1 100644 --- a/jcommon/docean-plugin/docean-plugin-api/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-api/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-api diff --git a/jcommon/docean-plugin/docean-plugin-cat/pom.xml b/jcommon/docean-plugin/docean-plugin-cat/pom.xml index 864c746c7..e131d9c05 100644 --- a/jcommon/docean-plugin/docean-plugin-cat/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-cat/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-cat diff --git a/jcommon/docean-plugin/docean-plugin-classloader/pom.xml b/jcommon/docean-plugin/docean-plugin-classloader/pom.xml index 411a9cf85..6583c4281 100644 --- a/jcommon/docean-plugin/docean-plugin-classloader/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-classloader/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-classloader diff --git a/jcommon/docean-plugin/docean-plugin-config/pom.xml b/jcommon/docean-plugin/docean-plugin-config/pom.xml index 9cafdbf64..6ff5ccfad 100644 --- a/jcommon/docean-plugin/docean-plugin-config/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-config/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-config diff --git a/jcommon/docean-plugin/docean-plugin-configuration/pom.xml b/jcommon/docean-plugin/docean-plugin-configuration/pom.xml index 46e3123ee..10dfb2a20 100644 --- a/jcommon/docean-plugin/docean-plugin-configuration/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-configuration/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-configuration diff --git a/jcommon/docean-plugin/docean-plugin-datasource-serverless/pom.xml b/jcommon/docean-plugin/docean-plugin-datasource-serverless/pom.xml index 4a8ca01cb..5579ea026 100644 --- a/jcommon/docean-plugin/docean-plugin-datasource-serverless/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-datasource-serverless/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-datasource-serverless diff --git a/jcommon/docean-plugin/docean-plugin-datasource/pom.xml b/jcommon/docean-plugin/docean-plugin-datasource/pom.xml index d32d6c478..0f55beb6a 100644 --- a/jcommon/docean-plugin/docean-plugin-datasource/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-datasource/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-datasource diff --git a/jcommon/docean-plugin/docean-plugin-db/pom.xml b/jcommon/docean-plugin/docean-plugin-db/pom.xml index 0cc6c0208..c62406050 100644 --- a/jcommon/docean-plugin/docean-plugin-db/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-db/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-db diff --git a/jcommon/docean-plugin/docean-plugin-dmesh/pom.xml b/jcommon/docean-plugin/docean-plugin-dmesh/pom.xml index 65af479de..46ea8ce01 100644 --- a/jcommon/docean-plugin/docean-plugin-dmesh/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-dmesh/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-dmesh diff --git a/jcommon/docean-plugin/docean-plugin-dubbo-serverless/pom.xml b/jcommon/docean-plugin/docean-plugin-dubbo-serverless/pom.xml index f4c157c54..c74b3ef80 100644 --- a/jcommon/docean-plugin/docean-plugin-dubbo-serverless/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-dubbo-serverless/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-dubbo-serverless diff --git a/jcommon/docean-plugin/docean-plugin-dubbo/pom.xml b/jcommon/docean-plugin/docean-plugin-dubbo/pom.xml index deca99cc3..e9ed42f1f 100644 --- a/jcommon/docean-plugin/docean-plugin-dubbo/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-dubbo/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-dubbo diff --git a/jcommon/docean-plugin/docean-plugin-es-antlr4/pom.xml b/jcommon/docean-plugin/docean-plugin-es-antlr4/pom.xml index 65328bf1d..2285a18b0 100644 --- a/jcommon/docean-plugin/docean-plugin-es-antlr4/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-es-antlr4/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-es-antlr4 diff --git a/jcommon/docean-plugin/docean-plugin-es/pom.xml b/jcommon/docean-plugin/docean-plugin-es/pom.xml index 43a811af4..d555b2ebd 100644 --- a/jcommon/docean-plugin/docean-plugin-es/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-es/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-es diff --git a/jcommon/docean-plugin/docean-plugin-etcd/pom.xml b/jcommon/docean-plugin/docean-plugin-etcd/pom.xml index b9987b84a..b64070e1f 100644 --- a/jcommon/docean-plugin/docean-plugin-etcd/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-etcd/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-etcd diff --git a/jcommon/docean-plugin/docean-plugin-grpc/pom.xml b/jcommon/docean-plugin/docean-plugin-grpc/pom.xml index 645a2f3bd..915be8543 100644 --- a/jcommon/docean-plugin/docean-plugin-grpc/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-grpc/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-grpc diff --git a/jcommon/docean-plugin/docean-plugin-http-server/pom.xml b/jcommon/docean-plugin/docean-plugin-http-server/pom.xml index feded2bfe..088e81ae0 100644 --- a/jcommon/docean-plugin/docean-plugin-http-server/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-http-server/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-http-server diff --git a/jcommon/docean-plugin/docean-plugin-http/pom.xml b/jcommon/docean-plugin/docean-plugin-http/pom.xml index bf3991b22..07bc4affb 100644 --- a/jcommon/docean-plugin/docean-plugin-http/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-http/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-http diff --git a/jcommon/docean-plugin/docean-plugin-influxdb/pom.xml b/jcommon/docean-plugin/docean-plugin-influxdb/pom.xml index 1ddc07d24..36ddbb7a4 100644 --- a/jcommon/docean-plugin/docean-plugin-influxdb/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-influxdb/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-influxdb diff --git a/jcommon/docean-plugin/docean-plugin-json/pom.xml b/jcommon/docean-plugin/docean-plugin-json/pom.xml index f5d5c6403..0eb496eb4 100644 --- a/jcommon/docean-plugin/docean-plugin-json/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-json/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-json diff --git a/jcommon/docean-plugin/docean-plugin-junit/pom.xml b/jcommon/docean-plugin/docean-plugin-junit/pom.xml index 01c552f66..b492598bb 100644 --- a/jcommon/docean-plugin/docean-plugin-junit/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-junit/pom.xml @@ -6,11 +6,11 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-junit - 1.5.0-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT 21 diff --git a/jcommon/docean-plugin/docean-plugin-k8s/pom.xml b/jcommon/docean-plugin/docean-plugin-k8s/pom.xml index 4cb47ef56..0be078fec 100644 --- a/jcommon/docean-plugin/docean-plugin-k8s/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-k8s/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-k8s 1.5.1-jdk21 diff --git a/jcommon/docean-plugin/docean-plugin-log/pom.xml b/jcommon/docean-plugin/docean-plugin-log/pom.xml index 830a9ca0f..57a087256 100644 --- a/jcommon/docean-plugin/docean-plugin-log/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-log/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-log diff --git a/jcommon/docean-plugin/docean-plugin-mesh-dubbo/pom.xml b/jcommon/docean-plugin/docean-plugin-mesh-dubbo/pom.xml index 7199e84d5..60cc8440c 100644 --- a/jcommon/docean-plugin/docean-plugin-mesh-dubbo/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-mesh-dubbo/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-mesh-dubbo diff --git a/jcommon/docean-plugin/docean-plugin-mongodb/pom.xml b/jcommon/docean-plugin/docean-plugin-mongodb/pom.xml index 0f685b7a4..9ad3566fe 100644 --- a/jcommon/docean-plugin/docean-plugin-mongodb/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-mongodb/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-mongodb @@ -21,7 +21,7 @@ run.mone catPlugin - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/docean-plugin/docean-plugin-mvc/pom.xml b/jcommon/docean-plugin/docean-plugin-mvc/pom.xml index e6ebc6621..63b7385bd 100644 --- a/jcommon/docean-plugin/docean-plugin-mvc/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-mvc/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-mvc diff --git a/jcommon/docean-plugin/docean-plugin-mybatis-plus/pom.xml b/jcommon/docean-plugin/docean-plugin-mybatis-plus/pom.xml index 153dc9652..df0879e20 100644 --- a/jcommon/docean-plugin/docean-plugin-mybatis-plus/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-mybatis-plus/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-mybatis-plus @@ -20,7 +20,7 @@ run.mone docean-plugin-cat - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone diff --git a/jcommon/docean-plugin/docean-plugin-mybatis/pom.xml b/jcommon/docean-plugin/docean-plugin-mybatis/pom.xml index c3266e67e..2fb7996b6 100644 --- a/jcommon/docean-plugin/docean-plugin-mybatis/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-mybatis/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-mybatis @@ -23,7 +23,7 @@ run.mone docean-plugin-cat - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone diff --git a/jcommon/docean-plugin/docean-plugin-nacos/pom.xml b/jcommon/docean-plugin/docean-plugin-nacos/pom.xml index 4d0ee966e..1fd7f45e0 100644 --- a/jcommon/docean-plugin/docean-plugin-nacos/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-nacos/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-nacos diff --git a/jcommon/docean-plugin/docean-plugin-redis/pom.xml b/jcommon/docean-plugin/docean-plugin-redis/pom.xml index 860842f3f..662c8d210 100644 --- a/jcommon/docean-plugin/docean-plugin-redis/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-redis/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-redis diff --git a/jcommon/docean-plugin/docean-plugin-rocketmq/pom.xml b/jcommon/docean-plugin/docean-plugin-rocketmq/pom.xml index d7209dfd7..77e7b5b14 100644 --- a/jcommon/docean-plugin/docean-plugin-rocketmq/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-rocketmq/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-rocketmq diff --git a/jcommon/docean-plugin/docean-plugin-rpc/pom.xml b/jcommon/docean-plugin/docean-plugin-rpc/pom.xml index 75018e959..be3a84f9c 100644 --- a/jcommon/docean-plugin/docean-plugin-rpc/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-rpc/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-rpc diff --git a/jcommon/docean-plugin/docean-plugin-sentinel/pom.xml b/jcommon/docean-plugin/docean-plugin-sentinel/pom.xml index 6f424278c..0c9746a5f 100644 --- a/jcommon/docean-plugin/docean-plugin-sentinel/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-sentinel/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-sentinel diff --git a/jcommon/docean-plugin/docean-plugin-shardingSphere/pom.xml b/jcommon/docean-plugin/docean-plugin-shardingSphere/pom.xml index 6c6294a63..cb6f2700c 100644 --- a/jcommon/docean-plugin/docean-plugin-shardingSphere/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-shardingSphere/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-shardingSphere diff --git a/jcommon/docean-plugin/docean-plugin-sidecar/pom.xml b/jcommon/docean-plugin/docean-plugin-sidecar/pom.xml index 973de28a5..54a7fdec3 100644 --- a/jcommon/docean-plugin/docean-plugin-sidecar/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-sidecar/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT ../../pom.xml docean-plugin-sidecar @@ -17,7 +17,7 @@ run.mone docean-plugin-config - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone @@ -27,7 +27,7 @@ run.mone grpc - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT api @@ -38,7 +38,7 @@ run.mone infra-result - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT provided diff --git a/jcommon/docean-plugin/docean-plugin-spring/pom.xml b/jcommon/docean-plugin/docean-plugin-spring/pom.xml index ee5daa36a..161a280c4 100644 --- a/jcommon/docean-plugin/docean-plugin-spring/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-spring/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-spring diff --git a/jcommon/docean-plugin/docean-plugin-sql/pom.xml b/jcommon/docean-plugin/docean-plugin-sql/pom.xml index 15c13ca3f..2eaf478fb 100644 --- a/jcommon/docean-plugin/docean-plugin-sql/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-sql/pom.xml @@ -5,7 +5,7 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-sql diff --git a/jcommon/docean-plugin/docean-plugin-storage/pom.xml b/jcommon/docean-plugin/docean-plugin-storage/pom.xml index 3fa076b59..19f33a21a 100644 --- a/jcommon/docean-plugin/docean-plugin-storage/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-storage/pom.xml @@ -6,11 +6,11 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-storage - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT pom storage-doris diff --git a/jcommon/docean-plugin/docean-plugin-storage/storage-doris/pom.xml b/jcommon/docean-plugin/docean-plugin-storage/storage-doris/pom.xml index fb1a3c8c5..694e52a36 100644 --- a/jcommon/docean-plugin/docean-plugin-storage/storage-doris/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-storage/storage-doris/pom.xml @@ -6,7 +6,7 @@ run.mone docean-plugin-storage - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT storage-doris diff --git a/jcommon/docean-plugin/docean-plugin-test/pom.xml b/jcommon/docean-plugin/docean-plugin-test/pom.xml index 3d91dddba..6c374f7f4 100644 --- a/jcommon/docean-plugin/docean-plugin-test/pom.xml +++ b/jcommon/docean-plugin/docean-plugin-test/pom.xml @@ -5,14 +5,14 @@ run.mone docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT docean-plugin-test run.mone docean - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT org.msgpack @@ -34,7 +34,7 @@ run.mone docean-plugin-spring - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone @@ -43,7 +43,7 @@ run.mone docean-plugin-dubbo - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone @@ -52,37 +52,37 @@ run.mone docean-plugin-http - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-rocketmq - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-sql - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-aop - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-json - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-redis - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-mybatis - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone @@ -91,27 +91,27 @@ run.mone docean-plugin-log - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-mvc - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-dmesh - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-sidecar - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone docean-plugin-http-server - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/docean-plugin/pom.xml b/jcommon/docean-plugin/pom.xml index e51c2668e..da7636cce 100644 --- a/jcommon/docean-plugin/pom.xml +++ b/jcommon/docean-plugin/pom.xml @@ -6,14 +6,14 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT docean-plugin - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT pom - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT @@ -60,7 +60,7 @@ run.mone docean - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT @@ -69,27 +69,27 @@ run.mone docean - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone http - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone common - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone rpc - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone infra-result - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/docean-spring-starter/pom.xml b/jcommon/docean-spring-starter/pom.xml index f16f479bc..9d395dd15 100644 --- a/jcommon/docean-spring-starter/pom.xml +++ b/jcommon/docean-spring-starter/pom.xml @@ -6,9 +6,9 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT docean-spring-starter @@ -32,7 +32,7 @@ run.mone docean - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT provided diff --git a/jcommon/docean/pom.xml b/jcommon/docean/pom.xml index af119859a..a69a6d573 100644 --- a/jcommon/docean/pom.xml +++ b/jcommon/docean/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT docean ${submodule-release.version} @@ -16,8 +16,8 @@ run.mone easy - 1.4-jdk21-SNAPSHOT - + 1.6.0-jdk21-SNAPSHOT + cglib diff --git a/jcommon/docker/pom.xml b/jcommon/docker/pom.xml index 03b0c6894..38da44f8f 100644 --- a/jcommon/docker/pom.xml +++ b/jcommon/docker/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT docker 1.6-jdk20-SNAPSHOT diff --git a/jcommon/easy/pom.xml b/jcommon/easy/pom.xml index eac680ddc..1aa4c41d8 100644 --- a/jcommon/easy/pom.xml +++ b/jcommon/easy/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT easy ${submodule-release.version} diff --git a/jcommon/es/pom.xml b/jcommon/es/pom.xml index c3a69291f..8312ca347 100644 --- a/jcommon/es/pom.xml +++ b/jcommon/es/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT es 1.5-jdk21-SNAPSHOT diff --git a/jcommon/es/src/main/java/com/xiaomi/mone/es/EsClient.java b/jcommon/es/src/main/java/com/xiaomi/mone/es/EsClient.java index 9aad4501d..f557c4d83 100644 --- a/jcommon/es/src/main/java/com/xiaomi/mone/es/EsClient.java +++ b/jcommon/es/src/main/java/com/xiaomi/mone/es/EsClient.java @@ -4,7 +4,6 @@ import org.apache.http.Header; import org.apache.http.HttpHost; import org.apache.http.client.config.RequestConfig; -import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.apache.http.impl.nio.reactor.IOReactorConfig; import org.apache.http.message.BasicHeader; import org.elasticsearch.action.ActionListener; @@ -26,12 +25,14 @@ import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; -import org.elasticsearch.client.*; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestClientBuilder; +import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.core.CountRequest; import org.elasticsearch.client.core.CountResponse; import org.elasticsearch.client.indices.*; import org.elasticsearch.client.sniff.ElasticsearchNodesSniffer; -import org.elasticsearch.client.sniff.NodesSniffer; import org.elasticsearch.client.sniff.SniffOnFailureListener; import org.elasticsearch.client.sniff.Sniffer; import org.elasticsearch.common.unit.TimeValue; @@ -56,182 +57,151 @@ */ public class EsClient { - private static RestClientBuilder restClientBuilder; private static Sniffer sniffer; - private static final int TIME_OUT = 10 * 60 * 1000; private static final int SNIFF_INTERVAL_MILLIS = 30 * 1000; private static final int SNIFF_AFTER_FAILURE_DELAY_MILLIS = 30 * 1000; + private static final int MAX_CONN_PER_ROUTE = 500; + private static final int MAX_CONN_TOTAL = 500; + private static final int SOCKET_TIMEOUT_MS = 10 * 60 * 1000; + private static final int CONNECTION_REQUEST_TIMEOUT_MS = 5000 * 1000; + private static final int CONNECT_TIMEOUT_MS = 5000 * 1000; + private static final long KEEP_ALIVE_DURATION_MS = TimeUnit.MINUTES.toMillis(2); private RestHighLevelClient client; private RestClient restClient; -// public EsClient(String esAddr, String user, String pwd) { -// final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); -// credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, pwd)); -// RestClientBuilder builder = RestClient.builder(new HttpHost(esAddr.split(":")[0], Integer.valueOf(esAddr.split(":")[1]), "http")) -// .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { -// @Override -// public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) { -// return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider); -// } -// }).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() { -// // 该方法接收一个RequestConfig.Builder对象,对该对象进行修改后然后返回。 -// @Override -// public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) { -// return builder.setConnectTimeout(5000 * 1000) // 连接超时(默认为1秒) -// .setSocketTimeout(6000 * 1000);// 套接字超时(默认为30秒)//更改客户端的超时限制默认30秒现在改为100*1000分钟 -// } -// });// 调整最大重试超时时间(默认为30秒).setMaxRetryTimeoutMillis(60000) -// this.client = new RestHighLevelClient(builder); -// -// } + public static boolean startedSniffer = true; + + private SniffOnFailureListener sniffOnFailureListener = new SniffOnFailureListener(); public EsClient(String esAddr, String token, String catalog, String database) { - Header[] defaultHeaders = new Header[]{ + validateParams(esAddr, token, catalog, database); + + Header[] defaultHeaders = createDefaultHeaders(token, catalog, database); + + RestClientBuilder builder = createRestClientBuilder(esAddr, defaultHeaders); + + initializeHighLevelClient(builder); + + initializeSnifferIfNeeded(); + } + + private void validateParams(String esAddr, String token, String catalog, String database) { + if (esAddr == null || esAddr.isEmpty() || token == null || token.isEmpty() || catalog == null || catalog.isEmpty() || database == null || database.isEmpty()) { + throw new IllegalArgumentException("Invalid parameters provided"); + } + } + + private Header[] createDefaultHeaders(String token, String catalog, String database) { + return new Header[]{ new BasicHeader("Authorization", token), new BasicHeader("catalog", catalog), new BasicHeader("database", database) }; + } + + private void initializeSnifferIfNeeded() { + if (startedSniffer) { + initializeSniffer(); + } + } + + private RestClientBuilder createRestClientBuilder(String esAddr, Header[] defaultHeaders) { + String[] esAddrParts = esAddr.split(":"); + if (esAddrParts.length != 2) { + throw new IllegalArgumentException("Invalid Elasticsearch address"); + } + + String host = esAddrParts[0]; + int port = Integer.parseInt(esAddrParts[1]); - RestClientBuilder builder = RestClient.builder(new HttpHost(esAddr.split(":")[0], Integer.parseInt(esAddr.split(":")[1]), "http")) + return RestClient.builder(new HttpHost(host, port, "http")) .setDefaultHeaders(defaultHeaders) - .setHttpClientConfigCallback(x -> x.setMaxConnPerRoute(500) - .setMaxConnTotal(500) - .setDefaultRequestConfig(RequestConfig.custom().setSocketTimeout(10 * 60 * 1000) - .setConnectionRequestTimeout(5000 * 1000) - .setConnectTimeout(5000 * 1000) + .setFailureListener(sniffOnFailureListener) + .setHttpClientConfigCallback(x -> x.setMaxConnPerRoute(MAX_CONN_PER_ROUTE) + .setMaxConnTotal(MAX_CONN_TOTAL) + .setDefaultRequestConfig(RequestConfig.custom() + .setSocketTimeout(SOCKET_TIMEOUT_MS) + .setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT_MS) + .setConnectTimeout(CONNECT_TIMEOUT_MS) .build()) - .setKeepAliveStrategy((response, context) -> TimeUnit.MINUTES.toMillis(2)) + .setKeepAliveStrategy((response, context) -> KEEP_ALIVE_DURATION_MS) .setDefaultIOReactorConfig(IOReactorConfig.custom().setSoKeepAlive(true).build())); - this.client = new RestHighLevelClient(builder); } + public EsClient(String esAddr, String user, String pwd) { + validateParams(esAddr, user, pwd); + + List hosts = createHttpHosts(esAddr); + + Header[] headers = createHeaders(user, pwd); + RestClientBuilder clientBuilder = createRestClientBuilder(hosts, headers); + + initializeHighLevelClient(clientBuilder); + + initializeSnifferIfNeeded(); + } + + private void validateParams(String esAddr, String user, String pwd) { + if (esAddr == null || esAddr.isEmpty() || user == null || user.isEmpty() || pwd == null || pwd.isEmpty()) { + throw new IllegalArgumentException("Invalid parameters provided"); + } + } + + private List createHttpHosts(String esAddr) { String[] addrs = esAddr.split(","); List hosts = new ArrayList<>(); for (String addr : addrs) { String[] hostAndPort = addr.split(":"); + String host = hostAndPort[0]; int port = Integer.parseInt(hostAndPort[1]); - HttpHost host = new HttpHost(hostAndPort[0], port); - hosts.add(host); + hosts.add(new HttpHost(host, port)); } + return hosts; + } + private Header[] createHeaders(String user, String pwd) { String urlEncodePassword = new String(Base64.getUrlEncoder().encode(String.format("%s:%s", user, pwd).getBytes())); String basicAuth = String.format("Basic %s", urlEncodePassword); - Header[] headers = new Header[]{new BasicHeader("Authorization", basicAuth), new BasicHeader("Content-Type", "application/json")}; + return new Header[]{new BasicHeader("Authorization", basicAuth), new BasicHeader("Content-Type", "application/json")}; + } - RestClientBuilder clientBuilder = RestClient.builder(hosts.toArray(new HttpHost[0])) + private RestClientBuilder createRestClientBuilder(List hosts, Header[] headers) { + return RestClient.builder(hosts.toArray(new HttpHost[0])) .setDefaultHeaders(headers) - .setHttpClientConfigCallback(x -> x.setMaxConnPerRoute(500) - .setMaxConnTotal(500) - .setDefaultRequestConfig(RequestConfig.custom().setSocketTimeout(10 * 60 * 1000) - .setConnectionRequestTimeout(5000 * 1000) - .setConnectTimeout(5000 * 1000).build()) - .setKeepAliveStrategy((response, context) -> TimeUnit.MINUTES.toMillis(2)) + .setFailureListener(sniffOnFailureListener) + .setFailureListener(sniffOnFailureListener) + .setHttpClientConfigCallback(x -> x.setMaxConnPerRoute(MAX_CONN_PER_ROUTE) + .setMaxConnTotal(MAX_CONN_TOTAL) + .setDefaultRequestConfig(RequestConfig.custom() + .setSocketTimeout(SOCKET_TIMEOUT_MS) + .setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT_MS) + .setConnectTimeout(CONNECT_TIMEOUT_MS) + .build()) + .setKeepAliveStrategy((response, context) -> KEEP_ALIVE_DURATION_MS) .setDefaultIOReactorConfig(IOReactorConfig.custom().setSoKeepAlive(true).build())); - this.client = new RestHighLevelClient(clientBuilder); - } - public EsClient(List restAddress, int httpPort, String username, String password, int timeOut, int snifferIntervalMillis, int snifferAfterFailDelayMillis) throws IOException { - snifferNodeInit(restAddress, httpPort, username, password, timeOut, snifferIntervalMillis, snifferAfterFailDelayMillis); - } - - public EsClient(List restAddress, int httpPort, String username, String password) throws IOException { - snifferNodeInit(restAddress, httpPort, username, password, TIME_OUT, SNIFF_INTERVAL_MILLIS, SNIFF_AFTER_FAILURE_DELAY_MILLIS); + private void initializeHighLevelClient(RestClientBuilder clientBuilder) { + this.client = new RestHighLevelClient(clientBuilder); + this.restClient = client.getLowLevelClient(); } - private void snifferNodeInit(List restAddress, int httpPort, String username, String password, int timeOut, int snifferIntervalMillis, int snifferAfterFailDelayMillis) throws IOException { - - - HttpHost[] hosts = new HttpHost[restAddress.size()]; - for (int index = 0; index < restAddress.size(); index++) { - hosts[index] = new HttpHost(restAddress.get(index), httpPort, "http"); - } - - RestClientBuilder.RequestConfigCallback requestConfigCallback = new RestClientBuilder.RequestConfigCallback() { - @Override - public RequestConfig.Builder customizeRequestConfig( - RequestConfig.Builder requestConfigBuilder) { - return requestConfigBuilder - .setConnectTimeout(timeOut) - .setSocketTimeout(timeOut); - } - }; - - RestClientBuilder.HttpClientConfigCallback httpClientConfigCallback = new RestClientBuilder.HttpClientConfigCallback() { - @Override - public HttpAsyncClientBuilder customizeHttpClient( - HttpAsyncClientBuilder httpClientBuilder) { - RequestConfig.Builder requestConfigBuilder = RequestConfig.custom() - .setConnectTimeout(timeOut) - .setSocketTimeout(timeOut) - .setConnectionRequestTimeout(timeOut); - httpClientBuilder.setDefaultRequestConfig(requestConfigBuilder.build()); - return httpClientBuilder; - } - }; - - SniffOnFailureListener sniffOnFailureListener = new SniffOnFailureListener(); - if (username != null && password != null) { - String token = "Basic " + new String(Base64.getUrlEncoder().encode((username + ":" + password).getBytes())); - Header[] tokenHeader = new Header[]{new BasicHeader("Authorization", token)}; - restClientBuilder = RestClient.builder(hosts).setNodeSelector(SKIP_DEDICATED_NODES) - .setFailureListener(sniffOnFailureListener) - .setHttpClientConfigCallback(httpClientConfigCallback) - .setRequestConfigCallback(requestConfigCallback) - .setDefaultHeaders(tokenHeader); - } else { - restClientBuilder = RestClient.builder(hosts).setNodeSelector(SKIP_DEDICATED_NODES) - .setFailureListener(sniffOnFailureListener) - .setRequestConfigCallback(requestConfigCallback) - .setHttpClientConfigCallback(httpClientConfigCallback); - } - - client = new RestHighLevelClient(restClientBuilder); - restClient = client.getLowLevelClient(); - - NodesSniffer elasticsearchNodesSniffer = new ElasticsearchNodesSniffer( - restClient, - TimeUnit.SECONDS.toMillis(5), - ElasticsearchNodesSniffer.Scheme.HTTP); - - // important + private void initializeSniffer() { sniffer = Sniffer.builder(restClient) - .setSniffIntervalMillis(snifferIntervalMillis) - .setSniffAfterFailureDelayMillis(snifferAfterFailDelayMillis) - .setNodesSniffer(elasticsearchNodesSniffer) + .setSniffIntervalMillis(SNIFF_INTERVAL_MILLIS) + .setSniffAfterFailureDelayMillis(SNIFF_AFTER_FAILURE_DELAY_MILLIS) + .setNodesSniffer(new ElasticsearchNodesSniffer( + restClient, + TimeUnit.SECONDS.toMillis(5), + ElasticsearchNodesSniffer.Scheme.HTTP)) .build(); sniffOnFailureListener.setSniffer(sniffer); } - // important - private NodeSelector SKIP_DEDICATED_NODES = new NodeSelector() { - @Override - public void select(Iterable nodes) { - for (Iterator itr = nodes.iterator(); itr.hasNext(); ) { - Node node = itr.next(); - if (node.getRoles() == null) continue; - if ((node.getRoles().isMasterEligible() - && false == node.getRoles().isData() - && false == node.getRoles().isIngest()) - || - (node.getAttributes().containsKey("node_type") - && node.getAttributes().get("node_type").contains("client") - && false == node.getRoles().isData())) { - itr.remove(); - } - } - } - - @Override - public String toString() { - return "SKIP_DEDICATED_NODES"; - } - }; - public SearchResponse search(SearchRequest searchRequest) throws IOException { SearchResponse res = this.client.search(searchRequest, RequestOptions.DEFAULT); return res; @@ -407,7 +377,7 @@ public EsRet dateHistogram(String indexName, String field, String interval, long .extendedBounds(new LongBounds(startTime, endTime));//统计范围 SearchRequest searchRequest = new SearchRequest(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); - searchSourceBuilder.query(builder).aggregation(aggregationBuilder).size(0).timeout(TimeValue.timeValueSeconds(10l)); + searchSourceBuilder.query(builder).aggregation(aggregationBuilder).size(0).timeout(TimeValue.timeValueSeconds(10L)); searchRequest.source(searchSourceBuilder); searchRequest.indices(indexName); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); diff --git a/jcommon/event/pom.xml b/jcommon/event/pom.xml index d72927f1a..901cabb41 100644 --- a/jcommon/event/pom.xml +++ b/jcommon/event/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT event diff --git a/jcommon/excel/pom.xml b/jcommon/excel/pom.xml index 891e02058..2a27c6260 100644 --- a/jcommon/excel/pom.xml +++ b/jcommon/excel/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT excel ${submodule-release.version} diff --git a/jcommon/feishu/pom.xml b/jcommon/feishu/pom.xml index 4623d8cec..f9aeb99e6 100644 --- a/jcommon/feishu/pom.xml +++ b/jcommon/feishu/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT feishu ${submodule-release.version} diff --git a/jcommon/file/pom.xml b/jcommon/file/pom.xml index ee1a2bb1e..27fbe0d7c 100644 --- a/jcommon/file/pom.xml +++ b/jcommon/file/pom.xml @@ -6,7 +6,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT file ${submodule-release.version} diff --git a/jcommon/geth/pom.xml b/jcommon/geth/pom.xml index 0255dbb3f..7e2780dfe 100644 --- a/jcommon/geth/pom.xml +++ b/jcommon/geth/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT geth diff --git a/jcommon/gitlab/pom.xml b/jcommon/gitlab/pom.xml index bce9b2f75..5c7147227 100644 --- a/jcommon/gitlab/pom.xml +++ b/jcommon/gitlab/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT gitlab 1.6.1-jdk21-SNAPSHOT diff --git a/jcommon/gitlab/src/main/java/com/xiaomi/youpin/gitlab/bo/GitTreeItem.java b/jcommon/gitlab/src/main/java/com/xiaomi/youpin/gitlab/bo/GitTreeItem.java new file mode 100644 index 000000000..ff872105f --- /dev/null +++ b/jcommon/gitlab/src/main/java/com/xiaomi/youpin/gitlab/bo/GitTreeItem.java @@ -0,0 +1,42 @@ +/* + * Copyright 2020 Xiaomi + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.xiaomi.youpin.gitlab.bo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author shanwb + * @date 2024-02-27 + */ +@Data +public class GitTreeItem implements Serializable { + private static final long serialVersionUID = 1L; + + private String id; + + private String parentId; + + private String mode; + + private String name; + + private String path; + + private String type; +} diff --git a/jcommon/gitlab/src/test/java/com/xiaomi/youpin/gitlab/GitlabTest.java b/jcommon/gitlab/src/test/java/com/xiaomi/youpin/gitlab/GitlabTest.java index d24b74de6..4a1ae45d9 100644 --- a/jcommon/gitlab/src/test/java/com/xiaomi/youpin/gitlab/GitlabTest.java +++ b/jcommon/gitlab/src/test/java/com/xiaomi/youpin/gitlab/GitlabTest.java @@ -1,9 +1,11 @@ package com.xiaomi.youpin.gitlab; +import com.google.gson.Gson; import com.xiaomi.youpin.gitlab.bo.*; import org.junit.Test; import java.util.Arrays; +import java.util.List; /** * @Author wmin @@ -130,5 +132,16 @@ public void getProjectCode() { gitlab.getDomainByIP("https://xxx.com","xx","", Arrays.asList("127.0.0.1"),"token"); } + @Test + public void getFileContentTest() { + String content = gitlab.getFileContent("master", "git.xxx.com", "", "83504", "file path"); + System.out.println(content); + } + + @Test + public void getProjectStructureTreeTest() { + List treeItemList = gitlab.getProjectStructureTree("master", "git.xxx.com", "", "83504"); + System.out.println(new Gson().toJson(treeItemList)); + } } diff --git a/jcommon/graalvm/pom.xml b/jcommon/graalvm/pom.xml index b45ff469b..84d8e4eaa 100644 --- a/jcommon/graalvm/pom.xml +++ b/jcommon/graalvm/pom.xml @@ -4,7 +4,7 @@ 4.0.0 run.mone graalvm - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/grpc/pom.xml b/jcommon/grpc/pom.xml index 282275f55..69f6fb619 100644 --- a/jcommon/grpc/pom.xml +++ b/jcommon/grpc/pom.xml @@ -5,10 +5,10 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT grpc - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT javax.annotation diff --git a/jcommon/health/pom.xml b/jcommon/health/pom.xml index f65eea2dc..af6c9da68 100644 --- a/jcommon/health/pom.xml +++ b/jcommon/health/pom.xml @@ -5,10 +5,10 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT health - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone @@ -35,7 +35,7 @@ run.mone aop - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/hera/hera-trace/pom.xml b/jcommon/hera/hera-trace/pom.xml index b5fb4e6eb..fa68a6a1f 100644 --- a/jcommon/hera/hera-trace/pom.xml +++ b/jcommon/hera/hera-trace/pom.xml @@ -5,8 +5,8 @@ run.mone hera - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT hera-trace - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/hera/pom.xml b/jcommon/hera/pom.xml index 9aba37a4e..7717eb701 100644 --- a/jcommon/hera/pom.xml +++ b/jcommon/hera/pom.xml @@ -5,10 +5,10 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT hera - ${submodule-release.version} + pom hera-trace diff --git a/jcommon/http/pom.xml b/jcommon/http/pom.xml index 4524eb7e3..bd59e0131 100644 --- a/jcommon/http/pom.xml +++ b/jcommon/http/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT http ${submodule-release.version} diff --git a/jcommon/infra-common/pom.xml b/jcommon/infra-common/pom.xml index 703b66b7f..cf5a007ef 100644 --- a/jcommon/infra-common/pom.xml +++ b/jcommon/infra-common/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT infra-common ${submodule-release.version} diff --git a/jcommon/infra-result/pom.xml b/jcommon/infra-result/pom.xml index f4bf878ec..6de0e0b25 100644 --- a/jcommon/infra-result/pom.xml +++ b/jcommon/infra-result/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT infra-result ${submodule-release.version} diff --git a/jcommon/jmonitor/pom.xml b/jcommon/jmonitor/pom.xml index 0ed4db608..a75f180ff 100644 --- a/jcommon/jmonitor/pom.xml +++ b/jcommon/jmonitor/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT jmonitor diff --git a/jcommon/k8s/pom.xml b/jcommon/k8s/pom.xml index bf82263ec..4fdcf59d5 100644 --- a/jcommon/k8s/pom.xml +++ b/jcommon/k8s/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT k8s diff --git a/jcommon/ks3/pom.xml b/jcommon/ks3/pom.xml index efb33c588..ef593ca58 100644 --- a/jcommon/ks3/pom.xml +++ b/jcommon/ks3/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT ks3 @@ -29,7 +29,7 @@ run.mone http - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/log/pom.xml b/jcommon/log/pom.xml index b5a3fafe5..0a5aba40b 100644 --- a/jcommon/log/pom.xml +++ b/jcommon/log/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT log 1.7-jdk21 diff --git a/jcommon/match/pom.xml b/jcommon/match/pom.xml index 7d422d40a..676550cfa 100644 --- a/jcommon/match/pom.xml +++ b/jcommon/match/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT match diff --git a/jcommon/micloud/pom.xml b/jcommon/micloud/pom.xml index bb446ca5f..348286e08 100644 --- a/jcommon/micloud/pom.xml +++ b/jcommon/micloud/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT micloud 1.4.1-jdk20-SNAPSHOT @@ -13,7 +13,7 @@ run.mone http - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT com.fasterxml.jackson.core diff --git a/jcommon/mistarter/pom.xml b/jcommon/mistarter/pom.xml index e77db26a0..55d4f8994 100644 --- a/jcommon/mistarter/pom.xml +++ b/jcommon/mistarter/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT mistarter 1.6-jdk21-SNAPSHOT @@ -13,7 +13,7 @@ run.mone aop - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT org.springframework.boot @@ -24,7 +24,7 @@ run.mone health - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone diff --git a/jcommon/monespring/pom.xml b/jcommon/monespring/pom.xml index 54868ed05..46d278201 100644 --- a/jcommon/monespring/pom.xml +++ b/jcommon/monespring/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT monespring diff --git a/jcommon/mongodb/pom.xml b/jcommon/mongodb/pom.xml index cb278d940..83cd2beae 100644 --- a/jcommon/mongodb/pom.xml +++ b/jcommon/mongodb/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT mongodb @@ -23,7 +23,7 @@ run.mone catPlugin - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/monitor/pom.xml b/jcommon/monitor/pom.xml index 9d19f1b88..0955dec65 100644 --- a/jcommon/monitor/pom.xml +++ b/jcommon/monitor/pom.xml @@ -5,14 +5,14 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT monitor run.mone http - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/mquic/pom.xml b/jcommon/mquic/pom.xml index eb63fce7b..a34dbcc9d 100644 --- a/jcommon/mquic/pom.xml +++ b/jcommon/mquic/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT mquic diff --git a/jcommon/mv-plugin/codecheck-maven-plugin/pom.xml b/jcommon/mv-plugin/codecheck-maven-plugin/pom.xml index 39fd13d64..162059948 100644 --- a/jcommon/mv-plugin/codecheck-maven-plugin/pom.xml +++ b/jcommon/mv-plugin/codecheck-maven-plugin/pom.xml @@ -5,10 +5,10 @@ run.mone mv-plugin - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT codecheck-maven-plugin - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT maven-plugin codecheck-maven-plugin Maven Plugin http://maven.apache.org @@ -19,7 +19,7 @@ run.mone codecheck - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT tools diff --git a/jcommon/mv-plugin/jarcheck-maven-plugin/pom.xml b/jcommon/mv-plugin/jarcheck-maven-plugin/pom.xml index b9cb56433..e26e09177 100644 --- a/jcommon/mv-plugin/jarcheck-maven-plugin/pom.xml +++ b/jcommon/mv-plugin/jarcheck-maven-plugin/pom.xml @@ -5,7 +5,7 @@ run.mone mv-plugin - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT jarcheck-maven-plugin maven-plugin diff --git a/jcommon/mv-plugin/mv-demo/pom.xml b/jcommon/mv-plugin/mv-demo/pom.xml index 45a4dd95b..577c85407 100644 --- a/jcommon/mv-plugin/mv-demo/pom.xml +++ b/jcommon/mv-plugin/mv-demo/pom.xml @@ -5,7 +5,7 @@ run.mone mv-plugin - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT mv-demo diff --git a/jcommon/mv-plugin/native-plugin/pom.xml b/jcommon/mv-plugin/native-plugin/pom.xml index 3fc7aef96..8cbfeb684 100644 --- a/jcommon/mv-plugin/native-plugin/pom.xml +++ b/jcommon/mv-plugin/native-plugin/pom.xml @@ -5,7 +5,7 @@ run.mone mv-plugin - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT native-plugin maven-plugin diff --git a/jcommon/mv-plugin/pom.xml b/jcommon/mv-plugin/pom.xml index 08979e4b9..2bbf12c76 100644 --- a/jcommon/mv-plugin/pom.xml +++ b/jcommon/mv-plugin/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT mv-plugin pom diff --git a/jcommon/mybatis-plugins/pom.xml b/jcommon/mybatis-plugins/pom.xml index c134fa912..129873f34 100644 --- a/jcommon/mybatis-plugins/pom.xml +++ b/jcommon/mybatis-plugins/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT mybatis-plugins diff --git a/jcommon/nacos/pom.xml b/jcommon/nacos/pom.xml index 936f9b86e..2c98b27a3 100644 --- a/jcommon/nacos/pom.xml +++ b/jcommon/nacos/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT nacos ${submodule-release.version} @@ -24,7 +24,7 @@ run.mone http - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/nginx/pom.xml b/jcommon/nginx/pom.xml index 31bdcd299..1a1979c3f 100644 --- a/jcommon/nginx/pom.xml +++ b/jcommon/nginx/pom.xml @@ -5,10 +5,10 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT nginx - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT org.apache.commons diff --git a/jcommon/openai/pom.xml b/jcommon/openai/pom.xml index 50c3ea8f8..9114a248a 100644 --- a/jcommon/openai/pom.xml +++ b/jcommon/openai/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT openai diff --git a/jcommon/pom.xml b/jcommon/pom.xml index e96e2bf0c..f95e07618 100644 --- a/jcommon/pom.xml +++ b/jcommon/pom.xml @@ -4,7 +4,7 @@ 4.0.0 run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT pom ${project.artifactId} The parent project of jcommon @@ -117,7 +117,7 @@ ~/ 8 8 - 1.5.0-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/pool/pom.xml b/jcommon/pool/pom.xml index fcd3c22ec..45063e1f6 100644 --- a/jcommon/pool/pom.xml +++ b/jcommon/pool/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT pool diff --git a/jcommon/processor/pom.xml b/jcommon/processor/pom.xml index fabca4fb5..50b847223 100644 --- a/jcommon/processor/pom.xml +++ b/jcommon/processor/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT processor diff --git a/jcommon/prometheus/pom.xml b/jcommon/prometheus/pom.xml index 86011a281..01d9a97dc 100644 --- a/jcommon/prometheus/pom.xml +++ b/jcommon/prometheus/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT prometheus 0.0.6-jdk20-SNAPSHOT diff --git a/jcommon/raft/pom.xml b/jcommon/raft/pom.xml index ef472c95f..40f62b6b0 100644 --- a/jcommon/raft/pom.xml +++ b/jcommon/raft/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT raft diff --git a/jcommon/rcurve/pom.xml b/jcommon/rcurve/pom.xml index 9709316f9..0392f7078 100644 --- a/jcommon/rcurve/pom.xml +++ b/jcommon/rcurve/pom.xml @@ -5,15 +5,15 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT rcurve - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone hera-trace - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT io.protostuff @@ -28,7 +28,7 @@ run.mone rpc-codes - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT api @@ -39,7 +39,7 @@ run.mone easy - 1.4-jdk21-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT io.netty diff --git a/jcommon/redis/pom.xml b/jcommon/redis/pom.xml index 26f5aab50..e797a9153 100644 --- a/jcommon/redis/pom.xml +++ b/jcommon/redis/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT redis 2.0-jdk20-SNAPSHOT diff --git a/jcommon/rpc-codes/pom.xml b/jcommon/rpc-codes/pom.xml index b97228876..bc126c9f1 100644 --- a/jcommon/rpc-codes/pom.xml +++ b/jcommon/rpc-codes/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT rpc-codes ${submodule-release.version} @@ -34,7 +34,7 @@ run.mone easy - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT io.netty @@ -44,7 +44,7 @@ run.mone api - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT org.msgpack diff --git a/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/DefaultHessian2FactoryInitializer.java b/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/DefaultHessian2FactoryInitializer.java new file mode 100644 index 000000000..e57e234b7 --- /dev/null +++ b/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/DefaultHessian2FactoryInitializer.java @@ -0,0 +1,24 @@ +package com.xiaomi.data.push.uds.codes; + +import com.alibaba.com.caucho.hessian.io.SerializerFactory; + +/** + * @author zhangping17 + * @date 2024/03/09 + */ +public class DefaultHessian2FactoryInitializer{ + + private static SerializerFactory SERIALIZER_FACTORY; + + public static SerializerFactory getSerializerFactory() { + if (SERIALIZER_FACTORY != null) { + return SERIALIZER_FACTORY; + } + synchronized (DefaultHessian2FactoryInitializer.class) { + if (SERIALIZER_FACTORY == null) { + SERIALIZER_FACTORY = new SerializerFactory(); + } + } + return SERIALIZER_FACTORY; + } +} diff --git a/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/HessianCodes.java b/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/HessianCodes.java index 364037465..567584a9e 100644 --- a/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/HessianCodes.java +++ b/jcommon/rpc-codes/src/main/java/com/xiaomi/data/push/uds/codes/HessianCodes.java @@ -35,6 +35,7 @@ public class HessianCodes implements ICodes { public T decode(byte[] data, Type type) { ByteArrayInputStream is = new ByteArrayInputStream(data); Hessian2Input hi = new Hessian2Input(is); + hi.setSerializerFactory(DefaultHessian2FactoryInitializer.getSerializerFactory()); try { return (T) hi.readObject(); } catch (IOException e) { @@ -53,6 +54,7 @@ public T decode(byte[] data, Type type) { public byte[] encode(T t) { ByteArrayOutputStream os = new ByteArrayOutputStream(); Hessian2Output ho = new Hessian2Output(os); + ho.setSerializerFactory(DefaultHessian2FactoryInitializer.getSerializerFactory()); try { ho.writeObject(t); ho.flush(); diff --git a/jcommon/rpc/pom.xml b/jcommon/rpc/pom.xml index 953491082..4e950da61 100644 --- a/jcommon/rpc/pom.xml +++ b/jcommon/rpc/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT rpc ${submodule-release.version} @@ -35,7 +35,7 @@ run.mone nacos - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT org.msgpack @@ -45,12 +45,12 @@ run.mone easy - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT run.mone rpc-codes - 1.5.0-jdk21 + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/schedule/pom.xml b/jcommon/schedule/pom.xml index e651889f5..48756b12d 100644 --- a/jcommon/schedule/pom.xml +++ b/jcommon/schedule/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT schedule 1.5.2-jdk20-SNAPSHOT @@ -13,7 +13,7 @@ run.mone feishu - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT compile @@ -49,7 +49,7 @@ run.mone antlr - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT org.springframework @@ -60,12 +60,12 @@ run.mone http - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT run.mone cron - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/jcommon/sidecar-api/pom.xml b/jcommon/sidecar-api/pom.xml index c2d1d2ab0..5c0e90e0e 100644 --- a/jcommon/sidecar-api/pom.xml +++ b/jcommon/sidecar-api/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT sidecar-api diff --git a/jcommon/spider/pom.xml b/jcommon/spider/pom.xml index 0023735d2..00f234b5a 100644 --- a/jcommon/spider/pom.xml +++ b/jcommon/spider/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT spider diff --git a/jcommon/sre/pom.xml b/jcommon/sre/pom.xml index 007a8f96a..8b56a79ca 100644 --- a/jcommon/sre/pom.xml +++ b/jcommon/sre/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT sre diff --git a/jcommon/ssh/pom.xml b/jcommon/ssh/pom.xml index 6909290be..44e4e9307 100644 --- a/jcommon/ssh/pom.xml +++ b/jcommon/ssh/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT ssh diff --git a/jcommon/struct/pom.xml b/jcommon/struct/pom.xml index ceef7979d..194817de8 100644 --- a/jcommon/struct/pom.xml +++ b/jcommon/struct/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT struct 1.4.1-jdk20-SNAPSHOT diff --git a/jcommon/teambition/pom.xml b/jcommon/teambition/pom.xml index 8aa67ad86..f5bb3dd88 100644 --- a/jcommon/teambition/pom.xml +++ b/jcommon/teambition/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT teambition @@ -16,7 +16,7 @@ run.mone http - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT compile diff --git a/jcommon/test/pom.xml b/jcommon/test/pom.xml index 1edc1a951..cb99c42d6 100644 --- a/jcommon/test/pom.xml +++ b/jcommon/test/pom.xml @@ -5,7 +5,7 @@ run.mone jcommon - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT test @@ -43,7 +43,7 @@ run.mone processor - 1.4-jdk20-SNAPSHOT + 1.6.0-jdk21-SNAPSHOT diff --git a/m78-all/Tianye/.gitignore b/m78-all/Tianye/.gitignore new file mode 100644 index 000000000..6b3376b49 --- /dev/null +++ b/m78-all/Tianye/.gitignore @@ -0,0 +1,26 @@ +*.bak +build_info.properties +.classpath +dependency-reduced-pom.xml +*.diff +.DS_Store +.java-version +*.db + +# IDEA +.idea/ +*.iml +logs/ +log/ + +# eclipse (Scala IDE) +.project +.settings/ +.tags* +target/ +test-output/ +nohup* +*.log +*.swp +*.pyc +.sbtserver* diff --git a/m78-all/Tianye/README.md b/m78-all/Tianye/README.md new file mode 100644 index 000000000..74e4631c3 --- /dev/null +++ b/m78-all/Tianye/README.md @@ -0,0 +1,2 @@ +# Tianye +jvm参数:--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/sun.reflect=ALL-UNNAMED --add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --enable-preview diff --git a/m78-all/Tianye/Tianye-api/pom.xml b/m78-all/Tianye/Tianye-api/pom.xml new file mode 100644 index 000000000..2cd0f594a --- /dev/null +++ b/m78-all/Tianye/Tianye-api/pom.xml @@ -0,0 +1,41 @@ + + + + + Tianye + run.mone.local.docean + 1.0.0-SNAPSHOT + + 4.0.0 + Tianye-api + + + + + com.google.protobuf + protobuf-java + 3.21.8 + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + true + true + UTF-8 + + + + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/api/service/DubboTestService.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/api/service/DubboTestService.java new file mode 100644 index 000000000..2dd2dfdf4 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/api/service/DubboTestService.java @@ -0,0 +1,6 @@ +package run.mone.local.docean.api.service; + + +public interface DubboTestService { + String test(); +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/api/service/TYFlowService.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/api/service/TYFlowService.java new file mode 100644 index 000000000..fcbc296ad --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/api/service/TYFlowService.java @@ -0,0 +1,9 @@ +package run.mone.local.docean.api.service; + +/** + * @author wmin + * @date 2024/3/4 + */ +public interface TYFlowService { + Integer execFlow(String botReqStr); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/dto/ExecCommandResult.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/dto/ExecCommandResult.java new file mode 100644 index 000000000..41d62fcbf --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/dto/ExecCommandResult.java @@ -0,0 +1,27 @@ +package run.mone.local.docean.dto; + +import java.io.Serializable; +import java.util.List; + +public class ExecCommandResult implements Serializable { + + + private Integer resultCode; + private List resultData; + public Integer getResultCode() { + return resultCode; + } + + public void setResultCode(Integer resultCode) { + this.resultCode = resultCode; + } + + public void setResultData(List resultData) { + this.resultData = resultData; + } + + public List getResultData() { + return resultData; + } + +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiCmd.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiCmd.java new file mode 100644 index 000000000..4165c89d9 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiCmd.java @@ -0,0 +1,846 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.AiCmd} + */ +public final class AiCmd extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.AiCmd) + AiCmdOrBuilder { +private static final long serialVersionUID = 0L; + // Use AiCmd.newBuilder() to construct. + private AiCmd(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AiCmd() { + cmd_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AiCmd(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AiCmd( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + cmd_ = s; + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + cmdMeta_ = com.google.protobuf.MapField.newMapField( + CmdMetaDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + cmdMeta__ = input.readMessage( + CmdMetaDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + cmdMeta_.getMutableMap().put( + cmdMeta__.getKey(), cmdMeta__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 2: + return internalGetCmdMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiCmd_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.AiCmd.class, run.mone.local.docean.protobuf.AiCmd.Builder.class); + } + + public static final int CMD_FIELD_NUMBER = 1; + private volatile java.lang.Object cmd_; + /** + * string cmd = 1; + * @return The cmd. + */ + @java.lang.Override + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } + } + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CMDMETA_FIELD_NUMBER = 2; + private static final class CmdMetaDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, java.lang.String> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiCmd_CmdMetaEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.STRING, + ""); + } + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> cmdMeta_; + private com.google.protobuf.MapField + internalGetCmdMeta() { + if (cmdMeta_ == null) { + return com.google.protobuf.MapField.emptyMapField( + CmdMetaDefaultEntryHolder.defaultEntry); + } + return cmdMeta_; + } + + public int getCmdMetaCount() { + return internalGetCmdMeta().getMap().size(); + } + /** + * map<string, string> cmdMeta = 2; + */ + + @java.lang.Override + public boolean containsCmdMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetCmdMeta().getMap().containsKey(key); + } + /** + * Use {@link #getCmdMetaMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getCmdMeta() { + return getCmdMetaMap(); + } + /** + * map<string, string> cmdMeta = 2; + */ + @java.lang.Override + + public java.util.Map getCmdMetaMap() { + return internalGetCmdMeta().getMap(); + } + /** + * map<string, string> cmdMeta = 2; + */ + @java.lang.Override + + public java.lang.String getCmdMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetCmdMeta().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> cmdMeta = 2; + */ + @java.lang.Override + + public java.lang.String getCmdMetaOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetCmdMeta().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, cmd_); + } + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetCmdMeta(), + CmdMetaDefaultEntryHolder.defaultEntry, + 2); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, cmd_); + } + for (java.util.Map.Entry entry + : internalGetCmdMeta().getMap().entrySet()) { + com.google.protobuf.MapEntry + cmdMeta__ = CmdMetaDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, cmdMeta__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.AiCmd)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.AiCmd other = (run.mone.local.docean.protobuf.AiCmd) obj; + + if (!getCmd() + .equals(other.getCmd())) return false; + if (!internalGetCmdMeta().equals( + other.internalGetCmdMeta())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CMD_FIELD_NUMBER; + hash = (53 * hash) + getCmd().hashCode(); + if (!internalGetCmdMeta().getMap().isEmpty()) { + hash = (37 * hash) + CMDMETA_FIELD_NUMBER; + hash = (53 * hash) + internalGetCmdMeta().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiCmd parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiCmd parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiCmd parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.AiCmd prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.AiCmd} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.AiCmd) + run.mone.local.docean.protobuf.AiCmdOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 2: + return internalGetCmdMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 2: + return internalGetMutableCmdMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiCmd_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.AiCmd.class, run.mone.local.docean.protobuf.AiCmd.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.AiCmd.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + cmd_ = ""; + + internalGetMutableCmdMeta().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiCmd getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.AiCmd.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiCmd build() { + run.mone.local.docean.protobuf.AiCmd result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiCmd buildPartial() { + run.mone.local.docean.protobuf.AiCmd result = new run.mone.local.docean.protobuf.AiCmd(this); + int from_bitField0_ = bitField0_; + result.cmd_ = cmd_; + result.cmdMeta_ = internalGetCmdMeta(); + result.cmdMeta_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.AiCmd) { + return mergeFrom((run.mone.local.docean.protobuf.AiCmd)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.AiCmd other) { + if (other == run.mone.local.docean.protobuf.AiCmd.getDefaultInstance()) return this; + if (!other.getCmd().isEmpty()) { + cmd_ = other.cmd_; + onChanged(); + } + internalGetMutableCmdMeta().mergeFrom( + other.internalGetCmdMeta()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.AiCmd parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.AiCmd) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object cmd_ = ""; + /** + * string cmd = 1; + * @return The cmd. + */ + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string cmd = 1; + * @param value The cmd to set. + * @return This builder for chaining. + */ + public Builder setCmd( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + cmd_ = value; + onChanged(); + return this; + } + /** + * string cmd = 1; + * @return This builder for chaining. + */ + public Builder clearCmd() { + + cmd_ = getDefaultInstance().getCmd(); + onChanged(); + return this; + } + /** + * string cmd = 1; + * @param value The bytes for cmd to set. + * @return This builder for chaining. + */ + public Builder setCmdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + cmd_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> cmdMeta_; + private com.google.protobuf.MapField + internalGetCmdMeta() { + if (cmdMeta_ == null) { + return com.google.protobuf.MapField.emptyMapField( + CmdMetaDefaultEntryHolder.defaultEntry); + } + return cmdMeta_; + } + private com.google.protobuf.MapField + internalGetMutableCmdMeta() { + onChanged();; + if (cmdMeta_ == null) { + cmdMeta_ = com.google.protobuf.MapField.newMapField( + CmdMetaDefaultEntryHolder.defaultEntry); + } + if (!cmdMeta_.isMutable()) { + cmdMeta_ = cmdMeta_.copy(); + } + return cmdMeta_; + } + + public int getCmdMetaCount() { + return internalGetCmdMeta().getMap().size(); + } + /** + * map<string, string> cmdMeta = 2; + */ + + @java.lang.Override + public boolean containsCmdMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetCmdMeta().getMap().containsKey(key); + } + /** + * Use {@link #getCmdMetaMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getCmdMeta() { + return getCmdMetaMap(); + } + /** + * map<string, string> cmdMeta = 2; + */ + @java.lang.Override + + public java.util.Map getCmdMetaMap() { + return internalGetCmdMeta().getMap(); + } + /** + * map<string, string> cmdMeta = 2; + */ + @java.lang.Override + + public java.lang.String getCmdMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetCmdMeta().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> cmdMeta = 2; + */ + @java.lang.Override + + public java.lang.String getCmdMetaOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetCmdMeta().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearCmdMeta() { + internalGetMutableCmdMeta().getMutableMap() + .clear(); + return this; + } + /** + * map<string, string> cmdMeta = 2; + */ + + public Builder removeCmdMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableCmdMeta().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableCmdMeta() { + return internalGetMutableCmdMeta().getMutableMap(); + } + /** + * map<string, string> cmdMeta = 2; + */ + public Builder putCmdMeta( + java.lang.String key, + java.lang.String value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableCmdMeta().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, string> cmdMeta = 2; + */ + + public Builder putAllCmdMeta( + java.util.Map values) { + internalGetMutableCmdMeta().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.AiCmd) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.AiCmd) + private static final run.mone.local.docean.protobuf.AiCmd DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.AiCmd(); + } + + public static run.mone.local.docean.protobuf.AiCmd getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AiCmd parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AiCmd(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiCmd getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiCmdOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiCmdOrBuilder.java new file mode 100644 index 000000000..dd22f43d4 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiCmdOrBuilder.java @@ -0,0 +1,55 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface AiCmdOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.AiCmd) + com.google.protobuf.MessageOrBuilder { + + /** + * string cmd = 1; + * @return The cmd. + */ + java.lang.String getCmd(); + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + com.google.protobuf.ByteString + getCmdBytes(); + + /** + * map<string, string> cmdMeta = 2; + */ + int getCmdMetaCount(); + /** + * map<string, string> cmdMeta = 2; + */ + boolean containsCmdMeta( + java.lang.String key); + /** + * Use {@link #getCmdMetaMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getCmdMeta(); + /** + * map<string, string> cmdMeta = 2; + */ + java.util.Map + getCmdMetaMap(); + /** + * map<string, string> cmdMeta = 2; + */ + + java.lang.String getCmdMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue); + /** + * map<string, string> cmdMeta = 2; + */ + + java.lang.String getCmdMetaOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiMessage.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiMessage.java new file mode 100644 index 000000000..231d4b503 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiMessage.java @@ -0,0 +1,1603 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.AiMessage} + */ +public final class AiMessage extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.AiMessage) + AiMessageOrBuilder { +private static final long serialVersionUID = 0L; + // Use AiMessage.newBuilder() to construct. + private AiMessage(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AiMessage() { + cmd_ = ""; + message_ = ""; + data_ = ""; + from_ = ""; + to_ = ""; + topicId_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AiMessage(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AiMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + cmd_ = s; + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + messageMeta_ = com.google.protobuf.MapField.newMapField( + MessageMetaDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + messageMeta__ = input.readMessage( + MessageMetaDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + messageMeta_.getMutableMap().put( + messageMeta__.getKey(), messageMeta__.getValue()); + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + message_ = s; + break; + } + case 32: { + + time_ = input.readInt64(); + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + data_ = s; + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + + from_ = s; + break; + } + case 58: { + java.lang.String s = input.readStringRequireUtf8(); + + to_ = s; + break; + } + case 66: { + java.lang.String s = input.readStringRequireUtf8(); + + topicId_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 2: + return internalGetMessageMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiMessage_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.AiMessage.class, run.mone.local.docean.protobuf.AiMessage.Builder.class); + } + + public static final int CMD_FIELD_NUMBER = 1; + private volatile java.lang.Object cmd_; + /** + * string cmd = 1; + * @return The cmd. + */ + @java.lang.Override + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } + } + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int MESSAGEMETA_FIELD_NUMBER = 2; + private static final class MessageMetaDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, java.lang.String> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiMessage_MessageMetaEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.STRING, + ""); + } + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> messageMeta_; + private com.google.protobuf.MapField + internalGetMessageMeta() { + if (messageMeta_ == null) { + return com.google.protobuf.MapField.emptyMapField( + MessageMetaDefaultEntryHolder.defaultEntry); + } + return messageMeta_; + } + + public int getMessageMetaCount() { + return internalGetMessageMeta().getMap().size(); + } + /** + * map<string, string> messageMeta = 2; + */ + + @java.lang.Override + public boolean containsMessageMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetMessageMeta().getMap().containsKey(key); + } + /** + * Use {@link #getMessageMetaMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getMessageMeta() { + return getMessageMetaMap(); + } + /** + * map<string, string> messageMeta = 2; + */ + @java.lang.Override + + public java.util.Map getMessageMetaMap() { + return internalGetMessageMeta().getMap(); + } + /** + * map<string, string> messageMeta = 2; + */ + @java.lang.Override + + public java.lang.String getMessageMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMessageMeta().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> messageMeta = 2; + */ + @java.lang.Override + + public java.lang.String getMessageMetaOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMessageMeta().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public static final int MESSAGE_FIELD_NUMBER = 3; + private volatile java.lang.Object message_; + /** + * string message = 3; + * @return The message. + */ + @java.lang.Override + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } + } + /** + * string message = 3; + * @return The bytes for message. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TIME_FIELD_NUMBER = 4; + private long time_; + /** + * int64 time = 4; + * @return The time. + */ + @java.lang.Override + public long getTime() { + return time_; + } + + public static final int DATA_FIELD_NUMBER = 5; + private volatile java.lang.Object data_; + /** + * string data = 5; + * @return The data. + */ + @java.lang.Override + public java.lang.String getData() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } + } + /** + * string data = 5; + * @return The bytes for data. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int FROM_FIELD_NUMBER = 6; + private volatile java.lang.Object from_; + /** + * string from = 6; + * @return The from. + */ + @java.lang.Override + public java.lang.String getFrom() { + java.lang.Object ref = from_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + from_ = s; + return s; + } + } + /** + * string from = 6; + * @return The bytes for from. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFromBytes() { + java.lang.Object ref = from_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + from_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TO_FIELD_NUMBER = 7; + private volatile java.lang.Object to_; + /** + * string to = 7; + * @return The to. + */ + @java.lang.Override + public java.lang.String getTo() { + java.lang.Object ref = to_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + to_ = s; + return s; + } + } + /** + * string to = 7; + * @return The bytes for to. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getToBytes() { + java.lang.Object ref = to_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + to_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TOPICID_FIELD_NUMBER = 8; + private volatile java.lang.Object topicId_; + /** + * string topicId = 8; + * @return The topicId. + */ + @java.lang.Override + public java.lang.String getTopicId() { + java.lang.Object ref = topicId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + topicId_ = s; + return s; + } + } + /** + * string topicId = 8; + * @return The bytes for topicId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTopicIdBytes() { + java.lang.Object ref = topicId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + topicId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, cmd_); + } + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetMessageMeta(), + MessageMetaDefaultEntryHolder.defaultEntry, + 2); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, message_); + } + if (time_ != 0L) { + output.writeInt64(4, time_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, data_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(from_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, from_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(to_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, to_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topicId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 8, topicId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, cmd_); + } + for (java.util.Map.Entry entry + : internalGetMessageMeta().getMap().entrySet()) { + com.google.protobuf.MapEntry + messageMeta__ = MessageMetaDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, messageMeta__); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, message_); + } + if (time_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(4, time_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, data_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(from_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, from_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(to_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, to_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(topicId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, topicId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.AiMessage)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.AiMessage other = (run.mone.local.docean.protobuf.AiMessage) obj; + + if (!getCmd() + .equals(other.getCmd())) return false; + if (!internalGetMessageMeta().equals( + other.internalGetMessageMeta())) return false; + if (!getMessage() + .equals(other.getMessage())) return false; + if (getTime() + != other.getTime()) return false; + if (!getData() + .equals(other.getData())) return false; + if (!getFrom() + .equals(other.getFrom())) return false; + if (!getTo() + .equals(other.getTo())) return false; + if (!getTopicId() + .equals(other.getTopicId())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CMD_FIELD_NUMBER; + hash = (53 * hash) + getCmd().hashCode(); + if (!internalGetMessageMeta().getMap().isEmpty()) { + hash = (37 * hash) + MESSAGEMETA_FIELD_NUMBER; + hash = (53 * hash) + internalGetMessageMeta().hashCode(); + } + hash = (37 * hash) + MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getMessage().hashCode(); + hash = (37 * hash) + TIME_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getTime()); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + hash = (37 * hash) + FROM_FIELD_NUMBER; + hash = (53 * hash) + getFrom().hashCode(); + hash = (37 * hash) + TO_FIELD_NUMBER; + hash = (53 * hash) + getTo().hashCode(); + hash = (37 * hash) + TOPICID_FIELD_NUMBER; + hash = (53 * hash) + getTopicId().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.AiMessage prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.AiMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.AiMessage) + run.mone.local.docean.protobuf.AiMessageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 2: + return internalGetMessageMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 2: + return internalGetMutableMessageMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiMessage_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.AiMessage.class, run.mone.local.docean.protobuf.AiMessage.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.AiMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + cmd_ = ""; + + internalGetMutableMessageMeta().clear(); + message_ = ""; + + time_ = 0L; + + data_ = ""; + + from_ = ""; + + to_ = ""; + + topicId_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiMessage getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.AiMessage.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiMessage build() { + run.mone.local.docean.protobuf.AiMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiMessage buildPartial() { + run.mone.local.docean.protobuf.AiMessage result = new run.mone.local.docean.protobuf.AiMessage(this); + int from_bitField0_ = bitField0_; + result.cmd_ = cmd_; + result.messageMeta_ = internalGetMessageMeta(); + result.messageMeta_.makeImmutable(); + result.message_ = message_; + result.time_ = time_; + result.data_ = data_; + result.from_ = from_; + result.to_ = to_; + result.topicId_ = topicId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.AiMessage) { + return mergeFrom((run.mone.local.docean.protobuf.AiMessage)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.AiMessage other) { + if (other == run.mone.local.docean.protobuf.AiMessage.getDefaultInstance()) return this; + if (!other.getCmd().isEmpty()) { + cmd_ = other.cmd_; + onChanged(); + } + internalGetMutableMessageMeta().mergeFrom( + other.internalGetMessageMeta()); + if (!other.getMessage().isEmpty()) { + message_ = other.message_; + onChanged(); + } + if (other.getTime() != 0L) { + setTime(other.getTime()); + } + if (!other.getData().isEmpty()) { + data_ = other.data_; + onChanged(); + } + if (!other.getFrom().isEmpty()) { + from_ = other.from_; + onChanged(); + } + if (!other.getTo().isEmpty()) { + to_ = other.to_; + onChanged(); + } + if (!other.getTopicId().isEmpty()) { + topicId_ = other.topicId_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.AiMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.AiMessage) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object cmd_ = ""; + /** + * string cmd = 1; + * @return The cmd. + */ + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string cmd = 1; + * @param value The cmd to set. + * @return This builder for chaining. + */ + public Builder setCmd( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + cmd_ = value; + onChanged(); + return this; + } + /** + * string cmd = 1; + * @return This builder for chaining. + */ + public Builder clearCmd() { + + cmd_ = getDefaultInstance().getCmd(); + onChanged(); + return this; + } + /** + * string cmd = 1; + * @param value The bytes for cmd to set. + * @return This builder for chaining. + */ + public Builder setCmdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + cmd_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> messageMeta_; + private com.google.protobuf.MapField + internalGetMessageMeta() { + if (messageMeta_ == null) { + return com.google.protobuf.MapField.emptyMapField( + MessageMetaDefaultEntryHolder.defaultEntry); + } + return messageMeta_; + } + private com.google.protobuf.MapField + internalGetMutableMessageMeta() { + onChanged();; + if (messageMeta_ == null) { + messageMeta_ = com.google.protobuf.MapField.newMapField( + MessageMetaDefaultEntryHolder.defaultEntry); + } + if (!messageMeta_.isMutable()) { + messageMeta_ = messageMeta_.copy(); + } + return messageMeta_; + } + + public int getMessageMetaCount() { + return internalGetMessageMeta().getMap().size(); + } + /** + * map<string, string> messageMeta = 2; + */ + + @java.lang.Override + public boolean containsMessageMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetMessageMeta().getMap().containsKey(key); + } + /** + * Use {@link #getMessageMetaMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getMessageMeta() { + return getMessageMetaMap(); + } + /** + * map<string, string> messageMeta = 2; + */ + @java.lang.Override + + public java.util.Map getMessageMetaMap() { + return internalGetMessageMeta().getMap(); + } + /** + * map<string, string> messageMeta = 2; + */ + @java.lang.Override + + public java.lang.String getMessageMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMessageMeta().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> messageMeta = 2; + */ + @java.lang.Override + + public java.lang.String getMessageMetaOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMessageMeta().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearMessageMeta() { + internalGetMutableMessageMeta().getMutableMap() + .clear(); + return this; + } + /** + * map<string, string> messageMeta = 2; + */ + + public Builder removeMessageMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableMessageMeta().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableMessageMeta() { + return internalGetMutableMessageMeta().getMutableMap(); + } + /** + * map<string, string> messageMeta = 2; + */ + public Builder putMessageMeta( + java.lang.String key, + java.lang.String value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableMessageMeta().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, string> messageMeta = 2; + */ + + public Builder putAllMessageMeta( + java.util.Map values) { + internalGetMutableMessageMeta().getMutableMap() + .putAll(values); + return this; + } + + private java.lang.Object message_ = ""; + /** + * string message = 3; + * @return The message. + */ + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string message = 3; + * @return The bytes for message. + */ + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string message = 3; + * @param value The message to set. + * @return This builder for chaining. + */ + public Builder setMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + message_ = value; + onChanged(); + return this; + } + /** + * string message = 3; + * @return This builder for chaining. + */ + public Builder clearMessage() { + + message_ = getDefaultInstance().getMessage(); + onChanged(); + return this; + } + /** + * string message = 3; + * @param value The bytes for message to set. + * @return This builder for chaining. + */ + public Builder setMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + message_ = value; + onChanged(); + return this; + } + + private long time_ ; + /** + * int64 time = 4; + * @return The time. + */ + @java.lang.Override + public long getTime() { + return time_; + } + /** + * int64 time = 4; + * @param value The time to set. + * @return This builder for chaining. + */ + public Builder setTime(long value) { + + time_ = value; + onChanged(); + return this; + } + /** + * int64 time = 4; + * @return This builder for chaining. + */ + public Builder clearTime() { + + time_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object data_ = ""; + /** + * string data = 5; + * @return The data. + */ + public java.lang.String getData() { + java.lang.Object ref = data_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string data = 5; + * @return The bytes for data. + */ + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string data = 5; + * @param value The data to set. + * @return This builder for chaining. + */ + public Builder setData( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + * string data = 5; + * @return This builder for chaining. + */ + public Builder clearData() { + + data_ = getDefaultInstance().getData(); + onChanged(); + return this; + } + /** + * string data = 5; + * @param value The bytes for data to set. + * @return This builder for chaining. + */ + public Builder setDataBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + data_ = value; + onChanged(); + return this; + } + + private java.lang.Object from_ = ""; + /** + * string from = 6; + * @return The from. + */ + public java.lang.String getFrom() { + java.lang.Object ref = from_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + from_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string from = 6; + * @return The bytes for from. + */ + public com.google.protobuf.ByteString + getFromBytes() { + java.lang.Object ref = from_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + from_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string from = 6; + * @param value The from to set. + * @return This builder for chaining. + */ + public Builder setFrom( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + from_ = value; + onChanged(); + return this; + } + /** + * string from = 6; + * @return This builder for chaining. + */ + public Builder clearFrom() { + + from_ = getDefaultInstance().getFrom(); + onChanged(); + return this; + } + /** + * string from = 6; + * @param value The bytes for from to set. + * @return This builder for chaining. + */ + public Builder setFromBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + from_ = value; + onChanged(); + return this; + } + + private java.lang.Object to_ = ""; + /** + * string to = 7; + * @return The to. + */ + public java.lang.String getTo() { + java.lang.Object ref = to_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + to_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string to = 7; + * @return The bytes for to. + */ + public com.google.protobuf.ByteString + getToBytes() { + java.lang.Object ref = to_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + to_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string to = 7; + * @param value The to to set. + * @return This builder for chaining. + */ + public Builder setTo( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + to_ = value; + onChanged(); + return this; + } + /** + * string to = 7; + * @return This builder for chaining. + */ + public Builder clearTo() { + + to_ = getDefaultInstance().getTo(); + onChanged(); + return this; + } + /** + * string to = 7; + * @param value The bytes for to to set. + * @return This builder for chaining. + */ + public Builder setToBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + to_ = value; + onChanged(); + return this; + } + + private java.lang.Object topicId_ = ""; + /** + * string topicId = 8; + * @return The topicId. + */ + public java.lang.String getTopicId() { + java.lang.Object ref = topicId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + topicId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string topicId = 8; + * @return The bytes for topicId. + */ + public com.google.protobuf.ByteString + getTopicIdBytes() { + java.lang.Object ref = topicId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + topicId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string topicId = 8; + * @param value The topicId to set. + * @return This builder for chaining. + */ + public Builder setTopicId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + topicId_ = value; + onChanged(); + return this; + } + /** + * string topicId = 8; + * @return This builder for chaining. + */ + public Builder clearTopicId() { + + topicId_ = getDefaultInstance().getTopicId(); + onChanged(); + return this; + } + /** + * string topicId = 8; + * @param value The bytes for topicId to set. + * @return This builder for chaining. + */ + public Builder setTopicIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + topicId_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.AiMessage) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.AiMessage) + private static final run.mone.local.docean.protobuf.AiMessage DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.AiMessage(); + } + + public static run.mone.local.docean.protobuf.AiMessage getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AiMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AiMessage(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiMessage getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiMessageOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiMessageOrBuilder.java new file mode 100644 index 000000000..14665fec3 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiMessageOrBuilder.java @@ -0,0 +1,123 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface AiMessageOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.AiMessage) + com.google.protobuf.MessageOrBuilder { + + /** + * string cmd = 1; + * @return The cmd. + */ + java.lang.String getCmd(); + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + com.google.protobuf.ByteString + getCmdBytes(); + + /** + * map<string, string> messageMeta = 2; + */ + int getMessageMetaCount(); + /** + * map<string, string> messageMeta = 2; + */ + boolean containsMessageMeta( + java.lang.String key); + /** + * Use {@link #getMessageMetaMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getMessageMeta(); + /** + * map<string, string> messageMeta = 2; + */ + java.util.Map + getMessageMetaMap(); + /** + * map<string, string> messageMeta = 2; + */ + + /* nullable */ +java.lang.String getMessageMetaOrDefault( + java.lang.String key, + /* nullable */ +java.lang.String defaultValue); + /** + * map<string, string> messageMeta = 2; + */ + + java.lang.String getMessageMetaOrThrow( + java.lang.String key); + + /** + * string message = 3; + * @return The message. + */ + java.lang.String getMessage(); + /** + * string message = 3; + * @return The bytes for message. + */ + com.google.protobuf.ByteString + getMessageBytes(); + + /** + * int64 time = 4; + * @return The time. + */ + long getTime(); + + /** + * string data = 5; + * @return The data. + */ + java.lang.String getData(); + /** + * string data = 5; + * @return The bytes for data. + */ + com.google.protobuf.ByteString + getDataBytes(); + + /** + * string from = 6; + * @return The from. + */ + java.lang.String getFrom(); + /** + * string from = 6; + * @return The bytes for from. + */ + com.google.protobuf.ByteString + getFromBytes(); + + /** + * string to = 7; + * @return The to. + */ + java.lang.String getTo(); + /** + * string to = 7; + * @return The bytes for to. + */ + com.google.protobuf.ByteString + getToBytes(); + + /** + * string topicId = 8; + * @return The topicId. + */ + java.lang.String getTopicId(); + /** + * string topicId = 8; + * @return The bytes for topicId. + */ + com.google.protobuf.ByteString + getTopicIdBytes(); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiResult.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiResult.java new file mode 100644 index 000000000..39a555cab --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiResult.java @@ -0,0 +1,910 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.AiResult} + */ +public final class AiResult extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.AiResult) + AiResultOrBuilder { +private static final long serialVersionUID = 0L; + // Use AiResult.newBuilder() to construct. + private AiResult(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AiResult() { + message_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AiResult(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AiResult( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + code_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + message_ = s; + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + data_ = com.google.protobuf.MapField.newMapField( + DataDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + data__ = input.readMessage( + DataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + data_.getMutableMap().put( + data__.getKey(), data__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiResult_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 3: + return internalGetData(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.AiResult.class, run.mone.local.docean.protobuf.AiResult.Builder.class); + } + + public static final int CODE_FIELD_NUMBER = 1; + private int code_; + /** + * int32 code = 1; + * @return The code. + */ + @java.lang.Override + public int getCode() { + return code_; + } + + public static final int MESSAGE_FIELD_NUMBER = 2; + private volatile java.lang.Object message_; + /** + * string message = 2; + * @return The message. + */ + @java.lang.Override + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } + } + /** + * string message = 2; + * @return The bytes for message. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DATA_FIELD_NUMBER = 3; + private static final class DataDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, java.lang.String> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiResult_DataEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.STRING, + ""); + } + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> data_; + private com.google.protobuf.MapField + internalGetData() { + if (data_ == null) { + return com.google.protobuf.MapField.emptyMapField( + DataDefaultEntryHolder.defaultEntry); + } + return data_; + } + + public int getDataCount() { + return internalGetData().getMap().size(); + } + /** + * map<string, string> data = 3; + */ + + @java.lang.Override + public boolean containsData( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetData().getMap().containsKey(key); + } + /** + * Use {@link #getDataMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getData() { + return getDataMap(); + } + /** + * map<string, string> data = 3; + */ + @java.lang.Override + + public java.util.Map getDataMap() { + return internalGetData().getMap(); + } + /** + * map<string, string> data = 3; + */ + @java.lang.Override + + public java.lang.String getDataOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> data = 3; + */ + @java.lang.Override + + public java.lang.String getDataOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (code_ != 0) { + output.writeInt32(1, code_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_); + } + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetData(), + DataDefaultEntryHolder.defaultEntry, + 3); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (code_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, code_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_); + } + for (java.util.Map.Entry entry + : internalGetData().getMap().entrySet()) { + com.google.protobuf.MapEntry + data__ = DataDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, data__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.AiResult)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.AiResult other = (run.mone.local.docean.protobuf.AiResult) obj; + + if (getCode() + != other.getCode()) return false; + if (!getMessage() + .equals(other.getMessage())) return false; + if (!internalGetData().equals( + other.internalGetData())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CODE_FIELD_NUMBER; + hash = (53 * hash) + getCode(); + hash = (37 * hash) + MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getMessage().hashCode(); + if (!internalGetData().getMap().isEmpty()) { + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + internalGetData().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.AiResult parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiResult parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiResult parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.AiResult parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.AiResult prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.AiResult} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.AiResult) + run.mone.local.docean.protobuf.AiResultOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiResult_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 3: + return internalGetData(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 3: + return internalGetMutableData(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiResult_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.AiResult.class, run.mone.local.docean.protobuf.AiResult.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.AiResult.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + code_ = 0; + + message_ = ""; + + internalGetMutableData().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_AiResult_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiResult getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.AiResult.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiResult build() { + run.mone.local.docean.protobuf.AiResult result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiResult buildPartial() { + run.mone.local.docean.protobuf.AiResult result = new run.mone.local.docean.protobuf.AiResult(this); + int from_bitField0_ = bitField0_; + result.code_ = code_; + result.message_ = message_; + result.data_ = internalGetData(); + result.data_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.AiResult) { + return mergeFrom((run.mone.local.docean.protobuf.AiResult)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.AiResult other) { + if (other == run.mone.local.docean.protobuf.AiResult.getDefaultInstance()) return this; + if (other.getCode() != 0) { + setCode(other.getCode()); + } + if (!other.getMessage().isEmpty()) { + message_ = other.message_; + onChanged(); + } + internalGetMutableData().mergeFrom( + other.internalGetData()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.AiResult parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.AiResult) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int code_ ; + /** + * int32 code = 1; + * @return The code. + */ + @java.lang.Override + public int getCode() { + return code_; + } + /** + * int32 code = 1; + * @param value The code to set. + * @return This builder for chaining. + */ + public Builder setCode(int value) { + + code_ = value; + onChanged(); + return this; + } + /** + * int32 code = 1; + * @return This builder for chaining. + */ + public Builder clearCode() { + + code_ = 0; + onChanged(); + return this; + } + + private java.lang.Object message_ = ""; + /** + * string message = 2; + * @return The message. + */ + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string message = 2; + * @return The bytes for message. + */ + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string message = 2; + * @param value The message to set. + * @return This builder for chaining. + */ + public Builder setMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + message_ = value; + onChanged(); + return this; + } + /** + * string message = 2; + * @return This builder for chaining. + */ + public Builder clearMessage() { + + message_ = getDefaultInstance().getMessage(); + onChanged(); + return this; + } + /** + * string message = 2; + * @param value The bytes for message to set. + * @return This builder for chaining. + */ + public Builder setMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + message_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> data_; + private com.google.protobuf.MapField + internalGetData() { + if (data_ == null) { + return com.google.protobuf.MapField.emptyMapField( + DataDefaultEntryHolder.defaultEntry); + } + return data_; + } + private com.google.protobuf.MapField + internalGetMutableData() { + onChanged();; + if (data_ == null) { + data_ = com.google.protobuf.MapField.newMapField( + DataDefaultEntryHolder.defaultEntry); + } + if (!data_.isMutable()) { + data_ = data_.copy(); + } + return data_; + } + + public int getDataCount() { + return internalGetData().getMap().size(); + } + /** + * map<string, string> data = 3; + */ + + @java.lang.Override + public boolean containsData( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetData().getMap().containsKey(key); + } + /** + * Use {@link #getDataMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getData() { + return getDataMap(); + } + /** + * map<string, string> data = 3; + */ + @java.lang.Override + + public java.util.Map getDataMap() { + return internalGetData().getMap(); + } + /** + * map<string, string> data = 3; + */ + @java.lang.Override + + public java.lang.String getDataOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> data = 3; + */ + @java.lang.Override + + public java.lang.String getDataOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearData() { + internalGetMutableData().getMutableMap() + .clear(); + return this; + } + /** + * map<string, string> data = 3; + */ + + public Builder removeData( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableData().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableData() { + return internalGetMutableData().getMutableMap(); + } + /** + * map<string, string> data = 3; + */ + public Builder putData( + java.lang.String key, + java.lang.String value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableData().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, string> data = 3; + */ + + public Builder putAllData( + java.util.Map values) { + internalGetMutableData().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.AiResult) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.AiResult) + private static final run.mone.local.docean.protobuf.AiResult DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.AiResult(); + } + + public static run.mone.local.docean.protobuf.AiResult getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AiResult parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AiResult(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.AiResult getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiResultOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiResultOrBuilder.java new file mode 100644 index 000000000..cc4e45709 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/AiResultOrBuilder.java @@ -0,0 +1,61 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface AiResultOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.AiResult) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 code = 1; + * @return The code. + */ + int getCode(); + + /** + * string message = 2; + * @return The message. + */ + java.lang.String getMessage(); + /** + * string message = 2; + * @return The bytes for message. + */ + com.google.protobuf.ByteString + getMessageBytes(); + + /** + * map<string, string> data = 3; + */ + int getDataCount(); + /** + * map<string, string> data = 3; + */ + boolean containsData( + java.lang.String key); + /** + * Use {@link #getDataMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getData(); + /** + * map<string, string> data = 3; + */ + java.util.Map + getDataMap(); + /** + * map<string, string> data = 3; + */ + + java.lang.String getDataOrDefault( + java.lang.String key, + java.lang.String defaultValue); + /** + * map<string, string> data = 3; + */ + + java.lang.String getDataOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/BeatInfoData.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/BeatInfoData.java new file mode 100644 index 000000000..e41a7c6b7 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/BeatInfoData.java @@ -0,0 +1,1587 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.BeatInfoData} + */ +public final class BeatInfoData extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.BeatInfoData) + BeatInfoDataOrBuilder { +private static final long serialVersionUID = 0L; + // Use BeatInfoData.newBuilder() to construct. + private BeatInfoData(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private BeatInfoData() { + serviceName_ = ""; + namespaceId_ = ""; + clusterName_ = ""; + ip_ = ""; + beat_ = ""; + appName_ = ""; + agent_ = ""; + source_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new BeatInfoData(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private BeatInfoData( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + serviceName_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + namespaceId_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + clusterName_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + ip_ = s; + break; + } + case 40: { + + port_ = input.readInt32(); + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + + beat_ = s; + break; + } + case 58: { + java.lang.String s = input.readStringRequireUtf8(); + + appName_ = s; + break; + } + case 66: { + java.lang.String s = input.readStringRequireUtf8(); + + agent_ = s; + break; + } + case 74: { + java.lang.String s = input.readStringRequireUtf8(); + + source_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_BeatInfoData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_BeatInfoData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.BeatInfoData.class, run.mone.local.docean.protobuf.BeatInfoData.Builder.class); + } + + public static final int SERVICENAME_FIELD_NUMBER = 1; + private volatile java.lang.Object serviceName_; + /** + * string serviceName = 1; + * @return The serviceName. + */ + @java.lang.Override + public java.lang.String getServiceName() { + java.lang.Object ref = serviceName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serviceName_ = s; + return s; + } + } + /** + * string serviceName = 1; + * @return The bytes for serviceName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getServiceNameBytes() { + java.lang.Object ref = serviceName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serviceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NAMESPACEID_FIELD_NUMBER = 2; + private volatile java.lang.Object namespaceId_; + /** + * string namespaceId = 2; + * @return The namespaceId. + */ + @java.lang.Override + public java.lang.String getNamespaceId() { + java.lang.Object ref = namespaceId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + namespaceId_ = s; + return s; + } + } + /** + * string namespaceId = 2; + * @return The bytes for namespaceId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNamespaceIdBytes() { + java.lang.Object ref = namespaceId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + namespaceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CLUSTERNAME_FIELD_NUMBER = 3; + private volatile java.lang.Object clusterName_; + /** + * string clusterName = 3; + * @return The clusterName. + */ + @java.lang.Override + public java.lang.String getClusterName() { + java.lang.Object ref = clusterName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clusterName_ = s; + return s; + } + } + /** + * string clusterName = 3; + * @return The bytes for clusterName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getClusterNameBytes() { + java.lang.Object ref = clusterName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clusterName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IP_FIELD_NUMBER = 4; + private volatile java.lang.Object ip_; + /** + * string ip = 4; + * @return The ip. + */ + @java.lang.Override + public java.lang.String getIp() { + java.lang.Object ref = ip_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ip_ = s; + return s; + } + } + /** + * string ip = 4; + * @return The bytes for ip. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getIpBytes() { + java.lang.Object ref = ip_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ip_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PORT_FIELD_NUMBER = 5; + private int port_; + /** + * int32 port = 5; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + + public static final int BEAT_FIELD_NUMBER = 6; + private volatile java.lang.Object beat_; + /** + * string beat = 6; + * @return The beat. + */ + @java.lang.Override + public java.lang.String getBeat() { + java.lang.Object ref = beat_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + beat_ = s; + return s; + } + } + /** + * string beat = 6; + * @return The bytes for beat. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getBeatBytes() { + java.lang.Object ref = beat_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + beat_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int APPNAME_FIELD_NUMBER = 7; + private volatile java.lang.Object appName_; + /** + * string appName = 7; + * @return The appName. + */ + @java.lang.Override + public java.lang.String getAppName() { + java.lang.Object ref = appName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + appName_ = s; + return s; + } + } + /** + * string appName = 7; + * @return The bytes for appName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAppNameBytes() { + java.lang.Object ref = appName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + appName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int AGENT_FIELD_NUMBER = 8; + private volatile java.lang.Object agent_; + /** + * string agent = 8; + * @return The agent. + */ + @java.lang.Override + public java.lang.String getAgent() { + java.lang.Object ref = agent_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + agent_ = s; + return s; + } + } + /** + * string agent = 8; + * @return The bytes for agent. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAgentBytes() { + java.lang.Object ref = agent_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + agent_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCE_FIELD_NUMBER = 9; + private volatile java.lang.Object source_; + /** + * string source = 9; + * @return The source. + */ + @java.lang.Override + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } + } + /** + * string source = 9; + * @return The bytes for source. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, serviceName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(namespaceId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, namespaceId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusterName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, clusterName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ip_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, ip_); + } + if (port_ != 0) { + output.writeInt32(5, port_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(beat_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, beat_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(appName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, appName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(agent_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 8, agent_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, source_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, serviceName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(namespaceId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, namespaceId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusterName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, clusterName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ip_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, ip_); + } + if (port_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(5, port_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(beat_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, beat_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(appName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, appName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(agent_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, agent_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, source_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.BeatInfoData)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.BeatInfoData other = (run.mone.local.docean.protobuf.BeatInfoData) obj; + + if (!getServiceName() + .equals(other.getServiceName())) return false; + if (!getNamespaceId() + .equals(other.getNamespaceId())) return false; + if (!getClusterName() + .equals(other.getClusterName())) return false; + if (!getIp() + .equals(other.getIp())) return false; + if (getPort() + != other.getPort()) return false; + if (!getBeat() + .equals(other.getBeat())) return false; + if (!getAppName() + .equals(other.getAppName())) return false; + if (!getAgent() + .equals(other.getAgent())) return false; + if (!getSource() + .equals(other.getSource())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SERVICENAME_FIELD_NUMBER; + hash = (53 * hash) + getServiceName().hashCode(); + hash = (37 * hash) + NAMESPACEID_FIELD_NUMBER; + hash = (53 * hash) + getNamespaceId().hashCode(); + hash = (37 * hash) + CLUSTERNAME_FIELD_NUMBER; + hash = (53 * hash) + getClusterName().hashCode(); + hash = (37 * hash) + IP_FIELD_NUMBER; + hash = (53 * hash) + getIp().hashCode(); + hash = (37 * hash) + PORT_FIELD_NUMBER; + hash = (53 * hash) + getPort(); + hash = (37 * hash) + BEAT_FIELD_NUMBER; + hash = (53 * hash) + getBeat().hashCode(); + hash = (37 * hash) + APPNAME_FIELD_NUMBER; + hash = (53 * hash) + getAppName().hashCode(); + hash = (37 * hash) + AGENT_FIELD_NUMBER; + hash = (53 * hash) + getAgent().hashCode(); + hash = (37 * hash) + SOURCE_FIELD_NUMBER; + hash = (53 * hash) + getSource().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.BeatInfoData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.BeatInfoData prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.BeatInfoData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.BeatInfoData) + run.mone.local.docean.protobuf.BeatInfoDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_BeatInfoData_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_BeatInfoData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.BeatInfoData.class, run.mone.local.docean.protobuf.BeatInfoData.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.BeatInfoData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + serviceName_ = ""; + + namespaceId_ = ""; + + clusterName_ = ""; + + ip_ = ""; + + port_ = 0; + + beat_ = ""; + + appName_ = ""; + + agent_ = ""; + + source_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_BeatInfoData_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.BeatInfoData getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.BeatInfoData.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.BeatInfoData build() { + run.mone.local.docean.protobuf.BeatInfoData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.BeatInfoData buildPartial() { + run.mone.local.docean.protobuf.BeatInfoData result = new run.mone.local.docean.protobuf.BeatInfoData(this); + result.serviceName_ = serviceName_; + result.namespaceId_ = namespaceId_; + result.clusterName_ = clusterName_; + result.ip_ = ip_; + result.port_ = port_; + result.beat_ = beat_; + result.appName_ = appName_; + result.agent_ = agent_; + result.source_ = source_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.BeatInfoData) { + return mergeFrom((run.mone.local.docean.protobuf.BeatInfoData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.BeatInfoData other) { + if (other == run.mone.local.docean.protobuf.BeatInfoData.getDefaultInstance()) return this; + if (!other.getServiceName().isEmpty()) { + serviceName_ = other.serviceName_; + onChanged(); + } + if (!other.getNamespaceId().isEmpty()) { + namespaceId_ = other.namespaceId_; + onChanged(); + } + if (!other.getClusterName().isEmpty()) { + clusterName_ = other.clusterName_; + onChanged(); + } + if (!other.getIp().isEmpty()) { + ip_ = other.ip_; + onChanged(); + } + if (other.getPort() != 0) { + setPort(other.getPort()); + } + if (!other.getBeat().isEmpty()) { + beat_ = other.beat_; + onChanged(); + } + if (!other.getAppName().isEmpty()) { + appName_ = other.appName_; + onChanged(); + } + if (!other.getAgent().isEmpty()) { + agent_ = other.agent_; + onChanged(); + } + if (!other.getSource().isEmpty()) { + source_ = other.source_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.BeatInfoData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.BeatInfoData) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object serviceName_ = ""; + /** + * string serviceName = 1; + * @return The serviceName. + */ + public java.lang.String getServiceName() { + java.lang.Object ref = serviceName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serviceName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string serviceName = 1; + * @return The bytes for serviceName. + */ + public com.google.protobuf.ByteString + getServiceNameBytes() { + java.lang.Object ref = serviceName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serviceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string serviceName = 1; + * @param value The serviceName to set. + * @return This builder for chaining. + */ + public Builder setServiceName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + serviceName_ = value; + onChanged(); + return this; + } + /** + * string serviceName = 1; + * @return This builder for chaining. + */ + public Builder clearServiceName() { + + serviceName_ = getDefaultInstance().getServiceName(); + onChanged(); + return this; + } + /** + * string serviceName = 1; + * @param value The bytes for serviceName to set. + * @return This builder for chaining. + */ + public Builder setServiceNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + serviceName_ = value; + onChanged(); + return this; + } + + private java.lang.Object namespaceId_ = ""; + /** + * string namespaceId = 2; + * @return The namespaceId. + */ + public java.lang.String getNamespaceId() { + java.lang.Object ref = namespaceId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + namespaceId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string namespaceId = 2; + * @return The bytes for namespaceId. + */ + public com.google.protobuf.ByteString + getNamespaceIdBytes() { + java.lang.Object ref = namespaceId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + namespaceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string namespaceId = 2; + * @param value The namespaceId to set. + * @return This builder for chaining. + */ + public Builder setNamespaceId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + namespaceId_ = value; + onChanged(); + return this; + } + /** + * string namespaceId = 2; + * @return This builder for chaining. + */ + public Builder clearNamespaceId() { + + namespaceId_ = getDefaultInstance().getNamespaceId(); + onChanged(); + return this; + } + /** + * string namespaceId = 2; + * @param value The bytes for namespaceId to set. + * @return This builder for chaining. + */ + public Builder setNamespaceIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + namespaceId_ = value; + onChanged(); + return this; + } + + private java.lang.Object clusterName_ = ""; + /** + * string clusterName = 3; + * @return The clusterName. + */ + public java.lang.String getClusterName() { + java.lang.Object ref = clusterName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clusterName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string clusterName = 3; + * @return The bytes for clusterName. + */ + public com.google.protobuf.ByteString + getClusterNameBytes() { + java.lang.Object ref = clusterName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clusterName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string clusterName = 3; + * @param value The clusterName to set. + * @return This builder for chaining. + */ + public Builder setClusterName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + clusterName_ = value; + onChanged(); + return this; + } + /** + * string clusterName = 3; + * @return This builder for chaining. + */ + public Builder clearClusterName() { + + clusterName_ = getDefaultInstance().getClusterName(); + onChanged(); + return this; + } + /** + * string clusterName = 3; + * @param value The bytes for clusterName to set. + * @return This builder for chaining. + */ + public Builder setClusterNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + clusterName_ = value; + onChanged(); + return this; + } + + private java.lang.Object ip_ = ""; + /** + * string ip = 4; + * @return The ip. + */ + public java.lang.String getIp() { + java.lang.Object ref = ip_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ip_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string ip = 4; + * @return The bytes for ip. + */ + public com.google.protobuf.ByteString + getIpBytes() { + java.lang.Object ref = ip_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ip_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string ip = 4; + * @param value The ip to set. + * @return This builder for chaining. + */ + public Builder setIp( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + ip_ = value; + onChanged(); + return this; + } + /** + * string ip = 4; + * @return This builder for chaining. + */ + public Builder clearIp() { + + ip_ = getDefaultInstance().getIp(); + onChanged(); + return this; + } + /** + * string ip = 4; + * @param value The bytes for ip to set. + * @return This builder for chaining. + */ + public Builder setIpBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + ip_ = value; + onChanged(); + return this; + } + + private int port_ ; + /** + * int32 port = 5; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + /** + * int32 port = 5; + * @param value The port to set. + * @return This builder for chaining. + */ + public Builder setPort(int value) { + + port_ = value; + onChanged(); + return this; + } + /** + * int32 port = 5; + * @return This builder for chaining. + */ + public Builder clearPort() { + + port_ = 0; + onChanged(); + return this; + } + + private java.lang.Object beat_ = ""; + /** + * string beat = 6; + * @return The beat. + */ + public java.lang.String getBeat() { + java.lang.Object ref = beat_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + beat_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string beat = 6; + * @return The bytes for beat. + */ + public com.google.protobuf.ByteString + getBeatBytes() { + java.lang.Object ref = beat_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + beat_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string beat = 6; + * @param value The beat to set. + * @return This builder for chaining. + */ + public Builder setBeat( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + beat_ = value; + onChanged(); + return this; + } + /** + * string beat = 6; + * @return This builder for chaining. + */ + public Builder clearBeat() { + + beat_ = getDefaultInstance().getBeat(); + onChanged(); + return this; + } + /** + * string beat = 6; + * @param value The bytes for beat to set. + * @return This builder for chaining. + */ + public Builder setBeatBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + beat_ = value; + onChanged(); + return this; + } + + private java.lang.Object appName_ = ""; + /** + * string appName = 7; + * @return The appName. + */ + public java.lang.String getAppName() { + java.lang.Object ref = appName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + appName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string appName = 7; + * @return The bytes for appName. + */ + public com.google.protobuf.ByteString + getAppNameBytes() { + java.lang.Object ref = appName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + appName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string appName = 7; + * @param value The appName to set. + * @return This builder for chaining. + */ + public Builder setAppName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + appName_ = value; + onChanged(); + return this; + } + /** + * string appName = 7; + * @return This builder for chaining. + */ + public Builder clearAppName() { + + appName_ = getDefaultInstance().getAppName(); + onChanged(); + return this; + } + /** + * string appName = 7; + * @param value The bytes for appName to set. + * @return This builder for chaining. + */ + public Builder setAppNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + appName_ = value; + onChanged(); + return this; + } + + private java.lang.Object agent_ = ""; + /** + * string agent = 8; + * @return The agent. + */ + public java.lang.String getAgent() { + java.lang.Object ref = agent_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + agent_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string agent = 8; + * @return The bytes for agent. + */ + public com.google.protobuf.ByteString + getAgentBytes() { + java.lang.Object ref = agent_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + agent_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string agent = 8; + * @param value The agent to set. + * @return This builder for chaining. + */ + public Builder setAgent( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + agent_ = value; + onChanged(); + return this; + } + /** + * string agent = 8; + * @return This builder for chaining. + */ + public Builder clearAgent() { + + agent_ = getDefaultInstance().getAgent(); + onChanged(); + return this; + } + /** + * string agent = 8; + * @param value The bytes for agent to set. + * @return This builder for chaining. + */ + public Builder setAgentBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + agent_ = value; + onChanged(); + return this; + } + + private java.lang.Object source_ = ""; + /** + * string source = 9; + * @return The source. + */ + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string source = 9; + * @return The bytes for source. + */ + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string source = 9; + * @param value The source to set. + * @return This builder for chaining. + */ + public Builder setSource( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + source_ = value; + onChanged(); + return this; + } + /** + * string source = 9; + * @return This builder for chaining. + */ + public Builder clearSource() { + + source_ = getDefaultInstance().getSource(); + onChanged(); + return this; + } + /** + * string source = 9; + * @param value The bytes for source to set. + * @return This builder for chaining. + */ + public Builder setSourceBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + source_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.BeatInfoData) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.BeatInfoData) + private static final run.mone.local.docean.protobuf.BeatInfoData DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.BeatInfoData(); + } + + public static run.mone.local.docean.protobuf.BeatInfoData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public BeatInfoData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new BeatInfoData(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.BeatInfoData getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/BeatInfoDataOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/BeatInfoDataOrBuilder.java new file mode 100644 index 000000000..0f6584e04 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/BeatInfoDataOrBuilder.java @@ -0,0 +1,111 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface BeatInfoDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.BeatInfoData) + com.google.protobuf.MessageOrBuilder { + + /** + * string serviceName = 1; + * @return The serviceName. + */ + java.lang.String getServiceName(); + /** + * string serviceName = 1; + * @return The bytes for serviceName. + */ + com.google.protobuf.ByteString + getServiceNameBytes(); + + /** + * string namespaceId = 2; + * @return The namespaceId. + */ + java.lang.String getNamespaceId(); + /** + * string namespaceId = 2; + * @return The bytes for namespaceId. + */ + com.google.protobuf.ByteString + getNamespaceIdBytes(); + + /** + * string clusterName = 3; + * @return The clusterName. + */ + java.lang.String getClusterName(); + /** + * string clusterName = 3; + * @return The bytes for clusterName. + */ + com.google.protobuf.ByteString + getClusterNameBytes(); + + /** + * string ip = 4; + * @return The ip. + */ + java.lang.String getIp(); + /** + * string ip = 4; + * @return The bytes for ip. + */ + com.google.protobuf.ByteString + getIpBytes(); + + /** + * int32 port = 5; + * @return The port. + */ + int getPort(); + + /** + * string beat = 6; + * @return The beat. + */ + java.lang.String getBeat(); + /** + * string beat = 6; + * @return The bytes for beat. + */ + com.google.protobuf.ByteString + getBeatBytes(); + + /** + * string appName = 7; + * @return The appName. + */ + java.lang.String getAppName(); + /** + * string appName = 7; + * @return The bytes for appName. + */ + com.google.protobuf.ByteString + getAppNameBytes(); + + /** + * string agent = 8; + * @return The agent. + */ + java.lang.String getAgent(); + /** + * string agent = 8; + * @return The bytes for agent. + */ + com.google.protobuf.ByteString + getAgentBytes(); + + /** + * string source = 9; + * @return The source. + */ + java.lang.String getSource(); + /** + * string source = 9; + * @return The bytes for source. + */ + com.google.protobuf.ByteString + getSourceBytes(); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/Bo.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/Bo.java new file mode 100644 index 000000000..c4483ab85 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/Bo.java @@ -0,0 +1,335 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public final class Bo { + private Bo() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_HelloRequest_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_HelloRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_ListRequest_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_ListRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_ListResponse_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_ListResponse_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_CheckSum_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_CheckSum_DataEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_CheckSum_DataEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_BeatInfoData_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_BeatInfoData_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_DatumMapData_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_DatumMapData_DatumMapEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_DatumMapData_DatumMapEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_InstanceProto_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_InstanceProto_MetadataEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_InstanceProto_MetadataEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_InstancesProto_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_InstancesProto_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_NacosReqProto_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_NacosReqProto_InstancesEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_NacosReqProto_InstancesEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_AiMessage_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_AiMessage_MessageMetaEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_AiMessage_MessageMetaEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_AiCmd_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_AiCmd_CmdMetaEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_AiCmd_CmdMetaEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_AiResult_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_AiResult_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_AiResult_DataEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_AiResult_DataEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_PingMsg_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_run_mone_local_docean_protobuf_PingMsg_PingMetaEntry_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_run_mone_local_docean_protobuf_PingMsg_PingMetaEntry_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\010bo.proto\022\036run.mone.local.docean.protob" + + "uf\"3\n\014HelloRequest\022\021\n\tfirstName\030\001 \001(\t\022\020\n" + + "\010lastName\030\002 \001(\t\"\335\002\n\013ListRequest\022\023\n\013names" + + "paceId\030\001 \001(\t\022\023\n\013serviceName\030\002 \001(\t\022\r\n\005age" + + "nt\030\003 \001(\t\022\020\n\010clusters\030\004 \001(\t\022\020\n\010clientIP\030\005" + + " \001(\t\022\017\n\007udpPort\030\006 \001(\005\022\013\n\003env\030\007 \001(\t\022\017\n\007is" + + "Check\030\010 \001(\010\022\013\n\003app\030\t \001(\t\022\013\n\003tid\030\n \001(\t\022\016\n" + + "\006tenant\030\013 \001(\t\022\023\n\013healthyOnly\030\014 \001(\010\022\013\n\003cm" + + "d\030\r \001(\t\022\017\n\007cluster\030\016 \001(\t\022\n\n\002ip\030\017 \001(\t\022\014\n\004" + + "port\030\020 \001(\005\022\016\n\006pageNo\030\021 \001(\005\022\020\n\010pageSize\030\022" + + " \001(\005\022\021\n\tgroupName\030\023 \001(\t\022\026\n\016selectorStrin" + + "g\030\024 \001(\t\"\255\001\n\014ListResponse\022\014\n\004data\030\001 \001(\t\022@" + + "\n\tinstances\030\002 \003(\0132-.run.mone.local.docea" + + "n.protobuf.InstanceProto\022\014\n\004code\030\003 \001(\005\022?" + + "\n\010instance\030\004 \001(\0132-.run.mone.local.docean" + + ".protobuf.InstanceProto\"y\n\010CheckSum\022@\n\004d" + + "ata\030\001 \003(\01322.run.mone.local.docean.protob" + + "uf.CheckSum.DataEntry\032+\n\tDataEntry\022\013\n\003ke" + + "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\245\001\n\014BeatInfoD" + + "ata\022\023\n\013serviceName\030\001 \001(\t\022\023\n\013namespaceId\030" + + "\002 \001(\t\022\023\n\013clusterName\030\003 \001(\t\022\n\n\002ip\030\004 \001(\t\022\014" + + "\n\004port\030\005 \001(\005\022\014\n\004beat\030\006 \001(\t\022\017\n\007appName\030\007 " + + "\001(\t\022\r\n\005agent\030\010 \001(\t\022\016\n\006source\030\t \001(\t\"\275\001\n\014D" + + "atumMapData\022L\n\010datumMap\030\001 \003(\0132:.run.mone" + + ".local.docean.protobuf.DatumMapData.Datu" + + "mMapEntry\032_\n\rDatumMapEntry\022\013\n\003key\030\001 \001(\t\022" + + "=\n\005value\030\002 \001(\0132..run.mone.local.docean.p" + + "rotobuf.InstancesProto:\0028\001\"\213\003\n\rInstanceP" + + "roto\022\013\n\003key\030\001 \001(\t\022\021\n\ttimestamp\030\002 \001(\003\022\020\n\010" + + "lastBeat\030\003 \001(\003\022\016\n\006marked\030\004 \001(\010\022\016\n\006tenant" + + "\030\005 \001(\t\022\013\n\003app\030\006 \001(\t\022\022\n\ninstanceId\030\007 \001(\t\022" + + "\n\n\002ip\030\010 \001(\t\022\014\n\004port\030\t \001(\005\022\016\n\006weight\030\n \001(" + + "\001\022\017\n\007healthy\030\013 \001(\010\022\017\n\007enabled\030\014 \001(\010\022\021\n\te" + + "phemeral\030\r \001(\010\022\023\n\013clusterName\030\016 \001(\t\022\023\n\013s" + + "erviceName\030\017 \001(\t\022M\n\010metadata\030\020 \003(\0132;.run" + + ".mone.local.docean.protobuf.InstanceProt" + + "o.MetadataEntry\032/\n\rMetadataEntry\022\013\n\003key\030" + + "\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"r\n\016InstancesPro" + + "to\022@\n\tinstances\030\001 \003(\0132-.run.mone.local.d" + + "ocean.protobuf.InstanceProto\022\013\n\003key\030\002 \001(" + + "\t\022\021\n\ttimestamp\030\003 \001(\003\"\226\003\n\rNacosReqProto\022\013" + + "\n\003cmd\030\001 \001(\t\022>\n\010beatinfo\030\002 \001(\0132,.run.mone" + + ".local.docean.protobuf.BeatInfoData\022\014\n\004f" + + "rom\030\003 \001(\t\022:\n\010checkSum\030\004 \001(\0132(.run.mone.l" + + "ocal.docean.protobuf.CheckSum\022\030\n\020showErr" + + "orMessage\030\005 \001(\010\022\016\n\006source\030\006 \001(\t\022\021\n\tdatum" + + "Keys\030\007 \003(\t\022O\n\tinstances\030\010 \003(\0132<.run.mone" + + ".local.docean.protobuf.NacosReqProto.Ins" + + "tancesEntry\032`\n\016InstancesEntry\022\013\n\003key\030\001 \001" + + "(\t\022=\n\005value\030\002 \001(\0132..run.mone.local.docea" + + "n.protobuf.InstancesProto:\0028\001\"\344\001\n\tAiMess" + + "age\022\013\n\003cmd\030\001 \001(\t\022O\n\013messageMeta\030\002 \003(\0132:." + + "run.mone.local.docean.protobuf.AiMessage" + + ".MessageMetaEntry\022\017\n\007message\030\003 \001(\t\022\014\n\004ti" + + "me\030\004 \001(\003\022\014\n\004data\030\005 \001(\t\022\014\n\004from\030\006 \001(\t\022\n\n\002" + + "to\030\007 \001(\t\0322\n\020MessageMetaEntry\022\013\n\003key\030\001 \001(" + + "\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\211\001\n\005AiCmd\022\013\n\003cmd\030\001 " + + "\001(\t\022C\n\007cmdMeta\030\002 \003(\01322.run.mone.local.do" + + "cean.protobuf.AiCmd.CmdMetaEntry\032.\n\014CmdM" + + "etaEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001" + + "\"\230\001\n\010AiResult\022\014\n\004code\030\001 \001(\005\022\017\n\007message\030\002" + + " \001(\t\022@\n\004data\030\003 \003(\01322.run.mone.local.doce" + + "an.protobuf.AiResult.DataEntry\032+\n\tDataEn" + + "try\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\300\001\n\007" + + "PingMsg\022\020\n\010userName\030\001 \001(\t\022\014\n\004role\030\002 \001(\t\022" + + "\014\n\004time\030\003 \001(\003\022\r\n\005alias\030\004 \001(\t\022G\n\010pingMeta" + + "\030\005 \003(\01325.run.mone.local.docean.protobuf." + + "PingMsg.PingMetaEntry\032/\n\rPingMetaEntry\022\013" + + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\002P\001b\006prot" + + "o3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_run_mone_local_docean_protobuf_HelloRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_run_mone_local_docean_protobuf_HelloRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_HelloRequest_descriptor, + new java.lang.String[] { "FirstName", "LastName", }); + internal_static_run_mone_local_docean_protobuf_ListRequest_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_run_mone_local_docean_protobuf_ListRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_ListRequest_descriptor, + new java.lang.String[] { "NamespaceId", "ServiceName", "Agent", "Clusters", "ClientIP", "UdpPort", "Env", "IsCheck", "App", "Tid", "Tenant", "HealthyOnly", "Cmd", "Cluster", "Ip", "Port", "PageNo", "PageSize", "GroupName", "SelectorString", }); + internal_static_run_mone_local_docean_protobuf_ListResponse_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_run_mone_local_docean_protobuf_ListResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_ListResponse_descriptor, + new java.lang.String[] { "Data", "Instances", "Code", "Instance", }); + internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_run_mone_local_docean_protobuf_CheckSum_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor, + new java.lang.String[] { "Data", }); + internal_static_run_mone_local_docean_protobuf_CheckSum_DataEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_CheckSum_DataEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_CheckSum_DataEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_BeatInfoData_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_run_mone_local_docean_protobuf_BeatInfoData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_BeatInfoData_descriptor, + new java.lang.String[] { "ServiceName", "NamespaceId", "ClusterName", "Ip", "Port", "Beat", "AppName", "Agent", "Source", }); + internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_run_mone_local_docean_protobuf_DatumMapData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor, + new java.lang.String[] { "DatumMap", }); + internal_static_run_mone_local_docean_protobuf_DatumMapData_DatumMapEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_DatumMapData_DatumMapEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_DatumMapData_DatumMapEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_run_mone_local_docean_protobuf_InstanceProto_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor, + new java.lang.String[] { "Key", "Timestamp", "LastBeat", "Marked", "Tenant", "App", "InstanceId", "Ip", "Port", "Weight", "Healthy", "Enabled", "Ephemeral", "ClusterName", "ServiceName", "Metadata", }); + internal_static_run_mone_local_docean_protobuf_InstanceProto_MetadataEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_InstanceProto_MetadataEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_InstanceProto_MetadataEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_InstancesProto_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_run_mone_local_docean_protobuf_InstancesProto_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_InstancesProto_descriptor, + new java.lang.String[] { "Instances", "Key", "Timestamp", }); + internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_run_mone_local_docean_protobuf_NacosReqProto_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor, + new java.lang.String[] { "Cmd", "Beatinfo", "From", "CheckSum", "ShowErrorMessage", "Source", "DatumKeys", "Instances", }); + internal_static_run_mone_local_docean_protobuf_NacosReqProto_InstancesEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_NacosReqProto_InstancesEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_NacosReqProto_InstancesEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_run_mone_local_docean_protobuf_AiMessage_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor, + new java.lang.String[] { "Cmd", "MessageMeta", "Message", "Time", "Data", "From", "To", }); + internal_static_run_mone_local_docean_protobuf_AiMessage_MessageMetaEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_AiMessage_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_AiMessage_MessageMetaEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_AiMessage_MessageMetaEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_run_mone_local_docean_protobuf_AiCmd_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor, + new java.lang.String[] { "Cmd", "CmdMeta", }); + internal_static_run_mone_local_docean_protobuf_AiCmd_CmdMetaEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_AiCmd_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_AiCmd_CmdMetaEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_AiCmd_CmdMetaEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_AiResult_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_run_mone_local_docean_protobuf_AiResult_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_AiResult_descriptor, + new java.lang.String[] { "Code", "Message", "Data", }); + internal_static_run_mone_local_docean_protobuf_AiResult_DataEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_AiResult_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_AiResult_DataEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_AiResult_DataEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor = + getDescriptor().getMessageTypes().get(12); + internal_static_run_mone_local_docean_protobuf_PingMsg_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor, + new java.lang.String[] { "UserName", "Role", "Time", "Alias", "PingMeta", }); + internal_static_run_mone_local_docean_protobuf_PingMsg_PingMetaEntry_descriptor = + internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor.getNestedTypes().get(0); + internal_static_run_mone_local_docean_protobuf_PingMsg_PingMetaEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_run_mone_local_docean_protobuf_PingMsg_PingMetaEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/CheckSum.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/CheckSum.java new file mode 100644 index 000000000..16222f23e --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/CheckSum.java @@ -0,0 +1,708 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.CheckSum} + */ +public final class CheckSum extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.CheckSum) + CheckSumOrBuilder { +private static final long serialVersionUID = 0L; + // Use CheckSum.newBuilder() to construct. + private CheckSum(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CheckSum() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CheckSum(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CheckSum( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + data_ = com.google.protobuf.MapField.newMapField( + DataDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + data__ = input.readMessage( + DataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + data_.getMutableMap().put( + data__.getKey(), data__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 1: + return internalGetData(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_CheckSum_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.CheckSum.class, run.mone.local.docean.protobuf.CheckSum.Builder.class); + } + + public static final int DATA_FIELD_NUMBER = 1; + private static final class DataDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, java.lang.String> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_CheckSum_DataEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.STRING, + ""); + } + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> data_; + private com.google.protobuf.MapField + internalGetData() { + if (data_ == null) { + return com.google.protobuf.MapField.emptyMapField( + DataDefaultEntryHolder.defaultEntry); + } + return data_; + } + + public int getDataCount() { + return internalGetData().getMap().size(); + } + /** + * map<string, string> data = 1; + */ + + @java.lang.Override + public boolean containsData( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetData().getMap().containsKey(key); + } + /** + * Use {@link #getDataMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getData() { + return getDataMap(); + } + /** + * map<string, string> data = 1; + */ + @java.lang.Override + + public java.util.Map getDataMap() { + return internalGetData().getMap(); + } + /** + * map<string, string> data = 1; + */ + @java.lang.Override + + public java.lang.String getDataOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> data = 1; + */ + @java.lang.Override + + public java.lang.String getDataOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetData(), + DataDefaultEntryHolder.defaultEntry, + 1); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (java.util.Map.Entry entry + : internalGetData().getMap().entrySet()) { + com.google.protobuf.MapEntry + data__ = DataDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, data__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.CheckSum)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.CheckSum other = (run.mone.local.docean.protobuf.CheckSum) obj; + + if (!internalGetData().equals( + other.internalGetData())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (!internalGetData().getMap().isEmpty()) { + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + internalGetData().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.CheckSum parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.CheckSum parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.CheckSum parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.CheckSum prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.CheckSum} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.CheckSum) + run.mone.local.docean.protobuf.CheckSumOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 1: + return internalGetData(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 1: + return internalGetMutableData(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_CheckSum_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.CheckSum.class, run.mone.local.docean.protobuf.CheckSum.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.CheckSum.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + internalGetMutableData().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_CheckSum_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.CheckSum getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.CheckSum.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.CheckSum build() { + run.mone.local.docean.protobuf.CheckSum result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.CheckSum buildPartial() { + run.mone.local.docean.protobuf.CheckSum result = new run.mone.local.docean.protobuf.CheckSum(this); + int from_bitField0_ = bitField0_; + result.data_ = internalGetData(); + result.data_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.CheckSum) { + return mergeFrom((run.mone.local.docean.protobuf.CheckSum)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.CheckSum other) { + if (other == run.mone.local.docean.protobuf.CheckSum.getDefaultInstance()) return this; + internalGetMutableData().mergeFrom( + other.internalGetData()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.CheckSum parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.CheckSum) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> data_; + private com.google.protobuf.MapField + internalGetData() { + if (data_ == null) { + return com.google.protobuf.MapField.emptyMapField( + DataDefaultEntryHolder.defaultEntry); + } + return data_; + } + private com.google.protobuf.MapField + internalGetMutableData() { + onChanged();; + if (data_ == null) { + data_ = com.google.protobuf.MapField.newMapField( + DataDefaultEntryHolder.defaultEntry); + } + if (!data_.isMutable()) { + data_ = data_.copy(); + } + return data_; + } + + public int getDataCount() { + return internalGetData().getMap().size(); + } + /** + * map<string, string> data = 1; + */ + + @java.lang.Override + public boolean containsData( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetData().getMap().containsKey(key); + } + /** + * Use {@link #getDataMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getData() { + return getDataMap(); + } + /** + * map<string, string> data = 1; + */ + @java.lang.Override + + public java.util.Map getDataMap() { + return internalGetData().getMap(); + } + /** + * map<string, string> data = 1; + */ + @java.lang.Override + + public java.lang.String getDataOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> data = 1; + */ + @java.lang.Override + + public java.lang.String getDataOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetData().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearData() { + internalGetMutableData().getMutableMap() + .clear(); + return this; + } + /** + * map<string, string> data = 1; + */ + + public Builder removeData( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableData().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableData() { + return internalGetMutableData().getMutableMap(); + } + /** + * map<string, string> data = 1; + */ + public Builder putData( + java.lang.String key, + java.lang.String value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableData().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, string> data = 1; + */ + + public Builder putAllData( + java.util.Map values) { + internalGetMutableData().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.CheckSum) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.CheckSum) + private static final run.mone.local.docean.protobuf.CheckSum DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.CheckSum(); + } + + public static run.mone.local.docean.protobuf.CheckSum getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CheckSum parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CheckSum(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.CheckSum getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/CheckSumOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/CheckSumOrBuilder.java new file mode 100644 index 000000000..2466c8c59 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/CheckSumOrBuilder.java @@ -0,0 +1,43 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface CheckSumOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.CheckSum) + com.google.protobuf.MessageOrBuilder { + + /** + * map<string, string> data = 1; + */ + int getDataCount(); + /** + * map<string, string> data = 1; + */ + boolean containsData( + java.lang.String key); + /** + * Use {@link #getDataMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getData(); + /** + * map<string, string> data = 1; + */ + java.util.Map + getDataMap(); + /** + * map<string, string> data = 1; + */ + + java.lang.String getDataOrDefault( + java.lang.String key, + java.lang.String defaultValue); + /** + * map<string, string> data = 1; + */ + + java.lang.String getDataOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/DatumMapData.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/DatumMapData.java new file mode 100644 index 000000000..4a104964f --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/DatumMapData.java @@ -0,0 +1,708 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.DatumMapData} + */ +public final class DatumMapData extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.DatumMapData) + DatumMapDataOrBuilder { +private static final long serialVersionUID = 0L; + // Use DatumMapData.newBuilder() to construct. + private DatumMapData(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DatumMapData() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DatumMapData(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DatumMapData( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + datumMap_ = com.google.protobuf.MapField.newMapField( + DatumMapDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + datumMap__ = input.readMessage( + DatumMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + datumMap_.getMutableMap().put( + datumMap__.getKey(), datumMap__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 1: + return internalGetDatumMap(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_DatumMapData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.DatumMapData.class, run.mone.local.docean.protobuf.DatumMapData.Builder.class); + } + + public static final int DATUMMAP_FIELD_NUMBER = 1; + private static final class DatumMapDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, run.mone.local.docean.protobuf.InstancesProto> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_DatumMapData_DatumMapEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.MESSAGE, + run.mone.local.docean.protobuf.InstancesProto.getDefaultInstance()); + } + private com.google.protobuf.MapField< + java.lang.String, run.mone.local.docean.protobuf.InstancesProto> datumMap_; + private com.google.protobuf.MapField + internalGetDatumMap() { + if (datumMap_ == null) { + return com.google.protobuf.MapField.emptyMapField( + DatumMapDefaultEntryHolder.defaultEntry); + } + return datumMap_; + } + + public int getDatumMapCount() { + return internalGetDatumMap().getMap().size(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + + @java.lang.Override + public boolean containsDatumMap( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetDatumMap().getMap().containsKey(key); + } + /** + * Use {@link #getDatumMapMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getDatumMap() { + return getDatumMapMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + @java.lang.Override + + public java.util.Map getDatumMapMap() { + return internalGetDatumMap().getMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getDatumMapOrDefault( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetDatumMap().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getDatumMapOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetDatumMap().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetDatumMap(), + DatumMapDefaultEntryHolder.defaultEntry, + 1); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (java.util.Map.Entry entry + : internalGetDatumMap().getMap().entrySet()) { + com.google.protobuf.MapEntry + datumMap__ = DatumMapDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, datumMap__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.DatumMapData)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.DatumMapData other = (run.mone.local.docean.protobuf.DatumMapData) obj; + + if (!internalGetDatumMap().equals( + other.internalGetDatumMap())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (!internalGetDatumMap().getMap().isEmpty()) { + hash = (37 * hash) + DATUMMAP_FIELD_NUMBER; + hash = (53 * hash) + internalGetDatumMap().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.DatumMapData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.DatumMapData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.DatumMapData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.DatumMapData prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.DatumMapData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.DatumMapData) + run.mone.local.docean.protobuf.DatumMapDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 1: + return internalGetDatumMap(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 1: + return internalGetMutableDatumMap(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_DatumMapData_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.DatumMapData.class, run.mone.local.docean.protobuf.DatumMapData.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.DatumMapData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + internalGetMutableDatumMap().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_DatumMapData_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.DatumMapData getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.DatumMapData.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.DatumMapData build() { + run.mone.local.docean.protobuf.DatumMapData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.DatumMapData buildPartial() { + run.mone.local.docean.protobuf.DatumMapData result = new run.mone.local.docean.protobuf.DatumMapData(this); + int from_bitField0_ = bitField0_; + result.datumMap_ = internalGetDatumMap(); + result.datumMap_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.DatumMapData) { + return mergeFrom((run.mone.local.docean.protobuf.DatumMapData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.DatumMapData other) { + if (other == run.mone.local.docean.protobuf.DatumMapData.getDefaultInstance()) return this; + internalGetMutableDatumMap().mergeFrom( + other.internalGetDatumMap()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.DatumMapData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.DatumMapData) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private com.google.protobuf.MapField< + java.lang.String, run.mone.local.docean.protobuf.InstancesProto> datumMap_; + private com.google.protobuf.MapField + internalGetDatumMap() { + if (datumMap_ == null) { + return com.google.protobuf.MapField.emptyMapField( + DatumMapDefaultEntryHolder.defaultEntry); + } + return datumMap_; + } + private com.google.protobuf.MapField + internalGetMutableDatumMap() { + onChanged();; + if (datumMap_ == null) { + datumMap_ = com.google.protobuf.MapField.newMapField( + DatumMapDefaultEntryHolder.defaultEntry); + } + if (!datumMap_.isMutable()) { + datumMap_ = datumMap_.copy(); + } + return datumMap_; + } + + public int getDatumMapCount() { + return internalGetDatumMap().getMap().size(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + + @java.lang.Override + public boolean containsDatumMap( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetDatumMap().getMap().containsKey(key); + } + /** + * Use {@link #getDatumMapMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getDatumMap() { + return getDatumMapMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + @java.lang.Override + + public java.util.Map getDatumMapMap() { + return internalGetDatumMap().getMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getDatumMapOrDefault( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetDatumMap().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getDatumMapOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetDatumMap().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearDatumMap() { + internalGetMutableDatumMap().getMutableMap() + .clear(); + return this; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + + public Builder removeDatumMap( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableDatumMap().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableDatumMap() { + return internalGetMutableDatumMap().getMutableMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + public Builder putDatumMap( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableDatumMap().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + + public Builder putAllDatumMap( + java.util.Map values) { + internalGetMutableDatumMap().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.DatumMapData) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.DatumMapData) + private static final run.mone.local.docean.protobuf.DatumMapData DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.DatumMapData(); + } + + public static run.mone.local.docean.protobuf.DatumMapData getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DatumMapData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DatumMapData(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.DatumMapData getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/DatumMapDataOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/DatumMapDataOrBuilder.java new file mode 100644 index 000000000..5da70c888 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/DatumMapDataOrBuilder.java @@ -0,0 +1,43 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface DatumMapDataOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.DatumMapData) + com.google.protobuf.MessageOrBuilder { + + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + int getDatumMapCount(); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + boolean containsDatumMap( + java.lang.String key); + /** + * Use {@link #getDatumMapMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getDatumMap(); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + java.util.Map + getDatumMapMap(); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + + run.mone.local.docean.protobuf.InstancesProto getDatumMapOrDefault( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto defaultValue); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> datumMap = 1; + */ + + run.mone.local.docean.protobuf.InstancesProto getDatumMapOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/HelloRequest.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/HelloRequest.java new file mode 100644 index 000000000..424de7ddb --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/HelloRequest.java @@ -0,0 +1,695 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.HelloRequest} + */ +public final class HelloRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.HelloRequest) + HelloRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use HelloRequest.newBuilder() to construct. + private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private HelloRequest() { + firstName_ = ""; + lastName_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new HelloRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private HelloRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + firstName_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + lastName_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_HelloRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_HelloRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.HelloRequest.class, run.mone.local.docean.protobuf.HelloRequest.Builder.class); + } + + public static final int FIRSTNAME_FIELD_NUMBER = 1; + private volatile java.lang.Object firstName_; + /** + * string firstName = 1; + * @return The firstName. + */ + @java.lang.Override + public java.lang.String getFirstName() { + java.lang.Object ref = firstName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + firstName_ = s; + return s; + } + } + /** + * string firstName = 1; + * @return The bytes for firstName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFirstNameBytes() { + java.lang.Object ref = firstName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + firstName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int LASTNAME_FIELD_NUMBER = 2; + private volatile java.lang.Object lastName_; + /** + * string lastName = 2; + * @return The lastName. + */ + @java.lang.Override + public java.lang.String getLastName() { + java.lang.Object ref = lastName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastName_ = s; + return s; + } + } + /** + * string lastName = 2; + * @return The bytes for lastName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getLastNameBytes() { + java.lang.Object ref = lastName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lastName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(firstName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, firstName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, lastName_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(firstName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, firstName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, lastName_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.HelloRequest)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.HelloRequest other = (run.mone.local.docean.protobuf.HelloRequest) obj; + + if (!getFirstName() + .equals(other.getFirstName())) return false; + if (!getLastName() + .equals(other.getLastName())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FIRSTNAME_FIELD_NUMBER; + hash = (53 * hash) + getFirstName().hashCode(); + hash = (37 * hash) + LASTNAME_FIELD_NUMBER; + hash = (53 * hash) + getLastName().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.HelloRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.HelloRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.HelloRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.HelloRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.HelloRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.HelloRequest) + run.mone.local.docean.protobuf.HelloRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_HelloRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_HelloRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.HelloRequest.class, run.mone.local.docean.protobuf.HelloRequest.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.HelloRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + firstName_ = ""; + + lastName_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_HelloRequest_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.HelloRequest getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.HelloRequest.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.HelloRequest build() { + run.mone.local.docean.protobuf.HelloRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.HelloRequest buildPartial() { + run.mone.local.docean.protobuf.HelloRequest result = new run.mone.local.docean.protobuf.HelloRequest(this); + result.firstName_ = firstName_; + result.lastName_ = lastName_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.HelloRequest) { + return mergeFrom((run.mone.local.docean.protobuf.HelloRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.HelloRequest other) { + if (other == run.mone.local.docean.protobuf.HelloRequest.getDefaultInstance()) return this; + if (!other.getFirstName().isEmpty()) { + firstName_ = other.firstName_; + onChanged(); + } + if (!other.getLastName().isEmpty()) { + lastName_ = other.lastName_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.HelloRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.HelloRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object firstName_ = ""; + /** + * string firstName = 1; + * @return The firstName. + */ + public java.lang.String getFirstName() { + java.lang.Object ref = firstName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + firstName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string firstName = 1; + * @return The bytes for firstName. + */ + public com.google.protobuf.ByteString + getFirstNameBytes() { + java.lang.Object ref = firstName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + firstName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string firstName = 1; + * @param value The firstName to set. + * @return This builder for chaining. + */ + public Builder setFirstName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + firstName_ = value; + onChanged(); + return this; + } + /** + * string firstName = 1; + * @return This builder for chaining. + */ + public Builder clearFirstName() { + + firstName_ = getDefaultInstance().getFirstName(); + onChanged(); + return this; + } + /** + * string firstName = 1; + * @param value The bytes for firstName to set. + * @return This builder for chaining. + */ + public Builder setFirstNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + firstName_ = value; + onChanged(); + return this; + } + + private java.lang.Object lastName_ = ""; + /** + * string lastName = 2; + * @return The lastName. + */ + public java.lang.String getLastName() { + java.lang.Object ref = lastName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + lastName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string lastName = 2; + * @return The bytes for lastName. + */ + public com.google.protobuf.ByteString + getLastNameBytes() { + java.lang.Object ref = lastName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + lastName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string lastName = 2; + * @param value The lastName to set. + * @return This builder for chaining. + */ + public Builder setLastName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + lastName_ = value; + onChanged(); + return this; + } + /** + * string lastName = 2; + * @return This builder for chaining. + */ + public Builder clearLastName() { + + lastName_ = getDefaultInstance().getLastName(); + onChanged(); + return this; + } + /** + * string lastName = 2; + * @param value The bytes for lastName to set. + * @return This builder for chaining. + */ + public Builder setLastNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + lastName_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.HelloRequest) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.HelloRequest) + private static final run.mone.local.docean.protobuf.HelloRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.HelloRequest(); + } + + public static run.mone.local.docean.protobuf.HelloRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public HelloRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new HelloRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.HelloRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/HelloRequestOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/HelloRequestOrBuilder.java new file mode 100644 index 000000000..2f07302ef --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/HelloRequestOrBuilder.java @@ -0,0 +1,33 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface HelloRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.HelloRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string firstName = 1; + * @return The firstName. + */ + java.lang.String getFirstName(); + /** + * string firstName = 1; + * @return The bytes for firstName. + */ + com.google.protobuf.ByteString + getFirstNameBytes(); + + /** + * string lastName = 2; + * @return The lastName. + */ + java.lang.String getLastName(); + /** + * string lastName = 2; + * @return The bytes for lastName. + */ + com.google.protobuf.ByteString + getLastNameBytes(); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstanceProto.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstanceProto.java new file mode 100644 index 000000000..ebab9417c --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstanceProto.java @@ -0,0 +1,2194 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.InstanceProto} + */ +public final class InstanceProto extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.InstanceProto) + InstanceProtoOrBuilder { +private static final long serialVersionUID = 0L; + // Use InstanceProto.newBuilder() to construct. + private InstanceProto(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private InstanceProto() { + key_ = ""; + tenant_ = ""; + app_ = ""; + instanceId_ = ""; + ip_ = ""; + clusterName_ = ""; + serviceName_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new InstanceProto(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private InstanceProto( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + key_ = s; + break; + } + case 16: { + + timestamp_ = input.readInt64(); + break; + } + case 24: { + + lastBeat_ = input.readInt64(); + break; + } + case 32: { + + marked_ = input.readBool(); + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + tenant_ = s; + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + + app_ = s; + break; + } + case 58: { + java.lang.String s = input.readStringRequireUtf8(); + + instanceId_ = s; + break; + } + case 66: { + java.lang.String s = input.readStringRequireUtf8(); + + ip_ = s; + break; + } + case 72: { + + port_ = input.readInt32(); + break; + } + case 81: { + + weight_ = input.readDouble(); + break; + } + case 88: { + + healthy_ = input.readBool(); + break; + } + case 96: { + + enabled_ = input.readBool(); + break; + } + case 104: { + + ephemeral_ = input.readBool(); + break; + } + case 114: { + java.lang.String s = input.readStringRequireUtf8(); + + clusterName_ = s; + break; + } + case 122: { + java.lang.String s = input.readStringRequireUtf8(); + + serviceName_ = s; + break; + } + case 130: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + metadata_ = com.google.protobuf.MapField.newMapField( + MetadataDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + metadata__ = input.readMessage( + MetadataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + metadata_.getMutableMap().put( + metadata__.getKey(), metadata__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 16: + return internalGetMetadata(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstanceProto_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.InstanceProto.class, run.mone.local.docean.protobuf.InstanceProto.Builder.class); + } + + public static final int KEY_FIELD_NUMBER = 1; + private volatile java.lang.Object key_; + /** + * string key = 1; + * @return The key. + */ + @java.lang.Override + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } + } + /** + * string key = 1; + * @return The bytes for key. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TIMESTAMP_FIELD_NUMBER = 2; + private long timestamp_; + /** + * int64 timestamp = 2; + * @return The timestamp. + */ + @java.lang.Override + public long getTimestamp() { + return timestamp_; + } + + public static final int LASTBEAT_FIELD_NUMBER = 3; + private long lastBeat_; + /** + * int64 lastBeat = 3; + * @return The lastBeat. + */ + @java.lang.Override + public long getLastBeat() { + return lastBeat_; + } + + public static final int MARKED_FIELD_NUMBER = 4; + private boolean marked_; + /** + * bool marked = 4; + * @return The marked. + */ + @java.lang.Override + public boolean getMarked() { + return marked_; + } + + public static final int TENANT_FIELD_NUMBER = 5; + private volatile java.lang.Object tenant_; + /** + * string tenant = 5; + * @return The tenant. + */ + @java.lang.Override + public java.lang.String getTenant() { + java.lang.Object ref = tenant_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tenant_ = s; + return s; + } + } + /** + * string tenant = 5; + * @return The bytes for tenant. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTenantBytes() { + java.lang.Object ref = tenant_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tenant_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int APP_FIELD_NUMBER = 6; + private volatile java.lang.Object app_; + /** + * string app = 6; + * @return The app. + */ + @java.lang.Override + public java.lang.String getApp() { + java.lang.Object ref = app_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + app_ = s; + return s; + } + } + /** + * string app = 6; + * @return The bytes for app. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAppBytes() { + java.lang.Object ref = app_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + app_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int INSTANCEID_FIELD_NUMBER = 7; + private volatile java.lang.Object instanceId_; + /** + * string instanceId = 7; + * @return The instanceId. + */ + @java.lang.Override + public java.lang.String getInstanceId() { + java.lang.Object ref = instanceId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + instanceId_ = s; + return s; + } + } + /** + * string instanceId = 7; + * @return The bytes for instanceId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getInstanceIdBytes() { + java.lang.Object ref = instanceId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + instanceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IP_FIELD_NUMBER = 8; + private volatile java.lang.Object ip_; + /** + * string ip = 8; + * @return The ip. + */ + @java.lang.Override + public java.lang.String getIp() { + java.lang.Object ref = ip_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ip_ = s; + return s; + } + } + /** + * string ip = 8; + * @return The bytes for ip. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getIpBytes() { + java.lang.Object ref = ip_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ip_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PORT_FIELD_NUMBER = 9; + private int port_; + /** + * int32 port = 9; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + + public static final int WEIGHT_FIELD_NUMBER = 10; + private double weight_; + /** + * double weight = 10; + * @return The weight. + */ + @java.lang.Override + public double getWeight() { + return weight_; + } + + public static final int HEALTHY_FIELD_NUMBER = 11; + private boolean healthy_; + /** + * bool healthy = 11; + * @return The healthy. + */ + @java.lang.Override + public boolean getHealthy() { + return healthy_; + } + + public static final int ENABLED_FIELD_NUMBER = 12; + private boolean enabled_; + /** + * bool enabled = 12; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + + public static final int EPHEMERAL_FIELD_NUMBER = 13; + private boolean ephemeral_; + /** + * bool ephemeral = 13; + * @return The ephemeral. + */ + @java.lang.Override + public boolean getEphemeral() { + return ephemeral_; + } + + public static final int CLUSTERNAME_FIELD_NUMBER = 14; + private volatile java.lang.Object clusterName_; + /** + * string clusterName = 14; + * @return The clusterName. + */ + @java.lang.Override + public java.lang.String getClusterName() { + java.lang.Object ref = clusterName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clusterName_ = s; + return s; + } + } + /** + * string clusterName = 14; + * @return The bytes for clusterName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getClusterNameBytes() { + java.lang.Object ref = clusterName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clusterName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SERVICENAME_FIELD_NUMBER = 15; + private volatile java.lang.Object serviceName_; + /** + * string serviceName = 15; + * @return The serviceName. + */ + @java.lang.Override + public java.lang.String getServiceName() { + java.lang.Object ref = serviceName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serviceName_ = s; + return s; + } + } + /** + * string serviceName = 15; + * @return The bytes for serviceName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getServiceNameBytes() { + java.lang.Object ref = serviceName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serviceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int METADATA_FIELD_NUMBER = 16; + private static final class MetadataDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, java.lang.String> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstanceProto_MetadataEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.STRING, + ""); + } + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> metadata_; + private com.google.protobuf.MapField + internalGetMetadata() { + if (metadata_ == null) { + return com.google.protobuf.MapField.emptyMapField( + MetadataDefaultEntryHolder.defaultEntry); + } + return metadata_; + } + + public int getMetadataCount() { + return internalGetMetadata().getMap().size(); + } + /** + * map<string, string> metadata = 16; + */ + + @java.lang.Override + public boolean containsMetadata( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetMetadata().getMap().containsKey(key); + } + /** + * Use {@link #getMetadataMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getMetadata() { + return getMetadataMap(); + } + /** + * map<string, string> metadata = 16; + */ + @java.lang.Override + + public java.util.Map getMetadataMap() { + return internalGetMetadata().getMap(); + } + /** + * map<string, string> metadata = 16; + */ + @java.lang.Override + + public java.lang.String getMetadataOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMetadata().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> metadata = 16; + */ + @java.lang.Override + + public java.lang.String getMetadataOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMetadata().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_); + } + if (timestamp_ != 0L) { + output.writeInt64(2, timestamp_); + } + if (lastBeat_ != 0L) { + output.writeInt64(3, lastBeat_); + } + if (marked_ != false) { + output.writeBool(4, marked_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tenant_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, tenant_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(app_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, app_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(instanceId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, instanceId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ip_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 8, ip_); + } + if (port_ != 0) { + output.writeInt32(9, port_); + } + if (java.lang.Double.doubleToRawLongBits(weight_) != 0) { + output.writeDouble(10, weight_); + } + if (healthy_ != false) { + output.writeBool(11, healthy_); + } + if (enabled_ != false) { + output.writeBool(12, enabled_); + } + if (ephemeral_ != false) { + output.writeBool(13, ephemeral_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusterName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 14, clusterName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 15, serviceName_); + } + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetMetadata(), + MetadataDefaultEntryHolder.defaultEntry, + 16); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_); + } + if (timestamp_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(2, timestamp_); + } + if (lastBeat_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(3, lastBeat_); + } + if (marked_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, marked_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tenant_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, tenant_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(app_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, app_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(instanceId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, instanceId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ip_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, ip_); + } + if (port_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(9, port_); + } + if (java.lang.Double.doubleToRawLongBits(weight_) != 0) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(10, weight_); + } + if (healthy_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(11, healthy_); + } + if (enabled_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(12, enabled_); + } + if (ephemeral_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(13, ephemeral_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusterName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, clusterName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, serviceName_); + } + for (java.util.Map.Entry entry + : internalGetMetadata().getMap().entrySet()) { + com.google.protobuf.MapEntry + metadata__ = MetadataDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(16, metadata__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.InstanceProto)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.InstanceProto other = (run.mone.local.docean.protobuf.InstanceProto) obj; + + if (!getKey() + .equals(other.getKey())) return false; + if (getTimestamp() + != other.getTimestamp()) return false; + if (getLastBeat() + != other.getLastBeat()) return false; + if (getMarked() + != other.getMarked()) return false; + if (!getTenant() + .equals(other.getTenant())) return false; + if (!getApp() + .equals(other.getApp())) return false; + if (!getInstanceId() + .equals(other.getInstanceId())) return false; + if (!getIp() + .equals(other.getIp())) return false; + if (getPort() + != other.getPort()) return false; + if (java.lang.Double.doubleToLongBits(getWeight()) + != java.lang.Double.doubleToLongBits( + other.getWeight())) return false; + if (getHealthy() + != other.getHealthy()) return false; + if (getEnabled() + != other.getEnabled()) return false; + if (getEphemeral() + != other.getEphemeral()) return false; + if (!getClusterName() + .equals(other.getClusterName())) return false; + if (!getServiceName() + .equals(other.getServiceName())) return false; + if (!internalGetMetadata().equals( + other.internalGetMetadata())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + KEY_FIELD_NUMBER; + hash = (53 * hash) + getKey().hashCode(); + hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getTimestamp()); + hash = (37 * hash) + LASTBEAT_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getLastBeat()); + hash = (37 * hash) + MARKED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getMarked()); + hash = (37 * hash) + TENANT_FIELD_NUMBER; + hash = (53 * hash) + getTenant().hashCode(); + hash = (37 * hash) + APP_FIELD_NUMBER; + hash = (53 * hash) + getApp().hashCode(); + hash = (37 * hash) + INSTANCEID_FIELD_NUMBER; + hash = (53 * hash) + getInstanceId().hashCode(); + hash = (37 * hash) + IP_FIELD_NUMBER; + hash = (53 * hash) + getIp().hashCode(); + hash = (37 * hash) + PORT_FIELD_NUMBER; + hash = (53 * hash) + getPort(); + hash = (37 * hash) + WEIGHT_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getWeight())); + hash = (37 * hash) + HEALTHY_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getHealthy()); + hash = (37 * hash) + ENABLED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getEnabled()); + hash = (37 * hash) + EPHEMERAL_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getEphemeral()); + hash = (37 * hash) + CLUSTERNAME_FIELD_NUMBER; + hash = (53 * hash) + getClusterName().hashCode(); + hash = (37 * hash) + SERVICENAME_FIELD_NUMBER; + hash = (53 * hash) + getServiceName().hashCode(); + if (!internalGetMetadata().getMap().isEmpty()) { + hash = (37 * hash) + METADATA_FIELD_NUMBER; + hash = (53 * hash) + internalGetMetadata().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstanceProto parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.InstanceProto parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.InstanceProto parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.InstanceProto prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.InstanceProto} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.InstanceProto) + run.mone.local.docean.protobuf.InstanceProtoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 16: + return internalGetMetadata(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 16: + return internalGetMutableMetadata(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstanceProto_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.InstanceProto.class, run.mone.local.docean.protobuf.InstanceProto.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.InstanceProto.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + key_ = ""; + + timestamp_ = 0L; + + lastBeat_ = 0L; + + marked_ = false; + + tenant_ = ""; + + app_ = ""; + + instanceId_ = ""; + + ip_ = ""; + + port_ = 0; + + weight_ = 0D; + + healthy_ = false; + + enabled_ = false; + + ephemeral_ = false; + + clusterName_ = ""; + + serviceName_ = ""; + + internalGetMutableMetadata().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstanceProto_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto build() { + run.mone.local.docean.protobuf.InstanceProto result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto buildPartial() { + run.mone.local.docean.protobuf.InstanceProto result = new run.mone.local.docean.protobuf.InstanceProto(this); + int from_bitField0_ = bitField0_; + result.key_ = key_; + result.timestamp_ = timestamp_; + result.lastBeat_ = lastBeat_; + result.marked_ = marked_; + result.tenant_ = tenant_; + result.app_ = app_; + result.instanceId_ = instanceId_; + result.ip_ = ip_; + result.port_ = port_; + result.weight_ = weight_; + result.healthy_ = healthy_; + result.enabled_ = enabled_; + result.ephemeral_ = ephemeral_; + result.clusterName_ = clusterName_; + result.serviceName_ = serviceName_; + result.metadata_ = internalGetMetadata(); + result.metadata_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.InstanceProto) { + return mergeFrom((run.mone.local.docean.protobuf.InstanceProto)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.InstanceProto other) { + if (other == run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance()) return this; + if (!other.getKey().isEmpty()) { + key_ = other.key_; + onChanged(); + } + if (other.getTimestamp() != 0L) { + setTimestamp(other.getTimestamp()); + } + if (other.getLastBeat() != 0L) { + setLastBeat(other.getLastBeat()); + } + if (other.getMarked() != false) { + setMarked(other.getMarked()); + } + if (!other.getTenant().isEmpty()) { + tenant_ = other.tenant_; + onChanged(); + } + if (!other.getApp().isEmpty()) { + app_ = other.app_; + onChanged(); + } + if (!other.getInstanceId().isEmpty()) { + instanceId_ = other.instanceId_; + onChanged(); + } + if (!other.getIp().isEmpty()) { + ip_ = other.ip_; + onChanged(); + } + if (other.getPort() != 0) { + setPort(other.getPort()); + } + if (other.getWeight() != 0D) { + setWeight(other.getWeight()); + } + if (other.getHealthy() != false) { + setHealthy(other.getHealthy()); + } + if (other.getEnabled() != false) { + setEnabled(other.getEnabled()); + } + if (other.getEphemeral() != false) { + setEphemeral(other.getEphemeral()); + } + if (!other.getClusterName().isEmpty()) { + clusterName_ = other.clusterName_; + onChanged(); + } + if (!other.getServiceName().isEmpty()) { + serviceName_ = other.serviceName_; + onChanged(); + } + internalGetMutableMetadata().mergeFrom( + other.internalGetMetadata()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.InstanceProto parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.InstanceProto) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object key_ = ""; + /** + * string key = 1; + * @return The key. + */ + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string key = 1; + * @return The bytes for key. + */ + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string key = 1; + * @param value The key to set. + * @return This builder for chaining. + */ + public Builder setKey( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + key_ = value; + onChanged(); + return this; + } + /** + * string key = 1; + * @return This builder for chaining. + */ + public Builder clearKey() { + + key_ = getDefaultInstance().getKey(); + onChanged(); + return this; + } + /** + * string key = 1; + * @param value The bytes for key to set. + * @return This builder for chaining. + */ + public Builder setKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + key_ = value; + onChanged(); + return this; + } + + private long timestamp_ ; + /** + * int64 timestamp = 2; + * @return The timestamp. + */ + @java.lang.Override + public long getTimestamp() { + return timestamp_; + } + /** + * int64 timestamp = 2; + * @param value The timestamp to set. + * @return This builder for chaining. + */ + public Builder setTimestamp(long value) { + + timestamp_ = value; + onChanged(); + return this; + } + /** + * int64 timestamp = 2; + * @return This builder for chaining. + */ + public Builder clearTimestamp() { + + timestamp_ = 0L; + onChanged(); + return this; + } + + private long lastBeat_ ; + /** + * int64 lastBeat = 3; + * @return The lastBeat. + */ + @java.lang.Override + public long getLastBeat() { + return lastBeat_; + } + /** + * int64 lastBeat = 3; + * @param value The lastBeat to set. + * @return This builder for chaining. + */ + public Builder setLastBeat(long value) { + + lastBeat_ = value; + onChanged(); + return this; + } + /** + * int64 lastBeat = 3; + * @return This builder for chaining. + */ + public Builder clearLastBeat() { + + lastBeat_ = 0L; + onChanged(); + return this; + } + + private boolean marked_ ; + /** + * bool marked = 4; + * @return The marked. + */ + @java.lang.Override + public boolean getMarked() { + return marked_; + } + /** + * bool marked = 4; + * @param value The marked to set. + * @return This builder for chaining. + */ + public Builder setMarked(boolean value) { + + marked_ = value; + onChanged(); + return this; + } + /** + * bool marked = 4; + * @return This builder for chaining. + */ + public Builder clearMarked() { + + marked_ = false; + onChanged(); + return this; + } + + private java.lang.Object tenant_ = ""; + /** + * string tenant = 5; + * @return The tenant. + */ + public java.lang.String getTenant() { + java.lang.Object ref = tenant_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tenant_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string tenant = 5; + * @return The bytes for tenant. + */ + public com.google.protobuf.ByteString + getTenantBytes() { + java.lang.Object ref = tenant_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tenant_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string tenant = 5; + * @param value The tenant to set. + * @return This builder for chaining. + */ + public Builder setTenant( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + tenant_ = value; + onChanged(); + return this; + } + /** + * string tenant = 5; + * @return This builder for chaining. + */ + public Builder clearTenant() { + + tenant_ = getDefaultInstance().getTenant(); + onChanged(); + return this; + } + /** + * string tenant = 5; + * @param value The bytes for tenant to set. + * @return This builder for chaining. + */ + public Builder setTenantBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + tenant_ = value; + onChanged(); + return this; + } + + private java.lang.Object app_ = ""; + /** + * string app = 6; + * @return The app. + */ + public java.lang.String getApp() { + java.lang.Object ref = app_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + app_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string app = 6; + * @return The bytes for app. + */ + public com.google.protobuf.ByteString + getAppBytes() { + java.lang.Object ref = app_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + app_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string app = 6; + * @param value The app to set. + * @return This builder for chaining. + */ + public Builder setApp( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + app_ = value; + onChanged(); + return this; + } + /** + * string app = 6; + * @return This builder for chaining. + */ + public Builder clearApp() { + + app_ = getDefaultInstance().getApp(); + onChanged(); + return this; + } + /** + * string app = 6; + * @param value The bytes for app to set. + * @return This builder for chaining. + */ + public Builder setAppBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + app_ = value; + onChanged(); + return this; + } + + private java.lang.Object instanceId_ = ""; + /** + * string instanceId = 7; + * @return The instanceId. + */ + public java.lang.String getInstanceId() { + java.lang.Object ref = instanceId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + instanceId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string instanceId = 7; + * @return The bytes for instanceId. + */ + public com.google.protobuf.ByteString + getInstanceIdBytes() { + java.lang.Object ref = instanceId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + instanceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string instanceId = 7; + * @param value The instanceId to set. + * @return This builder for chaining. + */ + public Builder setInstanceId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + instanceId_ = value; + onChanged(); + return this; + } + /** + * string instanceId = 7; + * @return This builder for chaining. + */ + public Builder clearInstanceId() { + + instanceId_ = getDefaultInstance().getInstanceId(); + onChanged(); + return this; + } + /** + * string instanceId = 7; + * @param value The bytes for instanceId to set. + * @return This builder for chaining. + */ + public Builder setInstanceIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + instanceId_ = value; + onChanged(); + return this; + } + + private java.lang.Object ip_ = ""; + /** + * string ip = 8; + * @return The ip. + */ + public java.lang.String getIp() { + java.lang.Object ref = ip_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ip_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string ip = 8; + * @return The bytes for ip. + */ + public com.google.protobuf.ByteString + getIpBytes() { + java.lang.Object ref = ip_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ip_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string ip = 8; + * @param value The ip to set. + * @return This builder for chaining. + */ + public Builder setIp( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + ip_ = value; + onChanged(); + return this; + } + /** + * string ip = 8; + * @return This builder for chaining. + */ + public Builder clearIp() { + + ip_ = getDefaultInstance().getIp(); + onChanged(); + return this; + } + /** + * string ip = 8; + * @param value The bytes for ip to set. + * @return This builder for chaining. + */ + public Builder setIpBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + ip_ = value; + onChanged(); + return this; + } + + private int port_ ; + /** + * int32 port = 9; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + /** + * int32 port = 9; + * @param value The port to set. + * @return This builder for chaining. + */ + public Builder setPort(int value) { + + port_ = value; + onChanged(); + return this; + } + /** + * int32 port = 9; + * @return This builder for chaining. + */ + public Builder clearPort() { + + port_ = 0; + onChanged(); + return this; + } + + private double weight_ ; + /** + * double weight = 10; + * @return The weight. + */ + @java.lang.Override + public double getWeight() { + return weight_; + } + /** + * double weight = 10; + * @param value The weight to set. + * @return This builder for chaining. + */ + public Builder setWeight(double value) { + + weight_ = value; + onChanged(); + return this; + } + /** + * double weight = 10; + * @return This builder for chaining. + */ + public Builder clearWeight() { + + weight_ = 0D; + onChanged(); + return this; + } + + private boolean healthy_ ; + /** + * bool healthy = 11; + * @return The healthy. + */ + @java.lang.Override + public boolean getHealthy() { + return healthy_; + } + /** + * bool healthy = 11; + * @param value The healthy to set. + * @return This builder for chaining. + */ + public Builder setHealthy(boolean value) { + + healthy_ = value; + onChanged(); + return this; + } + /** + * bool healthy = 11; + * @return This builder for chaining. + */ + public Builder clearHealthy() { + + healthy_ = false; + onChanged(); + return this; + } + + private boolean enabled_ ; + /** + * bool enabled = 12; + * @return The enabled. + */ + @java.lang.Override + public boolean getEnabled() { + return enabled_; + } + /** + * bool enabled = 12; + * @param value The enabled to set. + * @return This builder for chaining. + */ + public Builder setEnabled(boolean value) { + + enabled_ = value; + onChanged(); + return this; + } + /** + * bool enabled = 12; + * @return This builder for chaining. + */ + public Builder clearEnabled() { + + enabled_ = false; + onChanged(); + return this; + } + + private boolean ephemeral_ ; + /** + * bool ephemeral = 13; + * @return The ephemeral. + */ + @java.lang.Override + public boolean getEphemeral() { + return ephemeral_; + } + /** + * bool ephemeral = 13; + * @param value The ephemeral to set. + * @return This builder for chaining. + */ + public Builder setEphemeral(boolean value) { + + ephemeral_ = value; + onChanged(); + return this; + } + /** + * bool ephemeral = 13; + * @return This builder for chaining. + */ + public Builder clearEphemeral() { + + ephemeral_ = false; + onChanged(); + return this; + } + + private java.lang.Object clusterName_ = ""; + /** + * string clusterName = 14; + * @return The clusterName. + */ + public java.lang.String getClusterName() { + java.lang.Object ref = clusterName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clusterName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string clusterName = 14; + * @return The bytes for clusterName. + */ + public com.google.protobuf.ByteString + getClusterNameBytes() { + java.lang.Object ref = clusterName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clusterName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string clusterName = 14; + * @param value The clusterName to set. + * @return This builder for chaining. + */ + public Builder setClusterName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + clusterName_ = value; + onChanged(); + return this; + } + /** + * string clusterName = 14; + * @return This builder for chaining. + */ + public Builder clearClusterName() { + + clusterName_ = getDefaultInstance().getClusterName(); + onChanged(); + return this; + } + /** + * string clusterName = 14; + * @param value The bytes for clusterName to set. + * @return This builder for chaining. + */ + public Builder setClusterNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + clusterName_ = value; + onChanged(); + return this; + } + + private java.lang.Object serviceName_ = ""; + /** + * string serviceName = 15; + * @return The serviceName. + */ + public java.lang.String getServiceName() { + java.lang.Object ref = serviceName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serviceName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string serviceName = 15; + * @return The bytes for serviceName. + */ + public com.google.protobuf.ByteString + getServiceNameBytes() { + java.lang.Object ref = serviceName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serviceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string serviceName = 15; + * @param value The serviceName to set. + * @return This builder for chaining. + */ + public Builder setServiceName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + serviceName_ = value; + onChanged(); + return this; + } + /** + * string serviceName = 15; + * @return This builder for chaining. + */ + public Builder clearServiceName() { + + serviceName_ = getDefaultInstance().getServiceName(); + onChanged(); + return this; + } + /** + * string serviceName = 15; + * @param value The bytes for serviceName to set. + * @return This builder for chaining. + */ + public Builder setServiceNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + serviceName_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> metadata_; + private com.google.protobuf.MapField + internalGetMetadata() { + if (metadata_ == null) { + return com.google.protobuf.MapField.emptyMapField( + MetadataDefaultEntryHolder.defaultEntry); + } + return metadata_; + } + private com.google.protobuf.MapField + internalGetMutableMetadata() { + onChanged();; + if (metadata_ == null) { + metadata_ = com.google.protobuf.MapField.newMapField( + MetadataDefaultEntryHolder.defaultEntry); + } + if (!metadata_.isMutable()) { + metadata_ = metadata_.copy(); + } + return metadata_; + } + + public int getMetadataCount() { + return internalGetMetadata().getMap().size(); + } + /** + * map<string, string> metadata = 16; + */ + + @java.lang.Override + public boolean containsMetadata( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetMetadata().getMap().containsKey(key); + } + /** + * Use {@link #getMetadataMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getMetadata() { + return getMetadataMap(); + } + /** + * map<string, string> metadata = 16; + */ + @java.lang.Override + + public java.util.Map getMetadataMap() { + return internalGetMetadata().getMap(); + } + /** + * map<string, string> metadata = 16; + */ + @java.lang.Override + + public java.lang.String getMetadataOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMetadata().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> metadata = 16; + */ + @java.lang.Override + + public java.lang.String getMetadataOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetMetadata().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearMetadata() { + internalGetMutableMetadata().getMutableMap() + .clear(); + return this; + } + /** + * map<string, string> metadata = 16; + */ + + public Builder removeMetadata( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableMetadata().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableMetadata() { + return internalGetMutableMetadata().getMutableMap(); + } + /** + * map<string, string> metadata = 16; + */ + public Builder putMetadata( + java.lang.String key, + java.lang.String value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableMetadata().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, string> metadata = 16; + */ + + public Builder putAllMetadata( + java.util.Map values) { + internalGetMutableMetadata().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.InstanceProto) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.InstanceProto) + private static final run.mone.local.docean.protobuf.InstanceProto DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.InstanceProto(); + } + + public static run.mone.local.docean.protobuf.InstanceProto getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public InstanceProto parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InstanceProto(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstanceProtoOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstanceProtoOrBuilder.java new file mode 100644 index 000000000..cd28bbc91 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstanceProtoOrBuilder.java @@ -0,0 +1,175 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface InstanceProtoOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.InstanceProto) + com.google.protobuf.MessageOrBuilder { + + /** + * string key = 1; + * @return The key. + */ + java.lang.String getKey(); + /** + * string key = 1; + * @return The bytes for key. + */ + com.google.protobuf.ByteString + getKeyBytes(); + + /** + * int64 timestamp = 2; + * @return The timestamp. + */ + long getTimestamp(); + + /** + * int64 lastBeat = 3; + * @return The lastBeat. + */ + long getLastBeat(); + + /** + * bool marked = 4; + * @return The marked. + */ + boolean getMarked(); + + /** + * string tenant = 5; + * @return The tenant. + */ + java.lang.String getTenant(); + /** + * string tenant = 5; + * @return The bytes for tenant. + */ + com.google.protobuf.ByteString + getTenantBytes(); + + /** + * string app = 6; + * @return The app. + */ + java.lang.String getApp(); + /** + * string app = 6; + * @return The bytes for app. + */ + com.google.protobuf.ByteString + getAppBytes(); + + /** + * string instanceId = 7; + * @return The instanceId. + */ + java.lang.String getInstanceId(); + /** + * string instanceId = 7; + * @return The bytes for instanceId. + */ + com.google.protobuf.ByteString + getInstanceIdBytes(); + + /** + * string ip = 8; + * @return The ip. + */ + java.lang.String getIp(); + /** + * string ip = 8; + * @return The bytes for ip. + */ + com.google.protobuf.ByteString + getIpBytes(); + + /** + * int32 port = 9; + * @return The port. + */ + int getPort(); + + /** + * double weight = 10; + * @return The weight. + */ + double getWeight(); + + /** + * bool healthy = 11; + * @return The healthy. + */ + boolean getHealthy(); + + /** + * bool enabled = 12; + * @return The enabled. + */ + boolean getEnabled(); + + /** + * bool ephemeral = 13; + * @return The ephemeral. + */ + boolean getEphemeral(); + + /** + * string clusterName = 14; + * @return The clusterName. + */ + java.lang.String getClusterName(); + /** + * string clusterName = 14; + * @return The bytes for clusterName. + */ + com.google.protobuf.ByteString + getClusterNameBytes(); + + /** + * string serviceName = 15; + * @return The serviceName. + */ + java.lang.String getServiceName(); + /** + * string serviceName = 15; + * @return The bytes for serviceName. + */ + com.google.protobuf.ByteString + getServiceNameBytes(); + + /** + * map<string, string> metadata = 16; + */ + int getMetadataCount(); + /** + * map<string, string> metadata = 16; + */ + boolean containsMetadata( + java.lang.String key); + /** + * Use {@link #getMetadataMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getMetadata(); + /** + * map<string, string> metadata = 16; + */ + java.util.Map + getMetadataMap(); + /** + * map<string, string> metadata = 16; + */ + + java.lang.String getMetadataOrDefault( + java.lang.String key, + java.lang.String defaultValue); + /** + * map<string, string> metadata = 16; + */ + + java.lang.String getMetadataOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstancesProto.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstancesProto.java new file mode 100644 index 000000000..d4b7ce696 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstancesProto.java @@ -0,0 +1,973 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.InstancesProto} + */ +public final class InstancesProto extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.InstancesProto) + InstancesProtoOrBuilder { +private static final long serialVersionUID = 0L; + // Use InstancesProto.newBuilder() to construct. + private InstancesProto(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private InstancesProto() { + instances_ = java.util.Collections.emptyList(); + key_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new InstancesProto(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private InstancesProto( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + instances_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + instances_.add( + input.readMessage(run.mone.local.docean.protobuf.InstanceProto.parser(), extensionRegistry)); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + key_ = s; + break; + } + case 24: { + + timestamp_ = input.readInt64(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + instances_ = java.util.Collections.unmodifiableList(instances_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstancesProto_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstancesProto_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.InstancesProto.class, run.mone.local.docean.protobuf.InstancesProto.Builder.class); + } + + public static final int INSTANCES_FIELD_NUMBER = 1; + private java.util.List instances_; + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + @java.lang.Override + public java.util.List getInstancesList() { + return instances_; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + @java.lang.Override + public java.util.List + getInstancesOrBuilderList() { + return instances_; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + @java.lang.Override + public int getInstancesCount() { + return instances_.size(); + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto getInstances(int index) { + return instances_.get(index); + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstancesOrBuilder( + int index) { + return instances_.get(index); + } + + public static final int KEY_FIELD_NUMBER = 2; + private volatile java.lang.Object key_; + /** + * string key = 2; + * @return The key. + */ + @java.lang.Override + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } + } + /** + * string key = 2; + * @return The bytes for key. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TIMESTAMP_FIELD_NUMBER = 3; + private long timestamp_; + /** + * int64 timestamp = 3; + * @return The timestamp. + */ + @java.lang.Override + public long getTimestamp() { + return timestamp_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < instances_.size(); i++) { + output.writeMessage(1, instances_.get(i)); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_); + } + if (timestamp_ != 0L) { + output.writeInt64(3, timestamp_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < instances_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, instances_.get(i)); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_); + } + if (timestamp_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(3, timestamp_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.InstancesProto)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.InstancesProto other = (run.mone.local.docean.protobuf.InstancesProto) obj; + + if (!getInstancesList() + .equals(other.getInstancesList())) return false; + if (!getKey() + .equals(other.getKey())) return false; + if (getTimestamp() + != other.getTimestamp()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getInstancesCount() > 0) { + hash = (37 * hash) + INSTANCES_FIELD_NUMBER; + hash = (53 * hash) + getInstancesList().hashCode(); + } + hash = (37 * hash) + KEY_FIELD_NUMBER; + hash = (53 * hash) + getKey().hashCode(); + hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getTimestamp()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstancesProto parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.InstancesProto parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.InstancesProto parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.InstancesProto prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.InstancesProto} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.InstancesProto) + run.mone.local.docean.protobuf.InstancesProtoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstancesProto_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstancesProto_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.InstancesProto.class, run.mone.local.docean.protobuf.InstancesProto.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.InstancesProto.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getInstancesFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (instancesBuilder_ == null) { + instances_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + instancesBuilder_.clear(); + } + key_ = ""; + + timestamp_ = 0L; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_InstancesProto_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstancesProto getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.InstancesProto.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstancesProto build() { + run.mone.local.docean.protobuf.InstancesProto result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstancesProto buildPartial() { + run.mone.local.docean.protobuf.InstancesProto result = new run.mone.local.docean.protobuf.InstancesProto(this); + int from_bitField0_ = bitField0_; + if (instancesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + instances_ = java.util.Collections.unmodifiableList(instances_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.instances_ = instances_; + } else { + result.instances_ = instancesBuilder_.build(); + } + result.key_ = key_; + result.timestamp_ = timestamp_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.InstancesProto) { + return mergeFrom((run.mone.local.docean.protobuf.InstancesProto)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.InstancesProto other) { + if (other == run.mone.local.docean.protobuf.InstancesProto.getDefaultInstance()) return this; + if (instancesBuilder_ == null) { + if (!other.instances_.isEmpty()) { + if (instances_.isEmpty()) { + instances_ = other.instances_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureInstancesIsMutable(); + instances_.addAll(other.instances_); + } + onChanged(); + } + } else { + if (!other.instances_.isEmpty()) { + if (instancesBuilder_.isEmpty()) { + instancesBuilder_.dispose(); + instancesBuilder_ = null; + instances_ = other.instances_; + bitField0_ = (bitField0_ & ~0x00000001); + instancesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getInstancesFieldBuilder() : null; + } else { + instancesBuilder_.addAllMessages(other.instances_); + } + } + } + if (!other.getKey().isEmpty()) { + key_ = other.key_; + onChanged(); + } + if (other.getTimestamp() != 0L) { + setTimestamp(other.getTimestamp()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.InstancesProto parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.InstancesProto) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List instances_ = + java.util.Collections.emptyList(); + private void ensureInstancesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + instances_ = new java.util.ArrayList(instances_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder> instancesBuilder_; + + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public java.util.List getInstancesList() { + if (instancesBuilder_ == null) { + return java.util.Collections.unmodifiableList(instances_); + } else { + return instancesBuilder_.getMessageList(); + } + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public int getInstancesCount() { + if (instancesBuilder_ == null) { + return instances_.size(); + } else { + return instancesBuilder_.getCount(); + } + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public run.mone.local.docean.protobuf.InstanceProto getInstances(int index) { + if (instancesBuilder_ == null) { + return instances_.get(index); + } else { + return instancesBuilder_.getMessage(index); + } + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder setInstances( + int index, run.mone.local.docean.protobuf.InstanceProto value) { + if (instancesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureInstancesIsMutable(); + instances_.set(index, value); + onChanged(); + } else { + instancesBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder setInstances( + int index, run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.set(index, builderForValue.build()); + onChanged(); + } else { + instancesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder addInstances(run.mone.local.docean.protobuf.InstanceProto value) { + if (instancesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureInstancesIsMutable(); + instances_.add(value); + onChanged(); + } else { + instancesBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder addInstances( + int index, run.mone.local.docean.protobuf.InstanceProto value) { + if (instancesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureInstancesIsMutable(); + instances_.add(index, value); + onChanged(); + } else { + instancesBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder addInstances( + run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.add(builderForValue.build()); + onChanged(); + } else { + instancesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder addInstances( + int index, run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.add(index, builderForValue.build()); + onChanged(); + } else { + instancesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder addAllInstances( + java.lang.Iterable values) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, instances_); + onChanged(); + } else { + instancesBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder clearInstances() { + if (instancesBuilder_ == null) { + instances_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + instancesBuilder_.clear(); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public Builder removeInstances(int index) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.remove(index); + onChanged(); + } else { + instancesBuilder_.remove(index); + } + return this; + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder getInstancesBuilder( + int index) { + return getInstancesFieldBuilder().getBuilder(index); + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstancesOrBuilder( + int index) { + if (instancesBuilder_ == null) { + return instances_.get(index); } else { + return instancesBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public java.util.List + getInstancesOrBuilderList() { + if (instancesBuilder_ != null) { + return instancesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(instances_); + } + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder addInstancesBuilder() { + return getInstancesFieldBuilder().addBuilder( + run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance()); + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder addInstancesBuilder( + int index) { + return getInstancesFieldBuilder().addBuilder( + index, run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance()); + } + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + public java.util.List + getInstancesBuilderList() { + return getInstancesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder> + getInstancesFieldBuilder() { + if (instancesBuilder_ == null) { + instancesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder>( + instances_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + instances_ = null; + } + return instancesBuilder_; + } + + private java.lang.Object key_ = ""; + /** + * string key = 2; + * @return The key. + */ + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string key = 2; + * @return The bytes for key. + */ + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string key = 2; + * @param value The key to set. + * @return This builder for chaining. + */ + public Builder setKey( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + key_ = value; + onChanged(); + return this; + } + /** + * string key = 2; + * @return This builder for chaining. + */ + public Builder clearKey() { + + key_ = getDefaultInstance().getKey(); + onChanged(); + return this; + } + /** + * string key = 2; + * @param value The bytes for key to set. + * @return This builder for chaining. + */ + public Builder setKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + key_ = value; + onChanged(); + return this; + } + + private long timestamp_ ; + /** + * int64 timestamp = 3; + * @return The timestamp. + */ + @java.lang.Override + public long getTimestamp() { + return timestamp_; + } + /** + * int64 timestamp = 3; + * @param value The timestamp to set. + * @return This builder for chaining. + */ + public Builder setTimestamp(long value) { + + timestamp_ = value; + onChanged(); + return this; + } + /** + * int64 timestamp = 3; + * @return This builder for chaining. + */ + public Builder clearTimestamp() { + + timestamp_ = 0L; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.InstancesProto) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.InstancesProto) + private static final run.mone.local.docean.protobuf.InstancesProto DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.InstancesProto(); + } + + public static run.mone.local.docean.protobuf.InstancesProto getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public InstancesProto parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InstancesProto(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.InstancesProto getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstancesProtoOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstancesProtoOrBuilder.java new file mode 100644 index 000000000..cca488fcf --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/InstancesProtoOrBuilder.java @@ -0,0 +1,51 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface InstancesProtoOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.InstancesProto) + com.google.protobuf.MessageOrBuilder { + + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + java.util.List + getInstancesList(); + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + run.mone.local.docean.protobuf.InstanceProto getInstances(int index); + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + int getInstancesCount(); + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + java.util.List + getInstancesOrBuilderList(); + /** + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 1; + */ + run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstancesOrBuilder( + int index); + + /** + * string key = 2; + * @return The key. + */ + java.lang.String getKey(); + /** + * string key = 2; + * @return The bytes for key. + */ + com.google.protobuf.ByteString + getKeyBytes(); + + /** + * int64 timestamp = 3; + * @return The timestamp. + */ + long getTimestamp(); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListRequest.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListRequest.java new file mode 100644 index 000000000..0dac41ccb --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListRequest.java @@ -0,0 +1,2809 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.ListRequest} + */ +public final class ListRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.ListRequest) + ListRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use ListRequest.newBuilder() to construct. + private ListRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ListRequest() { + namespaceId_ = ""; + serviceName_ = ""; + agent_ = ""; + clusters_ = ""; + clientIP_ = ""; + env_ = ""; + app_ = ""; + tid_ = ""; + tenant_ = ""; + cmd_ = ""; + cluster_ = ""; + ip_ = ""; + groupName_ = ""; + selectorString_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ListRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ListRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + namespaceId_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + serviceName_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + agent_ = s; + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + clusters_ = s; + break; + } + case 42: { + java.lang.String s = input.readStringRequireUtf8(); + + clientIP_ = s; + break; + } + case 48: { + + udpPort_ = input.readInt32(); + break; + } + case 58: { + java.lang.String s = input.readStringRequireUtf8(); + + env_ = s; + break; + } + case 64: { + + isCheck_ = input.readBool(); + break; + } + case 74: { + java.lang.String s = input.readStringRequireUtf8(); + + app_ = s; + break; + } + case 82: { + java.lang.String s = input.readStringRequireUtf8(); + + tid_ = s; + break; + } + case 90: { + java.lang.String s = input.readStringRequireUtf8(); + + tenant_ = s; + break; + } + case 96: { + + healthyOnly_ = input.readBool(); + break; + } + case 106: { + java.lang.String s = input.readStringRequireUtf8(); + + cmd_ = s; + break; + } + case 114: { + java.lang.String s = input.readStringRequireUtf8(); + + cluster_ = s; + break; + } + case 122: { + java.lang.String s = input.readStringRequireUtf8(); + + ip_ = s; + break; + } + case 128: { + + port_ = input.readInt32(); + break; + } + case 136: { + + pageNo_ = input.readInt32(); + break; + } + case 144: { + + pageSize_ = input.readInt32(); + break; + } + case 154: { + java.lang.String s = input.readStringRequireUtf8(); + + groupName_ = s; + break; + } + case 162: { + java.lang.String s = input.readStringRequireUtf8(); + + selectorString_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.ListRequest.class, run.mone.local.docean.protobuf.ListRequest.Builder.class); + } + + public static final int NAMESPACEID_FIELD_NUMBER = 1; + private volatile java.lang.Object namespaceId_; + /** + *
+   *list
+   * 
+ * + * string namespaceId = 1; + * @return The namespaceId. + */ + @java.lang.Override + public java.lang.String getNamespaceId() { + java.lang.Object ref = namespaceId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + namespaceId_ = s; + return s; + } + } + /** + *
+   *list
+   * 
+ * + * string namespaceId = 1; + * @return The bytes for namespaceId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNamespaceIdBytes() { + java.lang.Object ref = namespaceId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + namespaceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SERVICENAME_FIELD_NUMBER = 2; + private volatile java.lang.Object serviceName_; + /** + * string serviceName = 2; + * @return The serviceName. + */ + @java.lang.Override + public java.lang.String getServiceName() { + java.lang.Object ref = serviceName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serviceName_ = s; + return s; + } + } + /** + * string serviceName = 2; + * @return The bytes for serviceName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getServiceNameBytes() { + java.lang.Object ref = serviceName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serviceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int AGENT_FIELD_NUMBER = 3; + private volatile java.lang.Object agent_; + /** + * string agent = 3; + * @return The agent. + */ + @java.lang.Override + public java.lang.String getAgent() { + java.lang.Object ref = agent_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + agent_ = s; + return s; + } + } + /** + * string agent = 3; + * @return The bytes for agent. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAgentBytes() { + java.lang.Object ref = agent_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + agent_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CLUSTERS_FIELD_NUMBER = 4; + private volatile java.lang.Object clusters_; + /** + * string clusters = 4; + * @return The clusters. + */ + @java.lang.Override + public java.lang.String getClusters() { + java.lang.Object ref = clusters_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clusters_ = s; + return s; + } + } + /** + * string clusters = 4; + * @return The bytes for clusters. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getClustersBytes() { + java.lang.Object ref = clusters_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clusters_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CLIENTIP_FIELD_NUMBER = 5; + private volatile java.lang.Object clientIP_; + /** + * string clientIP = 5; + * @return The clientIP. + */ + @java.lang.Override + public java.lang.String getClientIP() { + java.lang.Object ref = clientIP_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clientIP_ = s; + return s; + } + } + /** + * string clientIP = 5; + * @return The bytes for clientIP. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getClientIPBytes() { + java.lang.Object ref = clientIP_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clientIP_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int UDPPORT_FIELD_NUMBER = 6; + private int udpPort_; + /** + * int32 udpPort = 6; + * @return The udpPort. + */ + @java.lang.Override + public int getUdpPort() { + return udpPort_; + } + + public static final int ENV_FIELD_NUMBER = 7; + private volatile java.lang.Object env_; + /** + * string env = 7; + * @return The env. + */ + @java.lang.Override + public java.lang.String getEnv() { + java.lang.Object ref = env_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + env_ = s; + return s; + } + } + /** + * string env = 7; + * @return The bytes for env. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEnvBytes() { + java.lang.Object ref = env_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + env_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ISCHECK_FIELD_NUMBER = 8; + private boolean isCheck_; + /** + * bool isCheck = 8; + * @return The isCheck. + */ + @java.lang.Override + public boolean getIsCheck() { + return isCheck_; + } + + public static final int APP_FIELD_NUMBER = 9; + private volatile java.lang.Object app_; + /** + * string app = 9; + * @return The app. + */ + @java.lang.Override + public java.lang.String getApp() { + java.lang.Object ref = app_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + app_ = s; + return s; + } + } + /** + * string app = 9; + * @return The bytes for app. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAppBytes() { + java.lang.Object ref = app_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + app_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TID_FIELD_NUMBER = 10; + private volatile java.lang.Object tid_; + /** + * string tid = 10; + * @return The tid. + */ + @java.lang.Override + public java.lang.String getTid() { + java.lang.Object ref = tid_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tid_ = s; + return s; + } + } + /** + * string tid = 10; + * @return The bytes for tid. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTidBytes() { + java.lang.Object ref = tid_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TENANT_FIELD_NUMBER = 11; + private volatile java.lang.Object tenant_; + /** + * string tenant = 11; + * @return The tenant. + */ + @java.lang.Override + public java.lang.String getTenant() { + java.lang.Object ref = tenant_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tenant_ = s; + return s; + } + } + /** + * string tenant = 11; + * @return The bytes for tenant. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTenantBytes() { + java.lang.Object ref = tenant_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tenant_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int HEALTHYONLY_FIELD_NUMBER = 12; + private boolean healthyOnly_; + /** + * bool healthyOnly = 12; + * @return The healthyOnly. + */ + @java.lang.Override + public boolean getHealthyOnly() { + return healthyOnly_; + } + + public static final int CMD_FIELD_NUMBER = 13; + private volatile java.lang.Object cmd_; + /** + * string cmd = 13; + * @return The cmd. + */ + @java.lang.Override + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } + } + /** + * string cmd = 13; + * @return The bytes for cmd. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CLUSTER_FIELD_NUMBER = 14; + private volatile java.lang.Object cluster_; + /** + *
+   *detail
+   * 
+ * + * string cluster = 14; + * @return The cluster. + */ + @java.lang.Override + public java.lang.String getCluster() { + java.lang.Object ref = cluster_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cluster_ = s; + return s; + } + } + /** + *
+   *detail
+   * 
+ * + * string cluster = 14; + * @return The bytes for cluster. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getClusterBytes() { + java.lang.Object ref = cluster_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cluster_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IP_FIELD_NUMBER = 15; + private volatile java.lang.Object ip_; + /** + * string ip = 15; + * @return The ip. + */ + @java.lang.Override + public java.lang.String getIp() { + java.lang.Object ref = ip_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ip_ = s; + return s; + } + } + /** + * string ip = 15; + * @return The bytes for ip. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getIpBytes() { + java.lang.Object ref = ip_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ip_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PORT_FIELD_NUMBER = 16; + private int port_; + /** + * int32 port = 16; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + + public static final int PAGENO_FIELD_NUMBER = 17; + private int pageNo_; + /** + *
+   *list_service
+   * 
+ * + * int32 pageNo = 17; + * @return The pageNo. + */ + @java.lang.Override + public int getPageNo() { + return pageNo_; + } + + public static final int PAGESIZE_FIELD_NUMBER = 18; + private int pageSize_; + /** + * int32 pageSize = 18; + * @return The pageSize. + */ + @java.lang.Override + public int getPageSize() { + return pageSize_; + } + + public static final int GROUPNAME_FIELD_NUMBER = 19; + private volatile java.lang.Object groupName_; + /** + * string groupName = 19; + * @return The groupName. + */ + @java.lang.Override + public java.lang.String getGroupName() { + java.lang.Object ref = groupName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + groupName_ = s; + return s; + } + } + /** + * string groupName = 19; + * @return The bytes for groupName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getGroupNameBytes() { + java.lang.Object ref = groupName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + groupName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SELECTORSTRING_FIELD_NUMBER = 20; + private volatile java.lang.Object selectorString_; + /** + * string selectorString = 20; + * @return The selectorString. + */ + @java.lang.Override + public java.lang.String getSelectorString() { + java.lang.Object ref = selectorString_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + selectorString_ = s; + return s; + } + } + /** + * string selectorString = 20; + * @return The bytes for selectorString. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSelectorStringBytes() { + java.lang.Object ref = selectorString_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + selectorString_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(namespaceId_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, namespaceId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, serviceName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(agent_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, agent_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusters_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, clusters_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientIP_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, clientIP_); + } + if (udpPort_ != 0) { + output.writeInt32(6, udpPort_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(env_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, env_); + } + if (isCheck_ != false) { + output.writeBool(8, isCheck_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(app_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, app_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tid_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 10, tid_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tenant_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 11, tenant_); + } + if (healthyOnly_ != false) { + output.writeBool(12, healthyOnly_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 13, cmd_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cluster_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 14, cluster_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ip_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 15, ip_); + } + if (port_ != 0) { + output.writeInt32(16, port_); + } + if (pageNo_ != 0) { + output.writeInt32(17, pageNo_); + } + if (pageSize_ != 0) { + output.writeInt32(18, pageSize_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 19, groupName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(selectorString_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 20, selectorString_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(namespaceId_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, namespaceId_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, serviceName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(agent_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, agent_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clusters_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, clusters_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientIP_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, clientIP_); + } + if (udpPort_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(6, udpPort_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(env_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, env_); + } + if (isCheck_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(8, isCheck_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(app_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, app_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tid_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, tid_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tenant_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, tenant_); + } + if (healthyOnly_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(12, healthyOnly_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, cmd_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cluster_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, cluster_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ip_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, ip_); + } + if (port_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(16, port_); + } + if (pageNo_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(17, pageNo_); + } + if (pageSize_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(18, pageSize_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, groupName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(selectorString_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(20, selectorString_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.ListRequest)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.ListRequest other = (run.mone.local.docean.protobuf.ListRequest) obj; + + if (!getNamespaceId() + .equals(other.getNamespaceId())) return false; + if (!getServiceName() + .equals(other.getServiceName())) return false; + if (!getAgent() + .equals(other.getAgent())) return false; + if (!getClusters() + .equals(other.getClusters())) return false; + if (!getClientIP() + .equals(other.getClientIP())) return false; + if (getUdpPort() + != other.getUdpPort()) return false; + if (!getEnv() + .equals(other.getEnv())) return false; + if (getIsCheck() + != other.getIsCheck()) return false; + if (!getApp() + .equals(other.getApp())) return false; + if (!getTid() + .equals(other.getTid())) return false; + if (!getTenant() + .equals(other.getTenant())) return false; + if (getHealthyOnly() + != other.getHealthyOnly()) return false; + if (!getCmd() + .equals(other.getCmd())) return false; + if (!getCluster() + .equals(other.getCluster())) return false; + if (!getIp() + .equals(other.getIp())) return false; + if (getPort() + != other.getPort()) return false; + if (getPageNo() + != other.getPageNo()) return false; + if (getPageSize() + != other.getPageSize()) return false; + if (!getGroupName() + .equals(other.getGroupName())) return false; + if (!getSelectorString() + .equals(other.getSelectorString())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAMESPACEID_FIELD_NUMBER; + hash = (53 * hash) + getNamespaceId().hashCode(); + hash = (37 * hash) + SERVICENAME_FIELD_NUMBER; + hash = (53 * hash) + getServiceName().hashCode(); + hash = (37 * hash) + AGENT_FIELD_NUMBER; + hash = (53 * hash) + getAgent().hashCode(); + hash = (37 * hash) + CLUSTERS_FIELD_NUMBER; + hash = (53 * hash) + getClusters().hashCode(); + hash = (37 * hash) + CLIENTIP_FIELD_NUMBER; + hash = (53 * hash) + getClientIP().hashCode(); + hash = (37 * hash) + UDPPORT_FIELD_NUMBER; + hash = (53 * hash) + getUdpPort(); + hash = (37 * hash) + ENV_FIELD_NUMBER; + hash = (53 * hash) + getEnv().hashCode(); + hash = (37 * hash) + ISCHECK_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsCheck()); + hash = (37 * hash) + APP_FIELD_NUMBER; + hash = (53 * hash) + getApp().hashCode(); + hash = (37 * hash) + TID_FIELD_NUMBER; + hash = (53 * hash) + getTid().hashCode(); + hash = (37 * hash) + TENANT_FIELD_NUMBER; + hash = (53 * hash) + getTenant().hashCode(); + hash = (37 * hash) + HEALTHYONLY_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getHealthyOnly()); + hash = (37 * hash) + CMD_FIELD_NUMBER; + hash = (53 * hash) + getCmd().hashCode(); + hash = (37 * hash) + CLUSTER_FIELD_NUMBER; + hash = (53 * hash) + getCluster().hashCode(); + hash = (37 * hash) + IP_FIELD_NUMBER; + hash = (53 * hash) + getIp().hashCode(); + hash = (37 * hash) + PORT_FIELD_NUMBER; + hash = (53 * hash) + getPort(); + hash = (37 * hash) + PAGENO_FIELD_NUMBER; + hash = (53 * hash) + getPageNo(); + hash = (37 * hash) + PAGESIZE_FIELD_NUMBER; + hash = (53 * hash) + getPageSize(); + hash = (37 * hash) + GROUPNAME_FIELD_NUMBER; + hash = (53 * hash) + getGroupName().hashCode(); + hash = (37 * hash) + SELECTORSTRING_FIELD_NUMBER; + hash = (53 * hash) + getSelectorString().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.ListRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.ListRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.ListRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.ListRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.ListRequest) + run.mone.local.docean.protobuf.ListRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.ListRequest.class, run.mone.local.docean.protobuf.ListRequest.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.ListRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + namespaceId_ = ""; + + serviceName_ = ""; + + agent_ = ""; + + clusters_ = ""; + + clientIP_ = ""; + + udpPort_ = 0; + + env_ = ""; + + isCheck_ = false; + + app_ = ""; + + tid_ = ""; + + tenant_ = ""; + + healthyOnly_ = false; + + cmd_ = ""; + + cluster_ = ""; + + ip_ = ""; + + port_ = 0; + + pageNo_ = 0; + + pageSize_ = 0; + + groupName_ = ""; + + selectorString_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListRequest_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListRequest getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.ListRequest.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListRequest build() { + run.mone.local.docean.protobuf.ListRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListRequest buildPartial() { + run.mone.local.docean.protobuf.ListRequest result = new run.mone.local.docean.protobuf.ListRequest(this); + result.namespaceId_ = namespaceId_; + result.serviceName_ = serviceName_; + result.agent_ = agent_; + result.clusters_ = clusters_; + result.clientIP_ = clientIP_; + result.udpPort_ = udpPort_; + result.env_ = env_; + result.isCheck_ = isCheck_; + result.app_ = app_; + result.tid_ = tid_; + result.tenant_ = tenant_; + result.healthyOnly_ = healthyOnly_; + result.cmd_ = cmd_; + result.cluster_ = cluster_; + result.ip_ = ip_; + result.port_ = port_; + result.pageNo_ = pageNo_; + result.pageSize_ = pageSize_; + result.groupName_ = groupName_; + result.selectorString_ = selectorString_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.ListRequest) { + return mergeFrom((run.mone.local.docean.protobuf.ListRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.ListRequest other) { + if (other == run.mone.local.docean.protobuf.ListRequest.getDefaultInstance()) return this; + if (!other.getNamespaceId().isEmpty()) { + namespaceId_ = other.namespaceId_; + onChanged(); + } + if (!other.getServiceName().isEmpty()) { + serviceName_ = other.serviceName_; + onChanged(); + } + if (!other.getAgent().isEmpty()) { + agent_ = other.agent_; + onChanged(); + } + if (!other.getClusters().isEmpty()) { + clusters_ = other.clusters_; + onChanged(); + } + if (!other.getClientIP().isEmpty()) { + clientIP_ = other.clientIP_; + onChanged(); + } + if (other.getUdpPort() != 0) { + setUdpPort(other.getUdpPort()); + } + if (!other.getEnv().isEmpty()) { + env_ = other.env_; + onChanged(); + } + if (other.getIsCheck() != false) { + setIsCheck(other.getIsCheck()); + } + if (!other.getApp().isEmpty()) { + app_ = other.app_; + onChanged(); + } + if (!other.getTid().isEmpty()) { + tid_ = other.tid_; + onChanged(); + } + if (!other.getTenant().isEmpty()) { + tenant_ = other.tenant_; + onChanged(); + } + if (other.getHealthyOnly() != false) { + setHealthyOnly(other.getHealthyOnly()); + } + if (!other.getCmd().isEmpty()) { + cmd_ = other.cmd_; + onChanged(); + } + if (!other.getCluster().isEmpty()) { + cluster_ = other.cluster_; + onChanged(); + } + if (!other.getIp().isEmpty()) { + ip_ = other.ip_; + onChanged(); + } + if (other.getPort() != 0) { + setPort(other.getPort()); + } + if (other.getPageNo() != 0) { + setPageNo(other.getPageNo()); + } + if (other.getPageSize() != 0) { + setPageSize(other.getPageSize()); + } + if (!other.getGroupName().isEmpty()) { + groupName_ = other.groupName_; + onChanged(); + } + if (!other.getSelectorString().isEmpty()) { + selectorString_ = other.selectorString_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.ListRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.ListRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object namespaceId_ = ""; + /** + *
+     *list
+     * 
+ * + * string namespaceId = 1; + * @return The namespaceId. + */ + public java.lang.String getNamespaceId() { + java.lang.Object ref = namespaceId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + namespaceId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     *list
+     * 
+ * + * string namespaceId = 1; + * @return The bytes for namespaceId. + */ + public com.google.protobuf.ByteString + getNamespaceIdBytes() { + java.lang.Object ref = namespaceId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + namespaceId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     *list
+     * 
+ * + * string namespaceId = 1; + * @param value The namespaceId to set. + * @return This builder for chaining. + */ + public Builder setNamespaceId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + namespaceId_ = value; + onChanged(); + return this; + } + /** + *
+     *list
+     * 
+ * + * string namespaceId = 1; + * @return This builder for chaining. + */ + public Builder clearNamespaceId() { + + namespaceId_ = getDefaultInstance().getNamespaceId(); + onChanged(); + return this; + } + /** + *
+     *list
+     * 
+ * + * string namespaceId = 1; + * @param value The bytes for namespaceId to set. + * @return This builder for chaining. + */ + public Builder setNamespaceIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + namespaceId_ = value; + onChanged(); + return this; + } + + private java.lang.Object serviceName_ = ""; + /** + * string serviceName = 2; + * @return The serviceName. + */ + public java.lang.String getServiceName() { + java.lang.Object ref = serviceName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + serviceName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string serviceName = 2; + * @return The bytes for serviceName. + */ + public com.google.protobuf.ByteString + getServiceNameBytes() { + java.lang.Object ref = serviceName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + serviceName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string serviceName = 2; + * @param value The serviceName to set. + * @return This builder for chaining. + */ + public Builder setServiceName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + serviceName_ = value; + onChanged(); + return this; + } + /** + * string serviceName = 2; + * @return This builder for chaining. + */ + public Builder clearServiceName() { + + serviceName_ = getDefaultInstance().getServiceName(); + onChanged(); + return this; + } + /** + * string serviceName = 2; + * @param value The bytes for serviceName to set. + * @return This builder for chaining. + */ + public Builder setServiceNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + serviceName_ = value; + onChanged(); + return this; + } + + private java.lang.Object agent_ = ""; + /** + * string agent = 3; + * @return The agent. + */ + public java.lang.String getAgent() { + java.lang.Object ref = agent_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + agent_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string agent = 3; + * @return The bytes for agent. + */ + public com.google.protobuf.ByteString + getAgentBytes() { + java.lang.Object ref = agent_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + agent_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string agent = 3; + * @param value The agent to set. + * @return This builder for chaining. + */ + public Builder setAgent( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + agent_ = value; + onChanged(); + return this; + } + /** + * string agent = 3; + * @return This builder for chaining. + */ + public Builder clearAgent() { + + agent_ = getDefaultInstance().getAgent(); + onChanged(); + return this; + } + /** + * string agent = 3; + * @param value The bytes for agent to set. + * @return This builder for chaining. + */ + public Builder setAgentBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + agent_ = value; + onChanged(); + return this; + } + + private java.lang.Object clusters_ = ""; + /** + * string clusters = 4; + * @return The clusters. + */ + public java.lang.String getClusters() { + java.lang.Object ref = clusters_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clusters_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string clusters = 4; + * @return The bytes for clusters. + */ + public com.google.protobuf.ByteString + getClustersBytes() { + java.lang.Object ref = clusters_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clusters_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string clusters = 4; + * @param value The clusters to set. + * @return This builder for chaining. + */ + public Builder setClusters( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + clusters_ = value; + onChanged(); + return this; + } + /** + * string clusters = 4; + * @return This builder for chaining. + */ + public Builder clearClusters() { + + clusters_ = getDefaultInstance().getClusters(); + onChanged(); + return this; + } + /** + * string clusters = 4; + * @param value The bytes for clusters to set. + * @return This builder for chaining. + */ + public Builder setClustersBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + clusters_ = value; + onChanged(); + return this; + } + + private java.lang.Object clientIP_ = ""; + /** + * string clientIP = 5; + * @return The clientIP. + */ + public java.lang.String getClientIP() { + java.lang.Object ref = clientIP_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + clientIP_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string clientIP = 5; + * @return The bytes for clientIP. + */ + public com.google.protobuf.ByteString + getClientIPBytes() { + java.lang.Object ref = clientIP_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + clientIP_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string clientIP = 5; + * @param value The clientIP to set. + * @return This builder for chaining. + */ + public Builder setClientIP( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + clientIP_ = value; + onChanged(); + return this; + } + /** + * string clientIP = 5; + * @return This builder for chaining. + */ + public Builder clearClientIP() { + + clientIP_ = getDefaultInstance().getClientIP(); + onChanged(); + return this; + } + /** + * string clientIP = 5; + * @param value The bytes for clientIP to set. + * @return This builder for chaining. + */ + public Builder setClientIPBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + clientIP_ = value; + onChanged(); + return this; + } + + private int udpPort_ ; + /** + * int32 udpPort = 6; + * @return The udpPort. + */ + @java.lang.Override + public int getUdpPort() { + return udpPort_; + } + /** + * int32 udpPort = 6; + * @param value The udpPort to set. + * @return This builder for chaining. + */ + public Builder setUdpPort(int value) { + + udpPort_ = value; + onChanged(); + return this; + } + /** + * int32 udpPort = 6; + * @return This builder for chaining. + */ + public Builder clearUdpPort() { + + udpPort_ = 0; + onChanged(); + return this; + } + + private java.lang.Object env_ = ""; + /** + * string env = 7; + * @return The env. + */ + public java.lang.String getEnv() { + java.lang.Object ref = env_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + env_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string env = 7; + * @return The bytes for env. + */ + public com.google.protobuf.ByteString + getEnvBytes() { + java.lang.Object ref = env_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + env_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string env = 7; + * @param value The env to set. + * @return This builder for chaining. + */ + public Builder setEnv( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + env_ = value; + onChanged(); + return this; + } + /** + * string env = 7; + * @return This builder for chaining. + */ + public Builder clearEnv() { + + env_ = getDefaultInstance().getEnv(); + onChanged(); + return this; + } + /** + * string env = 7; + * @param value The bytes for env to set. + * @return This builder for chaining. + */ + public Builder setEnvBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + env_ = value; + onChanged(); + return this; + } + + private boolean isCheck_ ; + /** + * bool isCheck = 8; + * @return The isCheck. + */ + @java.lang.Override + public boolean getIsCheck() { + return isCheck_; + } + /** + * bool isCheck = 8; + * @param value The isCheck to set. + * @return This builder for chaining. + */ + public Builder setIsCheck(boolean value) { + + isCheck_ = value; + onChanged(); + return this; + } + /** + * bool isCheck = 8; + * @return This builder for chaining. + */ + public Builder clearIsCheck() { + + isCheck_ = false; + onChanged(); + return this; + } + + private java.lang.Object app_ = ""; + /** + * string app = 9; + * @return The app. + */ + public java.lang.String getApp() { + java.lang.Object ref = app_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + app_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string app = 9; + * @return The bytes for app. + */ + public com.google.protobuf.ByteString + getAppBytes() { + java.lang.Object ref = app_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + app_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string app = 9; + * @param value The app to set. + * @return This builder for chaining. + */ + public Builder setApp( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + app_ = value; + onChanged(); + return this; + } + /** + * string app = 9; + * @return This builder for chaining. + */ + public Builder clearApp() { + + app_ = getDefaultInstance().getApp(); + onChanged(); + return this; + } + /** + * string app = 9; + * @param value The bytes for app to set. + * @return This builder for chaining. + */ + public Builder setAppBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + app_ = value; + onChanged(); + return this; + } + + private java.lang.Object tid_ = ""; + /** + * string tid = 10; + * @return The tid. + */ + public java.lang.String getTid() { + java.lang.Object ref = tid_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tid_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string tid = 10; + * @return The bytes for tid. + */ + public com.google.protobuf.ByteString + getTidBytes() { + java.lang.Object ref = tid_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tid_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string tid = 10; + * @param value The tid to set. + * @return This builder for chaining. + */ + public Builder setTid( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + tid_ = value; + onChanged(); + return this; + } + /** + * string tid = 10; + * @return This builder for chaining. + */ + public Builder clearTid() { + + tid_ = getDefaultInstance().getTid(); + onChanged(); + return this; + } + /** + * string tid = 10; + * @param value The bytes for tid to set. + * @return This builder for chaining. + */ + public Builder setTidBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + tid_ = value; + onChanged(); + return this; + } + + private java.lang.Object tenant_ = ""; + /** + * string tenant = 11; + * @return The tenant. + */ + public java.lang.String getTenant() { + java.lang.Object ref = tenant_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + tenant_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string tenant = 11; + * @return The bytes for tenant. + */ + public com.google.protobuf.ByteString + getTenantBytes() { + java.lang.Object ref = tenant_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tenant_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string tenant = 11; + * @param value The tenant to set. + * @return This builder for chaining. + */ + public Builder setTenant( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + tenant_ = value; + onChanged(); + return this; + } + /** + * string tenant = 11; + * @return This builder for chaining. + */ + public Builder clearTenant() { + + tenant_ = getDefaultInstance().getTenant(); + onChanged(); + return this; + } + /** + * string tenant = 11; + * @param value The bytes for tenant to set. + * @return This builder for chaining. + */ + public Builder setTenantBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + tenant_ = value; + onChanged(); + return this; + } + + private boolean healthyOnly_ ; + /** + * bool healthyOnly = 12; + * @return The healthyOnly. + */ + @java.lang.Override + public boolean getHealthyOnly() { + return healthyOnly_; + } + /** + * bool healthyOnly = 12; + * @param value The healthyOnly to set. + * @return This builder for chaining. + */ + public Builder setHealthyOnly(boolean value) { + + healthyOnly_ = value; + onChanged(); + return this; + } + /** + * bool healthyOnly = 12; + * @return This builder for chaining. + */ + public Builder clearHealthyOnly() { + + healthyOnly_ = false; + onChanged(); + return this; + } + + private java.lang.Object cmd_ = ""; + /** + * string cmd = 13; + * @return The cmd. + */ + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string cmd = 13; + * @return The bytes for cmd. + */ + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string cmd = 13; + * @param value The cmd to set. + * @return This builder for chaining. + */ + public Builder setCmd( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + cmd_ = value; + onChanged(); + return this; + } + /** + * string cmd = 13; + * @return This builder for chaining. + */ + public Builder clearCmd() { + + cmd_ = getDefaultInstance().getCmd(); + onChanged(); + return this; + } + /** + * string cmd = 13; + * @param value The bytes for cmd to set. + * @return This builder for chaining. + */ + public Builder setCmdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + cmd_ = value; + onChanged(); + return this; + } + + private java.lang.Object cluster_ = ""; + /** + *
+     *detail
+     * 
+ * + * string cluster = 14; + * @return The cluster. + */ + public java.lang.String getCluster() { + java.lang.Object ref = cluster_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cluster_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     *detail
+     * 
+ * + * string cluster = 14; + * @return The bytes for cluster. + */ + public com.google.protobuf.ByteString + getClusterBytes() { + java.lang.Object ref = cluster_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cluster_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     *detail
+     * 
+ * + * string cluster = 14; + * @param value The cluster to set. + * @return This builder for chaining. + */ + public Builder setCluster( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + cluster_ = value; + onChanged(); + return this; + } + /** + *
+     *detail
+     * 
+ * + * string cluster = 14; + * @return This builder for chaining. + */ + public Builder clearCluster() { + + cluster_ = getDefaultInstance().getCluster(); + onChanged(); + return this; + } + /** + *
+     *detail
+     * 
+ * + * string cluster = 14; + * @param value The bytes for cluster to set. + * @return This builder for chaining. + */ + public Builder setClusterBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + cluster_ = value; + onChanged(); + return this; + } + + private java.lang.Object ip_ = ""; + /** + * string ip = 15; + * @return The ip. + */ + public java.lang.String getIp() { + java.lang.Object ref = ip_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + ip_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string ip = 15; + * @return The bytes for ip. + */ + public com.google.protobuf.ByteString + getIpBytes() { + java.lang.Object ref = ip_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + ip_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string ip = 15; + * @param value The ip to set. + * @return This builder for chaining. + */ + public Builder setIp( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + ip_ = value; + onChanged(); + return this; + } + /** + * string ip = 15; + * @return This builder for chaining. + */ + public Builder clearIp() { + + ip_ = getDefaultInstance().getIp(); + onChanged(); + return this; + } + /** + * string ip = 15; + * @param value The bytes for ip to set. + * @return This builder for chaining. + */ + public Builder setIpBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + ip_ = value; + onChanged(); + return this; + } + + private int port_ ; + /** + * int32 port = 16; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + /** + * int32 port = 16; + * @param value The port to set. + * @return This builder for chaining. + */ + public Builder setPort(int value) { + + port_ = value; + onChanged(); + return this; + } + /** + * int32 port = 16; + * @return This builder for chaining. + */ + public Builder clearPort() { + + port_ = 0; + onChanged(); + return this; + } + + private int pageNo_ ; + /** + *
+     *list_service
+     * 
+ * + * int32 pageNo = 17; + * @return The pageNo. + */ + @java.lang.Override + public int getPageNo() { + return pageNo_; + } + /** + *
+     *list_service
+     * 
+ * + * int32 pageNo = 17; + * @param value The pageNo to set. + * @return This builder for chaining. + */ + public Builder setPageNo(int value) { + + pageNo_ = value; + onChanged(); + return this; + } + /** + *
+     *list_service
+     * 
+ * + * int32 pageNo = 17; + * @return This builder for chaining. + */ + public Builder clearPageNo() { + + pageNo_ = 0; + onChanged(); + return this; + } + + private int pageSize_ ; + /** + * int32 pageSize = 18; + * @return The pageSize. + */ + @java.lang.Override + public int getPageSize() { + return pageSize_; + } + /** + * int32 pageSize = 18; + * @param value The pageSize to set. + * @return This builder for chaining. + */ + public Builder setPageSize(int value) { + + pageSize_ = value; + onChanged(); + return this; + } + /** + * int32 pageSize = 18; + * @return This builder for chaining. + */ + public Builder clearPageSize() { + + pageSize_ = 0; + onChanged(); + return this; + } + + private java.lang.Object groupName_ = ""; + /** + * string groupName = 19; + * @return The groupName. + */ + public java.lang.String getGroupName() { + java.lang.Object ref = groupName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + groupName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string groupName = 19; + * @return The bytes for groupName. + */ + public com.google.protobuf.ByteString + getGroupNameBytes() { + java.lang.Object ref = groupName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + groupName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string groupName = 19; + * @param value The groupName to set. + * @return This builder for chaining. + */ + public Builder setGroupName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + groupName_ = value; + onChanged(); + return this; + } + /** + * string groupName = 19; + * @return This builder for chaining. + */ + public Builder clearGroupName() { + + groupName_ = getDefaultInstance().getGroupName(); + onChanged(); + return this; + } + /** + * string groupName = 19; + * @param value The bytes for groupName to set. + * @return This builder for chaining. + */ + public Builder setGroupNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + groupName_ = value; + onChanged(); + return this; + } + + private java.lang.Object selectorString_ = ""; + /** + * string selectorString = 20; + * @return The selectorString. + */ + public java.lang.String getSelectorString() { + java.lang.Object ref = selectorString_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + selectorString_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string selectorString = 20; + * @return The bytes for selectorString. + */ + public com.google.protobuf.ByteString + getSelectorStringBytes() { + java.lang.Object ref = selectorString_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + selectorString_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string selectorString = 20; + * @param value The selectorString to set. + * @return This builder for chaining. + */ + public Builder setSelectorString( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + selectorString_ = value; + onChanged(); + return this; + } + /** + * string selectorString = 20; + * @return This builder for chaining. + */ + public Builder clearSelectorString() { + + selectorString_ = getDefaultInstance().getSelectorString(); + onChanged(); + return this; + } + /** + * string selectorString = 20; + * @param value The bytes for selectorString to set. + * @return This builder for chaining. + */ + public Builder setSelectorStringBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + selectorString_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.ListRequest) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.ListRequest) + private static final run.mone.local.docean.protobuf.ListRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.ListRequest(); + } + + public static run.mone.local.docean.protobuf.ListRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ListRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ListRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListRequestOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListRequestOrBuilder.java new file mode 100644 index 000000000..ee049b77f --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListRequestOrBuilder.java @@ -0,0 +1,233 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface ListRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.ListRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   *list
+   * 
+ * + * string namespaceId = 1; + * @return The namespaceId. + */ + java.lang.String getNamespaceId(); + /** + *
+   *list
+   * 
+ * + * string namespaceId = 1; + * @return The bytes for namespaceId. + */ + com.google.protobuf.ByteString + getNamespaceIdBytes(); + + /** + * string serviceName = 2; + * @return The serviceName. + */ + java.lang.String getServiceName(); + /** + * string serviceName = 2; + * @return The bytes for serviceName. + */ + com.google.protobuf.ByteString + getServiceNameBytes(); + + /** + * string agent = 3; + * @return The agent. + */ + java.lang.String getAgent(); + /** + * string agent = 3; + * @return The bytes for agent. + */ + com.google.protobuf.ByteString + getAgentBytes(); + + /** + * string clusters = 4; + * @return The clusters. + */ + java.lang.String getClusters(); + /** + * string clusters = 4; + * @return The bytes for clusters. + */ + com.google.protobuf.ByteString + getClustersBytes(); + + /** + * string clientIP = 5; + * @return The clientIP. + */ + java.lang.String getClientIP(); + /** + * string clientIP = 5; + * @return The bytes for clientIP. + */ + com.google.protobuf.ByteString + getClientIPBytes(); + + /** + * int32 udpPort = 6; + * @return The udpPort. + */ + int getUdpPort(); + + /** + * string env = 7; + * @return The env. + */ + java.lang.String getEnv(); + /** + * string env = 7; + * @return The bytes for env. + */ + com.google.protobuf.ByteString + getEnvBytes(); + + /** + * bool isCheck = 8; + * @return The isCheck. + */ + boolean getIsCheck(); + + /** + * string app = 9; + * @return The app. + */ + java.lang.String getApp(); + /** + * string app = 9; + * @return The bytes for app. + */ + com.google.protobuf.ByteString + getAppBytes(); + + /** + * string tid = 10; + * @return The tid. + */ + java.lang.String getTid(); + /** + * string tid = 10; + * @return The bytes for tid. + */ + com.google.protobuf.ByteString + getTidBytes(); + + /** + * string tenant = 11; + * @return The tenant. + */ + java.lang.String getTenant(); + /** + * string tenant = 11; + * @return The bytes for tenant. + */ + com.google.protobuf.ByteString + getTenantBytes(); + + /** + * bool healthyOnly = 12; + * @return The healthyOnly. + */ + boolean getHealthyOnly(); + + /** + * string cmd = 13; + * @return The cmd. + */ + java.lang.String getCmd(); + /** + * string cmd = 13; + * @return The bytes for cmd. + */ + com.google.protobuf.ByteString + getCmdBytes(); + + /** + *
+   *detail
+   * 
+ * + * string cluster = 14; + * @return The cluster. + */ + java.lang.String getCluster(); + /** + *
+   *detail
+   * 
+ * + * string cluster = 14; + * @return The bytes for cluster. + */ + com.google.protobuf.ByteString + getClusterBytes(); + + /** + * string ip = 15; + * @return The ip. + */ + java.lang.String getIp(); + /** + * string ip = 15; + * @return The bytes for ip. + */ + com.google.protobuf.ByteString + getIpBytes(); + + /** + * int32 port = 16; + * @return The port. + */ + int getPort(); + + /** + *
+   *list_service
+   * 
+ * + * int32 pageNo = 17; + * @return The pageNo. + */ + int getPageNo(); + + /** + * int32 pageSize = 18; + * @return The pageSize. + */ + int getPageSize(); + + /** + * string groupName = 19; + * @return The groupName. + */ + java.lang.String getGroupName(); + /** + * string groupName = 19; + * @return The bytes for groupName. + */ + com.google.protobuf.ByteString + getGroupNameBytes(); + + /** + * string selectorString = 20; + * @return The selectorString. + */ + java.lang.String getSelectorString(); + /** + * string selectorString = 20; + * @return The bytes for selectorString. + */ + com.google.protobuf.ByteString + getSelectorStringBytes(); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListResponse.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListResponse.java new file mode 100644 index 000000000..b85ffbff4 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListResponse.java @@ -0,0 +1,1252 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.ListResponse} + */ +public final class ListResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.ListResponse) + ListResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use ListResponse.newBuilder() to construct. + private ListResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ListResponse() { + data_ = ""; + instances_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ListResponse(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ListResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + data_ = s; + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + instances_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + instances_.add( + input.readMessage(run.mone.local.docean.protobuf.InstanceProto.parser(), extensionRegistry)); + break; + } + case 24: { + + code_ = input.readInt32(); + break; + } + case 34: { + run.mone.local.docean.protobuf.InstanceProto.Builder subBuilder = null; + if (instance_ != null) { + subBuilder = instance_.toBuilder(); + } + instance_ = input.readMessage(run.mone.local.docean.protobuf.InstanceProto.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(instance_); + instance_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + instances_ = java.util.Collections.unmodifiableList(instances_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.ListResponse.class, run.mone.local.docean.protobuf.ListResponse.Builder.class); + } + + public static final int DATA_FIELD_NUMBER = 1; + private volatile java.lang.Object data_; + /** + * string data = 1; + * @return The data. + */ + @java.lang.Override + public java.lang.String getData() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } + } + /** + * string data = 1; + * @return The bytes for data. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int INSTANCES_FIELD_NUMBER = 2; + private java.util.List instances_; + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + @java.lang.Override + public java.util.List getInstancesList() { + return instances_; + } + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + @java.lang.Override + public java.util.List + getInstancesOrBuilderList() { + return instances_; + } + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + @java.lang.Override + public int getInstancesCount() { + return instances_.size(); + } + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto getInstances(int index) { + return instances_.get(index); + } + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstancesOrBuilder( + int index) { + return instances_.get(index); + } + + public static final int CODE_FIELD_NUMBER = 3; + private int code_; + /** + * int32 code = 3; + * @return The code. + */ + @java.lang.Override + public int getCode() { + return code_; + } + + public static final int INSTANCE_FIELD_NUMBER = 4; + private run.mone.local.docean.protobuf.InstanceProto instance_; + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + * @return Whether the instance field is set. + */ + @java.lang.Override + public boolean hasInstance() { + return instance_ != null; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + * @return The instance. + */ + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProto getInstance() { + return instance_ == null ? run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance() : instance_; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstanceOrBuilder() { + return getInstance(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, data_); + } + for (int i = 0; i < instances_.size(); i++) { + output.writeMessage(2, instances_.get(i)); + } + if (code_ != 0) { + output.writeInt32(3, code_); + } + if (instance_ != null) { + output.writeMessage(4, getInstance()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(data_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, data_); + } + for (int i = 0; i < instances_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, instances_.get(i)); + } + if (code_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, code_); + } + if (instance_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getInstance()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.ListResponse)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.ListResponse other = (run.mone.local.docean.protobuf.ListResponse) obj; + + if (!getData() + .equals(other.getData())) return false; + if (!getInstancesList() + .equals(other.getInstancesList())) return false; + if (getCode() + != other.getCode()) return false; + if (hasInstance() != other.hasInstance()) return false; + if (hasInstance()) { + if (!getInstance() + .equals(other.getInstance())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + if (getInstancesCount() > 0) { + hash = (37 * hash) + INSTANCES_FIELD_NUMBER; + hash = (53 * hash) + getInstancesList().hashCode(); + } + hash = (37 * hash) + CODE_FIELD_NUMBER; + hash = (53 * hash) + getCode(); + if (hasInstance()) { + hash = (37 * hash) + INSTANCE_FIELD_NUMBER; + hash = (53 * hash) + getInstance().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.ListResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.ListResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.ListResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.ListResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.ListResponse) + run.mone.local.docean.protobuf.ListResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.ListResponse.class, run.mone.local.docean.protobuf.ListResponse.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.ListResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getInstancesFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + data_ = ""; + + if (instancesBuilder_ == null) { + instances_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + instancesBuilder_.clear(); + } + code_ = 0; + + if (instanceBuilder_ == null) { + instance_ = null; + } else { + instance_ = null; + instanceBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_ListResponse_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListResponse getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.ListResponse.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListResponse build() { + run.mone.local.docean.protobuf.ListResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListResponse buildPartial() { + run.mone.local.docean.protobuf.ListResponse result = new run.mone.local.docean.protobuf.ListResponse(this); + int from_bitField0_ = bitField0_; + result.data_ = data_; + if (instancesBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + instances_ = java.util.Collections.unmodifiableList(instances_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.instances_ = instances_; + } else { + result.instances_ = instancesBuilder_.build(); + } + result.code_ = code_; + if (instanceBuilder_ == null) { + result.instance_ = instance_; + } else { + result.instance_ = instanceBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.ListResponse) { + return mergeFrom((run.mone.local.docean.protobuf.ListResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.ListResponse other) { + if (other == run.mone.local.docean.protobuf.ListResponse.getDefaultInstance()) return this; + if (!other.getData().isEmpty()) { + data_ = other.data_; + onChanged(); + } + if (instancesBuilder_ == null) { + if (!other.instances_.isEmpty()) { + if (instances_.isEmpty()) { + instances_ = other.instances_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureInstancesIsMutable(); + instances_.addAll(other.instances_); + } + onChanged(); + } + } else { + if (!other.instances_.isEmpty()) { + if (instancesBuilder_.isEmpty()) { + instancesBuilder_.dispose(); + instancesBuilder_ = null; + instances_ = other.instances_; + bitField0_ = (bitField0_ & ~0x00000001); + instancesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getInstancesFieldBuilder() : null; + } else { + instancesBuilder_.addAllMessages(other.instances_); + } + } + } + if (other.getCode() != 0) { + setCode(other.getCode()); + } + if (other.hasInstance()) { + mergeInstance(other.getInstance()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.ListResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.ListResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object data_ = ""; + /** + * string data = 1; + * @return The data. + */ + public java.lang.String getData() { + java.lang.Object ref = data_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + data_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string data = 1; + * @return The bytes for data. + */ + public com.google.protobuf.ByteString + getDataBytes() { + java.lang.Object ref = data_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + data_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string data = 1; + * @param value The data to set. + * @return This builder for chaining. + */ + public Builder setData( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + * string data = 1; + * @return This builder for chaining. + */ + public Builder clearData() { + + data_ = getDefaultInstance().getData(); + onChanged(); + return this; + } + /** + * string data = 1; + * @param value The bytes for data to set. + * @return This builder for chaining. + */ + public Builder setDataBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + data_ = value; + onChanged(); + return this; + } + + private java.util.List instances_ = + java.util.Collections.emptyList(); + private void ensureInstancesIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + instances_ = new java.util.ArrayList(instances_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder> instancesBuilder_; + + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public java.util.List getInstancesList() { + if (instancesBuilder_ == null) { + return java.util.Collections.unmodifiableList(instances_); + } else { + return instancesBuilder_.getMessageList(); + } + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public int getInstancesCount() { + if (instancesBuilder_ == null) { + return instances_.size(); + } else { + return instancesBuilder_.getCount(); + } + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public run.mone.local.docean.protobuf.InstanceProto getInstances(int index) { + if (instancesBuilder_ == null) { + return instances_.get(index); + } else { + return instancesBuilder_.getMessage(index); + } + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder setInstances( + int index, run.mone.local.docean.protobuf.InstanceProto value) { + if (instancesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureInstancesIsMutable(); + instances_.set(index, value); + onChanged(); + } else { + instancesBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder setInstances( + int index, run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.set(index, builderForValue.build()); + onChanged(); + } else { + instancesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder addInstances(run.mone.local.docean.protobuf.InstanceProto value) { + if (instancesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureInstancesIsMutable(); + instances_.add(value); + onChanged(); + } else { + instancesBuilder_.addMessage(value); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder addInstances( + int index, run.mone.local.docean.protobuf.InstanceProto value) { + if (instancesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureInstancesIsMutable(); + instances_.add(index, value); + onChanged(); + } else { + instancesBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder addInstances( + run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.add(builderForValue.build()); + onChanged(); + } else { + instancesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder addInstances( + int index, run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.add(index, builderForValue.build()); + onChanged(); + } else { + instancesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder addAllInstances( + java.lang.Iterable values) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, instances_); + onChanged(); + } else { + instancesBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder clearInstances() { + if (instancesBuilder_ == null) { + instances_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + instancesBuilder_.clear(); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public Builder removeInstances(int index) { + if (instancesBuilder_ == null) { + ensureInstancesIsMutable(); + instances_.remove(index); + onChanged(); + } else { + instancesBuilder_.remove(index); + } + return this; + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder getInstancesBuilder( + int index) { + return getInstancesFieldBuilder().getBuilder(index); + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstancesOrBuilder( + int index) { + if (instancesBuilder_ == null) { + return instances_.get(index); } else { + return instancesBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public java.util.List + getInstancesOrBuilderList() { + if (instancesBuilder_ != null) { + return instancesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(instances_); + } + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder addInstancesBuilder() { + return getInstancesFieldBuilder().addBuilder( + run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance()); + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder addInstancesBuilder( + int index) { + return getInstancesFieldBuilder().addBuilder( + index, run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance()); + } + /** + *
+     *detail
+     * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + public java.util.List + getInstancesBuilderList() { + return getInstancesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder> + getInstancesFieldBuilder() { + if (instancesBuilder_ == null) { + instancesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder>( + instances_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + instances_ = null; + } + return instancesBuilder_; + } + + private int code_ ; + /** + * int32 code = 3; + * @return The code. + */ + @java.lang.Override + public int getCode() { + return code_; + } + /** + * int32 code = 3; + * @param value The code to set. + * @return This builder for chaining. + */ + public Builder setCode(int value) { + + code_ = value; + onChanged(); + return this; + } + /** + * int32 code = 3; + * @return This builder for chaining. + */ + public Builder clearCode() { + + code_ = 0; + onChanged(); + return this; + } + + private run.mone.local.docean.protobuf.InstanceProto instance_; + private com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder> instanceBuilder_; + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + * @return Whether the instance field is set. + */ + public boolean hasInstance() { + return instanceBuilder_ != null || instance_ != null; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + * @return The instance. + */ + public run.mone.local.docean.protobuf.InstanceProto getInstance() { + if (instanceBuilder_ == null) { + return instance_ == null ? run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance() : instance_; + } else { + return instanceBuilder_.getMessage(); + } + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + public Builder setInstance(run.mone.local.docean.protobuf.InstanceProto value) { + if (instanceBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + instance_ = value; + onChanged(); + } else { + instanceBuilder_.setMessage(value); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + public Builder setInstance( + run.mone.local.docean.protobuf.InstanceProto.Builder builderForValue) { + if (instanceBuilder_ == null) { + instance_ = builderForValue.build(); + onChanged(); + } else { + instanceBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + public Builder mergeInstance(run.mone.local.docean.protobuf.InstanceProto value) { + if (instanceBuilder_ == null) { + if (instance_ != null) { + instance_ = + run.mone.local.docean.protobuf.InstanceProto.newBuilder(instance_).mergeFrom(value).buildPartial(); + } else { + instance_ = value; + } + onChanged(); + } else { + instanceBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + public Builder clearInstance() { + if (instanceBuilder_ == null) { + instance_ = null; + onChanged(); + } else { + instance_ = null; + instanceBuilder_ = null; + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + public run.mone.local.docean.protobuf.InstanceProto.Builder getInstanceBuilder() { + + onChanged(); + return getInstanceFieldBuilder().getBuilder(); + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + public run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstanceOrBuilder() { + if (instanceBuilder_ != null) { + return instanceBuilder_.getMessageOrBuilder(); + } else { + return instance_ == null ? + run.mone.local.docean.protobuf.InstanceProto.getDefaultInstance() : instance_; + } + } + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder> + getInstanceFieldBuilder() { + if (instanceBuilder_ == null) { + instanceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.InstanceProto, run.mone.local.docean.protobuf.InstanceProto.Builder, run.mone.local.docean.protobuf.InstanceProtoOrBuilder>( + getInstance(), + getParentForChildren(), + isClean()); + instance_ = null; + } + return instanceBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.ListResponse) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.ListResponse) + private static final run.mone.local.docean.protobuf.ListResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.ListResponse(); + } + + public static run.mone.local.docean.protobuf.ListResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ListResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ListResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.ListResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListResponseOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListResponseOrBuilder.java new file mode 100644 index 000000000..6da2a8994 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/ListResponseOrBuilder.java @@ -0,0 +1,86 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface ListResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.ListResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * string data = 1; + * @return The data. + */ + java.lang.String getData(); + /** + * string data = 1; + * @return The bytes for data. + */ + com.google.protobuf.ByteString + getDataBytes(); + + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + java.util.List + getInstancesList(); + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + run.mone.local.docean.protobuf.InstanceProto getInstances(int index); + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + int getInstancesCount(); + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + java.util.List + getInstancesOrBuilderList(); + /** + *
+   *detail
+   * 
+ * + * repeated .run.mone.local.docean.protobuf.InstanceProto instances = 2; + */ + run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstancesOrBuilder( + int index); + + /** + * int32 code = 3; + * @return The code. + */ + int getCode(); + + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + * @return Whether the instance field is set. + */ + boolean hasInstance(); + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + * @return The instance. + */ + run.mone.local.docean.protobuf.InstanceProto getInstance(); + /** + * .run.mone.local.docean.protobuf.InstanceProto instance = 4; + */ + run.mone.local.docean.protobuf.InstanceProtoOrBuilder getInstanceOrBuilder(); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/NacosReqProto.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/NacosReqProto.java new file mode 100644 index 000000000..77d7275b6 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/NacosReqProto.java @@ -0,0 +1,1755 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.NacosReqProto} + */ +public final class NacosReqProto extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.NacosReqProto) + NacosReqProtoOrBuilder { +private static final long serialVersionUID = 0L; + // Use NacosReqProto.newBuilder() to construct. + private NacosReqProto(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private NacosReqProto() { + cmd_ = ""; + from_ = ""; + source_ = ""; + datumKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new NacosReqProto(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private NacosReqProto( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + cmd_ = s; + break; + } + case 18: { + run.mone.local.docean.protobuf.BeatInfoData.Builder subBuilder = null; + if (beatinfo_ != null) { + subBuilder = beatinfo_.toBuilder(); + } + beatinfo_ = input.readMessage(run.mone.local.docean.protobuf.BeatInfoData.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(beatinfo_); + beatinfo_ = subBuilder.buildPartial(); + } + + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + + from_ = s; + break; + } + case 34: { + run.mone.local.docean.protobuf.CheckSum.Builder subBuilder = null; + if (checkSum_ != null) { + subBuilder = checkSum_.toBuilder(); + } + checkSum_ = input.readMessage(run.mone.local.docean.protobuf.CheckSum.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(checkSum_); + checkSum_ = subBuilder.buildPartial(); + } + + break; + } + case 40: { + + showErrorMessage_ = input.readBool(); + break; + } + case 50: { + java.lang.String s = input.readStringRequireUtf8(); + + source_ = s; + break; + } + case 58: { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + datumKeys_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + datumKeys_.add(s); + break; + } + case 66: { + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + instances_ = com.google.protobuf.MapField.newMapField( + InstancesDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000002; + } + com.google.protobuf.MapEntry + instances__ = input.readMessage( + InstancesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + instances_.getMutableMap().put( + instances__.getKey(), instances__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + datumKeys_ = datumKeys_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 8: + return internalGetInstances(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_NacosReqProto_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.NacosReqProto.class, run.mone.local.docean.protobuf.NacosReqProto.Builder.class); + } + + public static final int CMD_FIELD_NUMBER = 1; + private volatile java.lang.Object cmd_; + /** + * string cmd = 1; + * @return The cmd. + */ + @java.lang.Override + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } + } + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int BEATINFO_FIELD_NUMBER = 2; + private run.mone.local.docean.protobuf.BeatInfoData beatinfo_; + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + * @return Whether the beatinfo field is set. + */ + @java.lang.Override + public boolean hasBeatinfo() { + return beatinfo_ != null; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + * @return The beatinfo. + */ + @java.lang.Override + public run.mone.local.docean.protobuf.BeatInfoData getBeatinfo() { + return beatinfo_ == null ? run.mone.local.docean.protobuf.BeatInfoData.getDefaultInstance() : beatinfo_; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.BeatInfoDataOrBuilder getBeatinfoOrBuilder() { + return getBeatinfo(); + } + + public static final int FROM_FIELD_NUMBER = 3; + private volatile java.lang.Object from_; + /** + * string from = 3; + * @return The from. + */ + @java.lang.Override + public java.lang.String getFrom() { + java.lang.Object ref = from_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + from_ = s; + return s; + } + } + /** + * string from = 3; + * @return The bytes for from. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getFromBytes() { + java.lang.Object ref = from_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + from_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CHECKSUM_FIELD_NUMBER = 4; + private run.mone.local.docean.protobuf.CheckSum checkSum_; + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + * @return Whether the checkSum field is set. + */ + @java.lang.Override + public boolean hasCheckSum() { + return checkSum_ != null; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + * @return The checkSum. + */ + @java.lang.Override + public run.mone.local.docean.protobuf.CheckSum getCheckSum() { + return checkSum_ == null ? run.mone.local.docean.protobuf.CheckSum.getDefaultInstance() : checkSum_; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + @java.lang.Override + public run.mone.local.docean.protobuf.CheckSumOrBuilder getCheckSumOrBuilder() { + return getCheckSum(); + } + + public static final int SHOWERRORMESSAGE_FIELD_NUMBER = 5; + private boolean showErrorMessage_; + /** + * bool showErrorMessage = 5; + * @return The showErrorMessage. + */ + @java.lang.Override + public boolean getShowErrorMessage() { + return showErrorMessage_; + } + + public static final int SOURCE_FIELD_NUMBER = 6; + private volatile java.lang.Object source_; + /** + * string source = 6; + * @return The source. + */ + @java.lang.Override + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } + } + /** + * string source = 6; + * @return The bytes for source. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DATUMKEYS_FIELD_NUMBER = 7; + private com.google.protobuf.LazyStringList datumKeys_; + /** + * repeated string datumKeys = 7; + * @return A list containing the datumKeys. + */ + public com.google.protobuf.ProtocolStringList + getDatumKeysList() { + return datumKeys_; + } + /** + * repeated string datumKeys = 7; + * @return The count of datumKeys. + */ + public int getDatumKeysCount() { + return datumKeys_.size(); + } + /** + * repeated string datumKeys = 7; + * @param index The index of the element to return. + * @return The datumKeys at the given index. + */ + public java.lang.String getDatumKeys(int index) { + return datumKeys_.get(index); + } + /** + * repeated string datumKeys = 7; + * @param index The index of the value to return. + * @return The bytes of the datumKeys at the given index. + */ + public com.google.protobuf.ByteString + getDatumKeysBytes(int index) { + return datumKeys_.getByteString(index); + } + + public static final int INSTANCES_FIELD_NUMBER = 8; + private static final class InstancesDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, run.mone.local.docean.protobuf.InstancesProto> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_NacosReqProto_InstancesEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.MESSAGE, + run.mone.local.docean.protobuf.InstancesProto.getDefaultInstance()); + } + private com.google.protobuf.MapField< + java.lang.String, run.mone.local.docean.protobuf.InstancesProto> instances_; + private com.google.protobuf.MapField + internalGetInstances() { + if (instances_ == null) { + return com.google.protobuf.MapField.emptyMapField( + InstancesDefaultEntryHolder.defaultEntry); + } + return instances_; + } + + public int getInstancesCount() { + return internalGetInstances().getMap().size(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + + @java.lang.Override + public boolean containsInstances( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetInstances().getMap().containsKey(key); + } + /** + * Use {@link #getInstancesMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getInstances() { + return getInstancesMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + @java.lang.Override + + public java.util.Map getInstancesMap() { + return internalGetInstances().getMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getInstancesOrDefault( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetInstances().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getInstancesOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetInstances().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, cmd_); + } + if (beatinfo_ != null) { + output.writeMessage(2, getBeatinfo()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(from_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, from_); + } + if (checkSum_ != null) { + output.writeMessage(4, getCheckSum()); + } + if (showErrorMessage_ != false) { + output.writeBool(5, showErrorMessage_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, source_); + } + for (int i = 0; i < datumKeys_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, datumKeys_.getRaw(i)); + } + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetInstances(), + InstancesDefaultEntryHolder.defaultEntry, + 8); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cmd_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, cmd_); + } + if (beatinfo_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getBeatinfo()); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(from_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, from_); + } + if (checkSum_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getCheckSum()); + } + if (showErrorMessage_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, showErrorMessage_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(source_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, source_); + } + { + int dataSize = 0; + for (int i = 0; i < datumKeys_.size(); i++) { + dataSize += computeStringSizeNoTag(datumKeys_.getRaw(i)); + } + size += dataSize; + size += 1 * getDatumKeysList().size(); + } + for (java.util.Map.Entry entry + : internalGetInstances().getMap().entrySet()) { + com.google.protobuf.MapEntry + instances__ = InstancesDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, instances__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.NacosReqProto)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.NacosReqProto other = (run.mone.local.docean.protobuf.NacosReqProto) obj; + + if (!getCmd() + .equals(other.getCmd())) return false; + if (hasBeatinfo() != other.hasBeatinfo()) return false; + if (hasBeatinfo()) { + if (!getBeatinfo() + .equals(other.getBeatinfo())) return false; + } + if (!getFrom() + .equals(other.getFrom())) return false; + if (hasCheckSum() != other.hasCheckSum()) return false; + if (hasCheckSum()) { + if (!getCheckSum() + .equals(other.getCheckSum())) return false; + } + if (getShowErrorMessage() + != other.getShowErrorMessage()) return false; + if (!getSource() + .equals(other.getSource())) return false; + if (!getDatumKeysList() + .equals(other.getDatumKeysList())) return false; + if (!internalGetInstances().equals( + other.internalGetInstances())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CMD_FIELD_NUMBER; + hash = (53 * hash) + getCmd().hashCode(); + if (hasBeatinfo()) { + hash = (37 * hash) + BEATINFO_FIELD_NUMBER; + hash = (53 * hash) + getBeatinfo().hashCode(); + } + hash = (37 * hash) + FROM_FIELD_NUMBER; + hash = (53 * hash) + getFrom().hashCode(); + if (hasCheckSum()) { + hash = (37 * hash) + CHECKSUM_FIELD_NUMBER; + hash = (53 * hash) + getCheckSum().hashCode(); + } + hash = (37 * hash) + SHOWERRORMESSAGE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getShowErrorMessage()); + hash = (37 * hash) + SOURCE_FIELD_NUMBER; + hash = (53 * hash) + getSource().hashCode(); + if (getDatumKeysCount() > 0) { + hash = (37 * hash) + DATUMKEYS_FIELD_NUMBER; + hash = (53 * hash) + getDatumKeysList().hashCode(); + } + if (!internalGetInstances().getMap().isEmpty()) { + hash = (37 * hash) + INSTANCES_FIELD_NUMBER; + hash = (53 * hash) + internalGetInstances().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.NacosReqProto parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.NacosReqProto prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.NacosReqProto} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.NacosReqProto) + run.mone.local.docean.protobuf.NacosReqProtoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 8: + return internalGetInstances(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 8: + return internalGetMutableInstances(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_NacosReqProto_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.NacosReqProto.class, run.mone.local.docean.protobuf.NacosReqProto.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.NacosReqProto.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + cmd_ = ""; + + if (beatinfoBuilder_ == null) { + beatinfo_ = null; + } else { + beatinfo_ = null; + beatinfoBuilder_ = null; + } + from_ = ""; + + if (checkSumBuilder_ == null) { + checkSum_ = null; + } else { + checkSum_ = null; + checkSumBuilder_ = null; + } + showErrorMessage_ = false; + + source_ = ""; + + datumKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + internalGetMutableInstances().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_NacosReqProto_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.NacosReqProto getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.NacosReqProto.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.NacosReqProto build() { + run.mone.local.docean.protobuf.NacosReqProto result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.NacosReqProto buildPartial() { + run.mone.local.docean.protobuf.NacosReqProto result = new run.mone.local.docean.protobuf.NacosReqProto(this); + int from_bitField0_ = bitField0_; + result.cmd_ = cmd_; + if (beatinfoBuilder_ == null) { + result.beatinfo_ = beatinfo_; + } else { + result.beatinfo_ = beatinfoBuilder_.build(); + } + result.from_ = from_; + if (checkSumBuilder_ == null) { + result.checkSum_ = checkSum_; + } else { + result.checkSum_ = checkSumBuilder_.build(); + } + result.showErrorMessage_ = showErrorMessage_; + result.source_ = source_; + if (((bitField0_ & 0x00000001) != 0)) { + datumKeys_ = datumKeys_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.datumKeys_ = datumKeys_; + result.instances_ = internalGetInstances(); + result.instances_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.NacosReqProto) { + return mergeFrom((run.mone.local.docean.protobuf.NacosReqProto)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.NacosReqProto other) { + if (other == run.mone.local.docean.protobuf.NacosReqProto.getDefaultInstance()) return this; + if (!other.getCmd().isEmpty()) { + cmd_ = other.cmd_; + onChanged(); + } + if (other.hasBeatinfo()) { + mergeBeatinfo(other.getBeatinfo()); + } + if (!other.getFrom().isEmpty()) { + from_ = other.from_; + onChanged(); + } + if (other.hasCheckSum()) { + mergeCheckSum(other.getCheckSum()); + } + if (other.getShowErrorMessage() != false) { + setShowErrorMessage(other.getShowErrorMessage()); + } + if (!other.getSource().isEmpty()) { + source_ = other.source_; + onChanged(); + } + if (!other.datumKeys_.isEmpty()) { + if (datumKeys_.isEmpty()) { + datumKeys_ = other.datumKeys_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureDatumKeysIsMutable(); + datumKeys_.addAll(other.datumKeys_); + } + onChanged(); + } + internalGetMutableInstances().mergeFrom( + other.internalGetInstances()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.NacosReqProto parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.NacosReqProto) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object cmd_ = ""; + /** + * string cmd = 1; + * @return The cmd. + */ + public java.lang.String getCmd() { + java.lang.Object ref = cmd_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cmd_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + public com.google.protobuf.ByteString + getCmdBytes() { + java.lang.Object ref = cmd_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cmd_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string cmd = 1; + * @param value The cmd to set. + * @return This builder for chaining. + */ + public Builder setCmd( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + cmd_ = value; + onChanged(); + return this; + } + /** + * string cmd = 1; + * @return This builder for chaining. + */ + public Builder clearCmd() { + + cmd_ = getDefaultInstance().getCmd(); + onChanged(); + return this; + } + /** + * string cmd = 1; + * @param value The bytes for cmd to set. + * @return This builder for chaining. + */ + public Builder setCmdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + cmd_ = value; + onChanged(); + return this; + } + + private run.mone.local.docean.protobuf.BeatInfoData beatinfo_; + private com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.BeatInfoData, run.mone.local.docean.protobuf.BeatInfoData.Builder, run.mone.local.docean.protobuf.BeatInfoDataOrBuilder> beatinfoBuilder_; + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + * @return Whether the beatinfo field is set. + */ + public boolean hasBeatinfo() { + return beatinfoBuilder_ != null || beatinfo_ != null; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + * @return The beatinfo. + */ + public run.mone.local.docean.protobuf.BeatInfoData getBeatinfo() { + if (beatinfoBuilder_ == null) { + return beatinfo_ == null ? run.mone.local.docean.protobuf.BeatInfoData.getDefaultInstance() : beatinfo_; + } else { + return beatinfoBuilder_.getMessage(); + } + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + public Builder setBeatinfo(run.mone.local.docean.protobuf.BeatInfoData value) { + if (beatinfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + beatinfo_ = value; + onChanged(); + } else { + beatinfoBuilder_.setMessage(value); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + public Builder setBeatinfo( + run.mone.local.docean.protobuf.BeatInfoData.Builder builderForValue) { + if (beatinfoBuilder_ == null) { + beatinfo_ = builderForValue.build(); + onChanged(); + } else { + beatinfoBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + public Builder mergeBeatinfo(run.mone.local.docean.protobuf.BeatInfoData value) { + if (beatinfoBuilder_ == null) { + if (beatinfo_ != null) { + beatinfo_ = + run.mone.local.docean.protobuf.BeatInfoData.newBuilder(beatinfo_).mergeFrom(value).buildPartial(); + } else { + beatinfo_ = value; + } + onChanged(); + } else { + beatinfoBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + public Builder clearBeatinfo() { + if (beatinfoBuilder_ == null) { + beatinfo_ = null; + onChanged(); + } else { + beatinfo_ = null; + beatinfoBuilder_ = null; + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + public run.mone.local.docean.protobuf.BeatInfoData.Builder getBeatinfoBuilder() { + + onChanged(); + return getBeatinfoFieldBuilder().getBuilder(); + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + public run.mone.local.docean.protobuf.BeatInfoDataOrBuilder getBeatinfoOrBuilder() { + if (beatinfoBuilder_ != null) { + return beatinfoBuilder_.getMessageOrBuilder(); + } else { + return beatinfo_ == null ? + run.mone.local.docean.protobuf.BeatInfoData.getDefaultInstance() : beatinfo_; + } + } + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.BeatInfoData, run.mone.local.docean.protobuf.BeatInfoData.Builder, run.mone.local.docean.protobuf.BeatInfoDataOrBuilder> + getBeatinfoFieldBuilder() { + if (beatinfoBuilder_ == null) { + beatinfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.BeatInfoData, run.mone.local.docean.protobuf.BeatInfoData.Builder, run.mone.local.docean.protobuf.BeatInfoDataOrBuilder>( + getBeatinfo(), + getParentForChildren(), + isClean()); + beatinfo_ = null; + } + return beatinfoBuilder_; + } + + private java.lang.Object from_ = ""; + /** + * string from = 3; + * @return The from. + */ + public java.lang.String getFrom() { + java.lang.Object ref = from_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + from_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string from = 3; + * @return The bytes for from. + */ + public com.google.protobuf.ByteString + getFromBytes() { + java.lang.Object ref = from_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + from_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string from = 3; + * @param value The from to set. + * @return This builder for chaining. + */ + public Builder setFrom( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + from_ = value; + onChanged(); + return this; + } + /** + * string from = 3; + * @return This builder for chaining. + */ + public Builder clearFrom() { + + from_ = getDefaultInstance().getFrom(); + onChanged(); + return this; + } + /** + * string from = 3; + * @param value The bytes for from to set. + * @return This builder for chaining. + */ + public Builder setFromBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + from_ = value; + onChanged(); + return this; + } + + private run.mone.local.docean.protobuf.CheckSum checkSum_; + private com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.CheckSum, run.mone.local.docean.protobuf.CheckSum.Builder, run.mone.local.docean.protobuf.CheckSumOrBuilder> checkSumBuilder_; + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + * @return Whether the checkSum field is set. + */ + public boolean hasCheckSum() { + return checkSumBuilder_ != null || checkSum_ != null; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + * @return The checkSum. + */ + public run.mone.local.docean.protobuf.CheckSum getCheckSum() { + if (checkSumBuilder_ == null) { + return checkSum_ == null ? run.mone.local.docean.protobuf.CheckSum.getDefaultInstance() : checkSum_; + } else { + return checkSumBuilder_.getMessage(); + } + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + public Builder setCheckSum(run.mone.local.docean.protobuf.CheckSum value) { + if (checkSumBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + checkSum_ = value; + onChanged(); + } else { + checkSumBuilder_.setMessage(value); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + public Builder setCheckSum( + run.mone.local.docean.protobuf.CheckSum.Builder builderForValue) { + if (checkSumBuilder_ == null) { + checkSum_ = builderForValue.build(); + onChanged(); + } else { + checkSumBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + public Builder mergeCheckSum(run.mone.local.docean.protobuf.CheckSum value) { + if (checkSumBuilder_ == null) { + if (checkSum_ != null) { + checkSum_ = + run.mone.local.docean.protobuf.CheckSum.newBuilder(checkSum_).mergeFrom(value).buildPartial(); + } else { + checkSum_ = value; + } + onChanged(); + } else { + checkSumBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + public Builder clearCheckSum() { + if (checkSumBuilder_ == null) { + checkSum_ = null; + onChanged(); + } else { + checkSum_ = null; + checkSumBuilder_ = null; + } + + return this; + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + public run.mone.local.docean.protobuf.CheckSum.Builder getCheckSumBuilder() { + + onChanged(); + return getCheckSumFieldBuilder().getBuilder(); + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + public run.mone.local.docean.protobuf.CheckSumOrBuilder getCheckSumOrBuilder() { + if (checkSumBuilder_ != null) { + return checkSumBuilder_.getMessageOrBuilder(); + } else { + return checkSum_ == null ? + run.mone.local.docean.protobuf.CheckSum.getDefaultInstance() : checkSum_; + } + } + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.CheckSum, run.mone.local.docean.protobuf.CheckSum.Builder, run.mone.local.docean.protobuf.CheckSumOrBuilder> + getCheckSumFieldBuilder() { + if (checkSumBuilder_ == null) { + checkSumBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + run.mone.local.docean.protobuf.CheckSum, run.mone.local.docean.protobuf.CheckSum.Builder, run.mone.local.docean.protobuf.CheckSumOrBuilder>( + getCheckSum(), + getParentForChildren(), + isClean()); + checkSum_ = null; + } + return checkSumBuilder_; + } + + private boolean showErrorMessage_ ; + /** + * bool showErrorMessage = 5; + * @return The showErrorMessage. + */ + @java.lang.Override + public boolean getShowErrorMessage() { + return showErrorMessage_; + } + /** + * bool showErrorMessage = 5; + * @param value The showErrorMessage to set. + * @return This builder for chaining. + */ + public Builder setShowErrorMessage(boolean value) { + + showErrorMessage_ = value; + onChanged(); + return this; + } + /** + * bool showErrorMessage = 5; + * @return This builder for chaining. + */ + public Builder clearShowErrorMessage() { + + showErrorMessage_ = false; + onChanged(); + return this; + } + + private java.lang.Object source_ = ""; + /** + * string source = 6; + * @return The source. + */ + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string source = 6; + * @return The bytes for source. + */ + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string source = 6; + * @param value The source to set. + * @return This builder for chaining. + */ + public Builder setSource( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + source_ = value; + onChanged(); + return this; + } + /** + * string source = 6; + * @return This builder for chaining. + */ + public Builder clearSource() { + + source_ = getDefaultInstance().getSource(); + onChanged(); + return this; + } + /** + * string source = 6; + * @param value The bytes for source to set. + * @return This builder for chaining. + */ + public Builder setSourceBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + source_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringList datumKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureDatumKeysIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + datumKeys_ = new com.google.protobuf.LazyStringArrayList(datumKeys_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated string datumKeys = 7; + * @return A list containing the datumKeys. + */ + public com.google.protobuf.ProtocolStringList + getDatumKeysList() { + return datumKeys_.getUnmodifiableView(); + } + /** + * repeated string datumKeys = 7; + * @return The count of datumKeys. + */ + public int getDatumKeysCount() { + return datumKeys_.size(); + } + /** + * repeated string datumKeys = 7; + * @param index The index of the element to return. + * @return The datumKeys at the given index. + */ + public java.lang.String getDatumKeys(int index) { + return datumKeys_.get(index); + } + /** + * repeated string datumKeys = 7; + * @param index The index of the value to return. + * @return The bytes of the datumKeys at the given index. + */ + public com.google.protobuf.ByteString + getDatumKeysBytes(int index) { + return datumKeys_.getByteString(index); + } + /** + * repeated string datumKeys = 7; + * @param index The index to set the value at. + * @param value The datumKeys to set. + * @return This builder for chaining. + */ + public Builder setDatumKeys( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureDatumKeysIsMutable(); + datumKeys_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string datumKeys = 7; + * @param value The datumKeys to add. + * @return This builder for chaining. + */ + public Builder addDatumKeys( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureDatumKeysIsMutable(); + datumKeys_.add(value); + onChanged(); + return this; + } + /** + * repeated string datumKeys = 7; + * @param values The datumKeys to add. + * @return This builder for chaining. + */ + public Builder addAllDatumKeys( + java.lang.Iterable values) { + ensureDatumKeysIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, datumKeys_); + onChanged(); + return this; + } + /** + * repeated string datumKeys = 7; + * @return This builder for chaining. + */ + public Builder clearDatumKeys() { + datumKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * repeated string datumKeys = 7; + * @param value The bytes of the datumKeys to add. + * @return This builder for chaining. + */ + public Builder addDatumKeysBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureDatumKeysIsMutable(); + datumKeys_.add(value); + onChanged(); + return this; + } + + private com.google.protobuf.MapField< + java.lang.String, run.mone.local.docean.protobuf.InstancesProto> instances_; + private com.google.protobuf.MapField + internalGetInstances() { + if (instances_ == null) { + return com.google.protobuf.MapField.emptyMapField( + InstancesDefaultEntryHolder.defaultEntry); + } + return instances_; + } + private com.google.protobuf.MapField + internalGetMutableInstances() { + onChanged();; + if (instances_ == null) { + instances_ = com.google.protobuf.MapField.newMapField( + InstancesDefaultEntryHolder.defaultEntry); + } + if (!instances_.isMutable()) { + instances_ = instances_.copy(); + } + return instances_; + } + + public int getInstancesCount() { + return internalGetInstances().getMap().size(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + + @java.lang.Override + public boolean containsInstances( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetInstances().getMap().containsKey(key); + } + /** + * Use {@link #getInstancesMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getInstances() { + return getInstancesMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + @java.lang.Override + + public java.util.Map getInstancesMap() { + return internalGetInstances().getMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getInstancesOrDefault( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetInstances().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + @java.lang.Override + + public run.mone.local.docean.protobuf.InstancesProto getInstancesOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetInstances().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearInstances() { + internalGetMutableInstances().getMutableMap() + .clear(); + return this; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + + public Builder removeInstances( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutableInstances().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableInstances() { + return internalGetMutableInstances().getMutableMap(); + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + public Builder putInstances( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableInstances().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + + public Builder putAllInstances( + java.util.Map values) { + internalGetMutableInstances().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.NacosReqProto) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.NacosReqProto) + private static final run.mone.local.docean.protobuf.NacosReqProto DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.NacosReqProto(); + } + + public static run.mone.local.docean.protobuf.NacosReqProto getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public NacosReqProto parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NacosReqProto(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.NacosReqProto getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/NacosReqProtoOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/NacosReqProtoOrBuilder.java new file mode 100644 index 000000000..84c6d11c7 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/NacosReqProtoOrBuilder.java @@ -0,0 +1,140 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface NacosReqProtoOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.NacosReqProto) + com.google.protobuf.MessageOrBuilder { + + /** + * string cmd = 1; + * @return The cmd. + */ + java.lang.String getCmd(); + /** + * string cmd = 1; + * @return The bytes for cmd. + */ + com.google.protobuf.ByteString + getCmdBytes(); + + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + * @return Whether the beatinfo field is set. + */ + boolean hasBeatinfo(); + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + * @return The beatinfo. + */ + run.mone.local.docean.protobuf.BeatInfoData getBeatinfo(); + /** + * .run.mone.local.docean.protobuf.BeatInfoData beatinfo = 2; + */ + run.mone.local.docean.protobuf.BeatInfoDataOrBuilder getBeatinfoOrBuilder(); + + /** + * string from = 3; + * @return The from. + */ + java.lang.String getFrom(); + /** + * string from = 3; + * @return The bytes for from. + */ + com.google.protobuf.ByteString + getFromBytes(); + + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + * @return Whether the checkSum field is set. + */ + boolean hasCheckSum(); + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + * @return The checkSum. + */ + run.mone.local.docean.protobuf.CheckSum getCheckSum(); + /** + * .run.mone.local.docean.protobuf.CheckSum checkSum = 4; + */ + run.mone.local.docean.protobuf.CheckSumOrBuilder getCheckSumOrBuilder(); + + /** + * bool showErrorMessage = 5; + * @return The showErrorMessage. + */ + boolean getShowErrorMessage(); + + /** + * string source = 6; + * @return The source. + */ + java.lang.String getSource(); + /** + * string source = 6; + * @return The bytes for source. + */ + com.google.protobuf.ByteString + getSourceBytes(); + + /** + * repeated string datumKeys = 7; + * @return A list containing the datumKeys. + */ + java.util.List + getDatumKeysList(); + /** + * repeated string datumKeys = 7; + * @return The count of datumKeys. + */ + int getDatumKeysCount(); + /** + * repeated string datumKeys = 7; + * @param index The index of the element to return. + * @return The datumKeys at the given index. + */ + java.lang.String getDatumKeys(int index); + /** + * repeated string datumKeys = 7; + * @param index The index of the value to return. + * @return The bytes of the datumKeys at the given index. + */ + com.google.protobuf.ByteString + getDatumKeysBytes(int index); + + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + int getInstancesCount(); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + boolean containsInstances( + java.lang.String key); + /** + * Use {@link #getInstancesMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getInstances(); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + java.util.Map + getInstancesMap(); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + + run.mone.local.docean.protobuf.InstancesProto getInstancesOrDefault( + java.lang.String key, + run.mone.local.docean.protobuf.InstancesProto defaultValue); + /** + * map<string, .run.mone.local.docean.protobuf.InstancesProto> instances = 8; + */ + + run.mone.local.docean.protobuf.InstancesProto getInstancesOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/PingMsg.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/PingMsg.java new file mode 100644 index 000000000..f3c560554 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/PingMsg.java @@ -0,0 +1,1187 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +/** + * Protobuf type {@code run.mone.local.docean.protobuf.PingMsg} + */ +public final class PingMsg extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:run.mone.local.docean.protobuf.PingMsg) + PingMsgOrBuilder { +private static final long serialVersionUID = 0L; + // Use PingMsg.newBuilder() to construct. + private PingMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private PingMsg() { + userName_ = ""; + role_ = ""; + alias_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new PingMsg(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PingMsg( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + userName_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + role_ = s; + break; + } + case 24: { + + time_ = input.readInt64(); + break; + } + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + + alias_ = s; + break; + } + case 42: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + pingMeta_ = com.google.protobuf.MapField.newMapField( + PingMetaDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + pingMeta__ = input.readMessage( + PingMetaDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + pingMeta_.getMutableMap().put( + pingMeta__.getKey(), pingMeta__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 5: + return internalGetPingMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_PingMsg_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.PingMsg.class, run.mone.local.docean.protobuf.PingMsg.Builder.class); + } + + public static final int USERNAME_FIELD_NUMBER = 1; + private volatile java.lang.Object userName_; + /** + * string userName = 1; + * @return The userName. + */ + @java.lang.Override + public java.lang.String getUserName() { + java.lang.Object ref = userName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + userName_ = s; + return s; + } + } + /** + * string userName = 1; + * @return The bytes for userName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getUserNameBytes() { + java.lang.Object ref = userName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + userName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ROLE_FIELD_NUMBER = 2; + private volatile java.lang.Object role_; + /** + * string role = 2; + * @return The role. + */ + @java.lang.Override + public java.lang.String getRole() { + java.lang.Object ref = role_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + role_ = s; + return s; + } + } + /** + * string role = 2; + * @return The bytes for role. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getRoleBytes() { + java.lang.Object ref = role_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + role_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TIME_FIELD_NUMBER = 3; + private long time_; + /** + * int64 time = 3; + * @return The time. + */ + @java.lang.Override + public long getTime() { + return time_; + } + + public static final int ALIAS_FIELD_NUMBER = 4; + private volatile java.lang.Object alias_; + /** + * string alias = 4; + * @return The alias. + */ + @java.lang.Override + public java.lang.String getAlias() { + java.lang.Object ref = alias_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + alias_ = s; + return s; + } + } + /** + * string alias = 4; + * @return The bytes for alias. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAliasBytes() { + java.lang.Object ref = alias_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + alias_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PINGMETA_FIELD_NUMBER = 5; + private static final class PingMetaDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.String, java.lang.String> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_PingMsg_PingMetaEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.STRING, + ""); + } + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> pingMeta_; + private com.google.protobuf.MapField + internalGetPingMeta() { + if (pingMeta_ == null) { + return com.google.protobuf.MapField.emptyMapField( + PingMetaDefaultEntryHolder.defaultEntry); + } + return pingMeta_; + } + + public int getPingMetaCount() { + return internalGetPingMeta().getMap().size(); + } + /** + * map<string, string> pingMeta = 5; + */ + + @java.lang.Override + public boolean containsPingMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetPingMeta().getMap().containsKey(key); + } + /** + * Use {@link #getPingMetaMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getPingMeta() { + return getPingMetaMap(); + } + /** + * map<string, string> pingMeta = 5; + */ + @java.lang.Override + + public java.util.Map getPingMetaMap() { + return internalGetPingMeta().getMap(); + } + /** + * map<string, string> pingMeta = 5; + */ + @java.lang.Override + + public java.lang.String getPingMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetPingMeta().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> pingMeta = 5; + */ + @java.lang.Override + + public java.lang.String getPingMetaOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetPingMeta().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, userName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(role_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, role_); + } + if (time_ != 0L) { + output.writeInt64(3, time_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, alias_); + } + com.google.protobuf.GeneratedMessageV3 + .serializeStringMapTo( + output, + internalGetPingMeta(), + PingMetaDefaultEntryHolder.defaultEntry, + 5); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, userName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(role_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, role_); + } + if (time_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(3, time_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alias_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, alias_); + } + for (java.util.Map.Entry entry + : internalGetPingMeta().getMap().entrySet()) { + com.google.protobuf.MapEntry + pingMeta__ = PingMetaDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, pingMeta__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof run.mone.local.docean.protobuf.PingMsg)) { + return super.equals(obj); + } + run.mone.local.docean.protobuf.PingMsg other = (run.mone.local.docean.protobuf.PingMsg) obj; + + if (!getUserName() + .equals(other.getUserName())) return false; + if (!getRole() + .equals(other.getRole())) return false; + if (getTime() + != other.getTime()) return false; + if (!getAlias() + .equals(other.getAlias())) return false; + if (!internalGetPingMeta().equals( + other.internalGetPingMeta())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + USERNAME_FIELD_NUMBER; + hash = (53 * hash) + getUserName().hashCode(); + hash = (37 * hash) + ROLE_FIELD_NUMBER; + hash = (53 * hash) + getRole().hashCode(); + hash = (37 * hash) + TIME_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getTime()); + hash = (37 * hash) + ALIAS_FIELD_NUMBER; + hash = (53 * hash) + getAlias().hashCode(); + if (!internalGetPingMeta().getMap().isEmpty()) { + hash = (37 * hash) + PINGMETA_FIELD_NUMBER; + hash = (53 * hash) + internalGetPingMeta().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.PingMsg parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.PingMsg parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static run.mone.local.docean.protobuf.PingMsg parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(run.mone.local.docean.protobuf.PingMsg prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code run.mone.local.docean.protobuf.PingMsg} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:run.mone.local.docean.protobuf.PingMsg) + run.mone.local.docean.protobuf.PingMsgOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 5: + return internalGetPingMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 5: + return internalGetMutablePingMeta(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_PingMsg_fieldAccessorTable + .ensureFieldAccessorsInitialized( + run.mone.local.docean.protobuf.PingMsg.class, run.mone.local.docean.protobuf.PingMsg.Builder.class); + } + + // Construct using run.mone.local.docean.protobuf.PingMsg.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + userName_ = ""; + + role_ = ""; + + time_ = 0L; + + alias_ = ""; + + internalGetMutablePingMeta().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return run.mone.local.docean.protobuf.Bo.internal_static_run_mone_local_docean_protobuf_PingMsg_descriptor; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.PingMsg getDefaultInstanceForType() { + return run.mone.local.docean.protobuf.PingMsg.getDefaultInstance(); + } + + @java.lang.Override + public run.mone.local.docean.protobuf.PingMsg build() { + run.mone.local.docean.protobuf.PingMsg result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.PingMsg buildPartial() { + run.mone.local.docean.protobuf.PingMsg result = new run.mone.local.docean.protobuf.PingMsg(this); + int from_bitField0_ = bitField0_; + result.userName_ = userName_; + result.role_ = role_; + result.time_ = time_; + result.alias_ = alias_; + result.pingMeta_ = internalGetPingMeta(); + result.pingMeta_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof run.mone.local.docean.protobuf.PingMsg) { + return mergeFrom((run.mone.local.docean.protobuf.PingMsg)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(run.mone.local.docean.protobuf.PingMsg other) { + if (other == run.mone.local.docean.protobuf.PingMsg.getDefaultInstance()) return this; + if (!other.getUserName().isEmpty()) { + userName_ = other.userName_; + onChanged(); + } + if (!other.getRole().isEmpty()) { + role_ = other.role_; + onChanged(); + } + if (other.getTime() != 0L) { + setTime(other.getTime()); + } + if (!other.getAlias().isEmpty()) { + alias_ = other.alias_; + onChanged(); + } + internalGetMutablePingMeta().mergeFrom( + other.internalGetPingMeta()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + run.mone.local.docean.protobuf.PingMsg parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (run.mone.local.docean.protobuf.PingMsg) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object userName_ = ""; + /** + * string userName = 1; + * @return The userName. + */ + public java.lang.String getUserName() { + java.lang.Object ref = userName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + userName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string userName = 1; + * @return The bytes for userName. + */ + public com.google.protobuf.ByteString + getUserNameBytes() { + java.lang.Object ref = userName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + userName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string userName = 1; + * @param value The userName to set. + * @return This builder for chaining. + */ + public Builder setUserName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + userName_ = value; + onChanged(); + return this; + } + /** + * string userName = 1; + * @return This builder for chaining. + */ + public Builder clearUserName() { + + userName_ = getDefaultInstance().getUserName(); + onChanged(); + return this; + } + /** + * string userName = 1; + * @param value The bytes for userName to set. + * @return This builder for chaining. + */ + public Builder setUserNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + userName_ = value; + onChanged(); + return this; + } + + private java.lang.Object role_ = ""; + /** + * string role = 2; + * @return The role. + */ + public java.lang.String getRole() { + java.lang.Object ref = role_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + role_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string role = 2; + * @return The bytes for role. + */ + public com.google.protobuf.ByteString + getRoleBytes() { + java.lang.Object ref = role_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + role_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string role = 2; + * @param value The role to set. + * @return This builder for chaining. + */ + public Builder setRole( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + role_ = value; + onChanged(); + return this; + } + /** + * string role = 2; + * @return This builder for chaining. + */ + public Builder clearRole() { + + role_ = getDefaultInstance().getRole(); + onChanged(); + return this; + } + /** + * string role = 2; + * @param value The bytes for role to set. + * @return This builder for chaining. + */ + public Builder setRoleBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + role_ = value; + onChanged(); + return this; + } + + private long time_ ; + /** + * int64 time = 3; + * @return The time. + */ + @java.lang.Override + public long getTime() { + return time_; + } + /** + * int64 time = 3; + * @param value The time to set. + * @return This builder for chaining. + */ + public Builder setTime(long value) { + + time_ = value; + onChanged(); + return this; + } + /** + * int64 time = 3; + * @return This builder for chaining. + */ + public Builder clearTime() { + + time_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object alias_ = ""; + /** + * string alias = 4; + * @return The alias. + */ + public java.lang.String getAlias() { + java.lang.Object ref = alias_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + alias_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string alias = 4; + * @return The bytes for alias. + */ + public com.google.protobuf.ByteString + getAliasBytes() { + java.lang.Object ref = alias_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + alias_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string alias = 4; + * @param value The alias to set. + * @return This builder for chaining. + */ + public Builder setAlias( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + alias_ = value; + onChanged(); + return this; + } + /** + * string alias = 4; + * @return This builder for chaining. + */ + public Builder clearAlias() { + + alias_ = getDefaultInstance().getAlias(); + onChanged(); + return this; + } + /** + * string alias = 4; + * @param value The bytes for alias to set. + * @return This builder for chaining. + */ + public Builder setAliasBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + alias_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.MapField< + java.lang.String, java.lang.String> pingMeta_; + private com.google.protobuf.MapField + internalGetPingMeta() { + if (pingMeta_ == null) { + return com.google.protobuf.MapField.emptyMapField( + PingMetaDefaultEntryHolder.defaultEntry); + } + return pingMeta_; + } + private com.google.protobuf.MapField + internalGetMutablePingMeta() { + onChanged();; + if (pingMeta_ == null) { + pingMeta_ = com.google.protobuf.MapField.newMapField( + PingMetaDefaultEntryHolder.defaultEntry); + } + if (!pingMeta_.isMutable()) { + pingMeta_ = pingMeta_.copy(); + } + return pingMeta_; + } + + public int getPingMetaCount() { + return internalGetPingMeta().getMap().size(); + } + /** + * map<string, string> pingMeta = 5; + */ + + @java.lang.Override + public boolean containsPingMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + return internalGetPingMeta().getMap().containsKey(key); + } + /** + * Use {@link #getPingMetaMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getPingMeta() { + return getPingMetaMap(); + } + /** + * map<string, string> pingMeta = 5; + */ + @java.lang.Override + + public java.util.Map getPingMetaMap() { + return internalGetPingMeta().getMap(); + } + /** + * map<string, string> pingMeta = 5; + */ + @java.lang.Override + + public java.lang.String getPingMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetPingMeta().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<string, string> pingMeta = 5; + */ + @java.lang.Override + + public java.lang.String getPingMetaOrThrow( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + java.util.Map map = + internalGetPingMeta().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearPingMeta() { + internalGetMutablePingMeta().getMutableMap() + .clear(); + return this; + } + /** + * map<string, string> pingMeta = 5; + */ + + public Builder removePingMeta( + java.lang.String key) { + if (key == null) { throw new NullPointerException("map key"); } + internalGetMutablePingMeta().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutablePingMeta() { + return internalGetMutablePingMeta().getMutableMap(); + } + /** + * map<string, string> pingMeta = 5; + */ + public Builder putPingMeta( + java.lang.String key, + java.lang.String value) { + if (key == null) { throw new NullPointerException("map key"); } + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutablePingMeta().getMutableMap() + .put(key, value); + return this; + } + /** + * map<string, string> pingMeta = 5; + */ + + public Builder putAllPingMeta( + java.util.Map values) { + internalGetMutablePingMeta().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:run.mone.local.docean.protobuf.PingMsg) + } + + // @@protoc_insertion_point(class_scope:run.mone.local.docean.protobuf.PingMsg) + private static final run.mone.local.docean.protobuf.PingMsg DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new run.mone.local.docean.protobuf.PingMsg(); + } + + public static run.mone.local.docean.protobuf.PingMsg getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public PingMsg parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PingMsg(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public run.mone.local.docean.protobuf.PingMsg getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/PingMsgOrBuilder.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/PingMsgOrBuilder.java new file mode 100644 index 000000000..90561f281 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/protobuf/PingMsgOrBuilder.java @@ -0,0 +1,85 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: bo.proto + +package run.mone.local.docean.protobuf; + +public interface PingMsgOrBuilder extends + // @@protoc_insertion_point(interface_extends:run.mone.local.docean.protobuf.PingMsg) + com.google.protobuf.MessageOrBuilder { + + /** + * string userName = 1; + * @return The userName. + */ + java.lang.String getUserName(); + /** + * string userName = 1; + * @return The bytes for userName. + */ + com.google.protobuf.ByteString + getUserNameBytes(); + + /** + * string role = 2; + * @return The role. + */ + java.lang.String getRole(); + /** + * string role = 2; + * @return The bytes for role. + */ + com.google.protobuf.ByteString + getRoleBytes(); + + /** + * int64 time = 3; + * @return The time. + */ + long getTime(); + + /** + * string alias = 4; + * @return The alias. + */ + java.lang.String getAlias(); + /** + * string alias = 4; + * @return The bytes for alias. + */ + com.google.protobuf.ByteString + getAliasBytes(); + + /** + * map<string, string> pingMeta = 5; + */ + int getPingMetaCount(); + /** + * map<string, string> pingMeta = 5; + */ + boolean containsPingMeta( + java.lang.String key); + /** + * Use {@link #getPingMetaMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getPingMeta(); + /** + * map<string, string> pingMeta = 5; + */ + java.util.Map + getPingMetaMap(); + /** + * map<string, string> pingMeta = 5; + */ + + java.lang.String getPingMetaOrDefault( + java.lang.String key, + java.lang.String defaultValue); + /** + * map<string, string> pingMeta = 5; + */ + + java.lang.String getPingMetaOrThrow( + java.lang.String key); +} diff --git a/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/rpc/TianyeCmd.java b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/rpc/TianyeCmd.java new file mode 100644 index 000000000..87d390a27 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/java/run/mone/local/docean/rpc/TianyeCmd.java @@ -0,0 +1,26 @@ +package run.mone.local.docean.rpc; + +/** + * @author goodjava@qq.com + * @date 2024/2/23 11:37 + */ +public class TianyeCmd { + + public static int nacosReq; + + public static int listReq; + + public static int distroReq; + + public static int messageReq = 60000; + public static int messageRes = 60001; + + public static int pingReq = 61000; + public static int pingRes = 61001; + + + public static int clientMessageReq = 62000; + public static int clientMessageRes = 62001; + + +} diff --git a/m78-all/Tianye/Tianye-api/src/main/resources/protobuf/bo.proto b/m78-all/Tianye/Tianye-api/src/main/resources/protobuf/bo.proto new file mode 100644 index 000000000..37f5e76d2 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/resources/protobuf/bo.proto @@ -0,0 +1,138 @@ +syntax = "proto3"; +option java_multiple_files = true; +package run.mone.local.docean.protobuf; + +message HelloRequest { + string firstName = 1; + string lastName = 2; +} + +message ListRequest { + //list + string namespaceId = 1; + string serviceName = 2; + string agent = 3; + string clusters = 4; + string clientIP = 5; + int32 udpPort = 6; + string env = 7; + bool isCheck = 8; + string app = 9; + string tid = 10; + string tenant = 11; + bool healthyOnly = 12; + string cmd = 13; + + //detail + string cluster = 14; + string ip = 15; + int32 port = 16; + + //list_service + int32 pageNo = 17; + int32 pageSize = 18; + string groupName = 19; + string selectorString = 20; + + +} + +message ListResponse { + string data = 1; + + //detail + repeated InstanceProto instances = 2; + int32 code = 3; + InstanceProto instance = 4; +} + + +message CheckSum { + map data = 1; +} + +message BeatInfoData { + string serviceName = 1; + string namespaceId = 2; + string clusterName = 3; + string ip = 4; + int32 port = 5; + string beat = 6; + string appName = 7; + string agent = 8; + string source = 9; +} + +message DatumMapData { + map datumMap = 1; +} + +message InstanceProto { + string key = 1; + int64 timestamp = 2; + int64 lastBeat = 3; + bool marked = 4; + string tenant = 5; + string app = 6; + string instanceId = 7; + string ip = 8; + int32 port = 9; + double weight = 10; + bool healthy = 11; + bool enabled = 12; + bool ephemeral = 13; + string clusterName = 14; + string serviceName = 15; + map metadata = 16; + +} + +message InstancesProto { + repeated InstanceProto instances = 1; + string key = 2; + int64 timestamp = 3; +} + +message NacosReqProto { + string cmd = 1; + BeatInfoData beatinfo = 2; + string from = 3; + CheckSum checkSum = 4; + bool showErrorMessage = 5; + string source = 6; + repeated string datumKeys = 7; + map instances = 8; +} + + +message AiMessage { + string cmd = 1; + map messageMeta = 2 ; + string message = 3; + int64 time = 4; + string data = 5; + string from = 6; + string to = 7; + string topicId = 8; +} + +message AiCmd { + string cmd = 1; + map cmdMeta = 2; +} + +message AiResult { + int32 code = 1; + string message = 2; + map data = 3; +} + +message PingMsg { + string userName = 1; + string role = 2; + int64 time = 3; + string alias = 4; + map pingMeta = 5; +} + + diff --git a/m78-all/Tianye/Tianye-api/src/main/resources/protobuf/gen.sh b/m78-all/Tianye/Tianye-api/src/main/resources/protobuf/gen.sh new file mode 100755 index 000000000..66cfa3de0 --- /dev/null +++ b/m78-all/Tianye/Tianye-api/src/main/resources/protobuf/gen.sh @@ -0,0 +1 @@ +protoc --java_out=../../java/ bo.proto diff --git a/m78-all/Tianye/Tianye-common/pom.xml b/m78-all/Tianye/Tianye-common/pom.xml new file mode 100644 index 000000000..97b9e32c5 --- /dev/null +++ b/m78-all/Tianye/Tianye-common/pom.xml @@ -0,0 +1,36 @@ + + + + + Tianye + run.mone.local.docean + 1.0.0-SNAPSHOT + + 4.0.0 + + Tianye-common + + + + ch.qos.logback + logback-classic + 1.1.2 + + + + ch.qos.logback + logback-core + 1.1.2 + + + + com.google.guava + guava + + + + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/CommonConstants.java b/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/CommonConstants.java new file mode 100644 index 000000000..85fbbfc59 --- /dev/null +++ b/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/CommonConstants.java @@ -0,0 +1,38 @@ +package run.mone.local.docean.tianye.common; + +/** + * @author HawickMason@xiaomi.com + * @date 2/27/24 16:31 + */ +public class CommonConstants { + // TODO + public static final String TY_CODE_INPUT_MARK = "$$TY_CODE$$"; + + public static final String TY_SQL_INPUT_MARK = "$$TY_SQL$$"; + + public static final String TY_PLUGIN_ID_MARK = "$$TY_PLUGIN_ID$$"; + + public static final String TY_KNOWLEDGE_ID_MARK = "$$TY_KNOWLEDGE_ID$$"; + + public static final String TY_KNOWLEDGE_MAX_RECALL_MARK = "$$TY_KNOWLEDGE_MAX_RECALL$$"; + + public static final String TY_KNOWLEDGE_MIN_MATCH_MARK = "$$TY_KNOWLEDGE_MIN_MATCH$$"; + + public static final String TY_KNOWLEDGE_QUERY_MARK = "$$TY_KNOWLEDGE_QUERY$$"; + + public static final String TY_LLM_PROMPT_MARK = "$$TY_LLM_PROMPT$$"; + + public static final String TY_LLM_MODEL_MARK = "$$TY_LLM_MODEL$$"; + + public static final String TY_LLM_USE_CACHE = "USE_CACHE"; + + //批处理还是单条处理(single batch) + public static final String TY_PROCESS_TYPE = "$$TY_PROCESS_TYPE$$"; + + public static final String TY_LLM_TIMEOUT_MARK = "$$TY_LLM_TIMEOUT$$"; + + public static final String TY_END_MESSAGE_CONTENT_MARK = "$$TY_END_MESSAGE_CONTENT$$"; + + // 批处理最大循环次数 + public static final String TY_BATCH_MAX_TIMES_MARK = "$$TY_BATCH_MAX_TIMES$$"; +} diff --git a/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/LocalCache.java b/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/LocalCache.java new file mode 100644 index 000000000..3f4ce8eb0 --- /dev/null +++ b/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/LocalCache.java @@ -0,0 +1,71 @@ +/* + * Copyright 2020 Xiaomi + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package run.mone.local.docean.tianye.common; + +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; + +import java.util.concurrent.TimeUnit; + +/** + * @author shanwb + */ +public class LocalCache { + private final Cache cache; + + private LocalCache() { + cache = CacheBuilder.newBuilder() + .maximumSize(1000) + .expireAfterAccess(17, TimeUnit.MINUTES) + .build(); + } + + // 静态内部类,用于实现延迟加载 + private static class SingletonHolder { + // 创建LocalCache的单例实例 + private static final LocalCache INSTANCE = new LocalCache(); + } + + // 提供一个公共的静态方法,用于获取单例实例 + public static LocalCache getInstance() { + return SingletonHolder.INSTANCE; + } + + // 向缓存中添加一个键值对 + public void put(Object key, Object value) { + cache.put(key, value); + } + + // 从缓存中获取一个对象 + public V get(Object key) { + return (V) cache.getIfPresent(key); + } + + // 从缓存中移除一个对象 + public void invalidate(Object key) { + cache.invalidate(key); + } + + // 清空缓存 + public long invalidateAll() { + long total = cache.size(); + cache.invalidateAll(); + + return total; + } +} + diff --git a/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/TableConstants.java b/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/TableConstants.java new file mode 100644 index 000000000..32da1c2fd --- /dev/null +++ b/m78-all/Tianye/Tianye-common/src/main/java/run/mone/local/docean/tianye/common/TableConstants.java @@ -0,0 +1,12 @@ +package run.mone.local.docean.tianye.common; + +/** + * @author HawickMason@xiaomi.com + * @date 2/27/24 16:31 + */ +public class TableConstants { + + public static final String TABLE_AGENT_CONFIG_INFO = "tianye_agent_config_info"; + + public static final String TABLE_AGENT_MSG = "tianye_agent_msg"; +} diff --git a/m78-all/Tianye/Tianye-plugin/pom.xml b/m78-all/Tianye/Tianye-plugin/pom.xml new file mode 100644 index 000000000..82848c928 --- /dev/null +++ b/m78-all/Tianye/Tianye-plugin/pom.xml @@ -0,0 +1,28 @@ + + + + + Tianye + run.mone.local.docean + 1.0.0-SNAPSHOT + + 4.0.0 + + Tianye-plugin + + + + ch.qos.logback + logback-classic + 1.1.2 + + + ch.qos.logback + logback-core + 1.1.2 + + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-plugin/src/main/java/TianyePlugin.java b/m78-all/Tianye/Tianye-plugin/src/main/java/TianyePlugin.java new file mode 100644 index 000000000..27537ad2e --- /dev/null +++ b/m78-all/Tianye/Tianye-plugin/src/main/java/TianyePlugin.java @@ -0,0 +1,7 @@ +/** + * @author HawickMason@xiaomi.com + * @date 2/26/24 5:18 PM + */ +public interface TianyePlugin { + // nothing for now +} diff --git a/m78-all/Tianye/Tianye-server/build.sh b/m78-all/Tianye/Tianye-server/build.sh new file mode 100644 index 000000000..37b0f16c2 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/build.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Extract the cluster from the job name +job=$1 +cluster=$(echo $job | sed -n 's/.*_cluster\.\([^._]*\)_.*/\1/p') + +export JAVA_HOME=/opt/soft/openjdk1.8.0_202 +export JRE_HOME=$JAVA_HOME/jre +export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib +export PATH=$JAVA_HOME/bin:$PATH + +rm -rf release +mkdir -p release + +echo $cluster +files=$(ls) +echo $files +cur=$(pwd) +echo $cur + +echo $JAVA_HOME + +mvn -U clean -D$cluster=true package install -P$cluster -Dmaven.test.skip=true + +cp target/Tianye-server-1.0.0-SNAPSHOT.jar release/ +cp -r deploy release/ + diff --git a/m78-all/Tianye/Tianye-server/pom.xml b/m78-all/Tianye/Tianye-server/pom.xml new file mode 100644 index 000000000..202dcd15a --- /dev/null +++ b/m78-all/Tianye/Tianye-server/pom.xml @@ -0,0 +1,153 @@ + + + + Tianye + run.mone.local.docean + 1.0.0-SNAPSHOT + + 4.0.0 + + Tianye-server + + + + Tianye-service + run.mone.local.docean + 1.0.0-SNAPSHOT + + + + junit + junit + 4.13.1 + test + + + + + co.paralleluniverse + quasar-core + 0.8.0 + + + + + + + + + + + + + src/main/resources + true + + tools/** + + + + src/main/resources/META-INF + true + + app.properties + + META-INF/ + + + + + + org.apache.maven.plugins + maven-resources-plugin + + UTF-8 + + zip + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.1 + + + package + + shade + + + ${project.artifactId}-${project.version} + false + + + *:run.mone:log-manager + + **/*.class + **/*.properties + **/*.xml + + + **/config.properties + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + run.mone.local.docean.bootstrap.TianyeBootstrap + + + + + + + + + + + + + + + dev + + dev + + + true + + + + src/main/resources/config/dev.properties + + + + + + open + + open + + + + src/main/resources/config/open.properties + + + + + + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/AgentInfo.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/AgentInfo.java new file mode 100644 index 000000000..832bdeca6 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/AgentInfo.java @@ -0,0 +1,22 @@ +package run.mone.local.docean.bo; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author goodjava@qq.com + * @date 2024/2/24 09:58 + */ +@Data +@Builder +public class AgentInfo implements Serializable { + + private String name; + + private Long knowledgeId; + + private Long promptId; + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/FileRequest.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/FileRequest.java new file mode 100644 index 000000000..f9ae7798c --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/FileRequest.java @@ -0,0 +1,12 @@ +package run.mone.local.docean.bo; + + +import lombok.Data; +import run.mone.ai.z.dto.ZKnowledgeBaseFileBlockDTO; + +@Data +public class FileRequest { + String account; + Long knowledgeId; + ZKnowledgeBaseFileBlockDTO dto; +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/PromptRequest.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/PromptRequest.java new file mode 100644 index 000000000..24e4df00a --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bo/PromptRequest.java @@ -0,0 +1,8 @@ +package run.mone.local.docean.bo; + +/** + * @author goodjava@qq.com + * @date 2024/2/23 16:03 + */ +public class PromptRequest { +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bootstrap/DbInit.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bootstrap/DbInit.java new file mode 100644 index 000000000..35a764554 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bootstrap/DbInit.java @@ -0,0 +1,59 @@ +package run.mone.local.docean.bootstrap; + +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.impl.NutDao; +import org.nutz.dao.util.DaoUp; +import run.mone.local.docean.po.AgentInfoPo; +import run.mone.local.docean.po.Message; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.Properties; + +/** + * @author HawickMason@xiaomi.com + * @date 2/27/24 17:00 + */ +@Slf4j +@Service +public class DbInit { + + @Resource + private NutDao dao; + + @Value("${db_uname_cus}") + private String userUname; + + @Value("${db_pwd_cus}") + private String userPwd; + + @Value("${db_url_cus}") + private String userUrl; + + @PostConstruct + public void init() { + log.info("init local data source..."); + dao.create(AgentInfoPo.class, false); // false的含义是,如果表已经存在,就不要删除重建了. + dao.create(Message.class, false); + try { + Properties props = new Properties(); + props.put("jdbcUrl", userUrl); + props.put("password", userPwd); + props.put("username", userUname); + DaoUp.me().init(props); + } catch (Exception e) { + log.info("initializing user table dao error, nested exception is:", e); + } + } + + @PreDestroy + public void destroy() { + log.info("db resource destroying..."); + DaoUp.me().close(); + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bootstrap/TianyeBootstrap.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bootstrap/TianyeBootstrap.java new file mode 100644 index 000000000..95f1a8e88 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/bootstrap/TianyeBootstrap.java @@ -0,0 +1,29 @@ +package run.mone.local.docean.bootstrap; + + +import com.google.common.collect.Maps; +import com.xiaomi.youpin.docean.Aop; +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.docean.config.HttpServerConfig; +import com.xiaomi.youpin.docean.mvc.DoceanHttpServer; +import lombok.extern.slf4j.Slf4j; + +/** + * @author zhangping17 + */ +@Slf4j +public class TianyeBootstrap { + + public static void main(String... args) { + try { + log.info("tianye client start version:0.0.1"); + Aop.ins().init(Maps.newLinkedHashMap()); + Ioc.ins().init("com.xiaomi.youpin","run.mone.local.docean"); + DoceanHttpServer server = new DoceanHttpServer(HttpServerConfig.builder().websocket(false).port(8999).build()); + server.start(); + } catch (Throwable throwable) { + log.error(throwable.getMessage(), throwable); + System.exit(-1); + } + } +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/AgentController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/AgentController.java new file mode 100644 index 000000000..c2d93c62a --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/AgentController.java @@ -0,0 +1,61 @@ +package run.mone.local.docean.controller; + +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import com.xiaomi.youpin.docean.anno.RequestParam; +import com.xiaomi.youpin.infra.rpc.Result; +import com.xiaomi.youpin.infra.rpc.errors.GeneralCodes; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.bo.AgentInfo; +import run.mone.local.docean.po.Message; +import run.mone.local.docean.service.LocalMessageService; +import run.mone.local.docean.service.ZService; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/2/24 09:57 + */ + +@Slf4j +@Controller +public class AgentController { + + @Resource + private ZService zService; + + @Resource + private LocalMessageService localMessageService; + + + //获取agent的信息,包括知识库id,prompt id和用户名(class) + @RequestMapping(path = "/agent/getAgentInfo", method = "get") + public Result getAgentInfo(@RequestParam("username") String username) { + try { + Long knowledgeId = zService.getKnowledgeIdByUserName(username, new HashMap<>()); + Long promptId = zService.getPromptIdByUserName(username); + return Result.success(AgentInfo.builder().knowledgeId(knowledgeId).promptId(promptId).name(username).build()); + } catch (Exception e) { + log.error("Failed to get agent info for user: {}", username, e); + return Result.fromException(e); + } + } + + // 获取最近的bot message列表 + @RequestMapping(path = "/agent/getMsgs", method = "get") + public Result>> getLatestMsgList(@RequestParam("username") String username) { + log.info("{} try to get local msg list...", username); + try { + Map> messagesMap = localMessageService.getMessagesMap(); + return Result.success(messagesMap); + } catch (Exception e) { + log.error("Failed to get local msg list, nested exception is:", e); + return Result.fail(GeneralCodes.InternalError, "failed to get local msg list"); + } + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/BotController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/BotController.java new file mode 100644 index 000000000..7aa4cd959 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/BotController.java @@ -0,0 +1,50 @@ +package run.mone.local.docean.controller; + +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.BotReq; +import run.mone.local.docean.fsm.bo.EndFlowRes; +import run.mone.local.docean.service.BotService; + +import javax.annotation.Resource; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 16:38 + */ +@Slf4j +@Controller +public class BotController { + + @Resource + private BotService botService; + + //调用botService,执行某个Bot(class) + @RequestMapping(path = "/bot/execute") + public EndFlowRes executeBot(BotReq botReq) { + try { + log.info("Executing bot with request: {}", botReq); + EndFlowRes result = botService.execute(botReq); + return result; + } catch (Exception e) { + log.error("Bot execution error", e); + throw new RuntimeException(e); + } + } + + //从debugMap中查找BotFsm,执行被debug打断的流程 + @RequestMapping(path = "/bot/continueDebug") + public boolean continueDebug(BotReq botReq) { + try { + String reqId = botReq.getId(); + log.info("Continuing debug process for reqId: {}", reqId); + return botService.continueDebugProcess(reqId); + } catch (Exception e) { + log.error("Error continuing debug process", e); + return false; + } + } + + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/ChromeController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/ChromeController.java new file mode 100644 index 000000000..3a110d717 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/ChromeController.java @@ -0,0 +1,153 @@ +package run.mone.local.docean.controller; + +import com.alibaba.fastjson.JSON; +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import com.xiaomi.youpin.docean.anno.RequestParam; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.service.tool.ChromeService; +import run.mone.local.docean.web.WebReq; + +import javax.annotation.Resource; +import java.util.List; +/** + * @author liuchuankang + * @date 2024/02/27 + */ +@Slf4j +@Controller +public class ChromeController { + @Resource + private ChromeService chromeService; + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/open", method = "get") + public Boolean open(@RequestParam("openUrl") String openUrl,@RequestParam("title") String title) { + try { + log.info("chrome:{}",openUrl); + return chromeService.open(openUrl); + } catch (Exception e) { + log.error("chrome error", e); + } + return false; + } + @RequestMapping(path = "/chrome/openWithCookie", method = "post") + public String openWithCookie(@RequestParam("params") WebReq webReq) { + try { + log.info("webReq:{}", JSON.toJSONString(webReq)); + return chromeService.openWithCookie(webReq.getOpenUrl(),webReq.getCookies()); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/list", method = "get") + public List list() { + try { + return chromeService.list(); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + @RequestMapping(path = "/chrome/imageList", method = "get") + public List getImageList(){ + try { + return chromeService.getImageList(); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + @RequestMapping(path = "/chrome/allText", method = "get") + public String getAllText(){ + try { + return chromeService.getAllText(); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + @RequestMapping(path = "/chrome/clickText", method = "get") + public String clickText(@RequestParam("text") String text){ + try { + return chromeService.clickText(text); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/currentUrl", method = "get") + public String getCurrentUrl() { + try { + return chromeService.getCurrentUrl(); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/content", method = "get") + public String getContent(@RequestParam("title") String title,@RequestParam("url") String url) { + try { + return chromeService.getContent(title,url); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/title", method = "get") + public String getTitile() { + try { + return chromeService.getTitle(); + } catch (Exception e) { + log.error("chrome error", e); + } + return null; + } + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/close", method = "get") + public Boolean close() { + try { + return chromeService.close(); + } catch (Exception e) { + log.error("chrome error", e); + } + return false; + } + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @RequestMapping(path = "/chrome/quit", method = "get") + public Boolean quit() { + try { + return chromeService.quit(); + } catch (Exception e) { + log.error("chrome error", e); + } + return false; + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/FileController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/FileController.java new file mode 100644 index 000000000..0315576a6 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/FileController.java @@ -0,0 +1,41 @@ +//package run.mone.local.docean.controller; +// +//import com.xiaomi.youpin.docean.anno.Controller; +//import com.xiaomi.youpin.docean.anno.RequestMapping; +//import lombok.extern.slf4j.Slf4j; +//import run.mone.local.docean.po.Lock; +// +///** +// * @author wmin +// * @date 2024/2/22 +// */ +//@Slf4j +//@Controller +//public class FileController { +// +// +// //接收文件的controller接口(class) +// @RequestMapping(path = "/api/upload", method = RequestMethod.POST) +// public ResponseEntity uploadFile(@RequestParam("file") MultipartFile file) { +// if (file.isEmpty()) { +// return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("File is empty"); +// } +// String fileName = file.getOriginalFilename(); +// // Assuming there is a method in LockMapper to save the file information +// try { +// // Here you would write the logic to save the file to the server +// // For example, saving the file to a local directory or a cloud storage service +// // After saving the file, you would save the file information using lockMapper +// // Assuming the method to save file information is saveFile(Lock lock) +// Lock lock = new Lock(); +// lock.setFileName(fileName); +// lock.setFileSize(file.getSize()); +// lockMapper.saveFile(lock); +// return ResponseEntity.ok("File uploaded successfully: " + fileName); +// } catch (Exception e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Could not upload the file: " + fileName); +// } +// } +// +//} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/KnowledgeController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/KnowledgeController.java new file mode 100644 index 000000000..9600fc867 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/KnowledgeController.java @@ -0,0 +1,63 @@ +package run.mone.local.docean.controller; + +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import com.xiaomi.youpin.docean.anno.RequestParam; +import com.xiaomi.youpin.infra.rpc.Result; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestBody; +import run.mone.ai.z.dto.ZKnowledgeBaseDTO; +import run.mone.ai.z.dto.ZKnowledgeBaseFileBlockDTO; +import run.mone.ai.z.dto.ZKnowledgeBaseFilesDTO; +import run.mone.local.docean.bo.FileRequest; +import run.mone.local.docean.service.ZService; +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Controller +public class KnowledgeController { + + @Resource + private ZService zService; + + @RequestMapping(path = "/knowledge/list", method = "get") + public Result> getKnowledgeList(@RequestParam("username") String username) { + return Result.success(zService.getKnowledgeList(username)); + } + + @RequestMapping(path = "/knowledge/file/list", method = "get") + public Result> getKnowledgeFileList(@RequestParam("username") String account, + @RequestParam("knowledgeId") Long knowledgeId) { + return Result.success(zService.listKnowledgeBaseFiles(knowledgeId, null, account)); + } + + @RequestMapping(path = "/knowledge/file/details", method = "get") + public Result> getKnowledgeFileDetails(@RequestParam("account") String account, + @RequestParam("knowledgeId") Long knowledgeId, + @RequestParam("fileId") Long fileId) { + return Result.success(zService.listKnowledgeBaseFileBlocks(knowledgeId, fileId, account)); + } + + @RequestMapping(path = "/knowledge/update/file", method = "post") + public Result updateKnowledgeFile(@RequestBody FileRequest request) { + return Result.success(zService.updateKnowledgeBaseFileBlock(request.getKnowledgeId(), request.getAccount(), request.getDto())); + } + + @RequestMapping(path = "/knowledge/delete/file", method = "get") + public Result updateKnowledgeFile(@RequestParam("account") String account, + @RequestParam("knowledgeId") Long knowledgeId, + @RequestParam("fileId") Long fileId) { + List list = Collections.singletonList(fileId); + return Result.success(zService.deleteFileInKnowledgeBase(knowledgeId, list, account)); + } + + @RequestMapping(path = "/knowledge/delete/block", method = "get") + public Result deleteBlock(@RequestParam("knowledgeId") Long knowledgeId, + @RequestParam("account") String account, + @RequestParam("fileId") Long fileId, + @RequestParam("blockId") String blockId){ + return Result.success(zService.deleteKnowledgeBaseFileBlock(knowledgeId, account, fileId, blockId)); + } +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/MessageController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/MessageController.java new file mode 100644 index 000000000..ce573c7a1 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/MessageController.java @@ -0,0 +1,79 @@ +package run.mone.local.docean.controller; + +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import run.mone.local.docean.enums.ImEnum; +import run.mone.local.docean.service.ImContext; +import run.mone.local.docean.service.api.ImStrategy; +import run.mone.local.docean.service.tool.MessageService; +import run.mone.local.docean.util.MessageUtil; + +import javax.annotation.Resource; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.io.StringReader; + +/** + * @author zhangping17 + */ +@Slf4j +@Controller +public class MessageController { + + @Resource + private MessageService messageService; + + @Resource + private ImContext imContext; + + @RequestMapping(path = "/webhook/event") + public String query(Object body) { + try { + log.info("body:{}", MessageUtil.getGson().toJson(body)); + messageService.reply(body); + } catch (Exception e) { + log.error("webhook error", e); + } + return "ok"; + } + + @RequestMapping(path = "/webhook/event1") + public Object query1(String body) { + try { + log.info("body:{}", MessageUtil.getGson().toJson(body)); + return imContext.replyMessage(body, "", getImType(body)); + } catch (Exception e) { + log.error("webhook error", e); + } + return "ok"; + } + + private ImEnum getImType(String body) { + if (isXml(body)) { + return ImEnum.WEIXIN; + } + return ImEnum.FEISHU; + } + + private boolean isXml(String body) { + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + InputSource is = new InputSource(new StringReader(body)); + Document doc = builder.parse(is); + return true; + } catch (Exception e) { + return false; + + } + + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/TestController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/TestController.java new file mode 100644 index 000000000..e74446f8f --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/TestController.java @@ -0,0 +1,132 @@ +package run.mone.local.docean.controller; + +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.bean.menu.WxMenu; +import me.chanjar.weixin.common.bean.menu.WxMenuButton; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import run.mone.local.docean.bo.PromptRequest; +import run.mone.local.docean.protobuf.AiMessage; +import run.mone.local.docean.protobuf.AiResult; +import run.mone.local.docean.rpc.DoceanRpcClient; +import run.mone.local.docean.rpc.TianyeCmd; +import run.mone.local.docean.service.tool.MessageService; +import run.mone.local.docean.service.ZService; + +import javax.annotation.Resource; +import java.util.HashMap; + +/** + * @author zhangping17 + */ +@Slf4j +@Controller +public class TestController { + + @Resource + private ZService zService; + + @Resource + private DoceanRpcClient client; + + @Resource + private MessageService messageService; + + @Resource + private WxMpService wxMpService; + + @Value("${wx.mp.config.appId}") + private String wxAppid; + + + @RequestMapping(path = "/testUserByToken", method = "get") + public String testUserByToken() { + try { + return zService.getUserByToken("XX"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return "error"; + } + } + + @RequestMapping(path = "/testGetKnowledgeIdByUserName", method = "get") + public Long testGetKnowledgeIdByUserName() { + try { + return zService.getKnowledgeIdByUserName("zhangzhiyong1", new HashMap<>()); + } catch (Exception e) { + log.error(e.getMessage(), e); + return 0L; + } + } + + @RequestMapping(path = "/testGetPromptIdByUserName", method = "get") + public Long testGetPromptIdByUserName() { + try { + return zService.getPromptIdByUserName("zhangping17"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return 0L; + } + } + + @RequestMapping(path = "/testGetPromptIdByUserNameAndLabel", method = "get") + public Long testGetPromptIdByUserNameAndLabel() { + try { + return zService.getPromptIdByUserNameAndLabel("zhangping17", null); + } catch (Exception e) { + log.error(e.getMessage(), e); + return 0L; + } + } + + @RequestMapping(path = "/health", method = "get") + public String health() { + return "ok"; + } + + + //发送message + @RequestMapping(path = "/message", method = "get") + public String message() { + AiResult res = client.req(TianyeCmd.messageReq, client.getServerAddr(), AiMessage.newBuilder().setCmd("message").build()); + return "ok:" + res; + } + + //调用prompt(class) + @RequestMapping(path = "/api/prompt", method = "post") + public String prompt(PromptRequest promptRequest) { + try { + AiResult aiResult = client.req(TianyeCmd.messageReq, client.getServerAddr(), AiMessage.newBuilder().setCmd("prompt").build()); + log.info("{}", aiResult); + } catch (Exception e) { + log.error("Error occurred while processing prompt request: {}", e.getMessage(), e); + } + return "ok"; + } + + @RequestMapping(path = "/wx/msg", method = "get") + public String wxMsgSend() { + messageService.sendWxMsg("XX", "hello world"); + return "success"; + } + + @RequestMapping(path = "/menu/create", method = "get") + public String createMenu() { + WxMenu wxMenu = new WxMenu(); + WxMenuButton button1 = new WxMenuButton(); + button1.setType(WxConsts.MenuButtonType.CLICK); + button1.setName("呼叫关羽"); + button1.setKey("guanyu"); + wxMenu.getButtons().add(button1); + try { + wxMpService.getMenuService().menuCreate(wxMenu); + } catch (WxErrorException e) { + log.error("createMenu e:",e); + } + return "ok"; + } +} diff --git a/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/WxPortalController.java b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/WxPortalController.java new file mode 100644 index 000000000..d6081c802 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/java/run/mone/local/docean/controller/WxPortalController.java @@ -0,0 +1,75 @@ +package run.mone.local.docean.controller; + +import com.xiaomi.youpin.docean.anno.Controller; +import com.xiaomi.youpin.docean.anno.RequestMapping; +import com.xiaomi.youpin.docean.anno.RequestParam; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.mp.api.WxMpMessageRouter; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; +import org.apache.commons.lang3.StringUtils; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * @author : caobaoyu + * @className : WxUserController + * @date: 2024/02/26 + * @description: 微信服务器消息解析接口 + */ +@Slf4j +@Controller +public class WxPortalController { + @Resource + private WxMpService wxService; + + @Resource + private WxMpMessageRouter messageRouter; + + // 这个是用来做Url配置的 + @RequestMapping(path = "/webhook/event1", method = "get") + public String authGet( + @RequestParam(value = "signature") String signature, + @RequestParam(value = "timestamp") String timestamp, + @RequestParam(value = "nonce") String nonce, + @RequestParam(value = "echostr") String echostr) { + + log.info("\n接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", signature, + timestamp, nonce, echostr); + if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) { + throw new IllegalArgumentException("请求参数非法,请核实!"); + } + if (wxService.checkSignature(timestamp, nonce, signature)) { + return echostr; + } + return "false"; + } + + + @RequestMapping(path = "/auth") + public String post(String string) { + System.out.println(string); + // 明文传输的消息 + WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(string); + WxMpXmlOutMessage outMessage = this.route(inMessage); + if (outMessage == null) { + return ""; + } + return outMessage.toXml(); + } + + private WxMpXmlOutMessage route(WxMpXmlMessage message) { + try { + return this.messageRouter.route(message); + } catch (Exception e) { + log.error("路由消息时出现异常!", e); + } + + return null; + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/config.properties b/m78-all/Tianye/Tianye-server/src/main/resources/config.properties new file mode 100644 index 000000000..074ebb1fb --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/config.properties @@ -0,0 +1,60 @@ +dubbo_app_name=Tianye +dubbo_reg_address=${dubbo_reg_address} +db_pwd=${db_pwd} +db_url=${db_url} +db_driver=${db_driver} +db_user_name=${db_user_name} +db_pool_size=${db_pool_size} +redis_hosts=${redis_hosts} +nacos_config_dataid=${nacos_config_dataid} +nacos_config_group=${nacos_config_group} +nacos_config_server_addr=${nacos_config_server_addr} +group=${group} +dubbo.group=${dubbo.group} +dubbo.version=${dubbo.version} +c=${c} +log.path=${log.path}} +mybatis_mapper_location=mapper/lock.xml + +userName=shanwenbang +alias=tom +role=student + +serverAddr=${serverAddr} +wx.mp.config.appId=${wx.mp.config.appId} +wx.mp.config.secret=${wx.mp.config.secret} +wx.mp.config.token=${wx.mp.config.token} +wx.mp.config.aesKey=${wx.mp.config.aesKey} +wx.templateId=${wx.templateId} +openStaticFile=true +staticFilePath= +wxOpenId= +response-original-path=/auth,/webhook/event1 + +chrome.driver.path= + +agent.msg.remote.record=false +im.server=${im.server} +mail.host=${mail.host} +mail.account=${mail.account} +mail.pwd=${mail.pwd} +m78.server.addr=${m78.server.addr} +public.token=${public.token} +#Clearing is equivalent to invoking chatgpt +model=moonshot + + + +fetch_m78_addr=${fetch_m78_addr} +gpt_query_addr=${gpt_query_addr} +ai.proxy=${ai.proxy} + +im_m78_group=${im_m78_group} + +feishu_domain=${feishu_domain} +feishu_id=${feishu_id} +feishu_secret=${feishu_secret} + +db_uname_cus=${db_uname_cus} +db_pwd_cus=${db_pwd_cus} +db_url_cus=${db_url_cus} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/config/dev.properties b/m78-all/Tianye/Tianye-server/src/main/resources/config/dev.properties new file mode 100644 index 000000000..9ac808e95 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/config/dev.properties @@ -0,0 +1,48 @@ +dubbo_app_name=Tianye +dubbo_reg_address=nacos://nacos:80 + +db_url=jdbc:sqlite:test.db +db_driver=org.sqlite.JDBC +db_pool_size=1 + +redis_hosts=redis:6379 +redis_type=dev + +nacos_config_dataid=tianye +nacos_config_group=DEFAULT_GROUP +nacos_config_server_addr=nacos:80 + +group=local +dubbo.group=staging +dubbo.version=1.0 +c=zzz +log.path=/tmp/log/Tianye + +wx.mp.config.appId= +wx.mp.config.secret= +wx.templateId= +wx.mp.config.token=mione + +im.server= + +mail.host=smtp.qq.com +mail.account=XX@qq.com +mail.pwd= + +m78.server.addr=http://XX:8076 + +fetch_m78_addr=https://XX/open-apis/ai-plugin-new/machine/ip +gpt_query_addr=https://XX/open-apis/ai-plugin-new/chatgpt/query +ai.proxy= + +public.token= +serverAddr= +im_m78_group=staging + +feishu_domain= +feishu_id= +feishu_secret= + +db_uname_cus= +db_pwd_cus= +db_url_cus=jdbc:mysql://XX:4100/m78_user?characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&useServerPrepStmts=false&rewriteBatchedStatements=true \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/config/open.properties b/m78-all/Tianye/Tianye-server/src/main/resources/config/open.properties new file mode 100644 index 000000000..211acce71 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/config/open.properties @@ -0,0 +1,52 @@ +dubbo_app_name=Tianye +dubbo_reg_address=nacos://nacos:80 + +db_url=jdbc:sqlite:test.db +db_driver=org.sqlite.JDBC +db_pool_size=1 + +redis_hosts=redis:6379 +redis_type=dev + +nacos_config_dataid=tianye +nacos_config_group=DEFAULT_GROUP +nacos_config_server_addr=nacos:80 + +group=local +dubbo.group=staging-open +dubbo.version=1.0 +c=zzz +log.path=/home/work/log/Tianye + +wx.mp.config.appId= +wx.mp.config.secret= +wx.templateId= +wx.mp.config.token=mione + +chrome.driver.path= + +im.server= + +mail.host=smtp.qq.com +mail.account=XX@qq.com +mail.pwd= + +m78.server.addr=http://m78:8076 + +public.token= + +fetch_m78_addr=http://m78:8076/open-apis/v1/ai-plugin-new/machine/ip +gpt_query_addr=http://m78:8076/open-apis/v1/ai-plugin-new/chatgpt/query +ai.proxy=http://main-z-proxy:8085 + +serverAddr=m78:7678 + +im_m78_group=staging-open + +feishu_domain=https://open.feishu.cn +feishu_id= +feishu_secret= + +db_uname_cus= +db_pwd_cus= +db_url_cus=jdbc:mysql://XX:3306/m78?characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&useServerPrepStmts=false&rewriteBatchedStatements=true \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/logback.xml b/m78-all/Tianye/Tianye-server/src/main/resources/logback.xml new file mode 100644 index 000000000..127429059 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/logback.xml @@ -0,0 +1,49 @@ + + + + + + + ${log.path}/Tianye/server.log + + %d|%-5level|%X{trace_id}|%thread|%logger{40}|%msg%n + + + ${log.path}/Tianye/server.log.%d{yyyy-MM-dd-HH} + + + + + + ${log.path}/Tianye/error.log + + %d|%-5level|%X{trace_id}|%thread|%logger{40}|%msg%n + + + ${log.path}/Tianye/error.log.%d{yyyy-MM-dd-HH} + + + ERROR + ACCEPT + DENY + + + + + + %d|%-5level|%X{trace_id}|%thread|%logger{40}|%msg%n + + + + + + + + + + + + + + + diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/common/common.js b/m78-all/Tianye/Tianye-server/src/main/resources/static/common/common.js new file mode 100644 index 000000000..f3bc265ca --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/common/common.js @@ -0,0 +1,8 @@ +document.write(''); +document.write(''); +document.write(''); +document.write(''); +document.write(''); + +document.write(''); +document.write(''); \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/css/elementPlus.css b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/elementPlus.css new file mode 100644 index 000000000..cf2a1d14a --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/elementPlus.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:'Helvetica Neue',Helvetica,'PingFang SC','Hiragino Sans GB','Microsoft YaHei','微软雅黑',Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:0.3s;--el-transition-duration-fast:0.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(0.645, 0.045, 0.355, 1);--el-transition-function-fast-bezier:cubic-bezier(0.23, 1, 0.32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px}:root{color-scheme:light;--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, 0.04),0px 8px 20px rgba(0, 0, 0, 0.08);--el-box-shadow-light:0px 0px 12px rgba(0, 0, 0, 0.12);--el-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, 0.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, 0.08),0px 12px 32px rgba(0, 0, 0, 0.12),0px 8px 16px -8px rgba(0, 0, 0, 0.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0, 0, 0, 0.8);--el-overlay-color-light:rgba(0, 0, 0, 0.7);--el-overlay-color-lighter:rgba(0, 0, 0, 0.5);--el-mask-color:rgba(255, 255, 255, 0.9);--el-mask-color-extra-light:rgba(255, 255, 255, 0.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center top}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center bottom}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1,1);transition:var(--el-transition-md-fade);transform-origin:top left}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45,.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}.el-icon{--color:inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:13px;--el-alert-description-font-size:12px;--el-alert-close-font-size:12px;--el-alert-close-customed-font-size:13px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);margin:0;box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);position:relative;background-color:var(--el-color-white);overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity var(--el-transition-duration-fast)}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn{color:var(--el-color-white)}.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:table-cell;padding:0 8px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:18px;vertical-align:text-top}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:5px 0 0 0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);top:9px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{overflow:auto;box-sizing:border-box;flex-shrink:0;width:var(--el-aside-width,300px)}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper .el-popper__arrow::before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent;border-bottom-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);list-style:none;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.highlighted{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid var(--el-color-black)}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:var(--el-text-color-secondary)}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;--el-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size)}.el-avatar>img{display:block;height:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);position:fixed;background-color:var(--el-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--el-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;justify-content:center;align-items:center;font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color)}.el-badge__content.is-fixed{position:absolute;top:0;right:calc(1px + var(--el-badge-size)/ 2);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--el-text-color-placeholder)}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;display:flex;align-items:center}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;transition:var(--el-transition-color);color:var(--el-text-color-primary)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:var(--el-text-color-regular);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255, 255, 255, 0.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-color-info);--el-button-active-color:var(--el-text-color-primary)}.el-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;color:var(--el-button-text-color);text-align:center;box-sizing:border-box;outline:0;transition:.1s;font-weight:var(--el-button-font-weight);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);padding:8px 15px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button:focus,.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:0}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px}.el-button>span{display:inline-flex;align-items:center}.el-button+.el-button{margin-left:12px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:var(--el-mask-color-extra-light)}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px}.el-button.is-text{color:var(--el-button-text-color);border:0 solid transparent;background-color:transparent}.el-button.is-text.is-disabled{color:var(--el-button-disabled-text-color);background-color:transparent!important}.el-button.is-text:not(.is-disabled):focus,.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:focus,.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{border-color:transparent;color:var(--el-button-text-color);background:0 0;padding:2px;height:auto}.el-button.is-link:focus,.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{color:var(--el-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.el-button.is-link:not(.is-disabled):focus,.el-button.is-link:not(.is-disabled):hover{border-color:transparent;background-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color);border-color:transparent;background-color:transparent}.el-button--text{border-color:transparent;background:0 0;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{color:var(--el-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.el-button--text:not(.is-disabled):focus,.el-button--text:not(.is-disabled):hover{color:var(--el-color-primary-light-3);border-color:transparent;background-color:transparent}.el-button--text:not(.is-disabled):active{color:var(--el-color-primary-dark-2);border-color:transparent;background-color:transparent}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size);padding:12px 19px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-calendar{--el-calendar-border:var(--el-table-border, 1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:var(--el-calendar-header-border-bottom)}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:var(--el-text-color-regular);font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:var(--el-calendar-cell-width)}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--el-color-white);opacity:.24;transition:var(--el-transition-duration-fast)}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31, 45, 61, 0.11);--el-carousel-arrow-hover-background:rgba(31, 45, 61, 0.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);border-radius:50%;background-color:var(--el-carousel-arrow-background);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:var(--el-carousel-arrow-font-size);display:inline-flex;justify-content:center;align-items:center}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical) * 2);text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width)/ 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:var(--el-transition-duration)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader-panel{display:flex;border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;color:var(--el-cascader-color-empty)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;text-align:left;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;position:relative;font-size:var(--el-font-size-base);line-height:32px;outline:0}.el-cascader:not(.is-disabled):hover .el-input__wrapper{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis;cursor:pointer}.el-cascader .el-input .el-input__inner::-moz-selection{outline:0}.el-cascader .el-input .el-input__inner::selection{outline:0}.el-cascader .el-input .el-input__suffix-inner .el-icon{height:calc(100% - 2px)}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotateZ(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader__dropdown{font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper .el-popper__arrow::before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent;border-bottom-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--el-cascader-tag-background)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:var(--el-text-color-placeholder);color:var(--el-color-white)}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-cascader__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:var(--el-cascader-color-empty)}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 11px;padding:0;color:var(--el-cascader-menu-text-color);border:none;outline:0;box-sizing:border-box;background:0 0}.el-cascader__search-input::-moz-placeholder{color:transparent}.el-cascader__search-input:-ms-input-placeholder{color:transparent}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all);font-weight:700}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary)}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-checkbox-button--large .el-checkbox-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary)}.el-checkbox{color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px;height:32px}.el-checkbox.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:0 11px 0 7px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--el-checkbox-border-radius)}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color)}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner::after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:var(--el-checkbox-checked-icon-color);height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner::after{box-sizing:content-box;content:"";border:1px solid var(--el-checkbox-checked-icon-color);border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in 50ms;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:8px;line-height:1;font-size:var(--el-checkbox-font-size)}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner::after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{display:none}.el-col-0.is-guttered{display:none}.el-col-0{max-width:0%;flex:0 0 0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{position:relative;left:4.1666666667%}.el-col-2{max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{position:relative;left:8.3333333333%}.el-col-3{max-width:12.5%;flex:0 0 12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{position:relative;left:16.6666666667%}.el-col-5{max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{position:relative;left:20.8333333333%}.el-col-6{max-width:25%;flex:0 0 25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{position:relative;left:29.1666666667%}.el-col-8{max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{position:relative;left:33.3333333333%}.el-col-9{max-width:37.5%;flex:0 0 37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{position:relative;left:41.6666666667%}.el-col-11{max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{position:relative;left:45.8333333333%}.el-col-12{max-width:50%;flex:0 0 50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{position:relative;left:54.1666666667%}.el-col-14{max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{position:relative;left:58.3333333333%}.el-col-15{max-width:62.5%;flex:0 0 62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{position:relative;left:66.6666666667%}.el-col-17{max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{position:relative;left:70.8333333333%}.el-col-18{max-width:75%;flex:0 0 75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{position:relative;left:79.1666666667%}.el-col-20{max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{position:relative;left:83.3333333333%}.el-col-21{max-width:87.5%;flex:0 0 87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{position:relative;left:91.6666666667%}.el-col-23{max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{position:relative;left:95.8333333333%}.el-col-24{max-width:100%;flex:0 0 100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:768px){.el-col-xs-0{display:none}.el-col-xs-0.is-guttered{display:none}.el-col-xs-0{max-width:0%;flex:0 0 0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{position:relative;left:4.1666666667%}.el-col-xs-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{position:relative;left:8.3333333333%}.el-col-xs-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{position:relative;left:16.6666666667%}.el-col-xs-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{position:relative;left:20.8333333333%}.el-col-xs-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{position:relative;left:29.1666666667%}.el-col-xs-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{position:relative;left:33.3333333333%}.el-col-xs-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{position:relative;left:41.6666666667%}.el-col-xs-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{position:relative;left:45.8333333333%}.el-col-xs-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{position:relative;left:54.1666666667%}.el-col-xs-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{position:relative;left:58.3333333333%}.el-col-xs-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{position:relative;left:66.6666666667%}.el-col-xs-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{position:relative;left:70.8333333333%}.el-col-xs-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{position:relative;left:79.1666666667%}.el-col-xs-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{position:relative;left:83.3333333333%}.el-col-xs-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{position:relative;left:91.6666666667%}.el-col-xs-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{position:relative;left:95.8333333333%}.el-col-xs-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none}.el-col-sm-0.is-guttered{display:none}.el-col-sm-0{max-width:0%;flex:0 0 0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{position:relative;left:4.1666666667%}.el-col-sm-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{position:relative;left:8.3333333333%}.el-col-sm-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{position:relative;left:16.6666666667%}.el-col-sm-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{position:relative;left:20.8333333333%}.el-col-sm-6{display:block;max-width:25%;flex:0 0 25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{position:relative;left:29.1666666667%}.el-col-sm-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{position:relative;left:33.3333333333%}.el-col-sm-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{position:relative;left:41.6666666667%}.el-col-sm-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{position:relative;left:45.8333333333%}.el-col-sm-12{display:block;max-width:50%;flex:0 0 50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{position:relative;left:54.1666666667%}.el-col-sm-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{position:relative;left:58.3333333333%}.el-col-sm-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{position:relative;left:66.6666666667%}.el-col-sm-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{position:relative;left:70.8333333333%}.el-col-sm-18{display:block;max-width:75%;flex:0 0 75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{position:relative;left:79.1666666667%}.el-col-sm-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{position:relative;left:83.3333333333%}.el-col-sm-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{position:relative;left:91.6666666667%}.el-col-sm-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{position:relative;left:95.8333333333%}.el-col-sm-24{display:block;max-width:100%;flex:0 0 100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none}.el-col-md-0.is-guttered{display:none}.el-col-md-0{max-width:0%;flex:0 0 0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{position:relative;left:4.1666666667%}.el-col-md-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{position:relative;left:8.3333333333%}.el-col-md-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{position:relative;left:16.6666666667%}.el-col-md-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{position:relative;left:20.8333333333%}.el-col-md-6{display:block;max-width:25%;flex:0 0 25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{position:relative;left:29.1666666667%}.el-col-md-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{position:relative;left:33.3333333333%}.el-col-md-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{position:relative;left:41.6666666667%}.el-col-md-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{position:relative;left:45.8333333333%}.el-col-md-12{display:block;max-width:50%;flex:0 0 50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{position:relative;left:54.1666666667%}.el-col-md-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{position:relative;left:58.3333333333%}.el-col-md-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{position:relative;left:66.6666666667%}.el-col-md-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{position:relative;left:70.8333333333%}.el-col-md-18{display:block;max-width:75%;flex:0 0 75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{position:relative;left:79.1666666667%}.el-col-md-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{position:relative;left:83.3333333333%}.el-col-md-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{position:relative;left:91.6666666667%}.el-col-md-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{position:relative;left:95.8333333333%}.el-col-md-24{display:block;max-width:100%;flex:0 0 100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none}.el-col-lg-0.is-guttered{display:none}.el-col-lg-0{max-width:0%;flex:0 0 0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{position:relative;left:4.1666666667%}.el-col-lg-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{position:relative;left:8.3333333333%}.el-col-lg-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{position:relative;left:16.6666666667%}.el-col-lg-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{position:relative;left:20.8333333333%}.el-col-lg-6{display:block;max-width:25%;flex:0 0 25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{position:relative;left:29.1666666667%}.el-col-lg-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{position:relative;left:33.3333333333%}.el-col-lg-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{position:relative;left:41.6666666667%}.el-col-lg-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{position:relative;left:45.8333333333%}.el-col-lg-12{display:block;max-width:50%;flex:0 0 50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{position:relative;left:54.1666666667%}.el-col-lg-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{position:relative;left:58.3333333333%}.el-col-lg-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{position:relative;left:66.6666666667%}.el-col-lg-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{position:relative;left:70.8333333333%}.el-col-lg-18{display:block;max-width:75%;flex:0 0 75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{position:relative;left:79.1666666667%}.el-col-lg-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{position:relative;left:83.3333333333%}.el-col-lg-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{position:relative;left:91.6666666667%}.el-col-lg-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{position:relative;left:95.8333333333%}.el-col-lg-24{display:block;max-width:100%;flex:0 0 100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none}.el-col-xl-0.is-guttered{display:none}.el-col-xl-0{max-width:0%;flex:0 0 0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{position:relative;left:4.1666666667%}.el-col-xl-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{position:relative;left:8.3333333333%}.el-col-xl-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{position:relative;left:16.6666666667%}.el-col-xl-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{position:relative;left:20.8333333333%}.el-col-xl-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{position:relative;left:29.1666666667%}.el-col-xl-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{position:relative;left:33.3333333333%}.el-col-xl-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{position:relative;left:41.6666666667%}.el-col-xl-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{position:relative;left:45.8333333333%}.el-col-xl-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{position:relative;left:54.1666666667%}.el-col-xl-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{position:relative;left:58.3333333333%}.el-col-xl-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{position:relative;left:66.6666666667%}.el-col-xl-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{position:relative;left:70.8333333333%}.el-col-xl-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{position:relative;left:79.1666666667%}.el-col-xl-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{position:relative;left:83.3333333333%}.el-col-xl-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{position:relative;left:91.6666666667%}.el-col-xl-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{position:relative;left:95.8333333333%}.el-col-xl-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);font-weight:500;transition:border-bottom-color var(--el-transition-duration);outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);overflow:hidden;box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item__content{padding-bottom:25px;font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);line-height:1.7692307692}.el-collapse-item:last-child{margin-bottom:-1px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px;float:right}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-size:12px 12px;background-position:0 0,6px 0,6px -6px,0 6px}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-picker{display:inline-block;position:relative;line-height:normal}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;height:32px;width:32px;padding:4px;border:1px solid var(--el-border-color);border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-size:12px 12px;background-position:0 0,6px 0,6px -6px,0 6px}.el-color-picker__color-inner{display:inline-flex;justify-content:center;align-items:center;width:100%;height:100%}.el-color-picker .el-color-picker__empty{font-size:12px;color:var(--el-text-color-secondary)}.el-color-picker .el-color-picker__icon{display:inline-flex;justify-content:center;align-items:center;color:#fff;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light)}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td .el-date-table-cell{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td .el-date-table-cell .el-date-table-cell__text{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{margin-left:5px;margin-right:5px;background-color:var(--el-datepicker-inrange-bg-color);border-radius:15px}.el-date-table td.selected .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:var(--el-datepicker-header-text-color)}.el-date-table td:focus{outline:0}.el-date-table th{padding:5px;color:var(--el-datepicker-header-text-color);font-weight:400;border-bottom:solid 1px var(--el-border-color-lighter)}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:var(--el-datepicker-text-color);margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range div{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range div:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:0}.el-month-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color)}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-year-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-year-table td .cell{width:48px;height:36px;display:block;line-height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto}.el-year-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:0}.el-year-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color)}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:192px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{font-size:12px;color:var(--el-text-color-secondary);position:absolute;left:0;width:100%;z-index:var(--el-index-normal);text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:var(--el-text-color-regular)}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow::before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent;border-bottom-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;display:inline-block;text-align:left}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{width:var(--el-date-editor-width);height:var(--el-input-height,var(--el-component-size))}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{height:inherit;font-size:14px;color:var(--el-text-color-placeholder);float:left}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:30px;line-height:30px;margin:0;padding:0;width:39%;text-align:center;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:transparent}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{flex:1;display:inline-flex;justify-content:center;align-items:center;height:100%;padding:0 5px;margin:0;font-size:14px;word-break:keep-all;color:var(--el-text-color-primary)}.el-date-editor .el-range__close-icon{font-size:14px;color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{display:inline-flex;align-items:center;padding:0 10px}.el-range-editor.is-active{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{line-height:40px;font-size:14px}.el-range-editor--large .el-range-input{height:38px;line-height:38px;font-size:14px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{line-height:24px;font-size:12px}.el-range-editor--small .el-range-input{height:22px;line-height:22px;font-size:12px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);line-height:30px}.el-picker-panel .el-time-panel{margin:5px 0;border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);padding:4px 12px;text-align:right;background-color:var(--el-bg-color-overlay);position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:var(--el-datepicker-text-color);padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:var(--el-datepicker-icon-color);border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;padding-top:6px;background-color:var(--el-bg-color-overlay);overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px var(--el-border-color-lighter)}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:var(--el-text-color-regular)}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{outline:0;color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:var(--el-datepicker-icon-color)}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid var(--el-datepicker-border-color)}.el-time-panel{border-radius:2px;position:relative;width:180px;left:0;z-index:var(--el-index-top);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-16px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%;border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light)}.el-time-panel__content.has-seconds::after{left:66.6666666667%}.el-time-panel__content.has-seconds::before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:var(--el-text-color-primary)}.el-time-panel__btn.confirm{font-weight:800;color:var(--el-timepicker-active-color,var(--el-color-primary))}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:23px;font-size:14px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{font-weight:700;color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background)}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{-webkit-animation:v-modal-in var(--el-transition-duration-fast) ease;animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{-webkit-animation:v-modal-out var(--el-transition-duration-fast) ease forwards;animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color)}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:20px;--el-dialog-border-radius:var(--el-border-radius-small);position:relative;margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:0!important}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-dialog__header{padding:var(--el-dialog-padding-primary);padding-bottom:10px;margin-right:16px;word-break:break-all}.el-dialog__headerbtn{position:absolute;top:6px;right:0;padding:0;width:54px;height:54px;background:0 0;border:none;outline:0;cursor:pointer;font-size:var(--el-message-close-size,16px)}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{padding:calc(var(--el-dialog-padding-primary) + 10px) var(--el-dialog-padding-primary);color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size);word-break:break-all}.el-dialog__footer{padding:var(--el-dialog-padding-primary);padding-top:10px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px calc(var(--el-dialog-padding-primary) + 5px) 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{-webkit-animation:modal-fade-in var(--el-transition-duration);animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{-webkit-animation:dialog-fade-in var(--el-transition-duration);animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{-webkit-animation:modal-fade-out var(--el-transition-duration);animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{-webkit-animation:dialog-fade-out var(--el-transition-duration);animation:dialog-fade-out var(--el-transition-duration)}@-webkit-keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}@-webkit-keyframes modal-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes modal-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes modal-fade-out{0%{opacity:1}100%{opacity:0}}@keyframes modal-fade-out{0%{opacity:1}100%{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--el-border-color) var(--el-border-style)}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--el-border-color) var(--el-border-style)}.el-divider__text{position:absolute;background-color:var(--el-bg-color);padding:0 20px;font-weight:500;color:var(--el-text-color-primary);font-size:14px}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color, var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary, 20px)}.el-drawer{position:absolute;box-sizing:border-box;background-color:var(--el-drawer-bg-color);display:flex;flex-direction:column;box-shadow:var(--el-box-shadow-dark);overflow:hidden;transition:all var(--el-transition-duration)}.el-drawer .rtl{transform:translate(0,0)}.el-drawer .ltr{transform:translate(0,0)}.el-drawer .ttb{transform:translate(0,0)}.el-drawer .btt{transform:translate(0,0)}.el-drawer__sr-focus:focus{outline:0!important}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{border:none;cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:transparent;outline:0}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__close-btn .el-icon{font-size:inherit;vertical-align:text-bottom}.el-drawer__body{flex:1;padding:var(--el-drawer-padding-primary);overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{opacity:0}.el-drawer-fade-enter-to,.el-drawer-fade-leave-from{opacity:1}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translateX(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translateX(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;display:inline-flex;position:relative;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper .el-popper__arrow::before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent;border-bottom-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:0}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{list-style:none;padding:0;margin:0;box-sizing:border-box}.el-dropdown .el-dropdown__caret-button{padding-left:0;padding-right:0;display:inline-flex;justify-content:center;align-items:center;width:32px;border-left:none}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button::before{content:"";position:absolute;display:block;width:1px;top:-1px;bottom:-1px;left:0;background:var(--el-overlay-color-lighter)}.el-dropdown .el-dropdown__caret-button.el-button::before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:0}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{position:relative;top:0;left:0;z-index:var(--el-dropdown-menu-index);padding:5px 0;margin:0;background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;list-style:none}.el-dropdown-menu__item{display:flex;align-items:center;white-space:nowrap;list-style:none;line-height:22px;padding:5px 16px;margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:0}.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{margin:6px 0;border-top:1px solid var(--el-border-color-lighter)}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;line-height:22px;font-size:14px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;line-height:20px;font-size:12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding)}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-secondary)}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height)}.el-form{--el-form-label-font-size:var(--el-font-size-base)}.el-form--label-left .el-form-item__label{justify-content:flex-start}.el-form--label-top .el-form-item{display:block}.el-form--label-top .el-form-item .el-form-item__label{display:block;height:auto;text-align:left;margin-bottom:8px;line-height:22px}.el-form--inline .el-form-item{display:inline-flex;vertical-align:middle;margin-right:32px}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form--large.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:12px;line-height:22px}.el-form--default.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:8px;line-height:22px}.el-form--small.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:4px;line-height:20px}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item__label-wrap{display:flex}.el-form-item__label{display:inline-flex;justify-content:flex-end;align-items:flex-start;flex:0 0 auto;font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);height:32px;line-height:32px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{display:flex;flex-wrap:wrap;align-items:center;flex:1;line-height:32px;position:relative;font-size:var(--font-size);min-width:0}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;line-height:1;padding-top:2px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-error .el-select-v2__wrapper,.el-form-item.is-error .el-select-v2__wrapper:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:0 0 0 1px transparent inset}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-header-height)}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__btn .el-icon{font-size:inherit;cursor:pointer}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__actions{left:50%;bottom:30px;transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__prev{top:50%;transform:translateY(-50%);left:40px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__next{top:50%;transform:translateY(-50%);right:40px;text-indent:2px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__close{width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in var(--el-transition-duration);animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out var(--el-transition-duration);animation:viewer-fade-out var(--el-transition-duration)}@-webkit-keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top;opacity:1}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{position:absolute;top:0;left:0}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{display:flex;justify-content:center;align-items:center;font-size:14px;background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle}.el-image__preview{cursor:pointer}.el-input-number{position:relative;display:inline-block;width:150px;line-height:30px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.el-input-number__decrease,.el-input-number__increase{display:flex;justify-content:center;align-items:center;height:auto;position:absolute;z-index:1;top:1px;bottom:1px;width:32px;background:var(--el-fill-color-light);color:var(--el-text-color-regular);cursor:pointer;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input_wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input_wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border)}.el-input-number__decrease{left:1px;border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border)}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{width:40px;font-size:14px}.el-input-number--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:24px;font-size:12px}.el-input-number--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{bottom:auto;left:auto;border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border)}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;top:auto;left:auto;border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--el-font-size-base)}.el-textarea__inner{position:relative;display:block;resize:vertical;padding:5px 11px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;font-family:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);border:none}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:-ms-input-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{border-color:var(--el-color-danger)}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-input{--el-input-height:var(--el-component-size);position:relative;font-size:var(--el-font-size-base);display:inline-flex;width:100%;line-height:var(--el-input-height);box-sizing:border-box}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--el-text-color-disabled)}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);font-size:14px;cursor:pointer}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:var(--el-color-info);font-size:12px}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;display:inline-block;padding-left:8px}.el-input__wrapper{display:inline-flex;flex-grow:1;align-items:center;justify-content:center;padding:1px 11px;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px);width:100%;flex-grow:1;-webkit-appearance:none;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);padding:0;outline:0;border:none;background:0 0;box-sizing:border-box}.el-input__inner:focus{outline:0}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner:-ms-input-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__prefix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__prefix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__suffix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--el-transition-duration);margin-left:8px}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color,) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{display:inline-flex;width:100%;align-items:stretch}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:100%;border-radius:var(--el-input-border-radius);padding:0 20px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-input__wrapper,.el-input-group__append div.el-select:hover .el-input__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-input__wrapper,.el-input-group__prepend div.el-select:hover .el-input__wrapper{border-color:transparent;background-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper{box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__wrapper{z-index:1;box-shadow:1px 0 0 0 var(--el-input-hover-border-color) inset,1px 0 0 0 var(--el-input-hover-border-color),0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__wrapper{z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__wrapper{z-index:1;box-shadow:-1px 0 0 0 var(--el-input-hover-border-color),-1px 0 0 0 var(--el-input-hover-border-color) inset,0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder)}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color)}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid var(--el-link-hover-text-color)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default:after{border-color:var(--el-link-hover-text-color)}.el-link__inner{display:inline-flex;justify-content:center;align-items:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--primary:after{border-color:var(--el-link-text-color)}.el-link.el-link--primary.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--success:after{border-color:var(--el-link-text-color)}.el-link.el-link--success.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--warning:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--danger:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--error:after{border-color:var(--el-link-text-color)}.el-link.el-link--error.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.el-link--info:after{border-color:var(--el-link-text-color)}.el-link.el-link--info.is-underline:hover:after{border-color:var(--el-link-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:var(--el-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--el-transition-duration)}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/ 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{top:50%;margin-top:calc((0px - var(--el-loading-spinner-size))/ 2);width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@-webkit-keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px;--el-menu-icon-transform-closed:none;--el-menu-icon-transform-open:rotateZ(180deg)}.el-menu{border-right:solid 1px var(--el-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--el-menu-bg-color);box-sizing:border-box}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:solid 1px var(--el-menu-border-color);border-right:none}.el-menu--horizontal>.el-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:0}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-bg-color-overlay)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);display:flex;align-items:center;height:var(--el-menu-horizontal-sub-item-height);padding:0 10px;color:var(--el-menu-text-color)}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:var(--el-menu-hover-text-color);background-color:var(--el-menu-hover-bg-color)}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;vertical-align:middle;width:var(--el-menu-icon-width);text-align:center}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu{position:relative}.el-menu--collapse .el-sub-menu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu--collapse .el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:var(--el-menu-icon-transform-closed)}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu .el-icon{flex-shrink:0}.el-menu-item{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:0}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{margin-right:5px;width:var(--el-menu-icon-width);text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 var(--el-menu-base-level-padding)}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:0}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height);min-width:200px}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:var(--el-menu-icon-transform-open)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;margin-right:5px;width:var(--el-menu-icon-width);text-align:center;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{position:absolute;top:50%;right:var(--el-menu-base-level-padding);margin-top:-7px;transform:var(--el-menu-icon-transform-closed);transition:transform var(--el-transition-duration);font-size:12px;margin-right:0;width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);line-height:normal;font-size:12px;color:var(--el-text-color-secondary)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:15px}.el-message-box{display:inline-block;max-width:var(--el-messagebox-width);width:100%;padding-bottom:10px;vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);border:1px solid var(--el-border-color-lighter);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-box-shadow-light);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box:focus{outline:0!important}.el-overlay.is-message-box .el-overlay-message-box{text-align:center;position:fixed;top:0;right:0;bottom:0;left:0;padding:16px;overflow:auto}.el-overlay.is-message-box .el-overlay-message-box::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-message-box__header{position:relative;padding:var(--el-messagebox-padding-primary);padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:var(--el-messagebox-font-size);line-height:1;color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{position:absolute;top:var(--el-messagebox-padding-primary);right:var(--el-messagebox-padding-primary);padding:0;border:none;outline:0;background:0 0;font-size:var(--el-message-close-size,16px);cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{padding:10px var(--el-messagebox-padding-primary);color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input div.invalid>input{border-color:var(--el-color-error)}.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status.el-icon{position:absolute}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px;word-break:break-word}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns{justify-content:center}.el-message-box--center .el-message-box__content{padding-left:calc(var(--el-messagebox-padding-primary) + 12px);padding-right:calc(var(--el-messagebox-padding-primary) + 12px);text-align:center}.fade-in-linear-enter-active .el-overlay-message-box{-webkit-animation:msgbox-fade-in var(--el-transition-duration);animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@-webkit-keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:15px 19px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary)}.el-message{max-width:calc(100% - 32px);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width);border-style:var(--el-border-style);border-color:var(--el-message-border-color);position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:var(--el-message-bg-color);transition:opacity var(--el-transition-duration),transform .4s,top .4s;padding:var(--el-message-padding);display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:31px}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message__icon{margin-right:10px}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{position:absolute;top:50%;right:19px;transform:translateY(-50%);cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size, 16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular)}.el-notification{display:flex;width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);position:fixed;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);overflow-wrap:anywhere;overflow:hidden;z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right)}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0;color:var(--el-notification-content-color);text-align:justify}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size)}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translateX(100%)}.el-notification-fade-enter-from.left{left:0;transform:translateX(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--el-overlay-color-lighter);overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:var(--el-border-color)}.el-page-header__icon{font-size:18px;margin-right:6px;display:flex;align-items:center}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:var(--el-text-color-primary)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:3px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-height-extra-small:24px;--el-pagination-line-height-extra-small:var(--el-pagination-height-extra-small);white-space:nowrap;padding:2px 5px;color:var(--el-pagination-text-color);font-weight:400;display:flex;align-items:center}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-select .el-input{width:128px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button:disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:var(--el-pagination-bg-color);cursor:pointer;margin:0;color:var(--el-pagination-button-color)}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);color:var(--el-pagination-hover-color)}.el-pagination .el-pager li.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:var(--el-font-size-extra-small);line-height:var(--el-pagination-line-height-extra-small);height:var(--el-pagination-height-extra-small);min-width:24px}.el-pagination--small .arrow.is-disabled{visibility:hidden}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:var(--el-pagination-height-extra-small);line-height:var(--el-pagination-line-height-extra-small);font-size:var(--el-font-size-extra-small)}.el-pagination--small .el-pagination__editor{height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:var(--el-pagination-height-extra-small)}.el-pagination--small .el-input--small,.el-pagination--small .el-input__inner{height:var(--el-pagination-height-extra-small)!important;line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-input__suffix{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-input__suffix .el-input__suffix-inner{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-input__suffix .el-input__suffix-inner i.el-select__caret{line-height:var(--el-pagination-line-height-extra-small)}.el-pagination--small .el-select .el-input{width:100px}.el-pagination__sizes{margin:0 16px 0 0;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__sizes+button.btn-prev[type=button]{margin-left:0}.el-pagination__sizes+.el-pager .number:first-child{margin-left:0}.el-pagination__sizes+.el-pager .number:last-child{margin-right:0}.el-pagination__total{margin-right:16px;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__total+button.btn-prev[type=button]{margin-left:0}.el-pagination__total+.el-pager .number:first-child{margin-left:0}.el-pagination__total+.el-pager .number:last-child{margin-right:0}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{margin-left:16px;font-weight:400;color:var(--el-text-color-regular)}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__rightwrapper{flex:1;display:flex;align-items:center;justify-content:flex-end}.el-pagination__editor{line-height:18px;margin:0 8px;height:var(--el-pagination-button-height);min-width:56px;text-align:center;box-sizing:border-box;border-radius:var(--el-pagination-border-radius)}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:var(--el-pagination-button-height)}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 4px;background-color:var(--el-pagination-button-bg-color);color:var(--el-text-color-regular);min-width:32px;border-radius:2px}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .el-pager li.is-disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active{color:var(--el-text-color-secondary);background-color:var(--el-fill-color-dark)}.el-pagination.is-background .btn-next.is-first,.el-pagination.is-background .btn-prev.is-first,.el-pagination.is-background .el-pager li.is-first{margin-left:0}.el-pagination.is-background .btn-next.is-last,.el-pagination.is-background .btn-prev.is-last,.el-pagination.is-background .el-pager li.is-last{margin-right:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev:disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next:hover:not([disabled]),.el-pagination.is-background .btn-prev:hover:not([disabled]){color:var(--el-pagination-hover-color)}.el-pagination.is-background .el-pager li:not(.is-disabled):hover{color:var(--el-pagination-hover-color)}.el-pagination.is-background .el-pager li:not(.is-disabled).is-active{background-color:var(--el-color-primary);color:var(--el-color-white);font-weight:700}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{min-width:24px}.el-pagination.is-background .el-pagination__sizes.is-last{margin-left:16px}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0;padding:0;margin:0;display:flex;align-items:center}.el-pager li{padding:0 4px;background:var(--el-pagination-bg-color);display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);box-sizing:border-box;cursor:pointer;text-align:center;margin:0 1px}.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pager li.btn-quicknext:hover{cursor:pointer}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:32px;color:var(--el-pagination-button-color)}.el-pager li.btn-quicknext.is-disabled,.el-pager li.btn-quickprev.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-pager li.btn-quicknext svg,.el-pager li.btn-quickprev svg{pointer-events:none}.el-pager li.btn-quicknext:focus-visible,.el-pager li.btn-quickprev:focus-visible{outline:1px solid var(--el-pagination-hover-color);color:var(--el-pagination-hover-color)}.el-pager li.is-active+li{border-left:0}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color)}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default}.el-pager li.is-active.is-disabled{font-weight:700;color:var(--el-text-color-secondary)}.el-pager+button.btn-next[type=button]{margin-right:0}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);min-width:150px;border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);word-break:break-all}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{position:relative;line-height:1;display:flex;align-items:center}.el-progress__text{font-size:14px;color:var(--el-text-color-regular);margin-left:5px;min-width:50px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{flex-grow:1;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:var(--el-border-color-lighter);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:var(--el-color-primary);text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{transform:translateZ(0);-webkit-animation:indeterminate 3s infinite;animation:indeterminate 3s infinite}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@-webkit-keyframes indeterminate{0%{left:-100%}100%{left:100%}}@keyframes indeterminate{0%{left:-100%}100%{left:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button__original-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__original-radio:checked+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--el-border-radius-base);box-shadow:none}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary)}.el-radio{color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;outline:0;font-size:var(--el-font-size-base);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:32px;height:32px}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{padding:0 11px 0 7px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner::after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);position:relative;cursor:pointer;display:inline-block;box-sizing:border-box}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner::after{width:4px;height:4px;border-radius:var(--el-radio-input-border-radius);background-color:var(--el-color-white);content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio__original:focus-visible+.el-radio__inner{outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--el-radio-input-border-radius)}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary)}.el-rate{display:inline-flex;align-items:center;height:32px}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{cursor:pointer;display:inline-block;position:relative;font-size:0;vertical-align:middle;color:var(--el-rate-void-color);line-height:normal}.el-rate .el-rate__icon{position:relative;display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden;color:var(--el-rate-fill-color)}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate.is-disabled .el-rate__item{cursor:auto;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-result-padding)}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{margin:0;font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:0.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:0.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary)}.el-scrollbar{overflow:hidden;position:relative;height:100%}.el-scrollbar__wrap{overflow:auto;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3)}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity 340ms ease-out}.el-scrollbar-fade-leave-active{transition:opacity 120ms ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__option-item.is-selected:not(.is-multiple).is-disabled{color:var(--el-text-color-disabled)}.el-select-dropdown__option-item.is-selected:not(.is-multiple).is-disabled::after{background-color:var(--el-text-color-disabled)}.el-select-dropdown__option-item:hover:not(.hover){background-color:transparent}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-disabled.is-selected{color:var(--el-text-color-disabled)}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;margin:6px 0!important;padding:0!important;box-sizing:border-box}.el-select-dropdown__option-item{font-size:var(--el-select-font-size);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__option-item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__option-item.is-disabled:hover{background-color:var(--el-bg-color)}.el-select-dropdown__option-item.is-selected{background-color:var(--el-fill-color-light);font-weight:700}.el-select-dropdown__option-item.is-selected:not(.is-multiple){color:var(--el-color-primary)}.el-select-dropdown__option-item.hover{background-color:var(--el-fill-color-light)!important}.el-select-dropdown__option-item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon{position:absolute;right:20px;top:0;height:inherit;font-size:12px}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon svg{height:inherit;vertical-align:middle}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--el-border-color-light)}.el-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--el-border-color-light)}.el-select-group__title{padding-left:20px;font-size:12px;color:var(--el-color-info);line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-v2{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select-v2{display:inline-block;position:relative;vertical-align:middle;font-size:14px}.el-select-v2__wrapper{display:flex;align-items:center;flex-wrap:wrap;box-sizing:border-box;cursor:pointer;padding:1px 30px 1px 0;border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);transition:border-color var(--el-transition-duration-fast) var(--el-ease-in-out-bezier-function)}.el-select-v2__wrapper:hover{border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-filterable{cursor:text}.el-select-v2__wrapper.is-focused{border-color:var(--el-color-primary)}.el-select-v2__wrapper.is-hovering:not(.is-focused){border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled:hover{border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled.is-focus{border-color:var(--el-input-focus-border-color)}.el-select-v2__wrapper.is-disabled .is-transparent{opacity:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-select-v2__wrapper.is-disabled .el-select-v2__caret{cursor:not-allowed}.el-select-v2__wrapper.is-disabled .el-select-v2__combobox-input{cursor:not-allowed}.el-select-v2__wrapper .el-select-v2__input-wrapper{box-sizing:border-box;position:relative;-webkit-margin-start:12px;margin-inline-start:12px;max-width:100%;overflow:hidden}.el-select-v2__wrapper,.el-select-v2__wrapper .el-select-v2__input-wrapper{line-height:32px}.el-select-v2__wrapper .el-select-v2__input-wrapper input{line-height:24px;height:24px;min-width:4px;width:100%;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:none;margin:2px 0;outline:0;padding:0}.el-select-v2 .el-select-v2__tags-text{text-overflow:ellipsis;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.el-select-v2__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:14px}.el-select-v2__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select-v2__popper.el-popper .el-popper__arrow::before{border:1px solid var(--el-border-color-light)}.el-select-v2__popper.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent;border-left-color:transparent}.el-select-v2__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent;border-right-color:transparent}.el-select-v2__popper.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent;border-bottom-color:transparent}.el-select-v2__popper.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent;border-top-color:transparent}.el-select-v2--large .el-select-v2__wrapper .el-select-v2__combobox-input{height:32px}.el-select-v2--large .el-select-v2__caret{height:40px}.el-select-v2--large .el-select-v2__suffix{height:40px}.el-select-v2--large .el-select-v2__placeholder{font-size:14px;line-height:40px}.el-select-v2--small .el-select-v2__wrapper .el-select-v2__combobox-input{height:16px}.el-select-v2--small .el-select-v2__caret{height:24px}.el-select-v2--small .el-select-v2__suffix{height:24px}.el-select-v2--small .el-select-v2__placeholder{font-size:12px;line-height:24px}.el-select-v2 .el-select-v2__selection>span{display:inline-block}.el-select-v2:hover .el-select-v2__combobox-input{border-color:var(--el-select-border-color-hover)}.el-select-v2 .el-select__selection-text{text-overflow:ellipsis;display:inline-block;overflow-x:hidden;vertical-align:bottom}.el-select-v2 .el-select-v2__combobox-input{padding-right:35px;display:block}.el-select-v2 .el-select-v2__combobox-input:focus{border-color:var(--el-select-input-focus-border-color)}.el-select-v2__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px}.el-select-v2__input.is-small{height:14px}.el-select-v2__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select-v2__close:hover{color:var(--el-select-close-hover-color)}.el-select-v2__suffix{display:inline-flex;position:absolute;right:12px;height:32px;top:50%;transform:translateY(-50%);color:var(--el-input-icon-color,var(--el-text-color-placeholder))}.el-select-v2__suffix .el-input__icon{height:inherit}.el-select-v2__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotateZ(180deg);cursor:pointer}.el-select-v2__caret.is-reverse{transform:rotateZ(0)}.el-select-v2__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotateZ(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select-v2__caret.is-show-close:hover{color:var(--el-select-close-hover-color)}.el-select-v2__caret.el-icon{height:inherit}.el-select-v2__caret.el-icon svg{vertical-align:middle}.el-select-v2__selection{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select-v2__wrapper{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);position:relative;transition:all var(--el-transition-duration) var(--el-ease-in-out-bezier-function)}.el-select-v2__input-calculator{left:0;position:absolute;top:0;visibility:hidden;white-space:pre;z-index:999}.el-select-v2__selected-item{line-height:inherit;height:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex}.el-select-v2__placeholder{position:absolute;top:50%;transform:translateY(-50%);-webkit-margin-start:12px;margin-inline-start:12px;width:calc(100% - 52px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--el-input-text-color,var(--el-text-color-regular))}.el-select-v2__placeholder.is-transparent{color:var(--el-text-color-placeholder)}.el-select-v2 .el-select-v2__selection .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:var(--el-fill-color)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;color:var(--el-color-white)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close::before{display:block;transform:translate(0,.5px)}.el-select-v2.el-select-v2--small .el-select-v2__selection .el-tag{margin:1px 0 1px 6px;height:18px}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.is-disabled::after{background-color:var(--el-text-color-disabled)}.el-select-dropdown .el-select-dropdown__option-item.is-selected::after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--el-color-primary);-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown .el-select-dropdown__item.is-disabled:hover{background-color:unset}.el-select-dropdown .el-select-dropdown__item.is-disabled.selected{color:var(--el-text-color-disabled)}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select{display:inline-block;position:relative;line-height:32px}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper .el-popper__arrow::before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent;border-bottom-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent;border-top-color:transparent}.el-select .el-select-tags-wrapper.has-prefix{margin-left:6px}.el-select--large{line-height:40px}.el-select--large .el-select-tags-wrapper.has-prefix{margin-left:8px}.el-select--small{line-height:24px}.el-select--small .el-select-tags-wrapper.has-prefix{margin-left:4px}.el-select .el-select__tags>span{display:inline-block}.el-select:hover:not(.el-select--disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-select-border-color-hover) inset}.el-select .el-select__tags-text{text-overflow:ellipsis;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.el-select .el-input__wrapper{cursor:pointer}.el-select .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select .el-input__inner{cursor:pointer}.el-select .el-input{display:flex}.el-select .el-input .el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotateZ(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select .el-input .el-select__caret.is-show-close:hover{color:var(--el-select-close-hover-color)}.el-select .el-input .el-select__caret.el-icon{position:relative;height:inherit;z-index:2}.el-select .el-input.is-disabled .el-input__wrapper{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-select__caret{cursor:not-allowed}.el-select .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select__close:hover{color:var(--el-select-close-hover-color)}.el-select__tags{position:absolute;line-height:normal;top:50%;transform:translateY(-50%);white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-select .el-select__tags .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 6px 2px 0}.el-select .el-select__tags .el-tag:last-child{margin-right:0}.el-select .el-select__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;top:0;color:#fff}.el-select .el-select__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select .el-select__tags .el-tag .el-icon-close::before{display:block;transform:translate(0,.5px)}.el-select .el-select__tags .el-tag--info{background-color:var(--el-fill-color)}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);display:inline-block;height:16px;border-radius:var(--el-border-radius-base);width:100%}.el-skeleton__circle{border-radius:50%;width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size)}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton__paragraph{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px}.el-slider{width:100%;height:32px;display:flex;align-items:center}.el-slider__runway{flex:1;height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);position:relative;cursor:pointer}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);position:absolute;z-index:1;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal;outline:0}.el-slider__button-wrapper::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{display:inline-block;width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);border-radius:50%;box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translateX(-50%);font-size:14px;color:var(--el-color-info);margin-top:15px}.el-slider.is-vertical{position:relative;display:inline-flex;width:auto;height:100%;flex:0}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{transform:rotate(360deg)}}@keyframes rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:var(--el-bg-color);transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:var(--el-text-color-placeholder)}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:var(--el-text-color-primary)}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head{text-align:center}.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:var(--el-text-color-placeholder)}.el-step.is-simple .el-step__arrow::before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:var(--el-fill-color-light)}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color)}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:32px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:var(--el-text-color-primary)}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));outline:0;border-radius:10px;box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration);vertical-align:middle}.el-switch__core .el-switch__inner{position:absolute;top:1px;left:1px;transition:all var(--el-transition-duration);width:16px;height:16px;display:flex;justify-content:center;align-items:center;left:50%;white-space:nowrap}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);transition:opacity var(--el-transition-duration);position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__core .el-switch__action{position:absolute;top:1px;left:1px;border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);width:16px;height:16px;background-color:var(--el-color-white);display:flex;justify-content:center;align-items:center;color:var(--el-switch-off-color)}.el-switch__core .el-switch__action .is-icon,.el-switch__core .el-switch__action .is-text{transition:opacity var(--el-transition-duration);position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__core .is-text{font-size:12px}.el-switch__core .is-show{opacity:1}.el-switch__core .is-hide{opacity:0}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-border-color,var(--el-switch-on-color));background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{left:100%;margin-left:calc(-1px - 16px);color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__inner{left:50%;white-space:nowrap;margin-left:calc(-1px - 16px)}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;line-height:24px;height:40px}.el-switch--large .el-switch__label{height:24px;font-size:14px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{width:50px;height:24px;border-radius:12px}.el-switch--large .el-switch__core .el-switch__inner{width:20px;height:20px}.el-switch--large .el-switch__core .el-switch__action{width:20px;height:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{margin-left:calc(-1px - 20px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{margin-left:calc(-1px - 20px)}.el-switch--small{font-size:12px;line-height:16px;height:24px}.el-switch--small .el-switch__label{height:16px;font-size:12px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{width:30px;height:16px;border-radius:8px}.el-switch--small .el-switch__core .el-switch__inner{width:12px;height:12px}.el-switch--small .el-switch__core .el-switch__action{width:12px;height:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{margin-left:calc(-1px - 12px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{margin-left:calc(-1px - 12px)}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);border-radius:2px;background-color:#fff;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:var(--el-font-size-base)}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:flex;align-items:center;margin-right:5px;margin-bottom:12px;margin-left:5px;height:unset}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0, 0, 0, 0.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0, 0, 0, 0.15)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:100%;max-width:100%;background-color:var(--el-table-bg-color);font-size:14px;color:var(--el-table-text-color)}.el-table__inner-wrapper{position:relative;display:flex;flex-direction:column;height:100%}.el-table__inner-wrapper::before{left:0;bottom:0;width:100%;height:1px;z-index:3}.el-table.has-footer .el-table__inner-wrapper::before{bottom:0}.el-table__empty-block{position:-webkit-sticky;position:sticky;left:0;min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:var(--el-text-color-secondary)}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-table__expand-icon{position:relative;cursor:pointer;color:var(--el-text-color-regular);font-size:12px;transition:transform var(--el-transition-duration-fast) ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table thead{color:var(--el-table-header-text-color);font-weight:500}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{padding:8px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left;z-index:1}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding:0 12px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;width:100%}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__footer-wrapper tr:first-child td:first-child,.el-table--border .el-table__footer-wrapper tr:first-child th:first-child,.el-table--border .el-table__inner-wrapper tr:first-child td:first-child,.el-table--border .el-table__inner-wrapper tr:first-child th:first-child,.el-table--group .el-table__footer-wrapper tr:first-child td:first-child,.el-table--group .el-table__footer-wrapper tr:first-child th:first-child,.el-table--group .el-table__inner-wrapper tr:first-child td:first-child,.el-table--group .el-table__inner-wrapper tr:first-child th:first-child{border-left:var(--el-table-border)}.el-table--border .el-table__footer-wrapper,.el-table--group .el-table__footer-wrapper{border-top:var(--el-table-border)}.el-table--border .el-table__inner-wrapper::after,.el-table--border::after,.el-table--border::before,.el-table__inner-wrapper::before{content:"";position:absolute;background-color:var(--el-table-border-color);z-index:3}.el-table--border .el-table__inner-wrapper::after{left:0;top:0;width:100%;height:1px;z-index:3}.el-table--border::before{top:-1px;left:0;width:1px;height:100%;z-index:3}.el-table--border::after{top:-1px;right:0;width:1px;height:100%;z-index:3}.el-table--border .el-table__inner-wrapper{border-right:none;border-bottom:none}.el-table--border .el-table__footer-wrapper{position:relative;flex-shrink:0}.el-table--border .el-table__footer-wrapper{margin-top:-2px}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{position:-webkit-sticky!important;position:sticky!important;z-index:2;background:var(--el-bg-color)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column::before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column::before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column::before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column::before{content:"";position:absolute;top:0;width:10px;bottom:-1px;overflow-x:hidden;overflow-y:hidden;box-shadow:none;touch-action:none;pointer-events:none}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column::before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column::before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column::before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column::before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column::before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column::before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column::before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column::before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column::before{right:-10px;box-shadow:none}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{position:-webkit-sticky!important;position:sticky!important;z-index:2;background:#fff;right:0}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column::before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column::before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column::before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column::before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column::before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column::before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column::before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column::before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{overflow:hidden;position:relative;flex:1}.el-table__body-wrapper .el-scrollbar__bar{z-index:2}.el-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:14px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:var(--el-table-border);z-index:10}.el-table__column-filter-trigger{display:inline-block;cursor:pointer}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{top:0;left:0;width:1px;height:100%;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-bottom-patch{left:0;height:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-right-patch{top:0;height:100%;width:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:12px;line-height:12px;height:12px;text-align:center;margin-right:8px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper::after{content:none}.el-table:not(.el-table--border) .el-table__footer-wrapper tr:first-child td:first-child,.el-table:not(.el-table--border) .el-table__footer-wrapper tr:first-child th:first-child,.el-table:not(.el-table--border) .el-table__inner-wrapper tr:first-child td:first-child,.el-table:not(.el-table--border) .el-table__inner-wrapper tr:first-child th:first-child{border-left:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0, 0, 0, 0.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0, 0, 0, 0.15)}.el-table-v2{font-size:14px}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--el-bg-color);left:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--el-bg-color);left:0;box-shadow:2px 0 4px 0 rgba(0,0,0,.06)}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--el-bg-color);right:0;box-shadow:-2px 0 4px 0 rgba(0,0,0,.06)}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row{-webkit-padding-end:var(--el-table-scrollbar-size);padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__row{-webkit-padding-end:var(--el-table-scrollbar-size);padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{position:relative;overflow:hidden}.el-table-v2__footer{position:absolute;left:0;right:0;bottom:0;overflow:hidden}.el-table-v2__empty{position:absolute;left:0}.el-table-v2__overlay{position:absolute;left:0;right:0;top:0;bottom:0;z-index:9999}.el-table-v2__header-row{display:flex;border-bottom:var(--el-table-border)}.el-table-v2__header-cell{display:flex;align-items:center;padding:0 8px;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);font-weight:700}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{transition:opacity,display var(--el-transition-duration);opacity:.6;display:none}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{border-bottom:var(--el-table-border);display:flex;align-items:center;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{height:100%;overflow:hidden;display:flex;align-items:center;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{margin:0 4px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{overflow:hidden;align-items:stretch}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{word-break:break-all}.el-tabs{--el-tabs-header-height:40px}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--el-color-primary);z-index:1;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none}.el-tabs__new-tab{display:flex;align-items:center;justify-content:center;float:right;border:1px solid var(--el-border-color);height:20px;width:20px;line-height:20px;margin:10px 0 10px 10px;border-radius:3px;text-align:center;font-size:12px;color:var(--el-text-color-primary);cursor:pointer;transition:all .15s}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8,.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--el-border-color-light);z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:var(--el-text-color-secondary)}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:var(--el-tabs-header-height);box-sizing:border-box;line-height:var(--el-tabs-header-height);display:inline-block;list-style:none;font-size:var(--el-font-size-base);font-weight:500;color:var(--el-text-color-primary);position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--el-color-primary) inset;border-radius:3px}.el-tabs__item .is-icon-close{border-radius:50%;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-left:5px}.el-tabs__item .is-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item .is-icon-close svg{margin-top:1px}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border:1px solid transparent;margin-top:-1px;color:var(--el-text-color-secondary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left::after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{right:0;left:auto}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--el-border-color-light);border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--el-border-color-light);border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter var(--el-transition-duration);animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave var(--el-transition-duration);animation:slideInRight-leave var(--el-transition-duration)}.slideInLeft-enter{-webkit-animation:slideInLeft-enter var(--el-transition-duration);animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave var(--el-transition-duration);animation:slideInLeft-leave var(--el-transition-duration)}@-webkit-keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px}.el-tag{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary);--el-tag-text-color:var(--el-color-primary);background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);display:inline-flex;justify-content:center;align-items:center;height:24px;padding:0 9px;font-size:var(--el-tag-font-size);line-height:1;border-width:1px;border-style:solid;border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px}.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color)}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3);--el-tag-text-color:var(--el-color-white);--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--primary{--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--success{--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--danger{--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--error{--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--info{--el-tag-text-color:var(--el-color-white)}.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary);--el-tag-bg-color:var(--el-fill-color-blank)}.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{padding:0 11px;height:32px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{padding:0 7px;height:20px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);font-weight:700;cursor:pointer}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid var(--el-timeline-node-color)}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{position:absolute;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{left:-2px;width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light)}.el-timeline{margin:0;font-size:var(--el-font-size-base);list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{display:flex;align-items:center}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);background-color:var(--el-color-white);padding:var(--el-tooltip-v2-padding);border:1px solid var(--el-border-color)}.el-tooltip-v2__arrow{position:absolute;color:var(--el-color-white);width:var(--el-tooltip-v2-arrow-width);height:var(--el-tooltip-v2-arrow-height);pointer-events:none;left:var(--el-tooltip-v2-arrow-x);top:var(--el-tooltip-v2-arrow-y)}.el-tooltip-v2__arrow::before{content:"";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__arrow::after{content:"";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow::before{border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow::after{border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow::before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow::after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow::before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow::after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow::before{border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow::after{border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;background-color:var(--el-color-black);color:var(--el-color-white);border-color:transparent}.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px}.el-transfer{font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{overflow:hidden;background:var(--el-bg-color-overlay);display:inline-block;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:var(--el-transfer-panel-body-height);overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:22px;line-height:var(--el-transfer-item-height)}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;width:auto}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:calc(var(--el-transfer-filter-height)/ 2)}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{display:flex;align-items:center;height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);margin:0;padding-left:15px;border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black)}.el-transfer-panel .el-transfer-panel__header .el-checkbox{position:relative;display:flex;width:100%;align-items:center}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:var(--el-text-color-primary);font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0);color:var(--el-text-color-secondary);font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);margin:0;padding:0;border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius)}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:var(--el-text-color-regular)}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding:6px 15px 0;color:var(--el-text-color-secondary);text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-tree{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree{position:relative;cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--el-text-color-secondary);font-size:var(--el-font-size-base)}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:var(--el-color-primary)}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px;box-sizing:content-box}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__label{font-size:var(--el-font-size-base)}.el-tree-node__loading-icon{margin-right:8px;font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color)}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected::after{content:none}.el-tree-select__popper .el-select-dropdown__item{flex:1;background:0 0!important;padding-left:0;height:20px;line-height:20px}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px}.el-upload{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:var(--el-text-color-regular);margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.el-upload--picture-card{--el-upload-picture-card-size:148px;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;display:inline-flex;justify-content:center;align-items:center}.el-upload--picture-card i{font-size:28px;color:var(--el-text-color-secondary)}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{font-size:67px;color:var(--el-text-color-placeholder);margin-bottom:16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px);background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:var(--el-text-color-regular);margin-bottom:5px;position:relative;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{display:none;position:absolute;right:5px;top:50%;cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{display:none;position:absolute;top:1px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:var(--el-color-primary);font-style:normal}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;justify-content:center;flex-direction:column;width:calc(100% - 30px);margin-left:4px}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list.is-disabled .el-upload-list__item-status-label,.el-upload-list.is-disabled .el-upload-list__item:hover{display:block}.el-upload-list__item-name{color:var(--el-text-color-regular);display:inline-flex;text-align:center;align-items:center;padding:0 4px;transition:color var(--el-transition-duration);font-size:var(--el-font-size-base)}.el-upload-list__item-name .el-icon{margin-right:6px;color:var(--el-text-color-secondary)}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none;height:100%;justify-content:center;align-items:center;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:var(--el-text-color-regular);display:none}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;padding:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.el-upload-list--picture-card .el-upload-list__item-status-label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;display:inline-flex;justify-content:center;align-items:center;color:#fff;opacity:0;font-size:20px;background-color:var(--el-overlay-color-lighter);transition:opacity var(--el-transition-duration)}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:1rem}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{display:inline-flex;justify-content:center;align-items:center;width:70px;height:70px;-o-object-fit:contain;object-fit:contain;position:relative;z-index:1;background-color:var(--el-color-white)}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:var(--el-overlay-color-light);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:var(--el-text-color-primary)}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity 340ms ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius, 4px)}.el-popper{position:absolute;border-radius:var(--el-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;word-wrap:break-word;visibility:visible}.el-popper.is-dark{color:var(--el-bg-color);background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark .el-popper__arrow::before{border:1px solid var(--el-text-color-primary);background:var(--el-text-color-primary);right:0}.el-popper.is-light{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light .el-popper__arrow::before{border:1px solid var(--el-border-color-light);background:var(--el-bg-color-overlay);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.el-popper__arrow::before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--el-text-color-primary);box-sizing:border-box}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow::before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow::before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow::before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow::before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top] .el-popper__arrow::before{border-top-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=bottom] .el-popper__arrow::before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left] .el-popper__arrow::before{border-left-color:transparent!important;border-bottom-color:transparent!important}.el-popper[data-popper-placement^=right] .el-popper__arrow::before{border-right-color:transparent!important;border-top-color:transparent!important}.el-select-dropdown__item{font-size:var(--el-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.selected{color:var(--el-color-primary);font-weight:700} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/css/index.css b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/index.css new file mode 100644 index 000000000..4eb9debad --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/index.css @@ -0,0 +1,123 @@ +body{ + background: #faf9f9; + padding: 12px !important; +} +.title { + height: 30px; + display:flex; + align-items: center; + justify-content: space-between; +} +.btns { + width: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +.infinite-list { + height: calc(100% - 30px); + padding: 0; + margin: 0; + list-style: none; +} +.infinite-list::-webkit-scrollbar { + display: none; +} +.infinite-list .infinite-list-item { + display: flex; + align-items: center; + justify-content: flex-start; + height: 50px; + background: var(--el-color-primary-light-9); + margin: 10px; + color: #333; + padding: 0 12px; +} +.infinite-list .infinite-list-item + .list-item { + margin-top: 10px; +} +.information { + display: flex; + align-items: stretch; + justify-content: flex-start; + margin-bottom: 20px; + height: calc(50vh - 22px); +} +.information .base-info { + width: 460px; + margin-right: 20px; + background: #fff; + padding: 12px 16px; + border-radius: 5px; +} +.information .base-info .photo { + width: 48px; + height: 48px; + border-radius: 50%; +} +.information .interactive { + flex: 1; + background: #fff; + border-radius: 5px; + padding: 12px 16px; +} +.files-wrap { + display: flex; + align-items: stretch; + justify-content: flex-start; + height: calc(50vh - 22px); +} +.files-wrap .info-list { + width: 460px; + margin-right: 20px; + background: #fff; + padding: 12px 16px; + border-radius: 5px; +} +.files-wrap .file-list { + flex: 1; + background: #fff; + padding: 12px 16px; + border-radius: 5px; +} +.files-content-list { + font-size: 14px; + color: #333; + display: flex; + align-items: flex-start; + justify-content: flex-start; + flex-flow: wrap; +} +.files-content-list li { + margin-bottom: 12px; + border: 1px solid rgb(232, 234, 246); + width: calc(50% - 6px); +} +.files-content-list li:nth-child(2n) { + margin-left: 12px; +} +.files-content-list li .btn-wrap { + background: rgb(232, 234, 246); + padding: 4px 8px; + display: flex; + align-items: center; + justify-content: flex-end; +} +.file-list .el-button+.el-button, .files-content-list .el-button+.el-button { + margin-left: 0px; +} + +.files-content-list li p { + padding: 12px; + white-space: pre-line; + height: 260px; + overflow-y: auto; + &::-webkit-scrollbar{ + display: none; + } +} +.editFile-header { + display: flex; + align-items: center; + justify-content: space-between; +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/css/knowledge.css b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/knowledge.css new file mode 100644 index 000000000..4f44192ab --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/knowledge.css @@ -0,0 +1,78 @@ +body{ + background: #faf9f9; + padding: 12px !important; +} +.title { + height: 30px +} +.btns { + width: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +.infinite-list { + height: calc(100% - 30px); + padding: 0; + margin: 0; + list-style: none; +} +.infinite-list::-webkit-scrollbar { + display: none; +} +.infinite-list .infinite-list-item { + display: flex; + align-items: center; + justify-content: center; + height: 50px; + background: var(--el-color-primary-light-9); + margin: 10px; + color: #333; +} +.infinite-list .infinite-list-item + .list-item { + margin-top: 10px; +} +.information { + display: flex; + align-items: stretch; + justify-content: flex-start; + margin-bottom: 20px; + height: calc(50vh - 22px); +} +.information .base-info { + width: 460px; + margin-right: 20px; + background: #fff; + padding: 12px 16px; + border-radius: 5px; +} +.information .base-info .photo { + width: 48px; + height: 48px; + border-radius: 50%; +} +.information .interactive { + flex: 1; + background: #fff; + border-radius: 5px; + padding: 12px 16px; +} +.task-wrap { + display: flex; + align-items: stretch; + justify-content: flex-start; + height: calc(50vh - 22px); +} +.task-wrap .task-list { + width: 460px; + margin-right: 20px; + background: #fff; + padding: 12px 16px; + border-radius: 5px; +} +.task-wrap .create-task { + flex: 1; + background: #fff; + padding: 12px 16px; + border-radius: 5px; +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/css/reset.css b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/reset.css new file mode 100644 index 000000000..3e37beca9 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/css/reset.css @@ -0,0 +1,251 @@ +*, +*::after, +*::before { + box-sizing: border-box; +} + +/* 清除内外边距 */ + +body, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +p, +blockquote, + +/* structural elements 结构元素 */ + +dl, +dt, +dd, +ul, +ol, +li, + +/* list elements 列表元素 */ + +pre, + +/* text formatting elements 文本格式元素 */ + +fieldset, +lengend, +button, +input, +textarea, + +/* form elements 表单元素 */ + +th, +td { + /* table elements 表格元素 */ + margin: 0; + padding: 0; +} + +/* 设置默认字体 */ + +body, +button, +input, +select, +textarea { + /* for ie */ + font-size: 12px; + border: none; + outline: none; + font-family: Arial, Helvetica, sans-serif, "Microsoft YaHei"; +} + +input, +select, +textarea { + outline: none; + resize: none; +} + +i { + font-style: normal; +} + +button { + cursor: pointer; +} + +input::-ms-clear { + display: none; +} + +h1 { + font-size: 18px; + /* 18px / 12px = 1.5 */ +} + +h2 { + font-size: 16px; +} + +h3 { + font-size: 14px; +} + +h4, +h5, +h6 { + font-size: 100%; +} + +address, +cite, +dfn, +em, +var { + font-style: normal; +} + +/* 将斜体扶正 */ + +small { + font-size: 12px; +} + +/* 小于 12px 的中文很难阅读,让 small 正常化 */ + +/* 重置列表元素 */ + +ul, +ol { + list-style: none; +} + +/* 重置文本格式元素 */ + +a { + text-decoration: none; +} + +abbr[title], +acronym[title] { + /* 注:1.ie6 不支持 abbr; 2.这里用了属性选择符,ie6 下无效果 */ + border-bottom: 1px dotted; + cursor: help; +} + +q:before, +q:after { + content: ""; +} + +/* 重置表单元素 */ + +legend { + color: #000; +} + +/* for ie6 */ + +fieldset, +img { + border: none; +} + +/* img 搭车:让链接里的 img 无边框 */ + +/* 注:optgroup 无法扶正 */ + +button, +input, +select, +textarea { + font-size: 100%; + /* 使得表单元素在 ie 下能继承字体大小 */ +} + +/* 重置表格元素 */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/* 重置 hr */ + +hr { + border: none; + height: 1px; +} + +/* 让非ie浏览器默认也显示垂直滚动条,防止因滚动条引起的闪烁 */ + +html { + //overflow-y: scroll; +} + +/* 解决safari中input现实小人的问题 */ + +input::-webkit-contacts-auto-fill-button { + visibility: hidden; + display: none !important; + pointer-events: none; + position: absolute; + right: 0; +} + +/* 解决ie10以上版本下默认关闭和眼睛图标 */ + +::-ms-clear, +::-ms-reveal { + display: none; +} + +//去chrome input框黄色背景 +input:-webkit-autofill, +textarea:-webkit-autofill, +select:-webkit-autofill { + -webkit-box-shadow: 0 0 0 1000px white inset; +} + +input[type="text"]:focus, +input[type="password"]:focus, +textarea:focus { + -webkit-box-shadow: 0 0 0 1000px white inset; +} + +.switch-container.flow-switch-container .el-switch__core:before { + content: "否"; +} +.switch-container.flow-switch-container.el-switch.is-checked + .el-switch__core:before { + content: "是"; +} + +.el-form-item { + align-items: center; +} +.el-drawer .el-drawer__header{ + color: #333; + margin: 0; + padding: 20px; + border-bottom: 1px solid #ddd; +} +.el-drawer .el-drawer__footer { + padding: 10px; + border-top: 1px solid #ddd; +} +.el-table { + width: 100%; + height: calc(100% - 30px); +} +.el-table .el-table__header tr th { + background: #fafafa; +} +.el-table .el-table__header tr th .cell{ + color: #333 +} +.el-dialog .el-dialog__header { + padding-bottom: 0 +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/js/axios.js b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/axios.js new file mode 100644 index 000000000..4fbf05cdc --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/axios.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(t){for(var r=1;r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),S(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;S(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:A(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},a=i.allOwnKeys,s=void 0!==a&&a;if(null!=e)if("object"!==n(e)&&(e=[e]),S(e))for(r=0,o=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var B="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,I=function(e){return!R(e)&&e!==B};var q,z=(q="undefined"!=typeof Uint8Array&&b(Uint8Array),function(e){return q&&e instanceof q}),M=E("HTMLFormElement"),H=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),J=E("RegExp"),G=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};U(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},W="abcdefghijklmnopqrstuvwxyz",K="0123456789",V={DIGIT:K,ALPHA:W,ALPHA_DIGIT:W+W.toUpperCase()+K};var X=E("AsyncFunction"),$={isArray:S,isArrayBuffer:A,isBuffer:function(e){return null!==e&&!R(e)&&null!==e.constructor&&!R(e.constructor)&&x(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||x(e.append)&&("formdata"===(t=w(e))||"object"===t&&x(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&A(e.buffer)},isString:j,isNumber:T,isBoolean:function(e){return!0===e||!1===e},isObject:P,isPlainObject:N,isUndefined:R,isDate:k,isFile:_,isBlob:L,isRegExp:J,isFunction:x,isStream:function(e){return P(e)&&x(e.pipe)},isURLSearchParams:F,isTypedArray:z,isFileList:C,forEach:U,merge:function e(){for(var t=I(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&D(n,o)||o;N(n[i])&&N(t)?n[i]=e(n[i],t):N(t)?n[i]=e({},t):S(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return U(t,(function(t,n){r&&x(t)?e[n]=y(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&b(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:w,kindOfTest:E,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(S(e))return e;var t=e.length;if(!T(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:M,hasOwnProperty:H,hasOwnProp:H,reduceDescriptors:G,freezeMethods:function(e){G(e,(function(t,r){if(x(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];x(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return S(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return e=+e,Number.isFinite(e)?e:t},findKey:D,global:B,isContextDefined:I,ALPHABET:V,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:V.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&x(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(P(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=S(r)?[]:{};return U(r,(function(t,r){var i=e(t,n+1);!R(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:X,isThenable:function(e){return e&&(P(e)||x(e))&&x(e.then)&&x(e.catch)}};function Q(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}$.inherits(Q,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:$.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var Y=Q.prototype,Z={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){Z[e]={value:e}})),Object.defineProperties(Q,Z),Object.defineProperty(Y,"isAxiosError",{value:!0}),Q.from=function(e,t,r,n,o,i){var a=Object.create(Y);return $.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),Q.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function ee(e){return $.isPlainObject(e)||$.isArray(e)}function te(e){return $.endsWith(e,"[]")?e.slice(0,-2):e}function re(e,t,r){return e?e.concat(t).map((function(e,t){return e=te(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var ne=$.toFlatObject($,{},null,(function(e){return/^is[A-Z]/.test(e)}));function oe(e,t,r){if(!$.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var o=(r=$.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!$.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&$.isSpecCompliantForm(t);if(!$.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if($.isDate(e))return e.toISOString();if(!u&&$.isBlob(e))throw new Q("Blob is not supported. Use a Buffer instead.");return $.isArrayBuffer(e)||$.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(e,r,i){var u=e;if(e&&!i&&"object"===n(e))if($.endsWith(r,"{}"))r=o?r:r.slice(0,-2),e=JSON.stringify(e);else if($.isArray(e)&&function(e){return $.isArray(e)&&!e.some(ee)}(e)||($.isFileList(e)||$.endsWith(r,"[]"))&&(u=$.toArray(e)))return r=te(r),u.forEach((function(e,n){!$.isUndefined(e)&&null!==e&&t.append(!0===s?re([r],n,a):null===s?r:r+"[]",c(e))})),!1;return!!ee(e)||(t.append(re(i,r,a),c(e)),!1)}var l=[],h=Object.assign(ne,{defaultVisitor:f,convertValue:c,isVisitable:ee});if(!$.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!$.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),$.forEach(r,(function(r,o){!0===(!($.isUndefined(r)||null===r)&&i.call(t,r,$.isString(o)?o.trim():o,n,h))&&e(r,n?n.concat(o):[o])})),l.pop()}}(e),t}function ie(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function ae(e,t){this._pairs=[],e&&oe(e,this,t)}var se=ae.prototype;function ue(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ce(e,t,r){if(!t)return e;var n,o=r&&r.encode||ue,i=r&&r.serialize;if(n=i?i(t,r):$.isURLSearchParams(t)?t.toString():new ae(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}se.append=function(e,t){this._pairs.push([e,t])},se.toString=function(e){var t=e?function(t){return e.call(this,t,ie)}:ie;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var fe,le=function(){function e(){i(this,e),this.handlers=[]}return s(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){$.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),he={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},de={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ae,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},pe="undefined"!=typeof window&&"undefined"!=typeof document,ve=(fe="undefined"!=typeof navigator&&navigator.product,pe&&["ReactNative","NativeScript","NS"].indexOf(fe)<0),ye="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,me=t(t({},Object.freeze({__proto__:null,hasBrowserEnv:pe,hasStandardBrowserWebWorkerEnv:ye,hasStandardBrowserEnv:ve})),de);function ge(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&$.isArray(n)?n.length:i,s?($.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&$.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&$.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=$.isObject(e);if(i&&$.isHTMLForm(e)&&(e=new FormData(e)),$.isFormData(e))return o?JSON.stringify(ge(e)):e;if($.isArrayBuffer(e)||$.isBuffer(e)||$.isStream(e)||$.isFile(e)||$.isBlob(e))return e;if($.isArrayBufferView(e))return e.buffer;if($.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return oe(e,new me.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return me.isNode&&$.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=$.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return oe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if($.isString(e))try{return(t||JSON.parse)(e),$.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||be.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&$.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw Q.from(e,Q.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:me.classes.FormData,Blob:me.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};$.forEach(["delete","get","head","post","put","patch"],(function(e){be.headers[e]={}}));var we=be,Ee=$.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Oe=Symbol("internals");function Se(e){return e&&String(e).trim().toLowerCase()}function Re(e){return!1===e||null==e?e:$.isArray(e)?e.map(Re):String(e)}function Ae(e,t,r,n,o){return $.isFunction(n)?n.call(this,t,r):(o&&(t=r),$.isString(t)?$.isString(n)?-1!==t.indexOf(n):$.isRegExp(n)?n.test(t):void 0:void 0)}var je=function(e,t){function r(e){i(this,r),e&&this.set(e)}return s(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Se(t);if(!o)throw new Error("header name must be a non-empty string");var i=$.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Re(e))}var i,a,s,u,c,f=function(e,t){return $.forEach(e,(function(e,r){return o(e,r,t)}))};return $.isPlainObject(e)||e instanceof this.constructor?f(e,t):$.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?f((c={},(i=e)&&i.split("\n").forEach((function(e){u=e.indexOf(":"),a=e.substring(0,u).trim().toLowerCase(),s=e.substring(u+1).trim(),!a||c[a]&&Ee[a]||("set-cookie"===a?c[a]?c[a].push(s):c[a]=[s]:c[a]=c[a]?c[a]+", "+s:s)})),c),t):null!=e&&o(t,e,r),this}},{key:"get",value:function(e,t){if(e=Se(e)){var r=$.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if($.isFunction(t))return t.call(this,n,r);if($.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Se(e)){var r=$.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ae(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Se(e)){var o=$.findKey(r,e);!o||t&&!Ae(0,r[o],o,t)||(delete r[o],n=!0)}}return $.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ae(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return $.forEach(this,(function(n,o){var i=$.findKey(r,o);if(i)return t[i]=Re(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Re(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1?"since :\n"+s.map(Ue).join("\n"):" "+Ue(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Ie(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ne(null,e)}function qe(e){return Ie(e),e.headers=xe.from(e.headers),e.data=Te.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Be(e.adapter||we.adapter)(e).then((function(t){return Ie(e),t.data=Te.call(e,e.transformResponse,t),t.headers=xe.from(t.headers),t}),(function(t){return Pe(t)||(Ie(e),t&&t.response&&(t.response.data=Te.call(e,e.transformResponse,t.response),t.response.headers=xe.from(t.response.headers))),Promise.reject(t)}))}var ze=function(e){return e instanceof xe?e.toJSON():e};function Me(e,t){t=t||{};var r={};function n(e,t,r){return $.isPlainObject(e)&&$.isPlainObject(t)?$.merge.call({caseless:r},e,t):$.isPlainObject(t)?$.merge({},t):$.isArray(t)?t.slice():t}function o(e,t,r){return $.isUndefined(t)?$.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!$.isUndefined(t))return n(void 0,t)}function a(e,t){return $.isUndefined(t)?$.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(ze(e),ze(t),!0)}};return $.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);$.isUndefined(a)&&i!==s||(r[n]=a)})),r}var He="1.6.7",Je={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Je[e]=function(r){return n(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ge={};Je.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new Q(n(o," has been removed"+(t?" in "+t:"")),Q.ERR_DEPRECATED);return t&&!Ge[o]&&(Ge[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var We={assertOptions:function(e,t,r){if("object"!==n(e))throw new Q("options must be an object",Q.ERR_BAD_OPTION_VALUE);for(var o=Object.keys(e),i=o.length;i-- >0;){var a=o[i],s=t[a];if(s){var u=e[a],c=void 0===u||s(u,a,e);if(!0!==c)throw new Q("option "+a+" must be "+c,Q.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Q("Unknown option "+a,Q.ERR_BAD_OPTION)}},validators:Je},Ke=We.validators,Ve=function(){function e(t){i(this,e),this.defaults=t,this.interceptors={request:new le,response:new le}}var t,n;return s(e,[{key:"request",value:(t=r().mark((function e(t,n){var o,i;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,n);case 3:return e.abrupt("return",e.sent);case 6:throw e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error&&(Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error,i=o.stack?o.stack.replace(/^.+\n/,""):"",e.t0.stack?i&&!String(e.t0.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+i):e.t0.stack=i),e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])})),n=function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function s(e){o(a,n,i,s,u,"next",e)}function u(e){o(a,n,i,s,u,"throw",e)}s(void 0)}))},function(e,t){return n.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=Me(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&We.assertOptions(n,{silentJSONParsing:Ke.transitional(Ke.boolean),forcedJSONParsing:Ke.transitional(Ke.boolean),clarifyTimeoutError:Ke.transitional(Ke.boolean)},!1),null!=o&&($.isFunction(o)?t.paramsSerializer={serialize:o}:We.assertOptions(o,{encode:Ke.function,serialize:Ke.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&$.merge(i.common,i[t.method]);i&&$.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=xe.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var d=[qe.bind(this),void 0];for(d.unshift.apply(d,s),d.push.apply(d,f),l=d.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ne(e,t,o),r(n.reason))}))}return s(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Qe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Qe).forEach((function(e){var t=c(e,2),r=t[0],n=t[1];Qe[n]=r}));var Ye=Qe;var Ze=function e(t){var r=new Xe(t),n=y(Xe.prototype.request,r);return $.extend(n,Xe.prototype,r,{allOwnKeys:!0}),$.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(Me(t,r))},n}(we);return Ze.Axios=Xe,Ze.CanceledError=Ne,Ze.CancelToken=$e,Ze.isCancel=Pe,Ze.VERSION=He,Ze.toFormData=oe,Ze.AxiosError=Q,Ze.Cancel=Ze.CanceledError,Ze.all=function(e){return Promise.all(e)},Ze.spread=function(e){return function(t){return e.apply(null,t)}},Ze.isAxiosError=function(e){return $.isObject(e)&&!0===e.isAxiosError},Ze.mergeConfig=Me,Ze.AxiosHeaders=xe,Ze.formToJSON=function(e){return ge($.isHTMLForm(e)?new FormData(e):e)},Ze.getAdapter=Be,Ze.HttpStatusCode=Ye,Ze.default=Ze,Ze})); +//# sourceMappingURL=axios.min.js.map \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/js/elementPlus.js b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/elementPlus.js new file mode 100644 index 000000000..7ce547f35 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/elementPlus.js @@ -0,0 +1,78 @@ +/*! Element Plus v2.2.12 */(function(_,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(_=typeof globalThis!="undefined"?globalThis:_||self,e(_.ElementPlus={},_.Vue))})(this,function(_,e){"use strict";var Pp=typeof global=="object"&&global&&global.Object===Object&&global,w2=typeof self=="object"&&self&&self.Object===Object&&self,_t=Pp||w2||Function("return this")(),zt=_t.Symbol,Ap=Object.prototype,k2=Ap.hasOwnProperty,S2=Ap.toString,Sl=zt?zt.toStringTag:void 0;function E2(t){var n=k2.call(t,Sl),o=t[Sl];try{t[Sl]=void 0;var r=!0}catch(a){}var l=S2.call(t);return r&&(n?t[Sl]=o:delete t[Sl]),l}var N2=Object.prototype,$2=N2.toString;function B2(t){return $2.call(t)}var _2="[object Null]",v2="[object Undefined]",Op=zt?zt.toStringTag:void 0;function Ft(t){return t==null?t===void 0?v2:_2:Op&&Op in Object(t)?E2(t):B2(t)}function bt(t){return t!=null&&typeof t=="object"}var T2="[object Symbol]";function ln(t){return typeof t=="symbol"||bt(t)&&Ft(t)==T2}var V2=0/0;function zp(t){return typeof t=="number"?t:ln(t)?V2:+t}function ht(t,n){for(var o=-1,r=t==null?0:t.length,l=Array(r);++o0){if(++n>=pN)return arguments[0]}else n=0;return t.apply(void 0,arguments)}}var Jp=Zp(Up),gN=/\{\n\/\* \[wrapped with (.+)\] \*/,yN=/,? & /;function bN(t){var n=t.match(gN);return n?n[1].split(yN):[]}var CN=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function wN(t,n){var o=n.length;if(!o)return t;var r=o-1;return n[r]=(o>1?"& ":"")+n[r],n=n.join(o>2?", ":" "),t.replace(CN,`{ +/* [wrapped with `+n+`] */ +`)}function Li(t){return function(){return t}}var Aa=function(){try{var t=lr(Object,"defineProperty");return t({},"",{}),t}catch(n){}}(),kN=Aa?function(t,n){return Aa(t,"toString",{configurable:!0,enumerable:!1,value:Li(n),writable:!0})}:xt,Fi=Zp(kN);function bn(t,n){for(var o=-1,r=t==null?0:t.length;++o-1}var EN=1,NN=2,$N=8,BN=16,_N=32,vN=64,TN=128,VN=256,MN=512,RN=[["ary",TN],["bind",EN],["bindKey",NN],["curry",$N],["curryRight",BN],["flip",MN],["partial",_N],["partialRight",vN],["rearg",VN]];function IN(t,n){return bn(RN,function(o){var r="_."+o[0];n&o[1]&&!za(t,r)&&t.push(r)}),t.sort()}function em(t,n,o){var r=n+"";return Fi(t,wN(r,IN(bN(r),o)))}var PN=1,AN=2,ON=4,zN=8,tm=32,nm=64;function om(t,n,o,r,l,a,s,i,c,d){var f=n&zN,u=f?s:void 0,p=f?void 0:s,m=f?a:void 0,g=f?void 0:a;n|=f?tm:nm,n&=~(f?nm:tm),n&ON||(n&=~(PN|AN));var h=[t,n,l,m,u,g,p,i,c,d],b=o.apply(void 0,h);return Di(t)&&Jp(b,h),b.placeholder=r,em(b,t,n)}function Or(t){var n=t;return n.placeholder}var DN=9007199254740991,LN=/^(?:0|[1-9]\d*)$/;function so(t,n){var o=typeof t;return n=n==null?DN:n,!!n&&(o=="number"||o!="symbol"&&LN.test(t))&&t>-1&&t%1==0&&t1&&w.reverse(),f&&c-1&&t%1==0&&t<=a$}function Xt(t){return t!=null&&La(t.length)&&!ao(t)}function Ht(t,n,o){if(!gt(o))return!1;var r=typeof n;return(r=="number"?Xt(o)&&so(n,o.length):r=="string"&&n in o)?Tn(o[n],t):!1}function zr(t){return Ge(function(n,o){var r=-1,l=o.length,a=l>1?o[l-1]:void 0,s=l>2?o[2]:void 0;for(a=t.length>3&&typeof a=="function"?(l--,a):void 0,s&&Ht(o[0],o[1],s)&&(a=l<3?void 0:a,l=1),n=Object(n);++r-1}function yB(t,n){var o=this.__data__,r=xa(o,t);return r<0?(++this.size,o.push([t,n])):o[r][1]=n,this}function fo(t){var n=-1,o=t==null?0:t.length;for(this.clear();++n0&&o(i)?n>1?Vt(i,n-1,o,r,l):Io(l,i):r||(l[l.length]=i)}return l}function Bm(t){var n=t==null?0:t.length;return n?Vt(t,1):[]}function po(t){return Fi(pm(t,void 0,Bm),t+"")}var MB=po(Xi),Ka=Sm(Object.getPrototypeOf,Object),RB="[object Object]",IB=Function.prototype,PB=Object.prototype,_m=IB.toString,AB=PB.hasOwnProperty,OB=_m.call(Object);function Rl(t){if(!bt(t)||Ft(t)!=RB)return!1;var n=Ka(t);if(n===null)return!0;var o=AB.call(n,"constructor")&&n.constructor;return typeof o=="function"&&o instanceof o&&_m.call(o)==OB}var zB="[object DOMException]",DB="[object Error]";function Zi(t){if(!bt(t))return!1;var n=Ft(t);return n==DB||n==zB||typeof t.message=="string"&&typeof t.name=="string"&&!Rl(t)}var vm=Ge(function(t,n){try{return sn(t,void 0,n)}catch(o){return Zi(o)?o:new Error(o)}}),LB="Expected a function";function Tm(t,n){var o;if(typeof n!="function")throw new TypeError(LB);return t=je(t),function(){return--t>0&&(o=n.apply(this,arguments)),t<=1&&(n=void 0),o}}var FB=1,xB=32,Wa=Ge(function(t,n,o){var r=FB;if(o.length){var l=Vo(o,Or(Wa));r|=xB}return io(t,r,n,o,l)});Wa.placeholder={};var HB=po(function(t,n){return bn(n,function(o){o=xn(o),co(t,o,Wa(t[o],t))}),t}),KB=1,WB=2,jB=32,Ji=Ge(function(t,n,o){var r=KB|WB;if(o.length){var l=Vo(o,Or(Ji));r|=jB}return io(n,r,t,o,l)});Ji.placeholder={};function wn(t,n,o){var r=-1,l=t.length;n<0&&(n=-n>l?0:l+n),o=o>l?l:o,o<0&&(o+=l),l=n>o?0:o-n>>>0,n>>>=0;for(var a=Array(l);++r=r?t:wn(t,n,o)}var UB="\\ud800-\\udfff",GB="\\u0300-\\u036f",qB="\\ufe20-\\ufe2f",YB="\\u20d0-\\u20ff",XB=GB+qB+YB,ZB="\\ufe0e\\ufe0f",JB="\\u200d",QB=RegExp("["+JB+UB+XB+ZB+"]");function Lr(t){return QB.test(t)}function e_(t){return t.split("")}var Vm="\\ud800-\\udfff",t_="\\u0300-\\u036f",n_="\\ufe20-\\ufe2f",o_="\\u20d0-\\u20ff",r_=t_+n_+o_,l_="\\ufe0e\\ufe0f",a_="["+Vm+"]",Qi="["+r_+"]",ec="\\ud83c[\\udffb-\\udfff]",s_="(?:"+Qi+"|"+ec+")",Mm="[^"+Vm+"]",Rm="(?:\\ud83c[\\udde6-\\uddff]){2}",Im="[\\ud800-\\udbff][\\udc00-\\udfff]",i_="\\u200d",Pm=s_+"?",Am="["+l_+"]?",c_="(?:"+i_+"(?:"+[Mm,Rm,Im].join("|")+")"+Am+Pm+")*",d_=Am+Pm+c_,f_="(?:"+[Mm+Qi+"?",Qi,Rm,Im,a_].join("|")+")",u_=RegExp(ec+"(?="+ec+")|"+f_+d_,"g");function p_(t){return t.match(u_)||[]}function Vn(t){return Lr(t)?p_(t):e_(t)}function Om(t){return function(n){n=Qe(n);var o=Lr(n)?Vn(n):void 0,r=o?o[0]:n.charAt(0),l=o?Po(o,1).join(""):n.slice(1);return r[t]()+l}}var tc=Om("toUpperCase");function zm(t){return tc(Qe(t).toLowerCase())}function nc(t,n,o,r){var l=-1,a=t==null?0:t.length;for(r&&a&&(o=t[++l]);++l=n?t:n)),t}function lv(t,n,o){return o===void 0&&(o=n,n=void 0),o!==void 0&&(o=gn(o),o=o===o?o:0),n!==void 0&&(n=gn(n),n=n===n?n:0),dr(gn(t),n,o)}function av(){this.__data__=new fo,this.size=0}function sv(t){var n=this.__data__,o=n.delete(t);return this.size=n.size,o}function iv(t){return this.__data__.get(t)}function cv(t){return this.__data__.has(t)}var dv=200;function fv(t,n){var o=this.__data__;if(o instanceof fo){var r=o.__data__;if(!Vl||r.lengthi))return!1;var d=a.get(t),f=a.get(n);if(d&&f)return d==n&&f==t;var u=-1,p=!0,m=o&WT?new ur:void 0;for(a.set(t,n),a.set(n,t);++u=n||N<0||u&&$>=a}function y(){var S=Ya();if(b(S))return w(S);i=setTimeout(y,h(S))}function w(S){return i=void 0,p&&r?m(S):(r=l=void 0,s)}function C(){i!==void 0&&clearTimeout(i),d=0,r=c=l=i=void 0}function k(){return i===void 0?s:w(Ya())}function E(){var S=Ya(),N=b(S);if(r=arguments,l=this,c=S,N){if(i===void 0)return g(c);if(u)return clearTimeout(i),i=setTimeout(y,n),m(c)}return i===void 0&&(i=setTimeout(y,n)),s}return E.cancel=C,E.flush=k,E}function AV(t,n){return t==null||t!==t?n:t}var Kh=Object.prototype,OV=Kh.hasOwnProperty,zV=Ge(function(t,n){t=Object(t);var o=-1,r=n.length,l=r>2?n[2]:void 0;for(l&&Ht(n[0],n[1],l)&&(r=1);++o=KV&&(a=Il,s=!1,n=new ur(n));e:for(;++l=0&&t.slice(o,l)==n}function eM(t,n){return ht(n,function(o){return[o,t[o]]})}function tM(t){var n=-1,o=Array(t.size);return t.forEach(function(r){o[++n]=[r,r]}),o}var nM="[object Map]",oM="[object Set]";function Jh(t){return function(n){var o=Hn(n);return o==nM?mc(n):o==oM?tM(n):eM(n,t(n))}}var Qh=Jh(kt),eg=Jh(Zt),rM={"&":"&","<":"<",">":">",'"':""","'":"'"},lM=oc(rM),tg=/[&<>"']/g,aM=RegExp(tg.source);function ng(t){return t=Qe(t),t&&aM.test(t)?t.replace(tg,lM):t}var og=/[\\^$.*+?()[\]{}|]/g,sM=RegExp(og.source);function iM(t){return t=Qe(t),t&&sM.test(t)?t.replace(og,"\\$&"):t}function rg(t,n){for(var o=-1,r=t==null?0:t.length;++ol?0:l+o),r=r===void 0||r>l?l:je(r),r<0&&(r+=l),r=o>r?0:lg(r);o-1?l[a?n[s]:s]:void 0}}var hM=Math.max;function ig(t,n,o){var r=t==null?0:t.length;if(!r)return-1;var l=o==null?0:je(o);return l<0&&(l=hM(r+l,0)),Oa(t,Le(n),l)}var gM=sg(ig);function cg(t,n,o){var r;return o(t,function(l,a,s){if(n(l,a,s))return r=a,!1}),r}function yM(t,n){return cg(t,Le(n),Kn)}var bM=Math.max,CM=Math.min;function dg(t,n,o){var r=t==null?0:t.length;if(!r)return-1;var l=r-1;return o!==void 0&&(l=je(o),l=o<0?bM(r+l,0):CM(l,r-1)),Oa(t,Le(n),l,!0)}var wM=sg(dg);function kM(t,n){return cg(t,Le(n),Bc)}function fg(t){return t&&t.length?t[0]:void 0}function ug(t,n){var o=-1,r=Xt(t)?Array(t.length):[];return Oo(t,function(l,a,s){r[++o]=n(l,a,s)}),r}function Ja(t,n){var o=He(t)?ht:ug;return o(t,Le(n))}function SM(t,n){return Vt(Ja(t,n),1)}var EM=1/0;function NM(t,n){return Vt(Ja(t,n),EM)}function $M(t,n,o){return o=o===void 0?1:je(o),Vt(Ja(t,n),o)}var BM=1/0;function pg(t){var n=t==null?0:t.length;return n?Vt(t,BM):[]}function _M(t,n){var o=t==null?0:t.length;return o?(n=n===void 0?1:je(n),Vt(t,n)):[]}var vM=512;function TM(t){return io(t,vM)}var VM=rc("floor"),MM="Expected a function",RM=8,IM=32,PM=128,AM=256;function mg(t){return po(function(n){var o=n.length,r=o,l=yn.prototype.thru;for(t&&n.reverse();r--;){var a=n[r];if(typeof a!="function")throw new TypeError(MM);if(l&&!s&&Pa(a)=="wrapper")var s=new yn([],!0)}for(r=s?r:o;++rn}function es(t){return function(n,o){return typeof n=="string"&&typeof o=="string"||(n=gn(n),o=gn(o)),t(n,o)}}var GM=es(vc),qM=es(function(t,n){return t>=n}),YM=Object.prototype,XM=YM.hasOwnProperty;function ZM(t,n){return t!=null&&XM.call(t,n)}function JM(t,n){return t!=null&&zh(t,n,ZM)}var QM=Math.max,e3=Math.min;function t3(t,n,o){return t>=e3(n,o)&&t-1:!!l&&Ar(t,n,o)>-1}var a3=Math.max;function s3(t,n,o){var r=t==null?0:t.length;if(!r)return-1;var l=o==null?0:je(o);return l<0&&(l=a3(r+l,0)),Ar(t,n,l)}function i3(t){var n=t==null?0:t.length;return n?wn(t,0,-1):[]}var c3=Math.min;function Vc(t,n,o){for(var r=o?$c:za,l=t[0].length,a=t.length,s=a,i=Array(a),c=1/0,d=[];s--;){var f=t[s];s&&n&&(f=ht(f,cn(n))),c=c3(f.length,c),i[s]=!o&&(n||l>=120&&f.length>=120)?new ur(s&&f):void 0}f=t[0];var u=-1,p=i[0];e:for(;++u=-Eg&&t<=Eg}function X3(t){return t===void 0}var Z3="[object WeakMap]";function J3(t){return bt(t)&&Hn(t)==Z3}var Q3="[object WeakSet]";function e4(t){return bt(t)&&Ft(t)==Q3}var t4=1;function n4(t){return Le(typeof t=="function"?t:kn(t,t4))}var o4=Array.prototype,r4=o4.join;function l4(t,n){return t==null?"":r4.call(t,n)}var a4=xr(function(t,n,o){return t+(o?"-":"")+n.toLowerCase()}),s4=qa(function(t,n,o){co(t,o,n)});function i4(t,n,o){for(var r=o+1;r--;)if(t[r]===n)return r;return r}var c4=Math.max,d4=Math.min;function f4(t,n,o){var r=t==null?0:t.length;if(!r)return-1;var l=r;return o!==void 0&&(l=je(o),l=l<0?c4(r+l,0):d4(l,r-1)),n===n?i4(t,n,l):Oa(t,Qp,l,!0)}var u4=xr(function(t,n,o){return t+(o?" ":"")+n.toLowerCase()}),p4=Om("toLowerCase");function Ic(t,n){return t=this.__values__.length,n=t?void 0:this.__values__[this.__index__++];return{done:t,value:n}}function _g(t,n){var o=t.length;if(!!o)return n+=n<0?o:0,so(n,o)?t[n]:void 0}function D4(t,n){return t&&t.length?_g(t,je(n)):void 0}function L4(t){return t=je(t),Ge(function(n){return _g(n,t)})}function Oc(t,n){return n=Ro(n,t),t=yg(t,n),t==null||delete t[xn(dn(n))]}function F4(t){return Rl(t)?void 0:t}var x4=1,H4=2,K4=4,W4=po(function(t,n){var o={};if(t==null)return o;var r=!1;n=ht(n,function(a){return a=Ro(a,t),r||(r=a.length>1),a}),Fn(t,ic(t),o),r&&(o=kn(o,x4|H4|K4,F4));for(var l=n.length;l--;)Oc(o,n[l]);return o});function Dl(t,n,o,r){if(!gt(t))return t;n=Ro(n,t);for(var l=-1,a=n.length,s=a-1,i=t;i!=null&&++ln||a&&s&&c&&!i&&!d||r&&s&&c||!o&&c||!l)return 1;if(!r&&!a&&!d&&t=i)return c;var d=o[r];return c*(d=="desc"?-1:1)}}return t.index-n.index}function Mg(t,n,o){n.length?n=ht(n,function(a){return He(a)?function(s){return ir(s,a.length===1?a[0]:a)}:a}):n=[xt];var r=-1;n=ht(n,cn(Le));var l=ug(t,function(a,s,i){var c=ht(n,function(d){return d(a)});return{criteria:c,index:++r,value:a}});return G4(l,function(a,s){return q4(a,s,o)})}function Y4(t,n,o,r){return t==null?[]:(He(n)||(n=n==null?[]:[n]),o=r?void 0:o,He(o)||(o=o==null?[]:[o]),Mg(t,n,o))}function zc(t){return po(function(n){return n=ht(n,cn(Le)),Ge(function(o){var r=this;return t(n,function(l){return sn(l,r,o)})})})}var X4=zc(ht),Z4=Ge,J4=Math.min,Q4=Z4(function(t,n){n=n.length==1&&He(n[0])?ht(n[0],cn(Le)):ht(Vt(n,1),cn(Le));var o=n.length;return Ge(function(r){for(var l=-1,a=J4(r.length,o);++lnR)return o;do n%2&&(o+=t),n=oR(n/2),n&&(t+=t);while(n);return o}var rR=Cc("length"),Rg="\\ud800-\\udfff",lR="\\u0300-\\u036f",aR="\\ufe20-\\ufe2f",sR="\\u20d0-\\u20ff",iR=lR+aR+sR,cR="\\ufe0e\\ufe0f",dR="["+Rg+"]",Lc="["+iR+"]",Fc="\\ud83c[\\udffb-\\udfff]",fR="(?:"+Lc+"|"+Fc+")",Ig="[^"+Rg+"]",Pg="(?:\\ud83c[\\udde6-\\uddff]){2}",Ag="[\\ud800-\\udbff][\\udc00-\\udfff]",uR="\\u200d",Og=fR+"?",zg="["+cR+"]?",pR="(?:"+uR+"(?:"+[Ig,Pg,Ag].join("|")+")"+zg+Og+")*",mR=zg+Og+pR,hR="(?:"+[Ig+Lc+"?",Lc,Pg,Ag,dR].join("|")+")",Dg=RegExp(Fc+"(?="+Fc+")|"+hR+mR,"g");function gR(t){for(var n=Dg.lastIndex=0;Dg.test(t);)++n;return n}function Wr(t){return Lr(t)?gR(t):rR(t)}var yR=Math.ceil;function os(t,n){n=n===void 0?" ":an(n);var o=n.length;if(o<2)return o?Dc(n,t):n;var r=Dc(n,yR(t/Wr(n)));return Lr(n)?Po(Vn(r),0,t).join(""):r.slice(0,t)}var bR=Math.ceil,CR=Math.floor;function wR(t,n,o){t=Qe(t),n=je(n);var r=n?Wr(t):0;if(!n||r>=n)return t;var l=(n-r)/2;return os(CR(l),o)+t+os(bR(l),o)}function kR(t,n,o){t=Qe(t),n=je(n);var r=n?Wr(t):0;return n&&r-1;)i!==t&&Lg.call(i,c,1),Lg.call(t,c,1);return t}function Fg(t,n){return t&&t.length&&n&&n.length?Hc(t,n):t}var PR=Ge(Fg);function AR(t,n,o){return t&&t.length&&n&&n.length?Hc(t,n,Le(o)):t}function OR(t,n,o){return t&&t.length&&n&&n.length?Hc(t,n,void 0,o):t}var zR=Array.prototype,DR=zR.splice;function xg(t,n){for(var o=t?n.length:0,r=o-1;o--;){var l=n[o];if(o==r||l!==a){var a=l;so(l)?DR.call(t,l,1):Oc(t,l)}}return t}var LR=po(function(t,n){var o=t==null?0:t.length,r=Xi(t,n);return xg(t,ht(n,function(l){return so(l,o)?+l:l}).sort(Vg)),r}),FR=Math.floor,xR=Math.random;function Kc(t,n){return t+FR(xR()*(n-t+1))}var HR=parseFloat,KR=Math.min,WR=Math.random;function jR(t,n,o){if(o&&typeof o!="boolean"&&Ht(t,n,o)&&(n=o=void 0),o===void 0&&(typeof n=="boolean"?(o=n,n=void 0):typeof t=="boolean"&&(o=t,t=void 0)),t===void 0&&n===void 0?(t=0,n=1):(t=lo(t),n===void 0?(n=t,t=0):n=lo(n)),t>n){var r=t;t=n,n=r}if(o||t%1||n%1){var l=WR();return KR(t+l*(n-t+HR("1e-"+((l+"").length-1))),n)}return Kc(t,n)}var UR=Math.ceil,GR=Math.max;function qR(t,n,o,r){for(var l=-1,a=GR(UR((n-t)/(o||1)),0),s=Array(a);a--;)s[r?a:++l]=t,t+=o;return s}function Hg(t){return function(n,o,r){return r&&typeof r!="number"&&Ht(n,o,r)&&(o=r=void 0),n=lo(n),o===void 0?(o=n,n=0):o=lo(o),r=r===void 0?n1&&Ht(t,n[0],n[1])?n=[]:o>2&&Ht(n[0],n[1],n[2])&&(n=[n[0]]),Mg(t,Vt(n,1),[])}),TI=4294967295,VI=TI-1,MI=Math.floor,RI=Math.min;function jc(t,n,o,r){var l=0,a=t==null?0:t.length;if(a===0)return 0;n=o(n);for(var s=n!==n,i=n===null,c=ln(n),d=n===void 0;l>>1;function as(t,n,o){var r=0,l=t==null?r:t.length;if(typeof n=="number"&&n===n&&l<=PI){for(;r>>1,s=t[a];s!==null&&!ln(s)&&(o?s<=n:s>>0,o?(t=Qe(t),t&&(typeof n=="string"||n!=null&&!Rc(n))&&(n=an(n),!n&&Lr(t))?Po(Vn(t),0,o):t.split(n,o)):[]}var jI="Expected a function",UI=Math.max;function GI(t,n){if(typeof t!="function")throw new TypeError(jI);return n=n==null?0:UI(je(n),0),Ge(function(o){var r=o[n],l=Po(o,0,n);return r&&Io(l,r),sn(t,this,l)})}var qI=xr(function(t,n,o){return t+(o?" ":"")+tc(n)});function YI(t,n,o){return t=Qe(t),o=o==null?0:dr(je(o),0,t.length),n=an(n),t.slice(o,o+n.length)==n}function XI(){return{}}function ZI(){return""}function JI(){return!0}var QI=Va(function(t,n){return t-n},0);function eP(t){return t&&t.length?Pc(t,xt):0}function tP(t,n){return t&&t.length?Pc(t,Le(n)):0}function nP(t){var n=t==null?0:t.length;return n?wn(t,1,n):[]}function oP(t,n,o){return t&&t.length?(n=o||n===void 0?1:je(n),wn(t,0,n<0?0:n)):[]}function rP(t,n,o){var r=t==null?0:t.length;return r?(n=o||n===void 0?1:je(n),n=r-n,wn(t,n<0?0:n,r)):[]}function lP(t,n){return t&&t.length?Za(t,Le(n),!1,!0):[]}function aP(t,n){return t&&t.length?Za(t,Le(n)):[]}function sP(t,n){return n(t),t}var Gg=Object.prototype,iP=Gg.hasOwnProperty;function qg(t,n,o,r){return t===void 0||Tn(t,Gg[o])&&!iP.call(r,o)?n:t}var cP={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"};function dP(t){return"\\"+cP[t]}var Yg=/<%=([\s\S]+?)%>/g,fP=/<%-([\s\S]+?)%>/g,uP=/<%([\s\S]+?)%>/g,Uc={escape:fP,evaluate:uP,interpolate:Yg,variable:"",imports:{_:{escape:ng}}},pP="Invalid `variable` option passed into `_.template`",mP=/\b__p \+= '';/g,hP=/\b(__p \+=) '' \+/g,gP=/(__e\(.*?\)|\b__t\)) \+\n'';/g,yP=/[()=,{}\[\]\/\s]/,bP=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ss=/($^)/,CP=/['\n\r\u2028\u2029\\]/g,wP=Object.prototype,Xg=wP.hasOwnProperty;function kP(t,n,o){var r=Uc.imports._.templateSettings||Uc;o&&Ht(t,n,o)&&(n=void 0),t=Qe(t),n=Fa({},n,r,qg);var l=Fa({},n.imports,r.imports,qg),a=kt(l),s=Tc(l,a),i,c,d=0,f=n.interpolate||ss,u="__p += '",p=RegExp((n.escape||ss).source+"|"+f.source+"|"+(f===Yg?bP:ss).source+"|"+(n.evaluate||ss).source+"|$","g"),m=Xg.call(n,"sourceURL")?"//# sourceURL="+(n.sourceURL+"").replace(/\s/g," ")+` +`:"";t.replace(p,function(b,y,w,C,k,E){return w||(w=C),u+=t.slice(d,E).replace(CP,dP),y&&(i=!0,u+=`' + +__e(`+y+`) + +'`),k&&(c=!0,u+=`'; +`+k+`; +__p += '`),w&&(u+=`' + +((__t = (`+w+`)) == null ? '' : __t) + +'`),d=E+b.length,b}),u+=`'; +`;var g=Xg.call(n,"variable")&&n.variable;if(!g)u=`with (obj) { +`+u+` +} +`;else if(yP.test(g))throw new Error(pP);u=(c?u.replace(mP,""):u).replace(hP,"$1").replace(gP,"$1;"),u="function("+(g||"obj")+`) { +`+(g?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(i?", __e = _.escape":"")+(c?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+u+`return __p +}`;var h=vm(function(){return Function(a,m+"return "+u).apply(void 0,s)});if(h.source=u,Zi(h))throw h;return h}var SP="Expected a function";function zo(t,n,o){var r=!0,l=!0;if(typeof t!="function")throw new TypeError(SP);return gt(o)&&(r="leading"in o?!!o.leading:r,l="trailing"in o?!!o.trailing:l),Dt(t,n,{leading:r,maxWait:n,trailing:l})}function Ll(t,n){return n(t)}var EP=9007199254740991,Gc=4294967295,NP=Math.min;function $P(t,n){if(t=je(t),t<1||t>EP)return[];var o=Gc,r=NP(t,Gc);n=Wn(n),t-=Gc;for(var l=ji(r,n);++o-1;);return o}function e0(t,n){for(var o=-1,r=t.length;++o-1;);return o}function RP(t,n,o){if(t=Qe(t),t&&(o||n===void 0))return xp(t);if(!t||!(n=an(n)))return t;var r=Vn(t),l=Vn(n),a=e0(r,l),s=Qg(r,l)+1;return Po(r,a,s).join("")}function IP(t,n,o){if(t=Qe(t),t&&(o||n===void 0))return t.slice(0,Fp(t)+1);if(!t||!(n=an(n)))return t;var r=Vn(t),l=Qg(r,Vn(n))+1;return Po(r,0,l).join("")}var PP=/^\s+/;function AP(t,n,o){if(t=Qe(t),t&&(o||n===void 0))return t.replace(PP,"");if(!t||!(n=an(n)))return t;var r=Vn(t),l=e0(r,Vn(n));return Po(r,l).join("")}var OP=30,zP="...",DP=/\w*$/;function LP(t,n){var o=OP,r=zP;if(gt(n)){var l="separator"in n?n.separator:l;o="length"in n?je(n.length):o,r="omission"in n?an(n.omission):r}t=Qe(t);var a=t.length;if(Lr(t)){var s=Vn(t);a=s.length}if(o>=a)return t;var i=o-Wr(r);if(i<1)return r;var c=s?Po(s,0,i).join(""):t.slice(0,i);if(l===void 0)return c+r;if(s&&(i+=c.length-i),Rc(l)){if(t.slice(i).search(l)){var d,f=c;for(l.global||(l=RegExp(l.source,Qe(DP.exec(l))+"g")),l.lastIndex=0;d=l.exec(f);)var u=d.index;c=c.slice(0,u===void 0?i:u)}}else if(t.indexOf(an(l),i)!=i){var p=c.lastIndexOf(l);p>-1&&(c=c.slice(0,p))}return c+r}function FP(t){return fm(t,1)}var xP={"&":"&","<":"<",">":">",""":'"',"'":"'"},HP=oc(xP),t0=/&(?:amp|lt|gt|quot|#39);/g,KP=RegExp(t0.source);function WP(t){return t=Qe(t),t&&KP.test(t)?t.replace(t0,HP):t}var jP=1/0,UP=Hr&&1/Ua(new Hr([,-0]))[1]==jP?function(t){return new Hr(t)}:Oi,GP=200;function Do(t,n,o){var r=-1,l=za,a=t.length,s=!0,i=[],c=i;if(o)s=!1,l=$c;else if(a>=GP){var d=n?null:UP(t);if(d)return Ua(d);s=!1,l=Il,c=new ur}else c=n?[]:i;e:for(;++r1||this.__actions__.length||!(r instanceof qe)||!so(o)?this.thru(l):(r=r.slice(o,+o+(n?1:0)),r.__actions__.push({func:Ll,args:[l],thisArg:void 0}),new yn(r,this.__chain__).thru(function(a){return n&&!a.length&&a.push(void 0),a}))});function dA(){return oh(this)}function fA(){var t=this.__wrapped__;if(t instanceof qe){var n=t;return this.__actions__.length&&(n=new qe(this)),n=n.reverse(),n.__actions__.push({func:Ll,args:[Wc],thisArg:void 0}),new yn(n,this.__chain__)}return this.thru(Wc)}function Xc(t,n,o){var r=t.length;if(r<2)return r?Do(t[0]):[];for(var l=-1,a=Array(r);++l1?t[n-1]:void 0;return o=typeof o=="function"?(t.pop(),o):void 0,n0(t,o)}),Be={chunk:rv,compact:DT,concat:LT,difference:WV,differenceBy:jV,differenceWith:UV,drop:qV,dropRight:YV,dropRightWhile:XV,dropWhile:ZV,fill:pM,findIndex:ig,findLastIndex:dg,first:fg,flatten:Bm,flattenDeep:pg,flattenDepth:_M,fromPairs:_c,head:fg,indexOf:s3,initial:i3,intersection:d3,intersectionBy:f3,intersectionWith:u3,join:l4,last:dn,lastIndexOf:f4,nth:D4,pull:PR,pullAll:Fg,pullAllBy:AR,pullAllWith:OR,pullAt:LR,remove:oI,reverse:Wc,slice:NI,sortedIndex:AI,sortedIndexBy:OI,sortedIndexOf:zI,sortedLastIndex:DI,sortedLastIndexBy:LI,sortedLastIndexOf:FI,sortedUniq:xI,sortedUniqBy:HI,tail:nP,take:oP,takeRight:rP,takeRightWhile:lP,takeWhile:aP,union:is,unionBy:qP,unionWith:YP,uniq:XP,uniqBy:ZP,uniqWith:JP,unzip:Yc,unzipWith:n0,without:sA,xor:uA,xorBy:pA,xorWith:mA,zip:hA,zipObject:gA,zipObjectDeep:yA,zipWith:bA},lt={countBy:vV,each:qh,eachRight:Zh,every:dM,filter:mM,find:gM,findLast:wM,flatMap:SM,flatMapDeep:NM,flatMapDepth:$M,forEach:qh,forEachRight:Zh,groupBy:UM,includes:l3,invokeMap:k3,keyBy:s4,map:Ja,orderBy:Y4,partition:vR,reduce:QR,reduceRight:tI,reject:nI,sample:pI,sampleSize:gI,shuffle:wI,size:EI,some:_I,sortBy:vI},CA={now:Ya},Ct={after:x2,ary:fm,before:Tm,bind:Wa,bindKey:Ji,curry:kc,curryRight:Sc,debounce:Dt,defer:xV,delay:HV,flip:TM,memoize:Ml,negate:zl,once:U4,overArgs:Q4,partial:rs,partialRight:xc,rearg:JR,rest:sI,spread:GI,throttle:zo,unary:FP,wrap:iA},Ie={castArray:cr,clone:uc,cloneDeep:MT,cloneDeepWith:PT,cloneWith:OT,conformsTo:EV,eq:Tn,gt:GM,gte:qM,isArguments:ar,isArray:He,isArrayBuffer:N3,isArrayLike:Xt,isArrayLikeObject:wt,isBoolean:B3,isBuffer:Mo,isDate:T3,isElement:V3,isEmpty:A3,isEqual:Jt,isEqualWith:O3,isError:Zi,isFinite:D3,isFunction:ao,isInteger:wg,isLength:La,isMap:Eh,isMatch:L3,isMatchWith:F3,isNaN:H3,isNative:j3,isNil:Qt,isNull:U3,isNumber:kg,isObject:gt,isObjectLike:bt,isPlainObject:Rl,isRegExp:Rc,isSafeInteger:Y3,isSet:$h,isString:ts,isSymbol:ln,isTypedArray:Dr,isUndefined:X3,isWeakMap:J3,isWeakSet:e4,lt:m4,lte:h4,toArray:Bg,toFinite:lo,toInteger:je,toLength:lg,toNumber:gn,toPlainObject:Wh,toSafeInteger:TP,toString:Qe},Kt={add:R2,ceil:tv,divide:GV,floor:VM,max:S4,maxBy:E4,mean:$4,meanBy:B4,min:V4,minBy:M4,multiply:R4,round:fI,subtract:QI,sum:eP,sumBy:tP},Zc={clamp:lv,inRange:n3,random:jR},De={assign:U$,assignIn:Em,assignInWith:Fa,assignWith:Z$,at:MB,create:TV,defaults:zV,defaultsDeep:LV,entries:Qh,entriesIn:eg,extend:Em,extendWith:Fa,findKey:yM,findLastKey:kM,forIn:DM,forInRight:LM,forOwn:FM,forOwnRight:xM,functions:HM,functionsIn:KM,get:et,has:JM,hasIn:bc,invert:g3,invertBy:C3,invoke:w3,keys:kt,keysIn:Zt,mapKeys:g4,mapValues:y4,merge:_4,mergeWith:Uh,omit:W4,omitBy:j4,pick:mo,pickBy:Tg,result:iI,set:jg,setWith:yI,toPairs:Qh,toPairsIn:eg,transform:MP,unset:tA,update:oA,updateWith:rA,values:Kr,valuesIn:aA},jn={at:cA,chain:oh,commit:zT,lodash:O,next:z4,plant:VR,reverse:fA,tap:sP,thru:Ll,toIterator:BP,toJSON:qc,value:qc,valueOf:qc,wrapperChain:dA},Ze={camelCase:J_,capitalize:zm,deburr:Dm,endsWith:QV,escape:ng,escapeRegExp:iM,kebabCase:a4,lowerCase:u4,lowerFirst:p4,pad:wR,padEnd:kR,padStart:SR,parseInt:$R,repeat:rI,replace:lI,snakeCase:$I,split:WI,startCase:qI,startsWith:YI,template:kP,templateSettings:Uc,toLower:_P,toUpper:VP,trim:RP,trimEnd:IP,trimStart:AP,truncate:LP,unescape:WP,upperCase:lA,upperFirst:tc,words:nh},tt={attempt:vm,bindAll:HB,cond:CV,conforms:SV,constant:Li,defaultTo:AV,flow:OM,flowRight:zM,identity:xt,iteratee:n4,matches:C4,matchesProperty:k4,method:v4,methodOf:T4,mixin:$g,noop:Oi,nthArg:L4,over:X4,overEvery:eR,overSome:tR,property:Lh,propertyOf:MR,range:YR,rangeRight:XR,stubArray:lc,stubFalse:Ui,stubObject:XI,stubString:ZI,stubTrue:JI,times:$P,toPath:vP,uniqueId:eA};function wA(){var t=new qe(this.__wrapped__);return t.__actions__=Yt(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Yt(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Yt(this.__views__),t}function kA(){if(this.__filtered__){var t=new qe(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}var SA=Math.max,EA=Math.min;function NA(t,n,o){for(var r=-1,l=o.length;++r0||n<0)?new qe(o):(t<0?o=o.takeRight(-t):t&&(o=o.drop(t)),n!==void 0&&(n=je(n),o=n<0?o.dropRight(-n):o.take(n-t)),o)},qe.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},qe.prototype.toArray=function(){return this.take(l0)},Kn(qe.prototype,function(t,n){var o=/^(?:filter|find|map|reject)|While$/.test(n),r=/^(?:head|last)$/.test(n),l=O[r?"take"+(n=="last"?"Right":""):n],a=r||/^find/.test(n);!l||(O.prototype[n]=function(){var s=this.__wrapped__,i=r?[1]:arguments,c=s instanceof qe,d=i[0],f=c||He(s),u=function(y){var w=l.apply(O,Io([y],i));return r&&p?w[0]:w};f&&o&&typeof d=="function"&&d.length!=1&&(c=f=!1);var p=this.__chain__,m=!!this.__actions__.length,g=a&&!p,h=c&&!m;if(!a&&f){s=h?s:new qe(this);var b=t.apply(s,i);return b.__actions__.push({func:Ll,args:[u],thisArg:void 0}),new yn(b,p)}return g&&h?t.apply(this,i):(b=this.thru(u),g?r?b.value()[0]:b.value():b)})}),bn(["pop","push","shift","sort","splice","unshift"],function(t){var n=IA[t],o=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);O.prototype[t]=function(){var l=arguments;if(r&&!this.__chain__){var a=this.value();return n.apply(He(a)?a:[],l)}return this[o](function(s){return n.apply(He(s)?s:[],l)})}}),Kn(qe.prototype,function(t,n){var o=O[n];if(o){var r=o.name+"";a0.call(Pr,r)||(Pr[r]=[]),Pr[r].push({name:n,func:o})}}),Pr[Da(void 0,VA).name]=[{name:"wrapper",func:void 0}],qe.prototype.clone=wA,qe.prototype.reverse=kA,qe.prototype.value=vA,O.prototype.at=jn.at,O.prototype.chain=jn.wrapperChain,O.prototype.commit=jn.commit,O.prototype.next=jn.next,O.prototype.plant=jn.plant,O.prototype.reverse=jn.reverse,O.prototype.toJSON=O.prototype.valueOf=O.prototype.value=jn.value,O.prototype.first=O.prototype.head,s0&&(O.prototype[s0]=jn.toIterator);/** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */const OA='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',zA=t=>getComputedStyle(t).position==="fixed"?!1:t.offsetParent!==null,c0=t=>Array.from(t.querySelectorAll(OA)).filter(n=>DA(n)&&zA(n)),DA=t=>{if(t.tabIndex>0||t.tabIndex===0&&t.getAttribute("tabIndex")!==null)return!0;if(t.disabled)return!1;switch(t.nodeName){case"A":return!!t.href&&t.rel!=="ignore";case"INPUT":return!(t.type==="hidden"||t.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},cs=function(t,n,...o){let r;n.includes("mouse")||n.includes("click")?r="MouseEvents":n.includes("key")?r="KeyboardEvent":r="HTMLEvents";const l=document.createEvent(r);return l.initEvent(n,...o),t.dispatchEvent(l),t},d0=t=>!t.getAttribute("aria-owns"),f0=(t,n,o)=>{const{parentNode:r}=t;if(!r)return null;const l=r.querySelectorAll(o),a=Array.prototype.indexOf.call(l,t);return l[a+n]||null},ds=t=>{!t||(t.focus(),!d0(t)&&t.click())},ft=(t,n,{checkForDefaultPrevented:o=!0}={})=>l=>{const a=t==null?void 0:t(l);if(o===!1||!a)return n==null?void 0:n(l)},u0=t=>n=>n.pointerType==="mouse"?t(n):void 0;var LA=Object.defineProperty,FA=Object.defineProperties,xA=Object.getOwnPropertyDescriptors,p0=Object.getOwnPropertySymbols,HA=Object.prototype.hasOwnProperty,KA=Object.prototype.propertyIsEnumerable,m0=(t,n,o)=>n in t?LA(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,WA=(t,n)=>{for(var o in n||(n={}))HA.call(n,o)&&m0(t,o,n[o]);if(p0)for(var o of p0(n))KA.call(n,o)&&m0(t,o,n[o]);return t},jA=(t,n)=>FA(t,xA(n));function h0(t,n){var o;const r=e.shallowRef();return e.watchEffect(()=>{r.value=t()},jA(WA({},n),{flush:(o=n==null?void 0:n.flush)!=null?o:"sync"})),e.readonly(r)}function fs(t){return e.getCurrentScope()?(e.onScopeDispose(t),!0):!1}var g0;const Oe=typeof window!="undefined",UA=t=>typeof t!="undefined",St=t=>typeof t=="boolean",Ne=t=>typeof t=="number",GA=t=>typeof t=="string",Qc=()=>{};Oe&&((g0=window==null?void 0:window.navigator)==null?void 0:g0.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function y0(t,n){function o(...r){t(()=>n.apply(this,r),{fn:n,thisArg:this,args:r})}return o}function qA(t,n={}){let o,r;return a=>{const s=e.unref(t),i=e.unref(n.maxWait);if(o&&clearTimeout(o),s<=0||i!==void 0&&i<=0)return r&&(clearTimeout(r),r=null),a();i&&!r&&(r=setTimeout(()=>{o&&clearTimeout(o),r=null,a()},i)),o=setTimeout(()=>{r&&clearTimeout(r),r=null,a()},s)}}function YA(t,n=!0,o=!0){let r=0,l,a=!0;const s=()=>{l&&(clearTimeout(l),l=void 0)};return c=>{const d=e.unref(t),f=Date.now()-r;if(s(),d<=0)return r=Date.now(),c();f>d&&(o||!a)?(r=Date.now(),c()):n&&(l=setTimeout(()=>{r=Date.now(),a=!0,s(),c()},d)),!o&&!l&&(l=setTimeout(()=>a=!0,d)),a=!1}}function XA(t,n=200,o={}){return y0(qA(n,o),t)}function ZA(t,n=200,o={}){if(n<=0)return t;const r=e.ref(t.value),l=XA(()=>{r.value=t.value},n,o);return e.watch(t,()=>l()),r}function b0(t,n=200,o=!0,r=!0){return y0(YA(n,o,r),t)}function C0(t,n=!0){e.getCurrentInstance()?e.onMounted(t):n?t():e.nextTick(t)}function pr(t,n,o={}){const{immediate:r=!0}=o,l=e.ref(!1);let a=null;function s(){a&&(clearTimeout(a),a=null)}function i(){l.value=!1,s()}function c(...d){s(),l.value=!0,a=setTimeout(()=>{l.value=!1,a=null,t(...d)},e.unref(n))}return r&&(l.value=!0,Oe&&c()),fs(i),{isPending:l,start:c,stop:i}}function Rn(t){var n;const o=e.unref(t);return(n=o==null?void 0:o.$el)!=null?n:o}const Fl=Oe?window:void 0,JA=Oe?window.document:void 0;function nt(...t){let n,o,r,l;if(GA(t[0])?([o,r,l]=t,n=Fl):[n,o,r,l]=t,!n)return Qc;let a=Qc;const s=e.watch(()=>Rn(n),c=>{a(),c&&(c.addEventListener(o,r,l),a=()=>{c.removeEventListener(o,r,l),a=Qc})},{immediate:!0,flush:"post"}),i=()=>{s(),a()};return fs(i),i}function ed(t,n,o={}){const{window:r=Fl,ignore:l,capture:a=!0}=o;if(!r)return;const s=e.ref(!0);let i;const c=u=>{r.clearTimeout(i);const p=Rn(t),m=u.composedPath();!p||p===u.target||m.includes(p)||!s.value||l&&l.length>0&&l.some(g=>{const h=Rn(g);return h&&(u.target===h||m.includes(h))})||n(u)},d=[nt(r,"click",c,{passive:!0,capture:a}),nt(r,"pointerdown",u=>{const p=Rn(t);s.value=!!p&&!u.composedPath().includes(p)},{passive:!0}),nt(r,"pointerup",u=>{if(u.button===0){const p=u.composedPath();u.composedPath=()=>p,i=r.setTimeout(()=>c(u),50)}},{passive:!0})];return()=>d.forEach(u=>u())}const td=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},nd="__vueuse_ssr_handlers__";td[nd]=td[nd]||{},td[nd];function QA({document:t=JA}={}){if(!t)return e.ref("visible");const n=e.ref(t.visibilityState);return nt(t,"visibilitychange",()=>{n.value=t.visibilityState}),n}var w0=Object.getOwnPropertySymbols,eO=Object.prototype.hasOwnProperty,tO=Object.prototype.propertyIsEnumerable,nO=(t,n)=>{var o={};for(var r in t)eO.call(t,r)&&n.indexOf(r)<0&&(o[r]=t[r]);if(t!=null&&w0)for(var r of w0(t))n.indexOf(r)<0&&tO.call(t,r)&&(o[r]=t[r]);return o};function Wt(t,n,o={}){const r=o,{window:l=Fl}=r,a=nO(r,["window"]);let s;const i=l&&"ResizeObserver"in l,c=()=>{s&&(s.disconnect(),s=void 0)},d=e.watch(()=>Rn(t),u=>{c(),i&&l&&u&&(s=new ResizeObserver(n),s.observe(u,a))},{immediate:!0,flush:"post"}),f=()=>{c(),d()};return fs(f),{isSupported:i,stop:f}}function k0(t,n={}){const{reset:o=!0,windowResize:r=!0,windowScroll:l=!0,immediate:a=!0}=n,s=e.ref(0),i=e.ref(0),c=e.ref(0),d=e.ref(0),f=e.ref(0),u=e.ref(0),p=e.ref(0),m=e.ref(0);function g(){const h=Rn(t);if(!h){o&&(s.value=0,i.value=0,c.value=0,d.value=0,f.value=0,u.value=0,p.value=0,m.value=0);return}const b=h.getBoundingClientRect();s.value=b.height,i.value=b.bottom,c.value=b.left,d.value=b.right,f.value=b.top,u.value=b.width,p.value=b.x,m.value=b.y}return Wt(t,g),e.watch(()=>Rn(t),h=>!h&&g()),l&&nt("scroll",g,{passive:!0}),r&&nt("resize",g,{passive:!0}),C0(()=>{a&&g()}),{height:s,bottom:i,left:c,right:d,top:f,width:u,x:p,y:m,update:g}}var S0;(function(t){t.UP="UP",t.RIGHT="RIGHT",t.DOWN="DOWN",t.LEFT="LEFT",t.NONE="NONE"})(S0||(S0={}));function oO(t,n,o,r={}){var l;const{passive:a=!1,eventName:s,deep:i=!1,defaultValue:c}=r,d=e.getCurrentInstance(),f=o||(d==null?void 0:d.emit)||((l=d==null?void 0:d.$emit)==null?void 0:l.bind(d));let u=s;n||(n="modelValue"),u=s||u||`update:${n.toString()}`;const p=()=>UA(t[n])?t[n]:c;if(a){const m=e.ref(p());return e.watch(()=>t[n],g=>m.value=g),e.watch(m,g=>{(g!==t[n]||i)&&f(u,g)},{deep:i}),m}else return e.computed({get(){return p()},set(m){f(u,m)}})}function rO({window:t=Fl}={}){if(!t)return e.ref(!1);const n=e.ref(t.document.hasFocus());return nt(t,"blur",()=>{n.value=!1}),nt(t,"focus",()=>{n.value=!0}),n}function lO({window:t=Fl,initialWidth:n=1/0,initialHeight:o=1/0}={}){const r=e.ref(n),l=e.ref(o),a=()=>{t&&(r.value=t.innerWidth,l.value=t.innerHeight)};return a(),C0(a),nt("resize",a,{passive:!0}),{width:r,height:l}}const aO=(t,n)=>{if(!Oe||!t||!n)return!1;const o=t.getBoundingClientRect();let r;return n instanceof Element?r=n.getBoundingClientRect():r={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},o.topr.top&&o.right>r.left&&o.left{let n=0,o=t;for(;o;)n+=o.offsetTop,o=o.offsetParent;return n},sO=(t,n)=>Math.abs(E0(t)-E0(n)),od=t=>{let n,o;return t.type==="touchend"?(o=t.changedTouches[0].clientY,n=t.changedTouches[0].clientX):t.type.startsWith("touch")?(o=t.touches[0].clientY,n=t.touches[0].clientX):(o=t.clientY,n=t.clientX),{clientX:n,clientY:o}},Xe=()=>{},iO=Object.prototype.hasOwnProperty,Mt=(t,n)=>iO.call(t,n),Ae=Array.isArray,xl=t=>ld(t)==="[object Date]",ot=t=>typeof t=="function",Fe=t=>typeof t=="string",it=t=>t!==null&&typeof t=="object",rd=t=>it(t)&&ot(t.then)&&ot(t.catch),cO=Object.prototype.toString,ld=t=>cO.call(t),ad=t=>ld(t).slice(8,-1),sd=t=>{const n=Object.create(null);return o=>n[o]||(n[o]=t(o))},dO=/-(\w)/g,N0=sd(t=>t.replace(dO,(n,o)=>o?o.toUpperCase():"")),fO=/\B([A-Z])/g,uO=sd(t=>t.replace(fO,"-$1").toLowerCase()),ho=sd(t=>t.charAt(0).toUpperCase()+t.slice(1)),Rt=t=>t===void 0,Sn=t=>!t&&t!==0||Ae(t)&&t.length===0||it(t)&&!Object.keys(t).length,go=t=>typeof Element=="undefined"?!1:t instanceof Element,pO=t=>Qt(t),mO=(t="")=>t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),Hl=t=>Object.keys(t),hO=t=>Object.entries(t),us=(t,n,o)=>({get value(){return et(t,n,o)},set value(r){jg(t,n,r)}});class gO extends Error{constructor(n){super(n),this.name="ElementPlusError"}}function Et(t,n){throw new gO(`[${t}] ${n}`)}function xee(t,n){}const $0=(t="")=>t.split(" ").filter(n=>!!n.trim()),In=(t,n)=>{if(!t||!n)return!1;if(n.includes(" "))throw new Error("className should not contain space.");return t.classList.contains(n)},Un=(t,n)=>{!t||!n.trim()||t.classList.add(...$0(n))},en=(t,n)=>{!t||!n.trim()||t.classList.remove(...$0(n))},Gn=(t,n)=>{var o;if(!Oe||!t||!n)return"";let r=N0(n);r==="float"&&(r="cssFloat");try{const l=t.style[r];if(l)return l;const a=(o=document.defaultView)==null?void 0:o.getComputedStyle(t,"");return a?a[r]:""}catch(l){return t.style[r]}};function Nt(t,n="px"){if(!t)return"";if(Fe(t))return t;if(Ne(t))return`${t}${n}`}const yO=(t,n)=>{if(!Oe)return!1;const o={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(n)],r=Gn(t,o);return["scroll","auto","overlay"].some(l=>r.includes(l))},id=(t,n)=>{if(!Oe)return;let o=t;for(;o;){if([window,document,document.documentElement].includes(o))return window;if(yO(o,n))return o;o=o.parentNode}return o};let ps;const B0=t=>{var n;if(!Oe)return 0;if(ps!==void 0)return ps;const o=document.createElement("div");o.className=`${t}-scrollbar__wrap`,o.style.visibility="hidden",o.style.width="100px",o.style.position="absolute",o.style.top="-9999px",document.body.appendChild(o);const r=o.offsetWidth;o.style.overflow="scroll";const l=document.createElement("div");l.style.width="100%",o.appendChild(l);const a=l.offsetWidth;return(n=o.parentNode)==null||n.removeChild(o),ps=r-a,ps};function _0(t,n){if(!Oe)return;if(!n){t.scrollTop=0;return}const o=[];let r=n.offsetParent;for(;r!==null&&t!==r&&t.contains(r);)o.push(r),r=r.offsetParent;const l=n.offsetTop+o.reduce((c,d)=>c+d.offsetTop,0),a=l+n.offsetHeight,s=t.scrollTop,i=s+t.clientHeight;li&&(t.scrollTop=a-t.clientHeight)}let bO=Oe?document.body:void 0;function CO(t){const n=document.createElement("div");return t!==void 0&&n.setAttribute("id",t),bO.appendChild(n),n}function wO(t){t.remove()}var Ue=(t,n)=>{let o=t.__vccOpts||t;for(let[r,l]of n)o[r]=l;return o},kO={name:"ArrowDown"},SO={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},EO=e.createElementVNode("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"},null,-1),NO=[EO];function $O(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",SO,NO)}var mr=Ue(kO,[["render",$O],["__file","arrow-down.vue"]]),BO={name:"ArrowLeft"},_O={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},vO=e.createElementVNode("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"},null,-1),TO=[vO];function VO(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",_O,TO)}var Lo=Ue(BO,[["render",VO],["__file","arrow-left.vue"]]),MO={name:"ArrowRight"},RO={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},IO=e.createElementVNode("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"},null,-1),PO=[IO];function AO(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",RO,PO)}var jt=Ue(MO,[["render",AO],["__file","arrow-right.vue"]]),OO={name:"ArrowUp"},zO={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},DO=e.createElementVNode("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0z"},null,-1),LO=[DO];function FO(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",zO,LO)}var Kl=Ue(OO,[["render",FO],["__file","arrow-up.vue"]]),xO={name:"Back"},HO={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},KO=e.createElementVNode("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64z"},null,-1),WO=e.createElementVNode("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312L237.248 512z"},null,-1),jO=[KO,WO];function UO(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",HO,jO)}var GO=Ue(xO,[["render",UO],["__file","back.vue"]]),qO={name:"Calendar"},YO={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},XO=e.createElementVNode("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z"},null,-1),ZO=[XO];function JO(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",YO,ZO)}var QO=Ue(qO,[["render",JO],["__file","calendar.vue"]]),ez={name:"CaretRight"},tz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},nz=e.createElementVNode("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"},null,-1),oz=[nz];function rz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",tz,oz)}var v0=Ue(ez,[["render",rz],["__file","caret-right.vue"]]),lz={name:"CaretTop"},az={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},sz=e.createElementVNode("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"},null,-1),iz=[sz];function cz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",az,iz)}var dz=Ue(lz,[["render",cz],["__file","caret-top.vue"]]),fz={name:"Check"},uz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},pz=e.createElementVNode("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1),mz=[pz];function hz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",uz,mz)}var Wl=Ue(fz,[["render",hz],["__file","check.vue"]]),gz={name:"CircleCheckFilled"},yz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},bz=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),Cz=[bz];function wz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",yz,Cz)}var kz=Ue(gz,[["render",wz],["__file","circle-check-filled.vue"]]),Sz={name:"CircleCheck"},Ez={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Nz=e.createElementVNode("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),$z=e.createElementVNode("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"},null,-1),Bz=[Nz,$z];function _z(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Ez,Bz)}var cd=Ue(Sz,[["render",_z],["__file","circle-check.vue"]]),vz={name:"CircleCloseFilled"},Tz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Vz=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z"},null,-1),Mz=[Vz];function Rz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Tz,Mz)}var dd=Ue(vz,[["render",Rz],["__file","circle-close-filled.vue"]]),Iz={name:"CircleClose"},Pz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Az=e.createElementVNode("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248L466.752 512z"},null,-1),Oz=e.createElementVNode("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),zz=[Az,Oz];function Dz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Pz,zz)}var Fo=Ue(Iz,[["render",Dz],["__file","circle-close.vue"]]),Lz={name:"Clock"},Fz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},xz=e.createElementVNode("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"},null,-1),Hz=e.createElementVNode("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z"},null,-1),Kz=e.createElementVNode("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z"},null,-1),Wz=[xz,Hz,Kz];function jz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Fz,Wz)}var T0=Ue(Lz,[["render",jz],["__file","clock.vue"]]),Uz={name:"Close"},Gz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},qz=e.createElementVNode("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),Yz=[qz];function Xz(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Gz,Yz)}var Pn=Ue(Uz,[["render",Xz],["__file","close.vue"]]),Zz={name:"DArrowLeft"},Jz={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Qz=e.createElementVNode("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"},null,-1),eD=[Qz];function tD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Jz,eD)}var jr=Ue(Zz,[["render",tD],["__file","d-arrow-left.vue"]]),nD={name:"DArrowRight"},oD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},rD=e.createElementVNode("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"},null,-1),lD=[rD];function aD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",oD,lD)}var Ur=Ue(nD,[["render",aD],["__file","d-arrow-right.vue"]]),sD={name:"Delete"},iD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},cD=e.createElementVNode("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"},null,-1),dD=[cD];function fD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",iD,dD)}var uD=Ue(sD,[["render",fD],["__file","delete.vue"]]),pD={name:"Document"},mD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},hD=e.createElementVNode("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1),gD=[hD];function yD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",mD,gD)}var bD=Ue(pD,[["render",yD],["__file","document.vue"]]),CD={name:"FullScreen"},wD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},kD=e.createElementVNode("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64l-192 .192zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64v-.064z"},null,-1),SD=[kD];function ED(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",wD,SD)}var ND=Ue(CD,[["render",ED],["__file","full-screen.vue"]]),$D={name:"Hide"},BD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},_D=e.createElementVNode("path",{d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z",fill:"currentColor"},null,-1),vD=e.createElementVNode("path",{d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z",fill:"currentColor"},null,-1),TD=[_D,vD];function VD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",BD,TD)}var MD=Ue($D,[["render",VD],["__file","hide.vue"]]),RD={name:"InfoFilled"},ID={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},PD=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"},null,-1),AD=[PD];function OD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",ID,AD)}var fd=Ue(RD,[["render",OD],["__file","info-filled.vue"]]),zD={name:"Loading"},DD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},LD=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"},null,-1),FD=[LD];function xD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",DD,FD)}var xo=Ue(zD,[["render",xD],["__file","loading.vue"]]),HD={name:"Minus"},KD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},WD=e.createElementVNode("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z"},null,-1),jD=[WD];function UD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",KD,jD)}var GD=Ue(HD,[["render",UD],["__file","minus.vue"]]),qD={name:"MoreFilled"},YD={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},XD=e.createElementVNode("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z"},null,-1),ZD=[XD];function JD(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",YD,ZD)}var V0=Ue(qD,[["render",JD],["__file","more-filled.vue"]]),QD={name:"More"},eL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},tL=e.createElementVNode("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96z"},null,-1),nL=[tL];function oL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",eL,nL)}var rL=Ue(QD,[["render",oL],["__file","more.vue"]]),lL={name:"PictureFilled"},aL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},sL=e.createElementVNode("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H96zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112zM256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384z"},null,-1),iL=[sL];function cL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",aL,iL)}var dL=Ue(lL,[["render",cL],["__file","picture-filled.vue"]]),fL={name:"Plus"},uL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},pL=e.createElementVNode("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z"},null,-1),mL=[pL];function hL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",uL,mL)}var M0=Ue(fL,[["render",hL],["__file","plus.vue"]]),gL={name:"QuestionFilled"},yL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},bL=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"},null,-1),CL=[bL];function wL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",yL,CL)}var kL=Ue(gL,[["render",wL],["__file","question-filled.vue"]]),SL={name:"RefreshLeft"},EL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},NL=e.createElementVNode("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"},null,-1),$L=[NL];function BL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",EL,$L)}var _L=Ue(SL,[["render",BL],["__file","refresh-left.vue"]]),vL={name:"RefreshRight"},TL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},VL=e.createElementVNode("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"},null,-1),ML=[VL];function RL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",TL,ML)}var IL=Ue(vL,[["render",RL],["__file","refresh-right.vue"]]),PL={name:"ScaleToOriginal"},AL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},OL=e.createElementVNode("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zM512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412zM512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512z"},null,-1),zL=[OL];function DL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",AL,zL)}var LL=Ue(PL,[["render",DL],["__file","scale-to-original.vue"]]),FL={name:"Search"},xL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},HL=e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704z"},null,-1),KL=[HL];function WL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",xL,KL)}var jL=Ue(FL,[["render",WL],["__file","search.vue"]]),UL={name:"SortDown"},GL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},qL=e.createElementVNode("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0z"},null,-1),YL=[qL];function XL(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",GL,YL)}var ZL=Ue(UL,[["render",XL],["__file","sort-down.vue"]]),JL={name:"SortUp"},QL={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},e8=e.createElementVNode("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248z"},null,-1),t8=[e8];function n8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",QL,t8)}var o8=Ue(JL,[["render",n8],["__file","sort-up.vue"]]),r8={name:"StarFilled"},l8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},a8=e.createElementVNode("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"},null,-1),s8=[a8];function i8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",l8,s8)}var ms=Ue(r8,[["render",i8],["__file","star-filled.vue"]]),c8={name:"Star"},d8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},f8=e.createElementVNode("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"},null,-1),u8=[f8];function p8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",d8,u8)}var m8=Ue(c8,[["render",p8],["__file","star.vue"]]),h8={name:"SuccessFilled"},g8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},y8=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z"},null,-1),b8=[y8];function C8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",g8,b8)}var R0=Ue(h8,[["render",C8],["__file","success-filled.vue"]]),w8={name:"View"},k8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},S8=e.createElementVNode("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z"},null,-1),E8=[S8];function N8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",k8,E8)}var $8=Ue(w8,[["render",N8],["__file","view.vue"]]),B8={name:"WarningFilled"},_8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},v8=e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z"},null,-1),T8=[v8];function V8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",_8,T8)}var hs=Ue(B8,[["render",V8],["__file","warning-filled.vue"]]),M8={name:"ZoomIn"},R8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},I8=e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zm-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96z"},null,-1),P8=[I8];function A8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",R8,P8)}var I0=Ue(M8,[["render",A8],["__file","zoom-in.vue"]]),O8={name:"ZoomOut"},z8={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},D8=e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zM352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64z"},null,-1),L8=[D8];function F8(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",z8,L8)}var x8=Ue(O8,[["render",F8],["__file","zoom-out.vue"]]);/*! Element Plus Icons Vue v2.0.6 */const P0="__epPropKey",j=t=>t,H8=t=>it(t)&&!!t[P0],An=(t,n)=>{if(!it(t)||H8(t))return t;const{values:o,required:r,default:l,type:a,validator:s}=t,c={type:a,required:!!r,validator:o||s?d=>{let f=!1,u=[];if(o&&(u=Array.from(o),Mt(t,"default")&&u.push(l),f||(f=u.includes(d))),s&&(f||(f=s(d))),!f&&u.length>0){const p=[...new Set(u)].map(m=>JSON.stringify(m)).join(", ");e.warn(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${p}], got value ${JSON.stringify(d)}.`)}return f}:void 0,[P0]:!0};return Mt(t,"default")&&(c.default=l),c},se=t=>_c(Object.entries(t).map(([n,o])=>[n,An(o,n)])),$t=j([String,Object,Function]),K8={Close:Pn},gs={Close:Pn,SuccessFilled:R0,InfoFilled:fd,WarningFilled:hs,CircleCloseFilled:dd},Ho={success:R0,warning:hs,error:dd,info:fd},A0={validating:xo,success:cd,error:Fo},Te=(t,n)=>{if(t.install=o=>{for(const r of[t,...Object.values(n!=null?n:{})])o.component(r.name,r)},n)for(const[o,r]of Object.entries(n))t[o]=r;return t},O0=(t,n)=>(t.install=o=>{t._context=o._context,o.config.globalProperties[n]=t},t),W8=(t,n)=>(t.install=o=>{o.directive(n,t)},t),ut=t=>(t.install=Xe,t),ys=(...t)=>n=>{t.forEach(o=>{ot(o)?o(n):o.value=n})},ue={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},z0=["year","month","date","dates","week","datetime","datetimerange","daterange","monthrange"],bs=["sun","mon","tue","wed","thu","fri","sat"],Ve="update:modelValue",at="change",fn="input",ud=Symbol("INSTALLED_KEY"),Ko=["","default","small","large"],D0={large:40,default:32,small:24},j8=t=>D0[t||"default"],hr=t=>["",...Ko].includes(t);var En=(t=>(t[t.TEXT=1]="TEXT",t[t.CLASS=2]="CLASS",t[t.STYLE=4]="STYLE",t[t.PROPS=8]="PROPS",t[t.FULL_PROPS=16]="FULL_PROPS",t[t.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",t[t.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",t[t.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",t[t.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",t[t.NEED_PATCH=512]="NEED_PATCH",t[t.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",t[t.HOISTED=-1]="HOISTED",t[t.BAIL=-2]="BAIL",t))(En||{});function pd(t){return e.isVNode(t)&&t.type===e.Fragment}function U8(t){return e.isVNode(t)&&t.type===e.Comment}function G8(t){return e.isVNode(t)&&!pd(t)&&!U8(t)}const q8=t=>{if(!e.isVNode(t))return{};const n=t.props||{},o=(e.isVNode(t.type)?t.type.props:void 0)||{},r={};return Object.keys(o).forEach(l=>{Mt(o[l],"default")&&(r[l]=o[l].default)}),Object.keys(n).forEach(l=>{r[N0(l)]=n[l]}),r},Y8=t=>{if(!Ae(t)||t.length>1)throw new Error("expect to receive a single Vue element child");return t[0]},L0=t=>t**3,X8=t=>t<.5?L0(t*2)/2:1-L0((1-t)*2)/2,F0=t=>[...new Set(t)],yo=t=>!t&&t!==0?[]:Array.isArray(t)?t:[t],md=()=>Oe&&/firefox/i.test(window.navigator.userAgent),Cs=t=>/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(t),hd=t=>Oe?window.requestAnimationFrame(t):setTimeout(t,16),gd=t=>Oe?window.cancelAnimationFrame(t):clearTimeout(t),jl=()=>Math.floor(Math.random()*1e4),st=t=>t,Z8=["class","style"],J8=/^on[A-Z]/,ws=(t={})=>{const{excludeListeners:n=!1,excludeKeys:o}=t,r=e.computed(()=>((o==null?void 0:o.value)||[]).concat(Z8)),l=e.getCurrentInstance();return l?e.computed(()=>{var a;return _c(Object.entries((a=l.proxy)==null?void 0:a.$attrs).filter(([s])=>!r.value.includes(s)&&!(n&&J8.test(s))))}):e.computed(()=>({}))},yd=Symbol("breadcrumbKey"),bd=Symbol("buttonGroupContextKey"),Cd=Symbol("carouselContextKey"),wd=Symbol("collapseContextKey"),kd=Symbol(),Sd=Symbol("dialogInjectionKey"),un=Symbol("formContextKey"),Lt=Symbol("formItemContextKey"),Ed=Symbol("elPaginationKey"),Nd=Symbol("radioGroupKey"),$d=Symbol("rowContextKey"),Bd=Symbol("scrollbarContextKey"),_d=Symbol("sliderContextKey"),Ul=Symbol("tabsRootContextKey"),vd=Symbol("uploadContextKey"),ks=Symbol("popper"),Td=Symbol("popperContent"),Gl=Symbol("tooltipV2"),Vd=Symbol("tooltipV2Content"),Ss="tooltip_v2.open",Es=Symbol(),Md=t=>{const n=e.getCurrentInstance();return e.computed(()=>{var o,r;return(r=((o=n.proxy)==null?void 0:o.$props)[t])!=null?r:void 0})},Ns=e.ref();function Wo(t,n=void 0){const o=e.getCurrentInstance()?e.inject(kd,Ns):Ns;return t?e.computed(()=>{var r,l;return(l=(r=o.value)==null?void 0:r[t])!=null?l:n}):o}const Rd=(t,n,o=!1)=>{var r;const l=!!e.getCurrentInstance(),a=l?Wo():void 0,s=(r=n==null?void 0:n.provide)!=null?r:l?e.provide:void 0;if(!s)return;const i=e.computed(()=>{const c=e.unref(t);return a!=null&&a.value?Q8(a.value,c):c});return s(kd,i),(o||!Ns.value)&&(Ns.value=i.value),i},Q8=(t,n)=>{var o;const r=[...new Set([...Hl(t),...Hl(n)])],l={};for(const a of r)l[a]=(o=n[a])!=null?o:t[a];return l},tn=An({type:String,values:Ko,required:!1}),yt=(t,n={})=>{const o=e.ref(void 0),r=n.prop?o:Md("size"),l=n.global?o:Wo("size"),a=n.form?{size:void 0}:e.inject(un,void 0),s=n.formItem?{size:void 0}:e.inject(Lt,void 0);return e.computed(()=>r.value||e.unref(t)||(s==null?void 0:s.size)||(a==null?void 0:a.size)||l.value||"")},bo=t=>{const n=Md("disabled"),o=e.inject(un,void 0);return e.computed(()=>n.value||e.unref(t)||(o==null?void 0:o.disabled)||!1)},Gr=({from:t,replacement:n,scope:o,version:r,ref:l,type:a="API"},s)=>{e.watch(()=>e.unref(s),i=>{},{immediate:!0})},Id=(t,n,o)=>{let r={offsetX:0,offsetY:0};const l=i=>{const c=i.clientX,d=i.clientY,{offsetX:f,offsetY:u}=r,p=t.value.getBoundingClientRect(),m=p.left,g=p.top,h=p.width,b=p.height,y=document.documentElement.clientWidth,w=document.documentElement.clientHeight,C=-m+f,k=-g+u,E=y-m-h+f,S=w-g-b+u,N=B=>{const P=Math.min(Math.max(f+B.clientX-c,C),E),D=Math.min(Math.max(u+B.clientY-d,k),S);r={offsetX:P,offsetY:D},t.value.style.transform=`translate(${Nt(P)}, ${Nt(D)})`},$=()=>{document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",$)};document.addEventListener("mousemove",N),document.addEventListener("mouseup",$)},a=()=>{n.value&&t.value&&n.value.addEventListener("mousedown",l)},s=()=>{n.value&&t.value&&n.value.removeEventListener("mousedown",l)};e.onMounted(()=>{e.watchEffect(()=>{o.value?a():s()})}),e.onBeforeUnmount(()=>{s()})},x0=t=>({focus:()=>{var n,o;(o=(n=t.value)==null?void 0:n.focus)==null||o.call(n)}}),e6={prefix:Math.floor(Math.random()*1e4),current:0},H0=Symbol("elIdInjection"),Nn=t=>{const n=e.inject(H0,e6);return e.computed(()=>e.unref(t)||`el-id-${n.prefix}-${n.current++}`)},Co=()=>{const t=e.inject(un,void 0),n=e.inject(Lt,void 0);return{form:t,formItem:n}},wo=(t,{formItemContext:n,disableIdGeneration:o,disableIdManagement:r})=>{o||(o=e.ref(!1)),r||(r=e.ref(!1));const l=e.ref();let a;const s=e.computed(()=>{var i;return!!(!t.label&&n&&n.inputIds&&((i=n.inputIds)==null?void 0:i.length)<=1)});return e.onMounted(()=>{a=e.watch([e.toRef(t,"id"),o],([i,c])=>{const d=i!=null?i:c?void 0:Nn().value;d!==l.value&&(n!=null&&n.removeInputId&&(l.value&&n.removeInputId(l.value),!(r!=null&&r.value)&&!c&&d&&n.addInputId(d)),l.value=d)},{immediate:!0})}),e.onUnmounted(()=>{a&&a(),n!=null&&n.removeInputId&&l.value&&n.removeInputId(l.value)}),{isLabeledByFormItem:s,inputId:l}};var t6={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};const K0=t=>(n,o)=>W0(n,o,e.unref(t)),W0=(t,n,o)=>et(o,t,t).replace(/\{(\w+)\}/g,(r,l)=>{var a;return`${(a=n==null?void 0:n[l])!=null?a:`{${l}}`}`}),j0=t=>{const n=e.computed(()=>e.unref(t).name),o=e.isRef(t)?t:e.ref(t);return{lang:n,locale:o,t:K0(t)}},We=()=>{const t=Wo("locale");return j0(e.computed(()=>t.value||t6))};let n6;function o6(t,n=n6){n&&n.active&&n.effects.push(t)}const r6=t=>{const n=new Set(t);return n.w=0,n.n=0,n},U0=t=>(t.w&jo)>0,G0=t=>(t.n&jo)>0,l6=({deps:t})=>{if(t.length)for(let n=0;n{const{deps:n}=t;if(n.length){let o=0;for(let r=0;r{this._dirty||(this._dirty=!0,f6(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!l,this.__v_isReadonly=r}get value(){const n=Bs(this);return d6(n),(n._dirty||!n._cacheable)&&(n._dirty=!1,n._value=n.effect.run()),n._value}set value(n){this._setter(n)}}function p6(t,n,o=!1){let r,l;const a=ot(t);return a?(r=t,l=Xe):(r=t.get,l=t.set),new u6(r,l,a||!l,o)}const Ad="el",m6="is-",gr=(t,n,o,r,l)=>{let a=`${t}-${n}`;return o&&(a+=`-${o}`),r&&(a+=`__${r}`),l&&(a+=`--${l}`),a},Z=t=>{const n=Wo("namespace"),o=e.computed(()=>n.value||Ad);return{namespace:o,b:(h="")=>gr(e.unref(o),t,h,"",""),e:h=>h?gr(e.unref(o),t,"",h,""):"",m:h=>h?gr(e.unref(o),t,"","",h):"",be:(h,b)=>h&&b?gr(e.unref(o),t,h,b,""):"",em:(h,b)=>h&&b?gr(e.unref(o),t,"",h,b):"",bm:(h,b)=>h&&b?gr(e.unref(o),t,h,"",b):"",bem:(h,b,y)=>h&&b&&y?gr(e.unref(o),t,h,b,y):"",is:(h,...b)=>{const y=b.length>=1?b[0]:!0;return h&&y?`${m6}${h}`:""},cssVar:h=>{const b={};for(const y in h)h[y]&&(b[`--${o.value}-${y}`]=h[y]);return b},cssVarName:h=>`--${o.value}-${h}`,cssVarBlock:h=>{const b={};for(const y in h)h[y]&&(b[`--${o.value}-${t}-${y}`]=h[y]);return b},cssVarBlockName:h=>`--${o.value}-${t}-${h}`}},Od=t=>{e.isRef(t)||Et("[useLockscreen]","You need to pass a ref param to this function");const n=Z("popup"),o=p6(()=>n.bm("parent","hidden"));if(!Oe||In(document.body,o.value))return;let r=0,l=!1,a="0",s=0;const i=()=>{en(document.body,o.value),l&&(document.body.style.paddingRight=a)};e.watch(t,c=>{if(!c){i();return}l=!In(document.body,o.value),l&&(a=document.body.style.paddingRight,s=Number.parseInt(Gn(document.body,"paddingRight"),10)),r=B0(n.namespace.value);const d=document.documentElement.clientHeight0&&(d||f==="scroll")&&l&&(document.body.style.paddingRight=`${s+r}px`),Un(document.body,o.value)}),e.onScopeDispose(()=>i())},qr=[],h6=t=>{qr.length!==0&&t.code===ue.esc&&(t.stopPropagation(),qr[qr.length-1].handleClose())},g6=(t,n)=>{e.watch(n,o=>{o?qr.push(t):qr.splice(qr.indexOf(t),1)})};Oe&&nt(document,"keydown",h6);const y6=An({type:j(Boolean),default:null}),b6=An({type:j(Function)}),zd=t=>{const n=`update:${t}`,o=`onUpdate:${t}`,r=[n],l={[t]:y6,[o]:b6};return{useModelToggle:({indicator:s,toggleReason:i,shouldHideWhenRouteChanges:c,shouldProceed:d,onShow:f,onHide:u})=>{const p=e.getCurrentInstance(),{emit:m}=p,g=p.props,h=e.computed(()=>ot(g[o])),b=e.computed(()=>g[t]===null),y=N=>{s.value!==!0&&(s.value=!0,i&&(i.value=N),ot(f)&&f(N))},w=N=>{s.value!==!1&&(s.value=!1,i&&(i.value=N),ot(u)&&u(N))},C=N=>{if(g.disabled===!0||ot(d)&&!d())return;const $=h.value&&Oe;$&&m(n,!0),(b.value||!$)&&y(N)},k=N=>{if(g.disabled===!0||!Oe)return;const $=h.value&&Oe;$&&m(n,!1),(b.value||!$)&&w(N)},E=N=>{!St(N)||(g.disabled&&N?h.value&&m(n,!1):s.value!==N&&(N?y():w()))},S=()=>{s.value?k():C()};return e.watch(()=>g[t],E),c&&p.appContext.config.globalProperties.$route!==void 0&&e.watch(()=>({...p.proxy.$route}),()=>{c.value&&s.value&&k()}),e.onMounted(()=>{E(g[t])}),{hide:k,show:C,toggle:S,hasUpdateHandler:h}},useModelToggleProps:l,useModelToggleEmits:r}},{useModelToggle:C6,useModelToggleProps:w6,useModelToggleEmits:k6}=zd("modelValue"),S6=(t,n,o)=>{const r=a=>{o(a)&&a.stopImmediatePropagation()};let l;e.watch(()=>t.value,a=>{a?l=nt(document,n,r,!0):l==null||l()},{immediate:!0})},X0=(t,n)=>{let o;e.watch(()=>t.value,r=>{var l,a;r?(o=document.activeElement,e.isRef(n)&&((a=(l=n.value).focus)==null||a.call(l))):o.focus()})},_s=t=>{if(!t)return{onClick:Xe,onMousedown:Xe,onMouseup:Xe};let n=!1,o=!1;return{onClick:s=>{n&&o&&t(s),n=o=!1},onMousedown:s=>{n=s.target===s.currentTarget},onMouseup:s=>{o=s.target===s.currentTarget}}},E6=(t,n)=>{const o=e.ref(!1);if(!Oe)return{isTeleportVisible:o,showTeleport:Xe,hideTeleport:Xe,renderTeleport:Xe};let r=null;const l=()=>{o.value=!0,r===null&&(r=CO())},a=()=>{o.value=!1,r!==null&&(wO(r),r=null)},s=()=>n.value!==!0?t():o.value?[e.h(e.Teleport,{to:r},t())]:void 0;return e.onUnmounted(a),{isTeleportVisible:o,showTeleport:l,hideTeleport:a,renderTeleport:s}},Z0=(t,n=0)=>{if(n===0)return t;const o=e.ref(!1);let r=0;const l=()=>{r&&clearTimeout(r),r=window.setTimeout(()=>{o.value=t.value},n)};return e.onMounted(l),e.watch(()=>t.value,a=>{a?l():o.value=a}),o};function J0(){let t;const n=(r,l)=>{o(),t=window.setTimeout(r,l)},o=()=>window.clearTimeout(t);return fs(()=>o()),{registerTimeout:n,cancelTimeout:o}}const Q0="after-appear",ey="after-enter",ty="after-leave",N6="appear",ny="appear-cancelled",oy="before-enter",ry="before-leave",ly="enter",ay="enter-cancelled",sy="leave",iy="leave-cancelled",$6=[Q0,ey,ty,N6,ny,oy,ry,ly,ay,sy,iy],B6=()=>{const{emit:t}=e.getCurrentInstance();return{onAfterAppear:()=>{t(Q0)},onAfterEnter:()=>{t(ey)},onAfterLeave:()=>{t(ty)},onAppearCancelled:()=>{t(ny)},onBeforeEnter:()=>{t(oy)},onBeforeLeave:()=>{t(ry)},onEnter:()=>{t(ly)},onEnterCancelled:()=>{t(ay)},onLeave:()=>{t(sy)},onLeaveCancelled:()=>{t(iy)}}};let Yr=[];const cy=t=>{const n=t;n.key===ue.esc&&Yr.forEach(o=>o(n))},dy=t=>{e.onMounted(()=>{Yr.length===0&&document.addEventListener("keydown",cy),Oe&&Yr.push(t)}),e.onBeforeUnmount(()=>{Yr=Yr.filter(n=>n!==t),Yr.length===0&&Oe&&document.removeEventListener("keydown",cy)})};let fy;const Dd=`el-popper-container-${jl()}`,Ld=`#${Dd}`,_6=()=>{const t=document.createElement("div");return t.id=Dd,document.body.appendChild(t),t},uy=()=>{e.onBeforeMount(()=>{!Oe||(!fy||!document.body.querySelector(Ld))&&(fy=_6())})},v6=({indicator:t,intermediateIndicator:n,shouldSetIntermediate:o=()=>!0,beforeShow:r,afterShow:l,afterHide:a,beforeHide:s})=>{e.watch(()=>e.unref(t),i=>{i?(r==null||r(),e.nextTick(()=>{!e.unref(t)||o("show")&&(n.value=!0)})):(s==null||s(),e.nextTick(()=>{e.unref(t)||o("hide")&&(n.value=!1)}))}),e.watch(()=>n.value,i=>{i?l==null||l():a==null||a()})},py=se({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200}}),my=({showAfter:t,hideAfter:n,open:o,close:r})=>{const{registerTimeout:l}=J0();return{onOpen:i=>{l(()=>{o(i)},e.unref(t))},onClose:i=>{l(()=>{r(i)},e.unref(n))}}},Fd=Symbol("elForwardRef"),hy=t=>{const n=o=>{t.value=o};e.provide(Fd,{setForwardRef:n})},gy=t=>({mounted(n){t(n)},updated(n){t(n)},unmounted(){t(null)}}),yy=e.ref(0),Yn=()=>{const t=Wo("zIndex",2e3),n=e.computed(()=>t.value+yy.value);return{initialZIndex:t,currentZIndex:n,nextZIndex:()=>(yy.value++,n.value)}};function xd(t){return t.split("-")[0]}function Hd(t){return t.split("-")[1]}function Kd(t){return["top","bottom"].includes(xd(t))?"x":"y"}function by(t){return t==="y"?"height":"width"}function Cy(t,n,o){let{reference:r,floating:l}=t;const a=r.x+r.width/2-l.width/2,s=r.y+r.height/2-l.height/2,i=Kd(n),c=by(i),d=r[c]/2-l[c]/2,f=xd(n),u=i==="x";let p;switch(f){case"top":p={x:a,y:r.y-l.height};break;case"bottom":p={x:a,y:r.y+r.height};break;case"right":p={x:r.x+r.width,y:s};break;case"left":p={x:r.x-l.width,y:s};break;default:p={x:r.x,y:r.y}}switch(Hd(n)){case"start":p[i]-=d*(o&&u?-1:1);break;case"end":p[i]+=d*(o&&u?-1:1);break}return p}const T6=async(t,n,o)=>{const{placement:r="bottom",strategy:l="absolute",middleware:a=[],platform:s}=o,i=await(s.isRTL==null?void 0:s.isRTL(n));if(process.env.NODE_ENV!=="production"&&(s==null&&console.error(["Floating UI: `platform` property was not passed to config. If you","want to use Floating UI on the web, install @floating-ui/dom","instead of the /core package. Otherwise, you can create your own","`platform`: https://floating-ui.com/docs/platform"].join(" ")),a.filter(g=>{let{name:h}=g;return h==="autoPlacement"||h==="flip"}).length>1))throw new Error(["Floating UI: duplicate `flip` and/or `autoPlacement`","middleware detected. This will lead to an infinite loop. Ensure only","one of either has been passed to the `middleware` array."].join(" "));let c=await s.getElementRects({reference:t,floating:n,strategy:l}),{x:d,y:f}=Cy(c,r,i),u=r,p={},m=0;for(let g=0;g50&&console.warn(["Floating UI: The middleware lifecycle appears to be running in an","infinite loop. This is usually caused by a `reset` continually","being returned without a break condition."].join(" ")),k&&m<=50){m++,typeof k=="object"&&(k.placement&&(u=k.placement),k.rects&&(c=k.rects===!0?await s.getElementRects({reference:t,floating:n,strategy:l}):k.rects),{x:d,y:f}=Cy(c,u,i)),g=-1;continue}}return{x:d,y:f,placement:u,strategy:l,middlewareData:p}};function V6(t){return{top:0,right:0,bottom:0,left:0,...t}}function M6(t){return typeof t!="number"?V6(t):{top:t,right:t,bottom:t,left:t}}function wy(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}const R6=Math.min,I6=Math.max;function P6(t,n,o){return I6(t,R6(n,o))}const A6=t=>({name:"arrow",options:t,async fn(n){const{element:o,padding:r=0}=t!=null?t:{},{x:l,y:a,placement:s,rects:i,platform:c}=n;if(o==null)return process.env.NODE_ENV!=="production"&&console.warn("Floating UI: No `element` was passed to the `arrow` middleware."),{};const d=M6(r),f={x:l,y:a},u=Kd(s),p=Hd(s),m=by(u),g=await c.getDimensions(o),h=u==="y"?"top":"left",b=u==="y"?"bottom":"right",y=i.reference[m]+i.reference[u]-f[u]-i.floating[m],w=f[u]-i.reference[u],C=await(c.getOffsetParent==null?void 0:c.getOffsetParent(o));let k=C?u==="y"?C.clientHeight||0:C.clientWidth||0:0;k===0&&(k=i.floating[m]);const E=y/2-w/2,S=d[h],N=k-g[m]-d[b],$=k/2-g[m]/2+E,B=P6(S,$,N),z=(p==="start"?d[h]:d[b])>0&&$!==B&&i.reference[m]<=i.floating[m]?$n.brand+"/"+n.version).join(" "):navigator.userAgent}function Xn(t){return t instanceof ko(t).HTMLElement}function Xr(t){return t instanceof ko(t).Element}function D6(t){return t instanceof ko(t).Node}function Wd(t){if(typeof ShadowRoot=="undefined")return!1;const n=ko(t).ShadowRoot;return t instanceof n||t instanceof ShadowRoot}function vs(t){const{overflow:n,overflowX:o,overflowY:r}=Yl(t);return/auto|scroll|overlay|hidden/.test(n+r+o)}function L6(t){return["table","td","th"].includes(So(t))}function Ey(t){const n=/firefox/i.test(Sy()),o=Yl(t);return o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].includes(o.willChange)||n&&o.willChange==="filter"||n&&(o.filter?o.filter!=="none":!1)}function Ny(){return!/^((?!chrome|android).)*safari/i.test(Sy())}const $y=Math.min,Xl=Math.max,Ts=Math.round;function yr(t,n,o){var r,l,a,s;n===void 0&&(n=!1),o===void 0&&(o=!1);const i=t.getBoundingClientRect();let c=1,d=1;n&&Xn(t)&&(c=t.offsetWidth>0&&Ts(i.width)/t.offsetWidth||1,d=t.offsetHeight>0&&Ts(i.height)/t.offsetHeight||1);const f=Xr(t)?ko(t):window,u=!Ny()&&o,p=(i.left+(u&&(r=(l=f.visualViewport)==null?void 0:l.offsetLeft)!=null?r:0))/c,m=(i.top+(u&&(a=(s=f.visualViewport)==null?void 0:s.offsetTop)!=null?a:0))/d,g=i.width/c,h=i.height/d;return{width:g,height:h,top:m,right:p+g,bottom:m+h,left:p,x:p,y:m}}function Uo(t){return((D6(t)?t.ownerDocument:t.document)||window.document).documentElement}function Vs(t){return Xr(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function By(t){return yr(Uo(t)).left+Vs(t).scrollLeft}function F6(t){const n=yr(t);return Ts(n.width)!==t.offsetWidth||Ts(n.height)!==t.offsetHeight}function x6(t,n,o){const r=Xn(n),l=Uo(n),a=yr(t,r&&F6(n),o==="fixed");let s={scrollLeft:0,scrollTop:0};const i={x:0,y:0};if(r||!r&&o!=="fixed")if((So(n)!=="body"||vs(l))&&(s=Vs(n)),Xn(n)){const c=yr(n,!0);i.x=c.x+n.clientLeft,i.y=c.y+n.clientTop}else l&&(i.x=By(l));return{x:a.left+s.scrollLeft-i.x,y:a.top+s.scrollTop-i.y,width:a.width,height:a.height}}function _y(t){return So(t)==="html"?t:t.assignedSlot||t.parentNode||(Wd(t)?t.host:null)||Uo(t)}function vy(t){return!Xn(t)||getComputedStyle(t).position==="fixed"?null:t.offsetParent}function H6(t){let n=_y(t);for(Wd(n)&&(n=n.host);Xn(n)&&!["html","body"].includes(So(n));){if(Ey(n))return n;n=n.parentNode}return null}function jd(t){const n=ko(t);let o=vy(t);for(;o&&L6(o)&&getComputedStyle(o).position==="static";)o=vy(o);return o&&(So(o)==="html"||So(o)==="body"&&getComputedStyle(o).position==="static"&&!Ey(o))?n:o||H6(t)||n}function Ty(t){if(Xn(t))return{width:t.offsetWidth,height:t.offsetHeight};const n=yr(t);return{width:n.width,height:n.height}}function K6(t){let{rect:n,offsetParent:o,strategy:r}=t;const l=Xn(o),a=Uo(o);if(o===a)return n;let s={scrollLeft:0,scrollTop:0};const i={x:0,y:0};if((l||!l&&r!=="fixed")&&((So(o)!=="body"||vs(a))&&(s=Vs(o)),Xn(o))){const c=yr(o,!0);i.x=c.x+o.clientLeft,i.y=c.y+o.clientTop}return{...n,x:n.x-s.scrollLeft+i.x,y:n.y-s.scrollTop+i.y}}function W6(t,n){const o=ko(t),r=Uo(t),l=o.visualViewport;let a=r.clientWidth,s=r.clientHeight,i=0,c=0;if(l){a=l.width,s=l.height;const d=Ny();(d||!d&&n==="fixed")&&(i=l.offsetLeft,c=l.offsetTop)}return{width:a,height:s,x:i,y:c}}function j6(t){var n;const o=Uo(t),r=Vs(t),l=(n=t.ownerDocument)==null?void 0:n.body,a=Xl(o.scrollWidth,o.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),s=Xl(o.scrollHeight,o.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0);let i=-r.scrollLeft+By(t);const c=-r.scrollTop;return Yl(l||o).direction==="rtl"&&(i+=Xl(o.clientWidth,l?l.clientWidth:0)-a),{width:a,height:s,x:i,y:c}}function Vy(t){const n=_y(t);return["html","body","#document"].includes(So(n))?t.ownerDocument.body:Xn(n)&&vs(n)?n:Vy(n)}function My(t,n){var o;n===void 0&&(n=[]);const r=Vy(t),l=r===((o=t.ownerDocument)==null?void 0:o.body),a=ko(r),s=l?[a].concat(a.visualViewport||[],vs(r)?r:[]):r,i=n.concat(s);return l?i:i.concat(My(s))}function U6(t,n){const o=n.getRootNode==null?void 0:n.getRootNode();if(t.contains(n))return!0;if(o&&Wd(o)){let r=n;do{if(r&&t===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function G6(t,n){const o=yr(t,!1,n==="fixed"),r=o.top+t.clientTop,l=o.left+t.clientLeft;return{top:r,left:l,x:l,y:r,right:l+t.clientWidth,bottom:r+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}function Ry(t,n,o){return n==="viewport"?wy(W6(t,o)):Xr(n)?G6(n,o):wy(j6(Uo(t)))}function q6(t){const n=My(t),r=["absolute","fixed"].includes(Yl(t).position)&&Xn(t)?jd(t):t;return Xr(r)?n.filter(l=>Xr(l)&&U6(l,r)&&So(l)!=="body"):[]}function Y6(t){let{element:n,boundary:o,rootBoundary:r,strategy:l}=t;const s=[...o==="clippingAncestors"?q6(n):[].concat(o),r],i=s[0],c=s.reduce((d,f)=>{const u=Ry(n,f,l);return d.top=Xl(u.top,d.top),d.right=$y(u.right,d.right),d.bottom=$y(u.bottom,d.bottom),d.left=Xl(u.left,d.left),d},Ry(n,i,l));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}const X6={getClippingRect:Y6,convertOffsetParentRelativeRectToViewportRelativeRect:K6,isElement:Xr,getDimensions:Ty,getOffsetParent:jd,getDocumentElement:Uo,getElementRects:t=>{let{reference:n,floating:o,strategy:r}=t;return{reference:x6(n,jd(o),r),floating:{...Ty(o),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>Yl(t).direction==="rtl"},Z6=(t,n,o)=>T6(t,n,{platform:X6,...o}),J6=se({}),Q6=t=>{if(!Oe)return;if(!t)return t;const n=Rn(t);return n||(e.isRef(t)?n:t)},eF=(t,n)=>{const o=t==null?void 0:t[n];return Qt(o)?"":`${o}px`},Iy=({middleware:t,placement:n,strategy:o})=>{const r=e.ref(),l=e.ref(),a=e.ref(),s=e.ref(),i=e.ref({}),c={x:a,y:s,placement:n,strategy:o,middlewareData:i},d=async()=>{if(!Oe)return;const f=Q6(r),u=Rn(l);if(!f||!u)return;const p=await Z6(f,u,{placement:e.unref(n),strategy:e.unref(o),middleware:e.unref(t)});Hl(c).forEach(m=>{c[m].value=p[m]})};return e.onMounted(()=>{e.watchEffect(()=>{d()})}),{...c,update:d,referenceRef:r,contentRef:l}},Py=({arrowRef:t,padding:n})=>({name:"arrow",options:{element:t,padding:n},fn(o){const r=e.unref(t);return r?A6({element:r,padding:n}).fn(o):{}}});function Ay(t){const n=e.ref();function o(){if(t.value==null)return;const{selectionStart:l,selectionEnd:a,value:s}=t.value;if(l==null||a==null)return;const i=s.slice(0,Math.max(0,l)),c=s.slice(Math.max(0,a));n.value={selectionStart:l,selectionEnd:a,value:s,beforeTxt:i,afterTxt:c}}function r(){if(t.value==null||n.value==null)return;const{value:l}=t.value,{beforeTxt:a,afterTxt:s,selectionStart:i}=n.value;if(a==null||s==null||i==null)return;let c=l.length;if(l.endsWith(s))c=l.length-s.length;else if(l.startsWith(a))c=a.length;else{const d=a[i-1],f=l.indexOf(d,i-1);f!==-1&&(c=f+1)}t.value.setSelectionRange(c,c)}return[o,r]}const tF="2.2.12",Oy=(t=[])=>({version:tF,install:(o,r)=>{o[ud]||(o[ud]=!0,t.forEach(l=>o.use(l)),r&&Rd(r,o,!0))}}),zy=se({zIndex:{type:j([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Dy={scroll:({scrollTop:t,fixed:n})=>Ne(t)&&St(n),[at]:t=>St(t)};var re=(t,n)=>{const o=t.__vccOpts||t;for(const[r,l]of n)o[r]=l;return o};const nF={name:"ElAffix"},oF=e.defineComponent({...nF,props:zy,emits:Dy,setup(t,{expose:n,emit:o}){const r=t,l="ElAffix",a=Z("affix"),s=e.shallowRef(),i=e.shallowRef(),c=e.shallowRef(),{height:d}=lO(),{height:f,width:u,top:p,bottom:m,update:g}=k0(i),h=k0(s),b=e.ref(!1),y=e.ref(0),w=e.ref(0),C=e.computed(()=>({height:b.value?`${f.value}px`:"",width:b.value?`${u.value}px`:""})),k=e.computed(()=>{if(!b.value)return{};const N=r.offset?`${r.offset}px`:0;return{height:`${f.value}px`,width:`${u.value}px`,top:r.position==="top"?N:"",bottom:r.position==="bottom"?N:"",transform:w.value?`translateY(${w.value}px)`:"",zIndex:r.zIndex}}),E=()=>{if(!!c.value)if(y.value=c.value instanceof Window?document.documentElement.scrollTop:c.value.scrollTop||0,r.position==="top")if(r.target){const N=h.bottom.value-r.offset-f.value;b.value=r.offset>p.value&&h.bottom.value>0,w.value=N<0?N:0}else b.value=r.offset>p.value;else if(r.target){const N=d.value-h.top.value-r.offset-f.value;b.value=d.value-r.offseth.top.value,w.value=N<0?-N:0}else b.value=d.value-r.offset{o("scroll",{scrollTop:y.value,fixed:b.value})};return e.watch(b,N=>o("change",N)),e.onMounted(()=>{var N;r.target?(s.value=(N=document.querySelector(r.target))!=null?N:void 0,s.value||Et(l,`Target is not existed: ${r.target}`)):s.value=document.documentElement,c.value=id(i.value,!0),g()}),nt(c,"scroll",S),e.watchEffect(E),n({update:E}),(N,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:i,class:e.normalizeClass(e.unref(a).b()),style:e.normalizeStyle(e.unref(C))},[e.createElementVNode("div",{class:e.normalizeClass({[e.unref(a).m("fixed")]:b.value}),style:e.normalizeStyle(e.unref(k))},[e.renderSlot(N.$slots,"default")],6)],6))}});var rF=re(oF,[["__file","affix.vue"]]);const Ly=Te(rF),Fy=se({size:{type:j([Number,String])},color:{type:String}}),lF={name:"ElIcon",inheritAttrs:!1},aF=e.defineComponent({...lF,props:Fy,setup(t){const n=t,o=Z("icon"),r=e.computed(()=>!n.size&&!n.color?{}:{fontSize:Rt(n.size)?void 0:Nt(n.size),"--color":n.color});return(l,a)=>(e.openBlock(),e.createElementBlock("i",e.mergeProps({class:e.unref(o).b(),style:e.unref(r)},l.$attrs),[e.renderSlot(l.$slots,"default")],16))}});var sF=re(aF,[["__file","icon.vue"]]);const de=Te(sF),xy=["light","dark"],Hy=se({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:Hl(Ho),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:xy,default:"light"}}),Ky={close:t=>t instanceof MouseEvent},iF={name:"ElAlert"},cF=e.defineComponent({...iF,props:Hy,emits:Ky,setup(t,{emit:n}){const o=t,{Close:r}=gs,l=e.useSlots(),a=Z("alert"),s=e.ref(!0),i=e.computed(()=>Ho[o.type]),c=e.computed(()=>[a.e("icon"),{[a.is("big")]:!!o.description||!!l.default}]),d=e.computed(()=>o.description||{[a.is("bold")]:l.default}),f=u=>{s.value=!1,n("close",u)};return(u,p)=>(e.openBlock(),e.createBlock(e.Transition,{name:e.unref(a).b("fade"),persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass([e.unref(a).b(),e.unref(a).m(u.type),e.unref(a).is("center",u.center),e.unref(a).is(u.effect)]),role:"alert"},[u.showIcon&&e.unref(i)?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(c))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(i))))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("content"))},[u.title||u.$slots.title?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(a).e("title"),e.unref(d)])},[e.renderSlot(u.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(u.title),1)])],2)):e.createCommentVNode("v-if",!0),u.$slots.default||u.description?(e.openBlock(),e.createElementBlock("p",{key:1,class:e.normalizeClass(e.unref(a).e("description"))},[e.renderSlot(u.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(u.description),1)])],2)):e.createCommentVNode("v-if",!0),u.closable?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[u.closeText?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(a).e("close-btn"),e.unref(a).is("customed")]),onClick:f},e.toDisplayString(u.closeText),3)):(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass(e.unref(a).e("close-btn")),onClick:f},{default:e.withCtx(()=>[e.createVNode(e.unref(r))]),_:1},8,["class"]))],64)):e.createCommentVNode("v-if",!0)],2)],2),[[e.vShow,s.value]])]),_:3},8,["name"]))}});var dF=re(cF,[["__file","alert.vue"]]);const Wy=Te(dF);let On;const fF=` + height:0 !important; + visibility:hidden !important; + overflow:hidden !important; + position:absolute !important; + z-index:-1000 !important; + top:0 !important; + right:0 !important; +`,uF=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function pF(t){const n=window.getComputedStyle(t),o=n.getPropertyValue("box-sizing"),r=Number.parseFloat(n.getPropertyValue("padding-bottom"))+Number.parseFloat(n.getPropertyValue("padding-top")),l=Number.parseFloat(n.getPropertyValue("border-bottom-width"))+Number.parseFloat(n.getPropertyValue("border-top-width"));return{contextStyle:uF.map(s=>`${s}:${n.getPropertyValue(s)}`).join(";"),paddingSize:r,borderSize:l,boxSizing:o}}function jy(t,n=1,o){var r;On||(On=document.createElement("textarea"),document.body.appendChild(On));const{paddingSize:l,borderSize:a,boxSizing:s,contextStyle:i}=pF(t);On.setAttribute("style",`${i};${fF}`),On.value=t.value||t.placeholder||"";let c=On.scrollHeight;const d={};s==="border-box"?c=c+a:s==="content-box"&&(c=c-l),On.value="";const f=On.scrollHeight-l;if(Ne(n)){let u=f*n;s==="border-box"&&(u=u+l+a),c=Math.max(u,c),d.minHeight=`${u}px`}if(Ne(o)){let u=f*o;s==="border-box"&&(u=u+l+a),c=Math.min(u,c)}return d.height=`${c}px`,(r=On.parentNode)==null||r.removeChild(On),On=void 0,d}const Uy=se({id:{type:String,default:void 0},size:tn,disabled:Boolean,modelValue:{type:j([String,Number,Object]),default:""},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:j([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String,default:""},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},suffixIcon:{type:$t,default:""},prefixIcon:{type:$t,default:""},containerRole:{type:String,default:void 0},label:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:j([Object,Array,String]),default:()=>st({})}}),Gy={[Ve]:t=>Fe(t),input:t=>Fe(t),change:t=>Fe(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,clear:()=>!0,mouseleave:t=>t instanceof MouseEvent,mouseenter:t=>t instanceof MouseEvent,keydown:t=>t instanceof Event,compositionstart:t=>t instanceof CompositionEvent,compositionupdate:t=>t instanceof CompositionEvent,compositionend:t=>t instanceof CompositionEvent},mF=["role"],hF=["id","type","disabled","formatter","parser","readonly","autocomplete","tabindex","aria-label","placeholder"],gF=["id","tabindex","disabled","readonly","autocomplete","aria-label","placeholder"],yF={name:"ElInput",inheritAttrs:!1},bF=e.defineComponent({...yF,props:Uy,emits:Gy,setup(t,{expose:n,emit:o}){const r=t,l={suffix:"append",prefix:"prepend"},a=e.getCurrentInstance(),s=e.useAttrs(),i=e.useSlots(),c=e.computed(()=>{const te={};return r.containerRole==="combobox"&&(te["aria-haspopup"]=s["aria-haspopup"],te["aria-owns"]=s["aria-owns"],te["aria-expanded"]=s["aria-expanded"]),te}),d=ws({excludeKeys:e.computed(()=>Object.keys(c.value))}),{form:f,formItem:u}=Co(),{inputId:p}=wo(r,{formItemContext:u}),m=yt(),g=bo(),h=Z("input"),b=Z("textarea"),y=e.shallowRef(),w=e.shallowRef(),C=e.ref(!1),k=e.ref(!1),E=e.ref(!1),S=e.ref(!1),N=e.ref(),$=e.shallowRef(r.inputStyle),B=e.computed(()=>y.value||w.value),P=e.computed(()=>{var te;return(te=f==null?void 0:f.statusIcon)!=null?te:!1}),D=e.computed(()=>(u==null?void 0:u.validateState)||""),z=e.computed(()=>D.value&&A0[D.value]),I=e.computed(()=>S.value?$8:MD),A=e.computed(()=>[s.style,r.inputStyle]),L=e.computed(()=>[r.inputStyle,$.value,{resize:r.resize}]),R=e.computed(()=>Qt(r.modelValue)?"":String(r.modelValue)),T=e.computed(()=>r.clearable&&!g.value&&!r.readonly&&!!R.value&&(C.value||k.value)),v=e.computed(()=>r.showPassword&&!g.value&&!r.readonly&&!!R.value&&(!!R.value||C.value)),V=e.computed(()=>r.showWordLimit&&!!d.value.maxlength&&(r.type==="text"||r.type==="textarea")&&!g.value&&!r.readonly&&!r.showPassword),H=e.computed(()=>Array.from(R.value).length),x=e.computed(()=>!!V.value&&H.value>Number(d.value.maxlength)),F=e.computed(()=>!!i.suffix||!!r.suffixIcon||T.value||r.showPassword||V.value||!!D.value&&P.value),[K,X]=Ay(y);Wt(w,te=>{if(!V.value||r.resize!=="both")return;const Ee=te[0],{width:Re}=Ee.contentRect;N.value={right:`calc(100% - ${Re+15+6}px)`}});const J=()=>{const{type:te,autosize:Ee}=r;if(!(!Oe||te!=="textarea"))if(Ee){const Re=it(Ee)?Ee.minRows:void 0,xe=it(Ee)?Ee.maxRows:void 0;$.value={...jy(w.value,Re,xe)}}else $.value={minHeight:jy(w.value).minHeight}},U=()=>{const te=B.value;!te||te.value===R.value||(te.value=R.value)},W=te=>{const{el:Ee}=a.vnode;if(!Ee)return;const xe=Array.from(Ee.querySelectorAll(`.${h.e(te)}`)).find(le=>le.parentNode===Ee);if(!xe)return;const q=l[te];i[q]?xe.style.transform=`translateX(${te==="suffix"?"-":""}${Ee.querySelector(`.${h.be("group",q)}`).offsetWidth}px)`:xe.removeAttribute("style")},Q=()=>{W("prefix"),W("suffix")},Y=async te=>{K();let{value:Ee}=te.target;r.formatter&&(Ee=r.parser?r.parser(Ee):Ee,Ee=r.formatter(Ee)),!E.value&&Ee!==R.value&&(o(Ve,Ee),o("input",Ee),await e.nextTick(),U(),X())},ee=te=>{o("change",te.target.value)},pe=te=>{o("compositionstart",te),E.value=!0},he=te=>{var Ee;o("compositionupdate",te);const Re=(Ee=te.target)==null?void 0:Ee.value,xe=Re[Re.length-1]||"";E.value=!Cs(xe)},we=te=>{o("compositionend",te),E.value&&(E.value=!1,Y(te))},Me=()=>{S.value=!S.value,be()},be=async()=>{var te;await e.nextTick(),(te=B.value)==null||te.focus()},Ke=()=>{var te;return(te=B.value)==null?void 0:te.blur()},me=te=>{C.value=!0,o("focus",te)},ne=te=>{var Ee;C.value=!1,o("blur",te),r.validateEvent&&((Ee=u==null?void 0:u.validate)==null||Ee.call(u,"blur").catch(Re=>void 0))},oe=te=>{k.value=!1,o("mouseleave",te)},fe=te=>{k.value=!0,o("mouseenter",te)},ye=te=>{o("keydown",te)},$e=()=>{var te;(te=B.value)==null||te.select()},ve=()=>{o(Ve,""),o("change",""),o("clear"),o("input","")};return e.watch(()=>r.modelValue,()=>{var te;e.nextTick(()=>J()),r.validateEvent&&((te=u==null?void 0:u.validate)==null||te.call(u,"change").catch(Ee=>void 0))}),e.watch(R,()=>U()),e.watch(()=>r.type,async()=>{await e.nextTick(),U(),J(),Q()}),e.onMounted(async()=>{!r.formatter&&r.parser,U(),Q(),await e.nextTick(),J()}),e.onUpdated(async()=>{await e.nextTick(),Q()}),n({input:y,textarea:w,ref:B,textareaStyle:L,autosize:e.toRef(r,"autosize"),focus:be,blur:Ke,select:$e,clear:ve,resizeTextarea:J}),(te,Ee)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",e.mergeProps(e.unref(c),{class:[te.type==="textarea"?e.unref(b).b():e.unref(h).b(),e.unref(h).m(e.unref(m)),e.unref(h).is("disabled",e.unref(g)),e.unref(h).is("exceed",e.unref(x)),{[e.unref(h).b("group")]:te.$slots.prepend||te.$slots.append,[e.unref(h).bm("group","append")]:te.$slots.append,[e.unref(h).bm("group","prepend")]:te.$slots.prepend,[e.unref(h).m("prefix")]:te.$slots.prefix||te.prefixIcon,[e.unref(h).m("suffix")]:te.$slots.suffix||te.suffixIcon||te.clearable||te.showPassword,[e.unref(h).bm("suffix","password-clear")]:e.unref(T)&&e.unref(v)},te.$attrs.class],style:e.unref(A),role:te.containerRole,onMouseenter:fe,onMouseleave:oe}),[e.createCommentVNode(" input "),te.type!=="textarea"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createCommentVNode(" prepend slot "),te.$slots.prepend?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(h).be("group","prepend"))},[e.renderSlot(te.$slots,"prepend")],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(h).e("wrapper"),e.unref(h).is("focus",C.value)])},[e.createCommentVNode(" prefix slot "),te.$slots.prefix||te.prefixIcon?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(h).e("prefix"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(h).e("prefix-inner"))},[e.renderSlot(te.$slots,"prefix"),te.prefixIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(h).e("icon"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(te.prefixIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],2)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("input",e.mergeProps({id:e.unref(p),ref_key:"input",ref:y,class:e.unref(h).e("inner")},e.unref(d),{type:te.showPassword?S.value?"text":"password":te.type,disabled:e.unref(g),formatter:te.formatter,parser:te.parser,readonly:te.readonly,autocomplete:te.autocomplete,tabindex:te.tabindex,"aria-label":te.label,placeholder:te.placeholder,style:te.inputStyle,onCompositionstart:pe,onCompositionupdate:he,onCompositionend:we,onInput:Y,onFocus:me,onBlur:ne,onChange:ee,onKeydown:ye}),null,16,hF),e.createCommentVNode(" suffix slot "),e.unref(F)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(h).e("suffix"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(h).e("suffix-inner"))},[!e.unref(T)||!e.unref(v)||!e.unref(V)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.renderSlot(te.$slots,"suffix"),te.suffixIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(h).e("icon"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(te.suffixIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],64)):e.createCommentVNode("v-if",!0),e.unref(T)?(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass([e.unref(h).e("icon"),e.unref(h).e("clear")]),onMousedown:e.withModifiers(e.unref(Xe),["prevent"]),onClick:ve},{default:e.withCtx(()=>[e.createVNode(e.unref(Fo))]),_:1},8,["class","onMousedown"])):e.createCommentVNode("v-if",!0),e.unref(v)?(e.openBlock(),e.createBlock(e.unref(de),{key:2,class:e.normalizeClass([e.unref(h).e("icon"),e.unref(h).e("password")]),onClick:Me},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(I))))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.unref(V)?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass(e.unref(h).e("count"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(h).e("count-inner"))},e.toDisplayString(e.unref(H))+" / "+e.toDisplayString(e.unref(d).maxlength),3)],2)):e.createCommentVNode("v-if",!0),e.unref(D)&&e.unref(z)&&e.unref(P)?(e.openBlock(),e.createBlock(e.unref(de),{key:4,class:e.normalizeClass([e.unref(h).e("icon"),e.unref(h).e("validateIcon"),e.unref(h).is("loading",e.unref(D)==="validating")])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(z))))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],2)],2)):e.createCommentVNode("v-if",!0)],2),e.createCommentVNode(" append slot "),te.$slots.append?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(h).be("group","append"))},[e.renderSlot(te.$slots,"append")],2)):e.createCommentVNode("v-if",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createCommentVNode(" textarea "),e.createElementVNode("textarea",e.mergeProps({id:e.unref(p),ref_key:"textarea",ref:w,class:e.unref(b).e("inner")},e.unref(d),{tabindex:te.tabindex,disabled:e.unref(g),readonly:te.readonly,autocomplete:te.autocomplete,style:e.unref(L),"aria-label":te.label,placeholder:te.placeholder,onCompositionstart:pe,onCompositionupdate:he,onCompositionend:we,onInput:Y,onFocus:me,onBlur:ne,onChange:ee,onKeydown:ye}),null,16,gF),e.unref(V)?(e.openBlock(),e.createElementBlock("span",{key:0,style:e.normalizeStyle(N.value),class:e.normalizeClass(e.unref(h).e("count"))},e.toDisplayString(e.unref(H))+" / "+e.toDisplayString(e.unref(d).maxlength),7)):e.createCommentVNode("v-if",!0)],64))],16,mF)),[[e.vShow,te.type!=="hidden"]])}});var CF=re(bF,[["__file","input.vue"]]);const It=Te(CF),br=4,Ud={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},qy=({move:t,size:n,bar:o})=>({[o.size]:n,transform:`translate${o.axis}(${t}%)`}),Yy=se({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean});var Xy=re(e.defineComponent({__name:"thumb",props:Yy,setup(t){const n=t,o="Thumb",r=e.inject(Bd),l=Z("scrollbar");r||Et(o,"can not inject scrollbar context");const a=e.ref(),s=e.ref(),i=e.ref({}),c=e.ref(!1);let d=!1,f=!1,u=Oe?document.onselectstart:null;const p=e.computed(()=>Ud[n.vertical?"vertical":"horizontal"]),m=e.computed(()=>qy({size:n.size,move:n.move,bar:p.value})),g=e.computed(()=>a.value[p.value.offset]**2/r.wrapElement[p.value.scrollSize]/n.ratio/s.value[p.value.offset]),h=N=>{var $;if(N.stopPropagation(),N.ctrlKey||[1,2].includes(N.button))return;($=window.getSelection())==null||$.removeAllRanges(),y(N);const B=N.currentTarget;!B||(i.value[p.value.axis]=B[p.value.offset]-(N[p.value.client]-B.getBoundingClientRect()[p.value.direction]))},b=N=>{if(!s.value||!a.value||!r.wrapElement)return;const $=Math.abs(N.target.getBoundingClientRect()[p.value.direction]-N[p.value.client]),B=s.value[p.value.offset]/2,P=($-B)*100*g.value/a.value[p.value.offset];r.wrapElement[p.value.scroll]=P*r.wrapElement[p.value.scrollSize]/100},y=N=>{N.stopImmediatePropagation(),d=!0,document.addEventListener("mousemove",w),document.addEventListener("mouseup",C),u=document.onselectstart,document.onselectstart=()=>!1},w=N=>{if(!a.value||!s.value||d===!1)return;const $=i.value[p.value.axis];if(!$)return;const B=(a.value.getBoundingClientRect()[p.value.direction]-N[p.value.client])*-1,P=s.value[p.value.offset]-$,D=(B-P)*100*g.value/a.value[p.value.offset];r.wrapElement[p.value.scroll]=D*r.wrapElement[p.value.scrollSize]/100},C=()=>{d=!1,i.value[p.value.axis]=0,document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",C),S(),f&&(c.value=!1)},k=()=>{f=!1,c.value=!!n.size},E=()=>{f=!0,c.value=d};e.onBeforeUnmount(()=>{S(),document.removeEventListener("mouseup",C)});const S=()=>{document.onselectstart!==u&&(document.onselectstart=u)};return nt(e.toRef(r,"scrollbarElement"),"mousemove",k),nt(e.toRef(r,"scrollbarElement"),"mouseleave",E),(N,$)=>(e.openBlock(),e.createBlock(e.Transition,{name:e.unref(l).b("fade"),persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{ref_key:"instance",ref:a,class:e.normalizeClass([e.unref(l).e("bar"),e.unref(l).is(e.unref(p).key)]),onMousedown:b},[e.createElementVNode("div",{ref_key:"thumb",ref:s,class:e.normalizeClass(e.unref(l).e("thumb")),style:e.normalizeStyle(e.unref(m)),onMousedown:h},null,38)],34),[[e.vShow,N.always||c.value]])]),_:1},8,["name"]))}}),[["__file","thumb.vue"]]);const wF=se({always:{type:Boolean,default:!0},width:String,height:String,ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}});var kF=re(e.defineComponent({__name:"bar",props:wF,setup(t,{expose:n}){const o=t,r=e.ref(0),l=e.ref(0);return n({handleScroll:s=>{if(s){const i=s.offsetHeight-br,c=s.offsetWidth-br;l.value=s.scrollTop*100/i*o.ratioY,r.value=s.scrollLeft*100/c*o.ratioX}}}),(s,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Xy,{move:r.value,ratio:s.ratioX,size:s.width,always:s.always},null,8,["move","ratio","size","always"]),e.createVNode(Xy,{move:l.value,ratio:s.ratioY,size:s.height,vertical:"",always:s.always},null,8,["move","ratio","size","always"])],64))}}),[["__file","bar.vue"]]);const Zy=se({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:j([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20}}),Jy={scroll:({scrollTop:t,scrollLeft:n})=>[t,n].every(Ne)},SF={name:"ElScrollbar"},EF=e.defineComponent({...SF,props:Zy,emits:Jy,setup(t,{expose:n,emit:o}){const r=t,l=Z("scrollbar");let a,s;const i=e.ref(),c=e.ref(),d=e.ref(),f=e.ref("0"),u=e.ref("0"),p=e.ref(),m=e.ref(1),g=e.ref(1),h=e.computed(()=>{const E={};return r.height&&(E.height=Nt(r.height)),r.maxHeight&&(E.maxHeight=Nt(r.maxHeight)),[r.wrapStyle,E]}),b=()=>{var E;c.value&&((E=p.value)==null||E.handleScroll(c.value),o("scroll",{scrollTop:c.value.scrollTop,scrollLeft:c.value.scrollLeft}))};function y(E,S){it(E)?c.value.scrollTo(E):Ne(E)&&Ne(S)&&c.value.scrollTo(E,S)}const w=E=>{!Ne(E)||(c.value.scrollTop=E)},C=E=>{!Ne(E)||(c.value.scrollLeft=E)},k=()=>{if(!c.value)return;const E=c.value.offsetHeight-br,S=c.value.offsetWidth-br,N=E**2/c.value.scrollHeight,$=S**2/c.value.scrollWidth,B=Math.max(N,r.minSize),P=Math.max($,r.minSize);m.value=N/(E-N)/(B/(E-B)),g.value=$/(S-$)/(P/(S-P)),u.value=B+brr.noresize,E=>{E?(a==null||a(),s==null||s()):({stop:a}=Wt(d,k),s=nt("resize",k))},{immediate:!0}),e.watch(()=>[r.maxHeight,r.height],()=>{r.native||e.nextTick(()=>{var E;k(),c.value&&((E=p.value)==null||E.handleScroll(c.value))})}),e.provide(Bd,e.reactive({scrollbarElement:i,wrapElement:c})),e.onMounted(()=>{r.native||e.nextTick(()=>{k()})}),e.onUpdated(()=>k()),n({wrap$:c,update:k,scrollTo:y,setScrollTop:w,setScrollLeft:C,handleScroll:b}),(E,S)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"scrollbar$",ref:i,class:e.normalizeClass(e.unref(l).b())},[e.createElementVNode("div",{ref_key:"wrap$",ref:c,class:e.normalizeClass([E.wrapClass,e.unref(l).e("wrap"),{[e.unref(l).em("wrap","hidden-default")]:!E.native}]),style:e.normalizeStyle(e.unref(h)),onScroll:b},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(E.tag),{ref_key:"resize$",ref:d,class:e.normalizeClass([e.unref(l).e("view"),E.viewClass]),style:e.normalizeStyle(E.viewStyle)},{default:e.withCtx(()=>[e.renderSlot(E.$slots,"default")]),_:3},8,["class","style"]))],38),E.native?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(kF,{key:0,ref_key:"barRef",ref:p,height:u.value,width:f.value,always:E.always,"ratio-x":g.value,"ratio-y":m.value},null,8,["height","width","always","ratio-x","ratio-y"]))],2))}});var NF=re(EF,[["__file","scrollbar.vue"]]);const Zn=Te(NF),Qy={LIGHT:"light",DARK:"dark"},Gd=se({role:{type:String,default:"tooltip"}}),$F={name:"ElPopperRoot",inheritAttrs:!1},BF=e.defineComponent({...$F,props:Gd,setup(t,{expose:n}){const o=t,r=e.ref(),l=e.ref(),a=e.ref(),s=e.ref(),i=e.computed(()=>o.role),c={triggerRef:r,popperInstanceRef:l,contentRef:a,referenceRef:s,role:i};return n(c),e.provide(ks,c),(d,f)=>e.renderSlot(d.$slots,"default")}});var _F=re(BF,[["__file","popper.vue"]]);const qd=se({arrowOffset:{type:Number,default:5}}),vF={name:"ElPopperArrow",inheritAttrs:!1},TF=e.defineComponent({...vF,props:qd,setup(t,{expose:n}){const o=t,r=Z("popper"),{arrowOffset:l,arrowRef:a}=e.inject(Td,void 0);return e.watch(()=>o.arrowOffset,s=>{l.value=s}),e.onBeforeUnmount(()=>{a.value=void 0}),n({arrowRef:a}),(s,i)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"arrowRef",ref:a,class:e.normalizeClass(e.unref(r).e("arrow")),"data-popper-arrow":""},null,2))}});var eb=re(TF,[["__file","arrow.vue"]]);const VF="ElOnlyChild",tb=e.defineComponent({name:VF,setup(t,{slots:n,attrs:o}){var r;const l=e.inject(Fd),a=gy((r=l==null?void 0:l.setForwardRef)!=null?r:Xe);return()=>{var s;const i=(s=n.default)==null?void 0:s.call(n,o);if(!i||i.length>1)return null;const c=nb(i);return c?e.withDirectives(e.cloneVNode(c,o),[[a]]):null}}});function nb(t){if(!t)return null;const n=t;for(const o of n){if(it(o))switch(o.type){case e.Comment:continue;case e.Text:case"svg":return ob(o);case e.Fragment:return nb(o.children);default:return o}return ob(o)}return null}function ob(t){return e.createVNode("span",{class:"el-only-child__content"},[t])}const Yd=se({virtualRef:{type:j(Object)},virtualTriggering:Boolean,onMouseenter:Function,onMouseleave:Function,onClick:Function,onKeydown:Function,onFocus:Function,onBlur:Function,onContextmenu:Function,id:String,open:Boolean}),MF={name:"ElPopperTrigger",inheritAttrs:!1},RF=e.defineComponent({...MF,props:Yd,setup(t,{expose:n}){const o=t,{role:r,triggerRef:l}=e.inject(ks,void 0);hy(l);const a=e.computed(()=>i.value?o.id:void 0),s=e.computed(()=>{if(r&&r.value==="tooltip")return o.open&&o.id?o.id:void 0}),i=e.computed(()=>{if(r&&r.value!=="tooltip")return r.value}),c=e.computed(()=>i.value?`${o.open}`:void 0);let d;return e.onMounted(()=>{e.watch(()=>o.virtualRef,f=>{f&&(l.value=Rn(f))},{immediate:!0}),e.watch(()=>l.value,(f,u)=>{d==null||d(),d=void 0,go(f)&&(["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(p=>{var m;const g=o[p];g&&(f.addEventListener(p.slice(2).toLowerCase(),g),(m=u==null?void 0:u.removeEventListener)==null||m.call(u,p.slice(2).toLowerCase(),g))}),d=e.watch([a,s,i,c],p=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((m,g)=>{Qt(p[g])?f.removeAttribute(m):f.setAttribute(m,p[g])})},{immediate:!0})),go(u)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(p=>u.removeAttribute(p))},{immediate:!0})}),e.onBeforeUnmount(()=>{d==null||d(),d=void 0}),n({triggerRef:l}),(f,u)=>f.virtualTriggering?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(e.unref(tb),e.mergeProps({key:0},f.$attrs,{"aria-controls":e.unref(a),"aria-describedby":e.unref(s),"aria-expanded":e.unref(c),"aria-haspopup":e.unref(i)}),{default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var rb=re(RF,[["__file","trigger.vue"]]),nn="top",$n="bottom",Bn="right",on="left",Xd="auto",Zl=[nn,$n,Bn,on],Zr="start",Jl="end",IF="clippingParents",lb="viewport",Ql="popper",PF="reference",ab=Zl.reduce(function(t,n){return t.concat([n+"-"+Zr,n+"-"+Jl])},[]),ea=[].concat(Zl,[Xd]).reduce(function(t,n){return t.concat([n,n+"-"+Zr,n+"-"+Jl])},[]),AF="beforeRead",OF="read",zF="afterRead",DF="beforeMain",LF="main",FF="afterMain",xF="beforeWrite",HF="write",KF="afterWrite",WF=[AF,OF,zF,DF,LF,FF,xF,HF,KF];function Jn(t){return t?(t.nodeName||"").toLowerCase():null}function zn(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var n=t.ownerDocument;return n&&n.defaultView||window}return t}function Jr(t){var n=zn(t).Element;return t instanceof n||t instanceof Element}function _n(t){var n=zn(t).HTMLElement;return t instanceof n||t instanceof HTMLElement}function Zd(t){if(typeof ShadowRoot=="undefined")return!1;var n=zn(t).ShadowRoot;return t instanceof n||t instanceof ShadowRoot}function jF(t){var n=t.state;Object.keys(n.elements).forEach(function(o){var r=n.styles[o]||{},l=n.attributes[o]||{},a=n.elements[o];!_n(a)||!Jn(a)||(Object.assign(a.style,r),Object.keys(l).forEach(function(s){var i=l[s];i===!1?a.removeAttribute(s):a.setAttribute(s,i===!0?"":i)}))})}function UF(t){var n=t.state,o={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(n.elements.popper.style,o.popper),n.styles=o,n.elements.arrow&&Object.assign(n.elements.arrow.style,o.arrow),function(){Object.keys(n.elements).forEach(function(r){var l=n.elements[r],a=n.attributes[r]||{},s=Object.keys(n.styles.hasOwnProperty(r)?n.styles[r]:o[r]),i=s.reduce(function(c,d){return c[d]="",c},{});!_n(l)||!Jn(l)||(Object.assign(l.style,i),Object.keys(a).forEach(function(c){l.removeAttribute(c)}))})}}var sb={name:"applyStyles",enabled:!0,phase:"write",fn:jF,effect:UF,requires:["computeStyles"]};function Qn(t){return t.split("-")[0]}var Cr=Math.max,Ms=Math.min,Qr=Math.round;function el(t,n){n===void 0&&(n=!1);var o=t.getBoundingClientRect(),r=1,l=1;if(_n(t)&&n){var a=t.offsetHeight,s=t.offsetWidth;s>0&&(r=Qr(o.width)/s||1),a>0&&(l=Qr(o.height)/a||1)}return{width:o.width/r,height:o.height/l,top:o.top/l,right:o.right/r,bottom:o.bottom/l,left:o.left/r,x:o.left/r,y:o.top/l}}function Jd(t){var n=el(t),o=t.offsetWidth,r=t.offsetHeight;return Math.abs(n.width-o)<=1&&(o=n.width),Math.abs(n.height-r)<=1&&(r=n.height),{x:t.offsetLeft,y:t.offsetTop,width:o,height:r}}function ib(t,n){var o=n.getRootNode&&n.getRootNode();if(t.contains(n))return!0;if(o&&Zd(o)){var r=n;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Eo(t){return zn(t).getComputedStyle(t)}function GF(t){return["table","td","th"].indexOf(Jn(t))>=0}function Go(t){return((Jr(t)?t.ownerDocument:t.document)||window.document).documentElement}function Rs(t){return Jn(t)==="html"?t:t.assignedSlot||t.parentNode||(Zd(t)?t.host:null)||Go(t)}function cb(t){return!_n(t)||Eo(t).position==="fixed"?null:t.offsetParent}function qF(t){var n=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,o=navigator.userAgent.indexOf("Trident")!==-1;if(o&&_n(t)){var r=Eo(t);if(r.position==="fixed")return null}var l=Rs(t);for(Zd(l)&&(l=l.host);_n(l)&&["html","body"].indexOf(Jn(l))<0;){var a=Eo(l);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||n&&a.willChange==="filter"||n&&a.filter&&a.filter!=="none")return l;l=l.parentNode}return null}function ta(t){for(var n=zn(t),o=cb(t);o&&GF(o)&&Eo(o).position==="static";)o=cb(o);return o&&(Jn(o)==="html"||Jn(o)==="body"&&Eo(o).position==="static")?n:o||qF(t)||n}function Qd(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function na(t,n,o){return Cr(t,Ms(n,o))}function YF(t,n,o){var r=na(t,n,o);return r>o?o:r}function db(){return{top:0,right:0,bottom:0,left:0}}function fb(t){return Object.assign({},db(),t)}function ub(t,n){return n.reduce(function(o,r){return o[r]=t,o},{})}var XF=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,fb(typeof t!="number"?t:ub(t,Zl))};function ZF(t){var n,o=t.state,r=t.name,l=t.options,a=o.elements.arrow,s=o.modifiersData.popperOffsets,i=Qn(o.placement),c=Qd(i),d=[on,Bn].indexOf(i)>=0,f=d?"height":"width";if(!(!a||!s)){var u=XF(l.padding,o),p=Jd(a),m=c==="y"?nn:on,g=c==="y"?$n:Bn,h=o.rects.reference[f]+o.rects.reference[c]-s[c]-o.rects.popper[f],b=s[c]-o.rects.reference[c],y=ta(a),w=y?c==="y"?y.clientHeight||0:y.clientWidth||0:0,C=h/2-b/2,k=u[m],E=w-p[f]-u[g],S=w/2-p[f]/2+C,N=na(k,S,E),$=c;o.modifiersData[r]=(n={},n[$]=N,n.centerOffset=N-S,n)}}function JF(t){var n=t.state,o=t.options,r=o.element,l=r===void 0?"[data-popper-arrow]":r;l!=null&&(typeof l=="string"&&(l=n.elements.popper.querySelector(l),!l)||!ib(n.elements.popper,l)||(n.elements.arrow=l))}var QF={name:"arrow",enabled:!0,phase:"main",fn:ZF,effect:JF,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function tl(t){return t.split("-")[1]}var ex={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tx(t){var n=t.x,o=t.y,r=window,l=r.devicePixelRatio||1;return{x:Qr(n*l)/l||0,y:Qr(o*l)/l||0}}function pb(t){var n,o=t.popper,r=t.popperRect,l=t.placement,a=t.variation,s=t.offsets,i=t.position,c=t.gpuAcceleration,d=t.adaptive,f=t.roundOffsets,u=t.isFixed,p=s.x,m=p===void 0?0:p,g=s.y,h=g===void 0?0:g,b=typeof f=="function"?f({x:m,y:h}):{x:m,y:h};m=b.x,h=b.y;var y=s.hasOwnProperty("x"),w=s.hasOwnProperty("y"),C=on,k=nn,E=window;if(d){var S=ta(o),N="clientHeight",$="clientWidth";if(S===zn(o)&&(S=Go(o),Eo(S).position!=="static"&&i==="absolute"&&(N="scrollHeight",$="scrollWidth")),S=S,l===nn||(l===on||l===Bn)&&a===Jl){k=$n;var B=u&&S===E&&E.visualViewport?E.visualViewport.height:S[N];h-=B-r.height,h*=c?1:-1}if(l===on||(l===nn||l===$n)&&a===Jl){C=Bn;var P=u&&S===E&&E.visualViewport?E.visualViewport.width:S[$];m-=P-r.width,m*=c?1:-1}}var D=Object.assign({position:i},d&&ex),z=f===!0?tx({x:m,y:h}):{x:m,y:h};if(m=z.x,h=z.y,c){var I;return Object.assign({},D,(I={},I[k]=w?"0":"",I[C]=y?"0":"",I.transform=(E.devicePixelRatio||1)<=1?"translate("+m+"px, "+h+"px)":"translate3d("+m+"px, "+h+"px, 0)",I))}return Object.assign({},D,(n={},n[k]=w?h+"px":"",n[C]=y?m+"px":"",n.transform="",n))}function nx(t){var n=t.state,o=t.options,r=o.gpuAcceleration,l=r===void 0?!0:r,a=o.adaptive,s=a===void 0?!0:a,i=o.roundOffsets,c=i===void 0?!0:i,d={placement:Qn(n.placement),variation:tl(n.placement),popper:n.elements.popper,popperRect:n.rects.popper,gpuAcceleration:l,isFixed:n.options.strategy==="fixed"};n.modifiersData.popperOffsets!=null&&(n.styles.popper=Object.assign({},n.styles.popper,pb(Object.assign({},d,{offsets:n.modifiersData.popperOffsets,position:n.options.strategy,adaptive:s,roundOffsets:c})))),n.modifiersData.arrow!=null&&(n.styles.arrow=Object.assign({},n.styles.arrow,pb(Object.assign({},d,{offsets:n.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-placement":n.placement})}var mb={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:nx,data:{}},Is={passive:!0};function ox(t){var n=t.state,o=t.instance,r=t.options,l=r.scroll,a=l===void 0?!0:l,s=r.resize,i=s===void 0?!0:s,c=zn(n.elements.popper),d=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&d.forEach(function(f){f.addEventListener("scroll",o.update,Is)}),i&&c.addEventListener("resize",o.update,Is),function(){a&&d.forEach(function(f){f.removeEventListener("scroll",o.update,Is)}),i&&c.removeEventListener("resize",o.update,Is)}}var hb={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:ox,data:{}},rx={left:"right",right:"left",bottom:"top",top:"bottom"};function Ps(t){return t.replace(/left|right|bottom|top/g,function(n){return rx[n]})}var lx={start:"end",end:"start"};function gb(t){return t.replace(/start|end/g,function(n){return lx[n]})}function ef(t){var n=zn(t),o=n.pageXOffset,r=n.pageYOffset;return{scrollLeft:o,scrollTop:r}}function tf(t){return el(Go(t)).left+ef(t).scrollLeft}function ax(t){var n=zn(t),o=Go(t),r=n.visualViewport,l=o.clientWidth,a=o.clientHeight,s=0,i=0;return r&&(l=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=r.offsetLeft,i=r.offsetTop)),{width:l,height:a,x:s+tf(t),y:i}}function sx(t){var n,o=Go(t),r=ef(t),l=(n=t.ownerDocument)==null?void 0:n.body,a=Cr(o.scrollWidth,o.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),s=Cr(o.scrollHeight,o.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),i=-r.scrollLeft+tf(t),c=-r.scrollTop;return Eo(l||o).direction==="rtl"&&(i+=Cr(o.clientWidth,l?l.clientWidth:0)-a),{width:a,height:s,x:i,y:c}}function nf(t){var n=Eo(t),o=n.overflow,r=n.overflowX,l=n.overflowY;return/auto|scroll|overlay|hidden/.test(o+l+r)}function yb(t){return["html","body","#document"].indexOf(Jn(t))>=0?t.ownerDocument.body:_n(t)&&nf(t)?t:yb(Rs(t))}function oa(t,n){var o;n===void 0&&(n=[]);var r=yb(t),l=r===((o=t.ownerDocument)==null?void 0:o.body),a=zn(r),s=l?[a].concat(a.visualViewport||[],nf(r)?r:[]):r,i=n.concat(s);return l?i:i.concat(oa(Rs(s)))}function of(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ix(t){var n=el(t);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}function bb(t,n){return n===lb?of(ax(t)):Jr(n)?ix(n):of(sx(Go(t)))}function cx(t){var n=oa(Rs(t)),o=["absolute","fixed"].indexOf(Eo(t).position)>=0,r=o&&_n(t)?ta(t):t;return Jr(r)?n.filter(function(l){return Jr(l)&&ib(l,r)&&Jn(l)!=="body"}):[]}function dx(t,n,o){var r=n==="clippingParents"?cx(t):[].concat(n),l=[].concat(r,[o]),a=l[0],s=l.reduce(function(i,c){var d=bb(t,c);return i.top=Cr(d.top,i.top),i.right=Ms(d.right,i.right),i.bottom=Ms(d.bottom,i.bottom),i.left=Cr(d.left,i.left),i},bb(t,a));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Cb(t){var n=t.reference,o=t.element,r=t.placement,l=r?Qn(r):null,a=r?tl(r):null,s=n.x+n.width/2-o.width/2,i=n.y+n.height/2-o.height/2,c;switch(l){case nn:c={x:s,y:n.y-o.height};break;case $n:c={x:s,y:n.y+n.height};break;case Bn:c={x:n.x+n.width,y:i};break;case on:c={x:n.x-o.width,y:i};break;default:c={x:n.x,y:n.y}}var d=l?Qd(l):null;if(d!=null){var f=d==="y"?"height":"width";switch(a){case Zr:c[d]=c[d]-(n[f]/2-o[f]/2);break;case Jl:c[d]=c[d]+(n[f]/2-o[f]/2);break}}return c}function ra(t,n){n===void 0&&(n={});var o=n,r=o.placement,l=r===void 0?t.placement:r,a=o.boundary,s=a===void 0?IF:a,i=o.rootBoundary,c=i===void 0?lb:i,d=o.elementContext,f=d===void 0?Ql:d,u=o.altBoundary,p=u===void 0?!1:u,m=o.padding,g=m===void 0?0:m,h=fb(typeof g!="number"?g:ub(g,Zl)),b=f===Ql?PF:Ql,y=t.rects.popper,w=t.elements[p?b:f],C=dx(Jr(w)?w:w.contextElement||Go(t.elements.popper),s,c),k=el(t.elements.reference),E=Cb({reference:k,element:y,strategy:"absolute",placement:l}),S=of(Object.assign({},y,E)),N=f===Ql?S:k,$={top:C.top-N.top+h.top,bottom:N.bottom-C.bottom+h.bottom,left:C.left-N.left+h.left,right:N.right-C.right+h.right},B=t.modifiersData.offset;if(f===Ql&&B){var P=B[l];Object.keys($).forEach(function(D){var z=[Bn,$n].indexOf(D)>=0?1:-1,I=[nn,$n].indexOf(D)>=0?"y":"x";$[D]+=P[I]*z})}return $}function fx(t,n){n===void 0&&(n={});var o=n,r=o.placement,l=o.boundary,a=o.rootBoundary,s=o.padding,i=o.flipVariations,c=o.allowedAutoPlacements,d=c===void 0?ea:c,f=tl(r),u=f?i?ab:ab.filter(function(g){return tl(g)===f}):Zl,p=u.filter(function(g){return d.indexOf(g)>=0});p.length===0&&(p=u);var m=p.reduce(function(g,h){return g[h]=ra(t,{placement:h,boundary:l,rootBoundary:a,padding:s})[Qn(h)],g},{});return Object.keys(m).sort(function(g,h){return m[g]-m[h]})}function ux(t){if(Qn(t)===Xd)return[];var n=Ps(t);return[gb(t),n,gb(n)]}function px(t){var n=t.state,o=t.options,r=t.name;if(!n.modifiersData[r]._skip){for(var l=o.mainAxis,a=l===void 0?!0:l,s=o.altAxis,i=s===void 0?!0:s,c=o.fallbackPlacements,d=o.padding,f=o.boundary,u=o.rootBoundary,p=o.altBoundary,m=o.flipVariations,g=m===void 0?!0:m,h=o.allowedAutoPlacements,b=n.options.placement,y=Qn(b),w=y===b,C=c||(w||!g?[Ps(b)]:ux(b)),k=[b].concat(C).reduce(function(X,J){return X.concat(Qn(J)===Xd?fx(n,{placement:J,boundary:f,rootBoundary:u,padding:d,flipVariations:g,allowedAutoPlacements:h}):J)},[]),E=n.rects.reference,S=n.rects.popper,N=new Map,$=!0,B=k[0],P=0;P=0,L=A?"width":"height",R=ra(n,{placement:D,boundary:f,rootBoundary:u,altBoundary:p,padding:d}),T=A?I?Bn:on:I?$n:nn;E[L]>S[L]&&(T=Ps(T));var v=Ps(T),V=[];if(a&&V.push(R[z]<=0),i&&V.push(R[T]<=0,R[v]<=0),V.every(function(X){return X})){B=D,$=!1;break}N.set(D,V)}if($)for(var H=g?3:1,x=function(X){var J=k.find(function(U){var W=N.get(U);if(W)return W.slice(0,X).every(function(Q){return Q})});if(J)return B=J,"break"},F=H;F>0;F--){var K=x(F);if(K==="break")break}n.placement!==B&&(n.modifiersData[r]._skip=!0,n.placement=B,n.reset=!0)}}var mx={name:"flip",enabled:!0,phase:"main",fn:px,requiresIfExists:["offset"],data:{_skip:!1}};function wb(t,n,o){return o===void 0&&(o={x:0,y:0}),{top:t.top-n.height-o.y,right:t.right-n.width+o.x,bottom:t.bottom-n.height+o.y,left:t.left-n.width-o.x}}function kb(t){return[nn,Bn,$n,on].some(function(n){return t[n]>=0})}function hx(t){var n=t.state,o=t.name,r=n.rects.reference,l=n.rects.popper,a=n.modifiersData.preventOverflow,s=ra(n,{elementContext:"reference"}),i=ra(n,{altBoundary:!0}),c=wb(s,r),d=wb(i,l,a),f=kb(c),u=kb(d);n.modifiersData[o]={referenceClippingOffsets:c,popperEscapeOffsets:d,isReferenceHidden:f,hasPopperEscaped:u},n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":u})}var gx={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hx};function yx(t,n,o){var r=Qn(t),l=[on,nn].indexOf(r)>=0?-1:1,a=typeof o=="function"?o(Object.assign({},n,{placement:t})):o,s=a[0],i=a[1];return s=s||0,i=(i||0)*l,[on,Bn].indexOf(r)>=0?{x:i,y:s}:{x:s,y:i}}function bx(t){var n=t.state,o=t.options,r=t.name,l=o.offset,a=l===void 0?[0,0]:l,s=ea.reduce(function(f,u){return f[u]=yx(u,n.rects,a),f},{}),i=s[n.placement],c=i.x,d=i.y;n.modifiersData.popperOffsets!=null&&(n.modifiersData.popperOffsets.x+=c,n.modifiersData.popperOffsets.y+=d),n.modifiersData[r]=s}var Cx={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:bx};function wx(t){var n=t.state,o=t.name;n.modifiersData[o]=Cb({reference:n.rects.reference,element:n.rects.popper,strategy:"absolute",placement:n.placement})}var Sb={name:"popperOffsets",enabled:!0,phase:"read",fn:wx,data:{}};function kx(t){return t==="x"?"y":"x"}function Sx(t){var n=t.state,o=t.options,r=t.name,l=o.mainAxis,a=l===void 0?!0:l,s=o.altAxis,i=s===void 0?!1:s,c=o.boundary,d=o.rootBoundary,f=o.altBoundary,u=o.padding,p=o.tether,m=p===void 0?!0:p,g=o.tetherOffset,h=g===void 0?0:g,b=ra(n,{boundary:c,rootBoundary:d,padding:u,altBoundary:f}),y=Qn(n.placement),w=tl(n.placement),C=!w,k=Qd(y),E=kx(k),S=n.modifiersData.popperOffsets,N=n.rects.reference,$=n.rects.popper,B=typeof h=="function"?h(Object.assign({},n.rects,{placement:n.placement})):h,P=typeof B=="number"?{mainAxis:B,altAxis:B}:Object.assign({mainAxis:0,altAxis:0},B),D=n.modifiersData.offset?n.modifiersData.offset[n.placement]:null,z={x:0,y:0};if(S){if(a){var I,A=k==="y"?nn:on,L=k==="y"?$n:Bn,R=k==="y"?"height":"width",T=S[k],v=T+b[A],V=T-b[L],H=m?-$[R]/2:0,x=w===Zr?N[R]:$[R],F=w===Zr?-$[R]:-N[R],K=n.elements.arrow,X=m&&K?Jd(K):{width:0,height:0},J=n.modifiersData["arrow#persistent"]?n.modifiersData["arrow#persistent"].padding:db(),U=J[A],W=J[L],Q=na(0,N[R],X[R]),Y=C?N[R]/2-H-Q-U-P.mainAxis:x-Q-U-P.mainAxis,ee=C?-N[R]/2+H+Q+W+P.mainAxis:F+Q+W+P.mainAxis,pe=n.elements.arrow&&ta(n.elements.arrow),he=pe?k==="y"?pe.clientTop||0:pe.clientLeft||0:0,we=(I=D==null?void 0:D[k])!=null?I:0,Me=T+Y-we-he,be=T+ee-we,Ke=na(m?Ms(v,Me):v,T,m?Cr(V,be):V);S[k]=Ke,z[k]=Ke-T}if(i){var me,ne=k==="x"?nn:on,oe=k==="x"?$n:Bn,fe=S[E],ye=E==="y"?"height":"width",$e=fe+b[ne],ve=fe-b[oe],te=[nn,on].indexOf(y)!==-1,Ee=(me=D==null?void 0:D[E])!=null?me:0,Re=te?$e:fe-N[ye]-$[ye]-Ee+P.altAxis,xe=te?fe+N[ye]+$[ye]-Ee-P.altAxis:ve,q=m&&te?YF(Re,fe,xe):na(m?Re:$e,fe,m?xe:ve);S[E]=q,z[E]=q-fe}n.modifiersData[r]=z}}var Ex={name:"preventOverflow",enabled:!0,phase:"main",fn:Sx,requiresIfExists:["offset"]};function Nx(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function $x(t){return t===zn(t)||!_n(t)?ef(t):Nx(t)}function Bx(t){var n=t.getBoundingClientRect(),o=Qr(n.width)/t.offsetWidth||1,r=Qr(n.height)/t.offsetHeight||1;return o!==1||r!==1}function _x(t,n,o){o===void 0&&(o=!1);var r=_n(n),l=_n(n)&&Bx(n),a=Go(n),s=el(t,l),i={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(r||!r&&!o)&&((Jn(n)!=="body"||nf(a))&&(i=$x(n)),_n(n)?(c=el(n,!0),c.x+=n.clientLeft,c.y+=n.clientTop):a&&(c.x=tf(a))),{x:s.left+i.scrollLeft-c.x,y:s.top+i.scrollTop-c.y,width:s.width,height:s.height}}function vx(t){var n=new Map,o=new Set,r=[];t.forEach(function(a){n.set(a.name,a)});function l(a){o.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(i){if(!o.has(i)){var c=n.get(i);c&&l(c)}}),r.push(a)}return t.forEach(function(a){o.has(a.name)||l(a)}),r}function Tx(t){var n=vx(t);return WF.reduce(function(o,r){return o.concat(n.filter(function(l){return l.phase===r}))},[])}function Vx(t){var n;return function(){return n||(n=new Promise(function(o){Promise.resolve().then(function(){n=void 0,o(t())})})),n}}function Mx(t){var n=t.reduce(function(o,r){var l=o[r.name];return o[r.name]=l?Object.assign({},l,r,{options:Object.assign({},l.options,r.options),data:Object.assign({},l.data,r.data)}):r,o},{});return Object.keys(n).map(function(o){return n[o]})}var Eb={placement:"bottom",modifiers:[],strategy:"absolute"};function Nb(){for(var t=arguments.length,n=new Array(t),o=0;o{const n=[],o=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const l=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||l?NodeFilter.FILTER_SKIP:r.tabIndex>=0||r===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)n.push(o.currentNode);return n},_b=(t,n)=>{for(const o of t)if(!Px(o,n))return o},Px=(t,n)=>{if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(n&&t===n)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1},Ax=t=>{const n=Bb(t),o=_b(n,t),r=_b(n.reverse(),t);return[o,r]},Ox=t=>t instanceof HTMLInputElement&&"select"in t,qo=(t,n)=>{if(t&&t.focus){const o=document.activeElement;t.focus({preventScroll:!0}),t!==o&&Ox(t)&&n&&t.select()}};function vb(t,n){const o=[...t],r=t.indexOf(n);return r!==-1&&o.splice(r,1),o}const zx=()=>{let t=[];return{push:r=>{const l=t[0];l&&r!==l&&l.pause(),t=vb(t,r),t.unshift(r)},remove:r=>{var l,a;t=vb(t,r),(a=(l=t[0])==null?void 0:l.resume)==null||a.call(l)}}},Dx=(t,n=!1)=>{const o=document.activeElement;for(const r of t)if(qo(r,n),document.activeElement!==o)return},Tb=zx(),lf="focus-trap.focus-after-trapped",af="focus-trap.focus-after-released",Vb={cancelable:!0,bubbles:!1},Mb="focusAfterTrapped",Rb="focusAfterReleased",sf=Symbol("elFocusTrap"),Lx=e.defineComponent({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[Mb,Rb,"focusin","focusout","focusout-prevented","release-requested"],setup(t,{emit:n}){const o=e.ref();let r,l;dy(m=>{t.trapped&&!a.paused&&n("release-requested",m)});const a={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},s=m=>{if(!t.loop&&!t.trapped||a.paused)return;const{key:g,altKey:h,ctrlKey:b,metaKey:y,currentTarget:w,shiftKey:C}=m,{loop:k}=t,E=g===ue.tab&&!h&&!b&&!y,S=document.activeElement;if(E&&S){const N=w,[$,B]=Ax(N);$&&B?!C&&S===B?(m.preventDefault(),k&&qo($,!0),n("focusout-prevented")):C&&[$,N].includes(S)&&(m.preventDefault(),k&&qo(B,!0),n("focusout-prevented")):S===N&&(m.preventDefault(),n("focusout-prevented"))}};e.provide(sf,{focusTrapRef:o,onKeydown:s}),e.watch(()=>t.focusTrapEl,m=>{m&&(o.value=m)},{immediate:!0}),e.watch([o],([m],[g])=>{m&&(m.addEventListener("keydown",s),m.addEventListener("focusin",d),m.addEventListener("focusout",f)),g&&(g.removeEventListener("keydown",s),g.removeEventListener("focusin",d),g.removeEventListener("focusout",f))});const i=m=>{n(Mb,m)},c=m=>n(Rb,m),d=m=>{const g=e.unref(o);if(!g)return;const h=m.target,b=h&&g.contains(h);b&&n("focusin",m),!a.paused&&t.trapped&&(b?l=h:qo(l,!0))},f=m=>{const g=e.unref(o);if(!(a.paused||!g))if(t.trapped){const h=m.relatedTarget;!Qt(h)&&!g.contains(h)&&setTimeout(()=>{!a.paused&&t.trapped&&qo(l,!0)},0)}else{const h=m.target;h&&g.contains(h)||n("focusout",m)}};async function u(){await e.nextTick();const m=e.unref(o);if(m){Tb.push(a);const g=document.activeElement;if(r=g,!m.contains(g)){const b=new Event(lf,Vb);m.addEventListener(lf,i),m.dispatchEvent(b),b.defaultPrevented||e.nextTick(()=>{let y=t.focusStartEl;Fe(y)||(qo(y),document.activeElement!==y&&(y="first")),y==="first"&&Dx(Bb(m),!0),(document.activeElement===g||y==="container")&&qo(m)})}}}function p(){const m=e.unref(o);if(m){m.removeEventListener(lf,i);const g=new Event(af,Vb);m.addEventListener(af,c),m.dispatchEvent(g),g.defaultPrevented||qo(r!=null?r:document.body,!0),m.removeEventListener(af,i),Tb.remove(a)}}return e.onMounted(()=>{t.trapped&&u(),e.watch(()=>t.trapped,m=>{m?u():p()})}),e.onBeforeUnmount(()=>{t.trapped&&p()}),{onKeydown:s}}});function Fx(t,n,o,r,l,a){return e.renderSlot(t.$slots,"default",{handleKeydown:t.onKeydown})}var As=re(Lx,[["render",Fx],["__file","focus-trap.vue"]]);const xx=["fixed","absolute"],Ib=se({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:j(Array),default:()=>[]},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:ea,default:"bottom"},popperOptions:{type:j(Object),default:()=>({})},strategy:{type:String,values:xx,default:"absolute"}}),cf=se({...Ib,id:String,style:{type:j([String,Array,Object])},className:{type:j([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:j([String,Array,Object])},popperStyle:{type:j([String,Array,Object])},referenceEl:{type:j(Object)},triggerTargetEl:{type:j(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},ariaLabel:{type:String,default:void 0},virtualTriggering:Boolean,zIndex:Number}),Pb=["mouseenter","mouseleave","focus","blur","close"],Ab=(t,n)=>{const{placement:o,strategy:r,popperOptions:l}=t,a={placement:o,strategy:r,...l,modifiers:Kx(t)};return Wx(a,n),jx(a,l==null?void 0:l.modifiers),a},Hx=t=>{if(!!Oe)return Rn(t)};function Kx(t){const{offset:n,gpuAcceleration:o,fallbackPlacements:r}=t;return[{name:"offset",options:{offset:[0,n!=null?n:12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:r!=null?r:[]}},{name:"computeStyles",options:{gpuAcceleration:o,adaptive:o}}]}function Wx(t,{arrowEl:n,arrowOffset:o}){t.modifiers.push({name:"arrow",options:{element:n,padding:o!=null?o:5}})}function jx(t,n){n&&(t.modifiers=[...t.modifiers,...n!=null?n:[]])}const Ux={name:"ElPopperContent"},Gx=e.defineComponent({...Ux,props:cf,emits:Pb,setup(t,{expose:n,emit:o}){const r=t,{popperInstanceRef:l,contentRef:a,triggerRef:s,role:i}=e.inject(ks,void 0),c=e.inject(Lt,void 0),{nextZIndex:d}=Yn(),f=Z("popper"),u=e.ref(),p=e.ref("first"),m=e.ref(),g=e.ref();e.provide(Td,{arrowRef:m,arrowOffset:g}),c&&(c.addInputId||c.removeInputId)&&e.provide(Lt,{...c,addInputId:Xe,removeInputId:Xe});const h=e.ref(r.zIndex||d()),b=e.ref(!1);let y;const w=e.computed(()=>Hx(r.referenceEl)||e.unref(s)),C=e.computed(()=>[{zIndex:e.unref(h)},r.popperStyle]),k=e.computed(()=>[f.b(),f.is("pure",r.pure),f.is(r.effect),r.popperClass]),E=e.computed(()=>i&&i.value==="dialog"?"false":void 0),S=({referenceEl:A,popperContentEl:L,arrowEl:R})=>{const T=Ab(r,{arrowEl:R,arrowOffset:e.unref(g)});return $b(A,L,T)},N=(A=!0)=>{var L;(L=e.unref(l))==null||L.update(),A&&(h.value=r.zIndex||d())},$=()=>{var A,L;const R={name:"eventListeners",enabled:r.visible};(L=(A=e.unref(l))==null?void 0:A.setOptions)==null||L.call(A,T=>({...T,modifiers:[...T.modifiers||[],R]})),N(!1),r.visible&&r.focusOnShow?b.value=!0:r.visible===!1&&(b.value=!1)},B=()=>{o("focus")},P=()=>{p.value="first",o("blur")},D=A=>{var L;r.visible&&!b.value&&(A.target&&(p.value=A.target),b.value=!0,A.relatedTarget&&((L=A.relatedTarget)==null||L.focus()))},z=()=>{r.trapping||(b.value=!1)},I=()=>{b.value=!1,o("close")};return e.onMounted(()=>{let A;e.watch(w,L=>{var R;A==null||A();const T=e.unref(l);if((R=T==null?void 0:T.destroy)==null||R.call(T),L){const v=e.unref(u);a.value=v,l.value=S({referenceEl:L,popperContentEl:v,arrowEl:e.unref(m)}),A=e.watch(()=>L.getBoundingClientRect(),()=>N(),{immediate:!0})}else l.value=void 0},{immediate:!0}),e.watch(()=>r.triggerTargetEl,(L,R)=>{y==null||y(),y=void 0;const T=e.unref(L||u.value),v=e.unref(R||u.value);if(go(T)){const{ariaLabel:V,id:H}=e.toRefs(r);y=e.watch([i,V,E,H],x=>{["role","aria-label","aria-modal","id"].forEach((F,K)=>{Qt(x[K])?T.removeAttribute(F):T.setAttribute(F,x[K])})},{immediate:!0})}go(v)&&["role","aria-label","aria-modal","id"].forEach(V=>{v.removeAttribute(V)})},{immediate:!0}),e.watch(()=>r.visible,$,{immediate:!0}),e.watch(()=>Ab(r,{arrowEl:e.unref(m),arrowOffset:e.unref(g)}),L=>{var R;return(R=l.value)==null?void 0:R.setOptions(L)})}),e.onBeforeUnmount(()=>{y==null||y(),y=void 0}),n({popperContentRef:u,popperInstanceRef:l,updatePopper:N,contentStyle:C}),(A,L)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"popperContentRef",ref:u,style:e.normalizeStyle(e.unref(C)),class:e.normalizeClass(e.unref(k)),tabindex:"-1",onMouseenter:L[0]||(L[0]=R=>A.$emit("mouseenter",R)),onMouseleave:L[1]||(L[1]=R=>A.$emit("mouseleave",R))},[e.createVNode(e.unref(As),{trapped:b.value,"trap-on-focus-in":!0,"focus-trap-el":u.value,"focus-start-el":p.value,onFocusAfterTrapped:B,onFocusAfterReleased:P,onFocusin:D,onFocusoutPrevented:z,onReleaseRequested:I},{default:e.withCtx(()=>[e.renderSlot(A.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el"])],38))}});var Ob=re(Gx,[["__file","content.vue"]]);const df=Te(_F),qx=Z("tooltip"),vt=se({...py,...cf,appendTo:{type:j([String,Object]),default:Ld},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:j(Boolean),default:null},transition:{type:String,default:`${qx.namespace.value}-fade-in-linear`},teleported:{type:Boolean,default:!0},disabled:{type:Boolean}}),nl=se({...Yd,disabled:Boolean,trigger:{type:j([String,Array]),default:"hover"},triggerKeys:{type:j(Array),default:()=>[ue.enter,ue.space]}}),zb=se({openDelay:{type:Number},visibleArrow:{type:Boolean,default:void 0},hideAfter:{type:Number,default:200},showArrow:{type:Boolean,default:!0}}),la=Symbol("elTooltip"),Yx=e.defineComponent({name:"ElTooltipContent",components:{ElPopperContent:Ob},inheritAttrs:!1,props:vt,setup(t){const n=e.ref(null),o=e.ref(!1),r=e.ref(!1),l=e.ref(!1),a=e.ref(!1),{controlled:s,id:i,open:c,trigger:d,onClose:f,onOpen:u,onShow:p,onHide:m,onBeforeShow:g,onBeforeHide:h}=e.inject(la,void 0),b=e.computed(()=>t.persistent);e.onBeforeUnmount(()=>{a.value=!0});const y=e.computed(()=>e.unref(b)?!0:e.unref(c)),w=e.computed(()=>t.disabled?!1:e.unref(c)),C=e.computed(()=>{var A;return(A=t.style)!=null?A:{}}),k=e.computed(()=>!e.unref(c)),E=()=>{m()},S=()=>{if(e.unref(s))return!0},N=ft(S,()=>{t.enterable&&e.unref(d)==="hover"&&u()}),$=ft(S,()=>{e.unref(d)==="hover"&&f()}),B=()=>{var A,L;(L=(A=n.value)==null?void 0:A.updatePopper)==null||L.call(A),g==null||g()},P=()=>{h==null||h()},D=()=>{p(),I=ed(e.computed(()=>{var A;return(A=n.value)==null?void 0:A.popperContentRef}),()=>{if(e.unref(s))return;e.unref(d)!=="hover"&&f()})},z=()=>{t.virtualTriggering||f()};let I;return e.watch(()=>e.unref(c),A=>{A||I==null||I()},{flush:"post"}),{ariaHidden:k,entering:r,leaving:l,id:i,intermediateOpen:o,contentStyle:C,contentRef:n,destroyed:a,shouldRender:y,shouldShow:w,onClose:f,open:c,onAfterShow:D,onBeforeEnter:B,onBeforeLeave:P,onContentEnter:N,onContentLeave:$,onTransitionLeave:E,onBlur:z}}});function Xx(t,n,o,r,l,a){const s=e.resolveComponent("el-popper-content");return e.openBlock(),e.createBlock(e.Teleport,{disabled:!t.teleported,to:t.appendTo},[e.createVNode(e.Transition,{name:t.transition,onAfterLeave:t.onTransitionLeave,onBeforeEnter:t.onBeforeEnter,onAfterEnter:t.onAfterShow,onBeforeLeave:t.onBeforeLeave},{default:e.withCtx(()=>[t.shouldRender?e.withDirectives((e.openBlock(),e.createBlock(s,e.mergeProps({key:0,id:t.id,ref:"contentRef"},t.$attrs,{"aria-label":t.ariaLabel,"aria-hidden":t.ariaHidden,"boundaries-padding":t.boundariesPadding,"fallback-placements":t.fallbackPlacements,"gpu-acceleration":t.gpuAcceleration,offset:t.offset,placement:t.placement,"popper-options":t.popperOptions,strategy:t.strategy,effect:t.effect,enterable:t.enterable,pure:t.pure,"popper-class":t.popperClass,"popper-style":[t.popperStyle,t.contentStyle],"reference-el":t.referenceEl,"trigger-target-el":t.triggerTargetEl,visible:t.shouldShow,"z-index":t.zIndex,onMouseenter:t.onContentEnter,onMouseleave:t.onContentLeave,onBlur:t.onBlur,onClose:t.onClose}),{default:e.withCtx(()=>[e.createCommentVNode(" Workaround bug #6378 "),t.destroyed?e.createCommentVNode("v-if",!0):e.renderSlot(t.$slots,"default",{key:0})]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onBlur","onClose"])),[[e.vShow,t.shouldShow]]):e.createCommentVNode("v-if",!0)]),_:3},8,["name","onAfterLeave","onBeforeEnter","onAfterEnter","onBeforeLeave"])],8,["disabled","to"])}var Zx=re(Yx,[["render",Xx],["__file","content.vue"]]);const Jx=(t,n)=>Ae(t)?t.includes(n):t===n,ol=(t,n,o)=>r=>{Jx(e.unref(t),n)&&o(r)},Qx=e.defineComponent({name:"ElTooltipTrigger",components:{ElPopperTrigger:rb},props:nl,setup(t){const n=Z("tooltip"),{controlled:o,id:r,open:l,onOpen:a,onClose:s,onToggle:i}=e.inject(la,void 0),c=e.ref(null),d=()=>{if(e.unref(o)||t.disabled)return!0},f=e.toRef(t,"trigger"),u=ft(d,ol(f,"hover",a)),p=ft(d,ol(f,"hover",s)),m=ft(d,ol(f,"click",w=>{w.button===0&&i(w)})),g=ft(d,ol(f,"focus",a)),h=ft(d,ol(f,"focus",s)),b=ft(d,ol(f,"contextmenu",w=>{w.preventDefault(),i(w)})),y=ft(d,w=>{const{code:C}=w;t.triggerKeys.includes(C)&&(w.preventDefault(),i(w))});return{onBlur:h,onContextMenu:b,onFocus:g,onMouseenter:u,onMouseleave:p,onClick:m,onKeydown:y,open:l,id:r,triggerRef:c,ns:n}}});function e5(t,n,o,r,l,a){const s=e.resolveComponent("el-popper-trigger");return e.openBlock(),e.createBlock(s,{id:t.id,"virtual-ref":t.virtualRef,open:t.open,"virtual-triggering":t.virtualTriggering,class:e.normalizeClass(t.ns.e("trigger")),onBlur:t.onBlur,onClick:t.onClick,onContextmenu:t.onContextMenu,onFocus:t.onFocus,onMouseenter:t.onMouseenter,onMouseleave:t.onMouseleave,onKeydown:t.onKeydown},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"])}var t5=re(Qx,[["render",e5],["__file","trigger.vue"]]);const{useModelToggleProps:n5,useModelToggle:o5,useModelToggleEmits:r5}=zd("visible"),l5=e.defineComponent({name:"ElTooltip",components:{ElPopper:df,ElPopperArrow:eb,ElTooltipContent:Zx,ElTooltipTrigger:t5},props:{...Gd,...n5,...vt,...nl,...qd,...zb},emits:[...r5,"before-show","before-hide","show","hide","open","close"],setup(t,{emit:n}){uy();const o=e.computed(()=>(Rt(t.openDelay),t.openDelay||t.showAfter)),r=e.computed(()=>(Rt(t.visibleArrow),St(t.visibleArrow)?t.visibleArrow:t.showArrow)),l=Nn(),a=e.ref(null),s=e.ref(null),i=()=>{var y;const w=e.unref(a);w&&((y=w.popperInstanceRef)==null||y.update())},c=e.ref(!1),d=e.ref(void 0),{show:f,hide:u,hasUpdateHandler:p}=o5({indicator:c,toggleReason:d}),{onOpen:m,onClose:g}=my({showAfter:o,hideAfter:e.toRef(t,"hideAfter"),open:f,close:u}),h=e.computed(()=>St(t.visible)&&!p.value);e.provide(la,{controlled:h,id:l,open:e.readonly(c),trigger:e.toRef(t,"trigger"),onOpen:y=>{m(y)},onClose:y=>{g(y)},onToggle:y=>{e.unref(c)?g(y):m(y)},onShow:()=>{n("show",d.value)},onHide:()=>{n("hide",d.value)},onBeforeShow:()=>{n("before-show",d.value)},onBeforeHide:()=>{n("before-hide",d.value)},updatePopper:i}),e.watch(()=>t.disabled,y=>{y&&c.value&&(c.value=!1)});const b=()=>{var y,w;const C=(w=(y=s.value)==null?void 0:y.contentRef)==null?void 0:w.popperContentRef;return C&&C.contains(document.activeElement)};return e.onDeactivated(()=>c.value&&u()),{compatShowAfter:o,compatShowArrow:r,popperRef:a,contentRef:s,open:c,hide:u,isFocusInsideContent:b,updatePopper:i,onOpen:m,onClose:g}}}),a5=["innerHTML"],s5={key:1};function i5(t,n,o,r,l,a){const s=e.resolveComponent("el-tooltip-trigger"),i=e.resolveComponent("el-popper-arrow"),c=e.resolveComponent("el-tooltip-content"),d=e.resolveComponent("el-popper");return e.openBlock(),e.createBlock(d,{ref:"popperRef",role:t.role},{default:e.withCtx(()=>[e.createVNode(s,{disabled:t.disabled,trigger:t.trigger,"trigger-keys":t.triggerKeys,"virtual-ref":t.virtualRef,"virtual-triggering":t.virtualTriggering},{default:e.withCtx(()=>[t.$slots.default?e.renderSlot(t.$slots,"default",{key:0}):e.createCommentVNode("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),e.createVNode(c,{ref:"contentRef","aria-label":t.ariaLabel,"boundaries-padding":t.boundariesPadding,content:t.content,disabled:t.disabled,effect:t.effect,enterable:t.enterable,"fallback-placements":t.fallbackPlacements,"hide-after":t.hideAfter,"gpu-acceleration":t.gpuAcceleration,offset:t.offset,persistent:t.persistent,"popper-class":t.popperClass,"popper-style":t.popperStyle,placement:t.placement,"popper-options":t.popperOptions,pure:t.pure,"raw-content":t.rawContent,"reference-el":t.referenceEl,"trigger-target-el":t.triggerTargetEl,"show-after":t.compatShowAfter,strategy:t.strategy,teleported:t.teleported,transition:t.transition,"virtual-triggering":t.virtualTriggering,"z-index":t.zIndex,"append-to":t.appendTo},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"content",{},()=>[t.rawContent?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:t.content},null,8,a5)):(e.openBlock(),e.createElementBlock("span",s5,e.toDisplayString(t.content),1))]),t.compatShowArrow?(e.openBlock(),e.createBlock(i,{key:0,"arrow-offset":t.arrowOffset},null,8,["arrow-offset"])):e.createCommentVNode("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"])}var c5=re(l5,[["render",i5],["__file","tooltip.vue"]]);const Ut=Te(c5),Db=se({valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:j(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:j([Function,Array]),default:Xe},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},label:{type:String},teleported:vt.teleported,highlightFirstItem:{type:Boolean,default:!1},fitInputWidth:{type:Boolean,default:!1}}),Lb={[Ve]:t=>Fe(t),[fn]:t=>Fe(t),[at]:t=>Fe(t),focus:t=>t instanceof FocusEvent,blur:t=>t instanceof FocusEvent,clear:()=>!0,select:t=>it(t)},d5=["aria-expanded","aria-owns"],f5={key:0},u5=["id","aria-selected","onClick"],p5={name:"ElAutocomplete",inheritAttrs:!1},m5=e.defineComponent({...p5,props:Db,emits:Lb,setup(t,{expose:n,emit:o}){const r=t,l="ElAutocomplete",a=ws(),s=e.useAttrs(),i=bo(),c=Z("autocomplete"),d=e.ref(),f=e.ref(),u=e.ref(),p=e.ref();let m=!1;const g=e.ref([]),h=e.ref(-1),b=e.ref(""),y=e.ref(!1),w=e.ref(!1),C=e.ref(!1),k=e.computed(()=>c.b(String(jl()))),E=e.computed(()=>s.style),S=e.computed(()=>(g.value.length>0||C.value)&&y.value),N=e.computed(()=>!r.hideLoading&&C.value),$=e.computed(()=>d.value?Array.from(d.value.$el.querySelectorAll("input")):[]),B=async()=>{await e.nextTick(),S.value&&(b.value=`${d.value.$el.offsetWidth}px`)},P=()=>{m=!0},D=()=>{m=!1,h.value=-1},I=Dt(async W=>{if(w.value)return;const Q=Y=>{C.value=!1,!w.value&&(Ae(Y)?(g.value=Y,h.value=r.highlightFirstItem?0:-1):Et(l,"autocomplete suggestions must be an array"))};if(C.value=!0,Ae(r.fetchSuggestions))Q(r.fetchSuggestions);else{const Y=await r.fetchSuggestions(W,Q);Ae(Y)&&Q(Y)}},r.debounce),A=W=>{const Q=!!W;if(o(fn,W),o(Ve,W),w.value=!1,y.value||(y.value=Q),!r.triggerOnFocus&&!W){w.value=!0,g.value=[];return}I(W)},L=W=>{var Q;i.value||(((Q=W.target)==null?void 0:Q.tagName)!=="INPUT"||$.value.includes(document.activeElement))&&(y.value=!0)},R=W=>{o(at,W)},T=W=>{m||(y.value=!0,o("focus",W),r.triggerOnFocus&&I(String(r.modelValue)))},v=W=>{m||o("blur",W)},V=()=>{y.value=!1,o(Ve,""),o("clear")},H=async()=>{S.value&&h.value>=0&&h.value{S.value&&(W.preventDefault(),W.stopPropagation(),F())},F=()=>{y.value=!1},K=()=>{var W;(W=d.value)==null||W.focus()},X=()=>{var W;(W=d.value)==null||W.blur()},J=async W=>{o(fn,W[r.valueKey]),o(Ve,W[r.valueKey]),o("select",W),g.value=[],h.value=-1},U=W=>{if(!S.value||C.value)return;if(W<0){h.value=-1;return}W>=g.value.length&&(W=g.value.length-1);const Q=f.value.querySelector(`.${c.be("suggestion","wrap")}`),ee=Q.querySelectorAll(`.${c.be("suggestion","list")} li`)[W],pe=Q.scrollTop,{offsetTop:he,scrollHeight:we}=ee;he+we>pe+Q.clientHeight&&(Q.scrollTop+=we),he{S.value&&F()}),e.onMounted(()=>{d.value.ref.setAttribute("role","textbox"),d.value.ref.setAttribute("aria-autocomplete","list"),d.value.ref.setAttribute("aria-controls","id"),d.value.ref.setAttribute("aria-activedescendant",`${k.value}-item-${h.value}`)}),n({highlightedIndex:h,activated:y,loading:C,inputRef:d,popperRef:u,suggestions:g,handleSelect:J,handleKeyEnter:H,focus:K,blur:X,close:F,highlight:U}),(W,Q)=>(e.openBlock(),e.createBlock(e.unref(Ut),{ref_key:"popperRef",ref:u,visible:e.unref(S),placement:W.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[e.unref(c).e("popper"),W.popperClass],teleported:W.teleported,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${e.unref(c).namespace.value}-zoom-in-top`,persistent:"",onBeforeShow:B,onShow:P,onHide:D},{content:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"regionRef",ref:f,class:e.normalizeClass([e.unref(c).b("suggestion"),e.unref(c).is("loading",e.unref(N))]),style:e.normalizeStyle({[W.fitInputWidth?"width":"minWidth"]:b.value,outline:"none"}),role:"region"},[e.createVNode(e.unref(Zn),{id:e.unref(k),tag:"ul","wrap-class":e.unref(c).be("suggestion","wrap"),"view-class":e.unref(c).be("suggestion","list"),role:"listbox"},{default:e.withCtx(()=>[e.unref(N)?(e.openBlock(),e.createElementBlock("li",f5,[e.createVNode(e.unref(de),{class:e.normalizeClass(e.unref(c).is("loading"))},{default:e.withCtx(()=>[e.createVNode(e.unref(xo))]),_:1},8,["class"])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(g.value,(Y,ee)=>(e.openBlock(),e.createElementBlock("li",{id:`${e.unref(k)}-item-${ee}`,key:ee,class:e.normalizeClass({highlighted:h.value===ee}),role:"option","aria-selected":h.value===ee,onClick:pe=>J(Y)},[e.renderSlot(W.$slots,"default",{item:Y},()=>[e.createTextVNode(e.toDisplayString(Y[W.valueKey]),1)])],10,u5))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"listboxRef",ref:p,class:e.normalizeClass([e.unref(c).b(),W.$attrs.class]),style:e.normalizeStyle(e.unref(E)),role:"combobox","aria-haspopup":"listbox","aria-expanded":e.unref(S),"aria-owns":e.unref(k)},[e.createVNode(e.unref(It),e.mergeProps({ref_key:"inputRef",ref:d},e.unref(a),{"model-value":W.modelValue,onInput:A,onChange:R,onFocus:T,onBlur:v,onClear:V,onKeydown:[Q[0]||(Q[0]=e.withKeys(e.withModifiers(Y=>U(h.value-1),["prevent"]),["up"])),Q[1]||(Q[1]=e.withKeys(e.withModifiers(Y=>U(h.value+1),["prevent"]),["down"])),e.withKeys(H,["enter"]),e.withKeys(F,["tab"]),e.withKeys(x,["esc"])],onMousedown:L}),e.createSlots({_:2},[W.$slots.prepend?{name:"prepend",fn:e.withCtx(()=>[e.renderSlot(W.$slots,"prepend")])}:void 0,W.$slots.append?{name:"append",fn:e.withCtx(()=>[e.renderSlot(W.$slots,"append")])}:void 0,W.$slots.prefix?{name:"prefix",fn:e.withCtx(()=>[e.renderSlot(W.$slots,"prefix")])}:void 0,W.$slots.suffix?{name:"suffix",fn:e.withCtx(()=>[e.renderSlot(W.$slots,"suffix")])}:void 0]),1040,["model-value","onKeydown"])],14,d5)]),_:3},8,["visible","placement","popper-class","teleported","transition"]))}});var h5=re(m5,[["__file","autocomplete.vue"]]);const Fb=Te(h5),xb=se({size:{type:[Number,String],values:Ko,default:"",validator:t=>Ne(t)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:$t},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:j(String),default:"cover"}}),Hb={error:t=>t instanceof Event},g5=["src","alt","srcset"],y5={name:"ElAvatar"},b5=e.defineComponent({...y5,props:xb,emits:Hb,setup(t,{emit:n}){const o=t,r=Z("avatar"),l=e.ref(!1),a=e.computed(()=>{const{size:d,icon:f,shape:u}=o,p=[r.b()];return Fe(d)&&p.push(r.m(d)),f&&p.push(r.m("icon")),u&&p.push(r.m(u)),p}),s=e.computed(()=>{const{size:d}=o;return Ne(d)?r.cssVarBlock({size:Nt(d)||""}):void 0}),i=e.computed(()=>({objectFit:o.fit}));e.watch(()=>o.src,()=>l.value=!1);function c(d){l.value=!0,n("error",d)}return(d,f)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(a)),style:e.normalizeStyle(e.unref(s))},[(d.src||d.srcSet)&&!l.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:d.src,alt:d.alt,srcset:d.srcSet,style:e.normalizeStyle(e.unref(i)),onError:c},null,44,g5)):d.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:1},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.icon)))]),_:1})):e.renderSlot(d.$slots,"default",{key:2})],6))}});var C5=re(b5,[["__file","avatar.vue"]]);const Kb=Te(C5),Wb={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},jb={click:t=>t instanceof MouseEvent},w5=["onClick"],k5={name:"ElBacktop"},S5=e.defineComponent({...k5,props:Wb,emits:jb,setup(t,{emit:n}){const o=t,r="ElBacktop",l=Z("backtop"),a=e.shallowRef(),s=e.shallowRef(),i=e.ref(!1),c=e.computed(()=>({right:`${o.right}px`,bottom:`${o.bottom}px`})),d=()=>{if(!a.value)return;const m=Date.now(),g=a.value.scrollTop,h=()=>{if(!a.value)return;const b=(Date.now()-m)/500;b<1?(a.value.scrollTop=g*(1-X8(b)),requestAnimationFrame(h)):a.value.scrollTop=0};requestAnimationFrame(h)},f=()=>{a.value&&(i.value=a.value.scrollTop>=o.visibilityHeight)},u=m=>{d(),n("click",m)},p=b0(f,300);return nt(s,"scroll",p),e.onMounted(()=>{var m;s.value=document,a.value=document.documentElement,o.target&&(a.value=(m=document.querySelector(o.target))!=null?m:void 0,a.value||Et(r,`target is not existed: ${o.target}`),s.value=a.value)}),(m,g)=>(e.openBlock(),e.createBlock(e.Transition,{name:`${e.unref(l).namespace.value}-fade-in`},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(e.unref(c)),class:e.normalizeClass(e.unref(l).b()),onClick:e.withModifiers(u,["stop"])},[e.renderSlot(m.$slots,"default",{},()=>[e.createVNode(e.unref(de),{class:e.normalizeClass(e.unref(l).e("icon"))},{default:e.withCtx(()=>[e.createVNode(e.unref(dz))]),_:1},8,["class"])])],14,w5)):e.createCommentVNode("v-if",!0)]),_:3},8,["name"]))}});var E5=re(S5,[["__file","backtop.vue"]]);const Ub=Te(E5),Gb=se({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"}}),N5=["textContent"],$5={name:"ElBadge"},B5=e.defineComponent({...$5,props:Gb,setup(t,{expose:n}){const o=t,r=Z("badge"),l=e.computed(()=>o.isDot?"":Ne(o.value)&&Ne(o.max)?o.max(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(r).b())},[e.renderSlot(a.$slots,"default"),e.createVNode(e.Transition,{name:`${e.unref(r).namespace.value}-zoom-in-center`,persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("sup",{class:e.normalizeClass([e.unref(r).e("content"),e.unref(r).em("content",a.type),e.unref(r).is("fixed",!!a.$slots.default),e.unref(r).is("dot",a.isDot)]),textContent:e.toDisplayString(e.unref(l))},null,10,N5),[[e.vShow,!a.hidden&&(e.unref(l)||a.isDot)]])]),_:1},8,["name"])],2))}});var _5=re(B5,[["__file","badge.vue"]]);const ff=Te(_5),qb=se({separator:{type:String,default:"/"},separatorIcon:{type:$t,default:""}}),v5={name:"ElBreadcrumb"},T5=e.defineComponent({...v5,props:qb,setup(t){const n=t,o=Z("breadcrumb"),r=e.ref();return e.provide(yd,n),e.onMounted(()=>{const l=r.value.querySelectorAll(`.${o.e("item")}`);l.length&&l[l.length-1].setAttribute("aria-current","page")}),(l,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"breadcrumb",ref:r,class:e.normalizeClass(e.unref(o).b()),"aria-label":"Breadcrumb",role:"navigation"},[e.renderSlot(l.$slots,"default")],2))}});var V5=re(T5,[["__file","breadcrumb.vue"]]);const Yb=se({to:{type:j([String,Object]),default:""},replace:{type:Boolean,default:!1}}),M5={name:"ElBreadcrumbItem"},R5=e.defineComponent({...M5,props:Yb,setup(t){const n=t,o=e.getCurrentInstance(),r=e.inject(yd,void 0),l=Z("breadcrumb"),{separator:a,separatorIcon:s}=e.toRefs(r),i=o.appContext.config.globalProperties.$router,c=e.ref(),d=()=>{!n.to||!i||(n.replace?i.replace(n.to):i.push(n.to))};return(f,u)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(l).e("item"))},[e.createElementVNode("span",{ref_key:"link",ref:c,class:e.normalizeClass([e.unref(l).e("inner"),e.unref(l).is("link",!!f.to)]),role:"link",onClick:d},[e.renderSlot(f.$slots,"default")],2),e.unref(s)?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(l).e("separator"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s))))]),_:1},8,["class"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(l).e("separator")),role:"presentation"},e.toDisplayString(e.unref(a)),3))],2))}});var Xb=re(R5,[["__file","breadcrumb-item.vue"]]);const Zb=Te(V5,{BreadcrumbItem:Xb}),Jb=ut(Xb),Os=["default","primary","success","warning","info","danger","text",""],Qb=["button","submit","reset"],zs=se({size:tn,disabled:Boolean,type:{type:String,values:Os,default:""},icon:{type:$t,default:""},nativeType:{type:String,values:Qb,default:"button"},loading:Boolean,loadingIcon:{type:$t,default:()=>xo},plain:Boolean,text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0}}),eC={click:t=>t instanceof MouseEvent};function Pt(t,n){I5(t)&&(t="100%");var o=P5(t);return t=n===360?t:Math.min(n,Math.max(0,parseFloat(t))),o&&(t=parseInt(String(t*n),10)/100),Math.abs(t-n)<1e-6?1:(n===360?t=(t<0?t%n+n:t%n)/parseFloat(String(n)):t=t%n/parseFloat(String(n)),t)}function Ds(t){return Math.min(1,Math.max(0,t))}function I5(t){return typeof t=="string"&&t.indexOf(".")!==-1&&parseFloat(t)===1}function P5(t){return typeof t=="string"&&t.indexOf("%")!==-1}function tC(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function Ls(t){return t<=1?"".concat(Number(t)*100,"%"):t}function wr(t){return t.length===1?"0"+t:String(t)}function A5(t,n,o){return{r:Pt(t,255)*255,g:Pt(n,255)*255,b:Pt(o,255)*255}}function nC(t,n,o){t=Pt(t,255),n=Pt(n,255),o=Pt(o,255);var r=Math.max(t,n,o),l=Math.min(t,n,o),a=0,s=0,i=(r+l)/2;if(r===l)s=0,a=0;else{var c=r-l;switch(s=i>.5?c/(2-r-l):c/(r+l),r){case t:a=(n-o)/c+(n1&&(o-=1),o<1/6?t+(n-t)*(6*o):o<1/2?n:o<2/3?t+(n-t)*(2/3-o)*6:t}function O5(t,n,o){var r,l,a;if(t=Pt(t,360),n=Pt(n,100),o=Pt(o,100),n===0)l=o,a=o,r=o;else{var s=o<.5?o*(1+n):o+n-o*n,i=2*o-s;r=uf(i,s,t+1/3),l=uf(i,s,t),a=uf(i,s,t-1/3)}return{r:r*255,g:l*255,b:a*255}}function oC(t,n,o){t=Pt(t,255),n=Pt(n,255),o=Pt(o,255);var r=Math.max(t,n,o),l=Math.min(t,n,o),a=0,s=r,i=r-l,c=r===0?0:i/r;if(r===l)a=0;else{switch(r){case t:a=(n-o)/i+(n>16,g:(t&65280)>>8,b:t&255}}var pf={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function x5(t){var n={r:0,g:0,b:0},o=1,r=null,l=null,a=null,s=!1,i=!1;return typeof t=="string"&&(t=W5(t)),typeof t=="object"&&(No(t.r)&&No(t.g)&&No(t.b)?(n=A5(t.r,t.g,t.b),s=!0,i=String(t.r).substr(-1)==="%"?"prgb":"rgb"):No(t.h)&&No(t.s)&&No(t.v)?(r=Ls(t.s),l=Ls(t.v),n=z5(t.h,r,l),s=!0,i="hsv"):No(t.h)&&No(t.s)&&No(t.l)&&(r=Ls(t.s),a=Ls(t.l),n=O5(t.h,r,a),s=!0,i="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(o=t.a)),o=tC(o),{ok:s,format:t.format||i,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a:o}}var H5="[-\\+]?\\d+%?",K5="[-\\+]?\\d*\\.\\d+%?",Yo="(?:".concat(K5,")|(?:").concat(H5,")"),mf="[\\s|\\(]+(".concat(Yo,")[,|\\s]+(").concat(Yo,")[,|\\s]+(").concat(Yo,")\\s*\\)?"),hf="[\\s|\\(]+(".concat(Yo,")[,|\\s]+(").concat(Yo,")[,|\\s]+(").concat(Yo,")[,|\\s]+(").concat(Yo,")\\s*\\)?"),Dn={CSS_UNIT:new RegExp(Yo),rgb:new RegExp("rgb"+mf),rgba:new RegExp("rgba"+hf),hsl:new RegExp("hsl"+mf),hsla:new RegExp("hsla"+hf),hsv:new RegExp("hsv"+mf),hsva:new RegExp("hsva"+hf),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function W5(t){if(t=t.trim().toLowerCase(),t.length===0)return!1;var n=!1;if(pf[t])t=pf[t],n=!0;else if(t==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var o=Dn.rgb.exec(t);return o?{r:o[1],g:o[2],b:o[3]}:(o=Dn.rgba.exec(t),o?{r:o[1],g:o[2],b:o[3],a:o[4]}:(o=Dn.hsl.exec(t),o?{h:o[1],s:o[2],l:o[3]}:(o=Dn.hsla.exec(t),o?{h:o[1],s:o[2],l:o[3],a:o[4]}:(o=Dn.hsv.exec(t),o?{h:o[1],s:o[2],v:o[3]}:(o=Dn.hsva.exec(t),o?{h:o[1],s:o[2],v:o[3],a:o[4]}:(o=Dn.hex8.exec(t),o?{r:pn(o[1]),g:pn(o[2]),b:pn(o[3]),a:lC(o[4]),format:n?"name":"hex8"}:(o=Dn.hex6.exec(t),o?{r:pn(o[1]),g:pn(o[2]),b:pn(o[3]),format:n?"name":"hex"}:(o=Dn.hex4.exec(t),o?{r:pn(o[1]+o[1]),g:pn(o[2]+o[2]),b:pn(o[3]+o[3]),a:lC(o[4]+o[4]),format:n?"name":"hex8"}:(o=Dn.hex3.exec(t),o?{r:pn(o[1]+o[1]),g:pn(o[2]+o[2]),b:pn(o[3]+o[3]),format:n?"name":"hex"}:!1)))))))))}function No(t){return Boolean(Dn.CSS_UNIT.exec(String(t)))}var aC=function(){function t(n,o){n===void 0&&(n=""),o===void 0&&(o={});var r;if(n instanceof t)return n;typeof n=="number"&&(n=F5(n)),this.originalInput=n;var l=x5(n);this.originalInput=n,this.r=l.r,this.g=l.g,this.b=l.b,this.a=l.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=o.format)!==null&&r!==void 0?r:l.format,this.gradientType=o.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=l.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var n=this.toRgb();return(n.r*299+n.g*587+n.b*114)/1e3},t.prototype.getLuminance=function(){var n=this.toRgb(),o,r,l,a=n.r/255,s=n.g/255,i=n.b/255;return a<=.03928?o=a/12.92:o=Math.pow((a+.055)/1.055,2.4),s<=.03928?r=s/12.92:r=Math.pow((s+.055)/1.055,2.4),i<=.03928?l=i/12.92:l=Math.pow((i+.055)/1.055,2.4),.2126*o+.7152*r+.0722*l},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(n){return this.a=tC(n),this.roundA=Math.round(100*this.a)/100,this},t.prototype.toHsv=function(){var n=oC(this.r,this.g,this.b);return{h:n.h*360,s:n.s,v:n.v,a:this.a}},t.prototype.toHsvString=function(){var n=oC(this.r,this.g,this.b),o=Math.round(n.h*360),r=Math.round(n.s*100),l=Math.round(n.v*100);return this.a===1?"hsv(".concat(o,", ").concat(r,"%, ").concat(l,"%)"):"hsva(".concat(o,", ").concat(r,"%, ").concat(l,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var n=nC(this.r,this.g,this.b);return{h:n.h*360,s:n.s,l:n.l,a:this.a}},t.prototype.toHslString=function(){var n=nC(this.r,this.g,this.b),o=Math.round(n.h*360),r=Math.round(n.s*100),l=Math.round(n.l*100);return this.a===1?"hsl(".concat(o,", ").concat(r,"%, ").concat(l,"%)"):"hsla(".concat(o,", ").concat(r,"%, ").concat(l,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(n){return n===void 0&&(n=!1),rC(this.r,this.g,this.b,n)},t.prototype.toHexString=function(n){return n===void 0&&(n=!1),"#"+this.toHex(n)},t.prototype.toHex8=function(n){return n===void 0&&(n=!1),D5(this.r,this.g,this.b,this.a,n)},t.prototype.toHex8String=function(n){return n===void 0&&(n=!1),"#"+this.toHex8(n)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var n=Math.round(this.r),o=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(n,", ").concat(o,", ").concat(r,")"):"rgba(".concat(n,", ").concat(o,", ").concat(r,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var n=function(o){return"".concat(Math.round(Pt(o,255)*100),"%")};return{r:n(this.r),g:n(this.g),b:n(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var n=function(o){return Math.round(Pt(o,255)*100)};return this.a===1?"rgb(".concat(n(this.r),"%, ").concat(n(this.g),"%, ").concat(n(this.b),"%)"):"rgba(".concat(n(this.r),"%, ").concat(n(this.g),"%, ").concat(n(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var n="#"+rC(this.r,this.g,this.b,!1),o=0,r=Object.entries(pf);o=0,a=!o&&l&&(n.startsWith("hex")||n==="name");return a?n==="name"&&this.a===0?this.toName():this.toRgbString():(n==="rgb"&&(r=this.toRgbString()),n==="prgb"&&(r=this.toPercentageRgbString()),(n==="hex"||n==="hex6")&&(r=this.toHexString()),n==="hex3"&&(r=this.toHexString(!0)),n==="hex4"&&(r=this.toHex8String(!0)),n==="hex8"&&(r=this.toHex8String()),n==="name"&&(r=this.toName()),n==="hsl"&&(r=this.toHslString()),n==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(n){n===void 0&&(n=10);var o=this.toHsl();return o.l+=n/100,o.l=Ds(o.l),new t(o)},t.prototype.brighten=function(n){n===void 0&&(n=10);var o=this.toRgb();return o.r=Math.max(0,Math.min(255,o.r-Math.round(255*-(n/100)))),o.g=Math.max(0,Math.min(255,o.g-Math.round(255*-(n/100)))),o.b=Math.max(0,Math.min(255,o.b-Math.round(255*-(n/100)))),new t(o)},t.prototype.darken=function(n){n===void 0&&(n=10);var o=this.toHsl();return o.l-=n/100,o.l=Ds(o.l),new t(o)},t.prototype.tint=function(n){return n===void 0&&(n=10),this.mix("white",n)},t.prototype.shade=function(n){return n===void 0&&(n=10),this.mix("black",n)},t.prototype.desaturate=function(n){n===void 0&&(n=10);var o=this.toHsl();return o.s-=n/100,o.s=Ds(o.s),new t(o)},t.prototype.saturate=function(n){n===void 0&&(n=10);var o=this.toHsl();return o.s+=n/100,o.s=Ds(o.s),new t(o)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(n){var o=this.toHsl(),r=(o.h+n)%360;return o.h=r<0?360+r:r,new t(o)},t.prototype.mix=function(n,o){o===void 0&&(o=50);var r=this.toRgb(),l=new t(n).toRgb(),a=o/100,s={r:(l.r-r.r)*a+r.r,g:(l.g-r.g)*a+r.g,b:(l.b-r.b)*a+r.b,a:(l.a-r.a)*a+r.a};return new t(s)},t.prototype.analogous=function(n,o){n===void 0&&(n=6),o===void 0&&(o=30);var r=this.toHsl(),l=360/o,a=[this];for(r.h=(r.h-(l*n>>1)+720)%360;--n;)r.h=(r.h+l)%360,a.push(new t(r));return a},t.prototype.complement=function(){var n=this.toHsl();return n.h=(n.h+180)%360,new t(n)},t.prototype.monochromatic=function(n){n===void 0&&(n=6);for(var o=this.toHsv(),r=o.h,l=o.s,a=o.v,s=[],i=1/n;n--;)s.push(new t({h:r,s:l,v:a})),a=(a+i)%1;return s},t.prototype.splitcomplement=function(){var n=this.toHsl(),o=n.h;return[this,new t({h:(o+72)%360,s:n.s,l:n.l}),new t({h:(o+216)%360,s:n.s,l:n.l})]},t.prototype.onBackground=function(n){var o=this.toRgb(),r=new t(n).toRgb();return new t({r:r.r+(o.r-r.r)*o.a,g:r.g+(o.g-r.g)*o.a,b:r.b+(o.b-r.b)*o.a})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(n){for(var o=this.toHsl(),r=o.h,l=[this],a=360/n,s=1;s{let r={};const l=t.color;if(l){const a=new aC(l),s=t.dark?a.tint(20).toString():Xo(a,20);if(t.plain)r=o.cssVarBlock({"bg-color":t.dark?Xo(a,90):a.tint(90).toString(),"text-color":l,"border-color":t.dark?Xo(a,50):a.tint(50).toString(),"hover-text-color":`var(${o.cssVarName("color-white")})`,"hover-bg-color":l,"hover-border-color":l,"active-bg-color":s,"active-text-color":`var(${o.cssVarName("color-white")})`,"active-border-color":s}),n.value&&(r[o.cssVarBlockName("disabled-bg-color")]=t.dark?Xo(a,90):a.tint(90).toString(),r[o.cssVarBlockName("disabled-text-color")]=t.dark?Xo(a,50):a.tint(50).toString(),r[o.cssVarBlockName("disabled-border-color")]=t.dark?Xo(a,80):a.tint(80).toString());else{const i=t.dark?Xo(a,30):a.tint(30).toString(),c=a.isDark()?`var(${o.cssVarName("color-white")})`:`var(${o.cssVarName("color-black")})`;if(r=o.cssVarBlock({"bg-color":l,"text-color":c,"border-color":l,"hover-bg-color":i,"hover-text-color":c,"hover-border-color":i,"active-bg-color":s,"active-border-color":s}),n.value){const d=t.dark?Xo(a,50):a.tint(50).toString();r[o.cssVarBlockName("disabled-bg-color")]=d,r[o.cssVarBlockName("disabled-text-color")]=t.dark?"rgba(255, 255, 255, 0.5)":`var(${o.cssVarName("color-white")})`,r[o.cssVarBlockName("disabled-border-color")]=d}}}return r})}const U5=["aria-disabled","disabled","autofocus","type"],G5={name:"ElButton"},q5=e.defineComponent({...G5,props:zs,emits:eC,setup(t,{expose:n,emit:o}){const r=t,l=e.useSlots();Gr({from:"type.text",replacement:"type.link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},e.computed(()=>r.type==="text"));const a=e.inject(bd,void 0),s=Wo("button"),i=Z("button"),{form:c}=Co(),d=yt(e.computed(()=>a==null?void 0:a.size)),f=bo(),u=e.ref(),p=e.computed(()=>r.type||(a==null?void 0:a.type)||""),m=e.computed(()=>{var y,w,C;return(C=(w=r.autoInsertSpace)!=null?w:(y=s.value)==null?void 0:y.autoInsertSpace)!=null?C:!1}),g=e.computed(()=>{var y;const w=(y=l.default)==null?void 0:y.call(l);if(m.value&&(w==null?void 0:w.length)===1){const C=w[0];if((C==null?void 0:C.type)===e.Text){const k=C.children;return/^\p{Unified_Ideograph}{2}$/u.test(k.trim())}}return!1}),h=j5(r),b=y=>{r.nativeType==="reset"&&(c==null||c.resetFields()),o("click",y)};return n({ref:u,size:d,type:p,disabled:f,shouldAddSpace:g}),(y,w)=>(e.openBlock(),e.createElementBlock("button",{ref_key:"_ref",ref:u,class:e.normalizeClass([e.unref(i).b(),e.unref(i).m(e.unref(p)),e.unref(i).m(e.unref(d)),e.unref(i).is("disabled",e.unref(f)),e.unref(i).is("loading",y.loading),e.unref(i).is("plain",y.plain),e.unref(i).is("round",y.round),e.unref(i).is("circle",y.circle),e.unref(i).is("text",y.text),e.unref(i).is("link",y.link),e.unref(i).is("has-bg",y.bg)]),"aria-disabled":e.unref(f)||y.loading,disabled:e.unref(f)||y.loading,autofocus:y.autofocus,type:y.nativeType,style:e.normalizeStyle(e.unref(h)),onClick:b},[y.loading?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[y.$slots.loading?e.renderSlot(y.$slots,"loading",{key:0}):(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass(e.unref(i).is("loading"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(y.loadingIcon)))]),_:1},8,["class"]))],64)):y.icon||y.$slots.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:1},{default:e.withCtx(()=>[y.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(y.icon),{key:0})):e.renderSlot(y.$slots,"icon",{key:1})]),_:3})):e.createCommentVNode("v-if",!0),y.$slots.default?(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass({[e.unref(i).em("text","expand")]:e.unref(g)})},[e.renderSlot(y.$slots,"default")],2)):e.createCommentVNode("v-if",!0)],14,U5))}});var Y5=re(q5,[["__file","button.vue"]]);const X5={size:zs.size,type:zs.type},Z5={name:"ElButtonGroup"},J5=e.defineComponent({...Z5,props:X5,setup(t){const n=t;e.provide(bd,e.reactive({size:e.toRef(n,"size"),type:e.toRef(n,"type")}));const o=Z("button");return(r,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`${e.unref(o).b("group")}`)},[e.renderSlot(r.$slots,"default")],2))}});var sC=re(J5,[["__file","button-group.vue"]]);const At=Te(Y5,{ButtonGroup:sC}),gf=ut(sC);var $o=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},iC={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){var o=1e3,r=6e4,l=36e5,a="millisecond",s="second",i="minute",c="hour",d="day",f="week",u="month",p="quarter",m="year",g="date",h="Invalid Date",b=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,w={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},C=function(I,A,L){var R=String(I);return!R||R.length>=A?I:""+Array(A+1-R.length).join(L)+I},k={s:C,z:function(I){var A=-I.utcOffset(),L=Math.abs(A),R=Math.floor(L/60),T=L%60;return(A<=0?"+":"-")+C(R,2,"0")+":"+C(T,2,"0")},m:function I(A,L){if(A.date()1)return I(V[0])}else{var H=A.name;S[H]=A,T=H}return!R&&T&&(E=T),T||!R&&E},B=function(I,A){if(N(I))return I.clone();var L=typeof A=="object"?A:{};return L.date=I,L.args=arguments,new D(L)},P=k;P.l=$,P.i=N,P.w=function(I,A){return B(I,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var D=function(){function I(L){this.$L=$(L.locale,null,!0),this.parse(L)}var A=I.prototype;return A.parse=function(L){this.$d=function(R){var T=R.date,v=R.utc;if(T===null)return new Date(NaN);if(P.u(T))return new Date;if(T instanceof Date)return new Date(T);if(typeof T=="string"&&!/Z$/i.test(T)){var V=T.match(b);if(V){var H=V[2]-1||0,x=(V[7]||"0").substring(0,3);return v?new Date(Date.UTC(V[1],H,V[3]||1,V[4]||0,V[5]||0,V[6]||0,x)):new Date(V[1],H,V[3]||1,V[4]||0,V[5]||0,V[6]||0,x)}}return new Date(T)}(L),this.$x=L.x||{},this.init()},A.init=function(){var L=this.$d;this.$y=L.getFullYear(),this.$M=L.getMonth(),this.$D=L.getDate(),this.$W=L.getDay(),this.$H=L.getHours(),this.$m=L.getMinutes(),this.$s=L.getSeconds(),this.$ms=L.getMilliseconds()},A.$utils=function(){return P},A.isValid=function(){return this.$d.toString()!==h},A.isSame=function(L,R){var T=B(L);return this.startOf(R)<=T&&T<=this.endOf(R)},A.isAfter=function(L,R){return B(L)68?1900:2e3)},d=function(h){return function(b){this[h]=+b}},f=[/[+-]\d\d:?(\d\d)?|Z/,function(h){(this.zone||(this.zone={})).offset=function(b){if(!b||b==="Z")return 0;var y=b.match(/([+-]|\d\d)/g),w=60*y[1]+(+y[2]||0);return w===0?0:y[0]==="+"?-w:w}(h)}],u=function(h){var b=i[h];return b&&(b.indexOf?b:b.s.concat(b.f))},p=function(h,b){var y,w=i.meridiem;if(w){for(var C=1;C<=24;C+=1)if(h.indexOf(w(C,0,b))>-1){y=C>12;break}}else y=h===(b?"pm":"PM");return y},m={A:[s,function(h){this.afternoon=p(h,!1)}],a:[s,function(h){this.afternoon=p(h,!0)}],S:[/\d/,function(h){this.milliseconds=100*+h}],SS:[l,function(h){this.milliseconds=10*+h}],SSS:[/\d{3}/,function(h){this.milliseconds=+h}],s:[a,d("seconds")],ss:[a,d("seconds")],m:[a,d("minutes")],mm:[a,d("minutes")],H:[a,d("hours")],h:[a,d("hours")],HH:[a,d("hours")],hh:[a,d("hours")],D:[a,d("day")],DD:[l,d("day")],Do:[s,function(h){var b=i.ordinal,y=h.match(/\d+/);if(this.day=y[0],b)for(var w=1;w<=31;w+=1)b(w).replace(/\[|\]/g,"")===h&&(this.day=w)}],M:[a,d("month")],MM:[l,d("month")],MMM:[s,function(h){var b=u("months"),y=(u("monthsShort")||b.map(function(w){return w.slice(0,3)})).indexOf(h)+1;if(y<1)throw new Error;this.month=y%12||y}],MMMM:[s,function(h){var b=u("months").indexOf(h)+1;if(b<1)throw new Error;this.month=b%12||b}],Y:[/[+-]?\d+/,d("year")],YY:[l,function(h){this.year=c(h)}],YYYY:[/\d{4}/,d("year")],Z:f,ZZ:f};function g(h){var b,y;b=h,y=i&&i.formats;for(var w=(h=b.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(B,P,D){var z=D&&D.toUpperCase();return P||y[D]||o[D]||y[z].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(I,A,L){return A||L.slice(1)})})).match(r),C=w.length,k=0;k-1)return new Date((T==="X"?1e3:1)*R);var V=g(T)(R),H=V.year,x=V.month,F=V.day,K=V.hours,X=V.minutes,J=V.seconds,U=V.milliseconds,W=V.zone,Q=new Date,Y=F||(H||x?1:Q.getDate()),ee=H||Q.getFullYear(),pe=0;H&&!x||(pe=x>0?x-1:Q.getMonth());var he=K||0,we=X||0,Me=J||0,be=U||0;return W?new Date(Date.UTC(ee,pe,Y,he,we,Me,be+60*W.offset*1e3)):v?new Date(Date.UTC(ee,pe,Y,he,we,Me,be)):new Date(ee,pe,Y,he,we,Me,be)}catch(Ke){return new Date("")}}(E,$,S),this.init(),z&&z!==!0&&(this.$L=this.locale(z).$L),D&&E!=this.format($)&&(this.$d=new Date("")),i={}}else if($ instanceof Array)for(var I=$.length,A=1;A<=I;A+=1){N[1]=$[A-1];var L=y.apply(this,N);if(L.isValid()){this.$d=L.$d,this.$L=L.$L,this.init();break}A===I&&(this.$d=new Date(""))}else C.call(this,k)}}})})(fC);var yf=fC.exports;const bf=["hours","minutes","seconds"],Fs="HH:mm:ss",kr="YYYY-MM-DD",uC={date:kr,dates:kr,week:"gggg[w]ww",year:"YYYY",month:"YYYY-MM",datetime:`${kr} ${Fs}`,monthrange:"YYYY-MM",daterange:kr,datetimerange:`${kr} ${Fs}`},xs=(t,n)=>[t>0?t-1:void 0,t,tArray.from(Array.from({length:t}).keys()),Cf=t=>t.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),wf=t=>t.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),kf=function(t,n){const o=xl(t),r=xl(n);return o&&r?t.getTime()===n.getTime():!o&&!r?t===n:!1},Sf=function(t,n){const o=Ae(t),r=Ae(n);return o&&r?t.length!==n.length?!1:t.every((l,a)=>kf(l,n[a])):!o&&!r?kf(t,n):!1},Ef=function(t,n,o){const r=Sn(n)||n==="x"?_e(t).locale(o):_e(t,n).locale(o);return r.isValid()?r:void 0},Nf=function(t,n,o){return Sn(n)?t:n==="x"?+t:_e(t).locale(o).format(n)},Hs=(t,n)=>{var o;const r=[],l=n==null?void 0:n();for(let a=0;a({})},modelValue:{type:j([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:j([Date,Array])},defaultTime:{type:j([Date,Array])},isRange:{type:Boolean,default:!1},...pC,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:{type:Boolean,default:!1},label:{type:String,default:void 0},tabindex:{type:j([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean}),Q5=["id","name","placeholder","value","disabled","readonly"],eH=["id","name","placeholder","value","disabled","readonly"],tH={name:"Picker"},nH=e.defineComponent({...tH,props:Ks,emits:["update:modelValue","change","focus","blur","calendar-change","panel-change","visible-change","keydown"],setup(t,{expose:n,emit:o}){const r=t,{lang:l}=We(),a=Z("date"),s=Z("input"),i=Z("range"),c=e.inject(un,{}),d=e.inject(Lt,{}),f=e.inject("ElPopperOptions",{}),u=e.ref(),p=e.ref(),m=e.ref(!1),g=e.ref(!1),h=e.ref(null);let b=!1,y=!1;e.watch(m,M=>{M?h.value=r.modelValue:(be.value=null,e.nextTick(()=>{w(r.modelValue)}))});const w=(M,G)=>{var ie;(G||!Sf(M,h.value))&&(o("change",M),r.validateEvent&&((ie=d.validate)==null||ie.call(d,"change").catch(ge=>void 0)))},C=M=>{if(!Sf(r.modelValue,M)){let G;Ae(M)?G=M.map(ie=>Nf(ie,r.valueFormat,l.value)):M&&(G=Nf(M,r.valueFormat,l.value)),o("update:modelValue",M&&G,l.value)}},k=M=>{o("keydown",M)},E=e.computed(()=>{if(p.value){const M=pe.value?p.value:p.value.$el;return Array.from(M.querySelectorAll("input"))}return[]}),S=(M,G,ie)=>{const ge=E.value;!ge.length||(!ie||ie==="min"?(ge[0].setSelectionRange(M,G),ge[0].focus()):ie==="max"&&(ge[1].setSelectionRange(M,G),ge[1].focus()))},N=()=>{I(!0,!0),e.nextTick(()=>{y=!1})},$=(M="",G=!1)=>{G||N(),m.value=G;let ie;Ae(M)?ie=M.map(ge=>ge.toDate()):ie=M&&M.toDate(),be.value=null,C(ie)},B=()=>{g.value=!0},P=()=>{o("visible-change",!0)},D=M=>{(M==null?void 0:M.key)===ue.esc&&I(!0,!0)},z=()=>{g.value=!1,y=!1,o("visible-change",!1)},I=(M=!0,G=!1)=>{y=G;const[ie,ge]=e.unref(E);let ce=ie;!M&&pe.value&&(ce=ge),ce&&ce.focus()},A=M=>{r.readonly||T.value||m.value||y||(m.value=!0,o("focus",M))};let L;const R=M=>{const G=async()=>{setTimeout(()=>{var ie,ge;L===G&&(!(((ie=u.value)==null?void 0:ie.isFocusInsideContent())&&!b)&&E.value.filter(ce=>ce.contains(document.activeElement)).length===0&&(Ke(),m.value=!1,o("blur",M),r.validateEvent&&((ge=d.validate)==null||ge.call(d,"blur").catch(ce=>void 0))),b=!1)},0)};L=G,G()},T=e.computed(()=>r.disabled||c.disabled),v=e.computed(()=>{let M;if(U.value?Re.value.getDefaultValue&&(M=Re.value.getDefaultValue()):Ae(r.modelValue)?M=r.modelValue.map(G=>Ef(G,r.valueFormat,l.value)):M=Ef(r.modelValue,r.valueFormat,l.value),Re.value.getRangeAvailableTime){const G=Re.value.getRangeAvailableTime(M);Jt(G,M)||(M=G,C(Ae(M)?M.map(ie=>ie.toDate()):M.toDate()))}return Ae(M)&&M.some(G=>!G)&&(M=[]),M}),V=e.computed(()=>{if(!Re.value.panelReady)return"";const M=ne(v.value);return Ae(be.value)?[be.value[0]||M&&M[0]||"",be.value[1]||M&&M[1]||""]:be.value!==null?be.value:!x.value&&U.value||!m.value&&U.value?"":M?F.value?M.join(", "):M:""}),H=e.computed(()=>r.type.includes("time")),x=e.computed(()=>r.type.startsWith("time")),F=e.computed(()=>r.type==="dates"),K=e.computed(()=>r.prefixIcon||(H.value?T0:QO)),X=e.ref(!1),J=M=>{r.readonly||T.value||X.value&&(M.stopPropagation(),N(),C(null),w(null,!0),X.value=!1,m.value=!1,Re.value.handleClear&&Re.value.handleClear())},U=e.computed(()=>{const{modelValue:M}=r;return!M||Ae(M)&&!M.filter(Boolean).length}),W=async M=>{var G;r.readonly||T.value||(((G=M.target)==null?void 0:G.tagName)!=="INPUT"||E.value.includes(document.activeElement))&&(m.value=!0)},Q=()=>{r.readonly||T.value||!U.value&&r.clearable&&(X.value=!0)},Y=()=>{X.value=!1},ee=M=>{var G;(((G=M.touches[0].target)==null?void 0:G.tagName)!=="INPUT"||E.value.includes(document.activeElement))&&(m.value=!0)},pe=e.computed(()=>r.type.includes("range")),he=yt(),we=e.computed(()=>{var M,G;return(G=(M=e.unref(u))==null?void 0:M.popperRef)==null?void 0:G.contentRef}),Me=e.computed(()=>{var M;return e.unref(pe)?e.unref(p):(M=e.unref(p))==null?void 0:M.$el});ed(Me,M=>{const G=e.unref(we),ie=e.unref(Me);G&&(M.target===G||M.composedPath().includes(G))||M.target===ie||M.composedPath().includes(ie)||(m.value=!1)});const be=e.ref(null),Ke=()=>{if(be.value){const M=me(V.value);M&&oe(M)&&(C(Ae(M)?M.map(G=>G.toDate()):M.toDate()),be.value=null)}be.value===""&&(C(null),w(null),be.value=null)},me=M=>M?Re.value.parseUserInput(M):null,ne=M=>M?Re.value.formatToString(M):null,oe=M=>Re.value.isValidValue(M),fe=async M=>{if(r.readonly||T.value)return;const{code:G}=M;if(k(M),G===ue.esc){m.value===!0&&(m.value=!1,M.preventDefault(),M.stopPropagation());return}if(G===ue.down&&(Re.value.handleFocusPicker&&(M.preventDefault(),M.stopPropagation()),m.value===!1&&(m.value=!0,await e.nextTick()),Re.value.handleFocusPicker)){Re.value.handleFocusPicker();return}if(G===ue.tab){b=!0;return}if(G===ue.enter||G===ue.numpadEnter){(be.value===null||be.value===""||oe(me(V.value)))&&(Ke(),m.value=!1),M.stopPropagation();return}if(be.value){M.stopPropagation();return}Re.value.handleKeydownInput&&Re.value.handleKeydownInput(M)},ye=M=>{be.value=M,m.value||(m.value=!0)},$e=M=>{const G=M.target;be.value?be.value=[G.value,be.value[1]]:be.value=[G.value,null]},ve=M=>{const G=M.target;be.value?be.value=[be.value[0],G.value]:be.value=[null,G.value]},te=()=>{var M;const G=be.value,ie=me(G&&G[0]),ge=e.unref(v);if(ie&&ie.isValid()){be.value=[ne(ie),((M=V.value)==null?void 0:M[1])||null];const ce=[ie,ge&&(ge[1]||null)];oe(ce)&&(C(ce),be.value=null)}},Ee=()=>{var M;const G=e.unref(be),ie=me(G&&G[1]),ge=e.unref(v);if(ie&&ie.isValid()){be.value=[((M=e.unref(V))==null?void 0:M[0])||null,ne(ie)];const ce=[ge&&ge[0],ie];oe(ce)&&(C(ce),be.value=null)}},Re=e.ref({}),xe=M=>{Re.value[M[0]]=M[1],Re.value.panelReady=!0},q=M=>{o("calendar-change",M)},le=(M,G,ie)=>{o("panel-change",M,G,ie)};return e.provide("EP_PICKER_BASE",{props:r}),n({focus:I,handleFocusInput:A,handleBlurInput:R,onPick:$}),(M,G)=>(e.openBlock(),e.createBlock(e.unref(Ut),e.mergeProps({ref_key:"refPopper",ref:u,visible:m.value,effect:"light",pure:"",trigger:"click"},M.$attrs,{role:"dialog",teleported:"",transition:`${e.unref(a).namespace.value}-zoom-in-top`,"popper-class":[`${e.unref(a).namespace.value}-picker__popper`,M.popperClass],"popper-options":e.unref(f),"fallback-placements":["bottom","top","right","left"],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:B,onShow:P,onHide:z}),{default:e.withCtx(()=>[e.unref(pe)?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"inputRef",ref:p,class:e.normalizeClass([e.unref(a).b("editor"),e.unref(a).bm("editor",M.type),e.unref(s).e("wrapper"),e.unref(a).is("disabled",e.unref(T)),e.unref(a).is("active",m.value),e.unref(i).b("editor"),e.unref(he)?e.unref(i).bm("editor",e.unref(he)):"",M.$attrs.class]),style:e.normalizeStyle(M.$attrs.style),onClick:A,onMouseenter:Q,onMouseleave:Y,onTouchstart:ee,onKeydown:fe},[e.unref(K)?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass([e.unref(s).e("icon"),e.unref(i).e("icon")]),onMousedown:e.withModifiers(W,["prevent"]),onTouchstart:ee},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(K))))]),_:1},8,["class","onMousedown"])):e.createCommentVNode("v-if",!0),e.createElementVNode("input",{id:M.id&&M.id[0],autocomplete:"off",name:M.name&&M.name[0],placeholder:M.startPlaceholder,value:e.unref(V)&&e.unref(V)[0],disabled:e.unref(T),readonly:!M.editable||M.readonly,class:e.normalizeClass(e.unref(i).b("input")),onMousedown:W,onInput:$e,onChange:te,onFocus:A,onBlur:R},null,42,Q5),e.renderSlot(M.$slots,"range-separator",{},()=>[e.createElementVNode("span",{class:e.normalizeClass(e.unref(i).b("separator"))},e.toDisplayString(M.rangeSeparator),3)]),e.createElementVNode("input",{id:M.id&&M.id[1],autocomplete:"off",name:M.name&&M.name[1],placeholder:M.endPlaceholder,value:e.unref(V)&&e.unref(V)[1],disabled:e.unref(T),readonly:!M.editable||M.readonly,class:e.normalizeClass(e.unref(i).b("input")),onMousedown:W,onFocus:A,onBlur:R,onInput:ve,onChange:Ee},null,42,eH),M.clearIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass([e.unref(s).e("icon"),e.unref(i).e("close-icon"),{[e.unref(i).e("close-icon--hidden")]:!X.value}]),onClick:J},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(M.clearIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],38)):(e.openBlock(),e.createBlock(e.unref(It),{key:0,id:M.id,ref_key:"inputRef",ref:p,"container-role":"combobox","model-value":e.unref(V),name:M.name,size:e.unref(he),disabled:e.unref(T),placeholder:M.placeholder,class:e.normalizeClass([e.unref(a).b("editor"),e.unref(a).bm("editor",M.type),M.$attrs.class]),style:e.normalizeStyle(M.$attrs.style),readonly:!M.editable||M.readonly||e.unref(F)||M.type==="week",label:M.label,tabindex:M.tabindex,"validate-event":M.validateEvent,onInput:ye,onFocus:A,onBlur:R,onKeydown:fe,onChange:Ke,onMousedown:W,onMouseenter:Q,onMouseleave:Y,onTouchstart:ee,onClick:G[0]||(G[0]=e.withModifiers(()=>{},["stop"]))},{prefix:e.withCtx(()=>[e.unref(K)?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(s).e("icon")),onMousedown:e.withModifiers(W,["prevent"]),onTouchstart:ee},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(K))))]),_:1},8,["class","onMousedown"])):e.createCommentVNode("v-if",!0)]),suffix:e.withCtx(()=>[X.value&&M.clearIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(`${e.unref(s).e("icon")} clear-icon`),onClick:e.withModifiers(J,["stop"])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(M.clearIcon)))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","label","tabindex","validate-event","onKeydown"]))]),content:e.withCtx(()=>[e.renderSlot(M.$slots,"default",{visible:m.value,actualVisible:g.value,parsedValue:e.unref(v),format:M.format,unlinkPanels:M.unlinkPanels,type:M.type,defaultValue:M.defaultValue,onPick:$,onSelectRange:S,onSetPickerOption:xe,onCalendarChange:q,onPanelChange:le,onKeydown:D,onMousedown:G[1]||(G[1]=e.withModifiers(()=>{},["stop"]))})]),_:3},16,["visible","transition","popper-class","popper-options"]))}});var $f=re(nH,[["__file","picker.vue"]]);const oH=se({...mC,datetimeRole:String,parsedValue:{type:j(Object)}}),hC=({getAvailableHours:t,getAvailableMinutes:n,getAvailableSeconds:o})=>{const r=(s,i,c,d)=>{const f={hour:t,minute:n,second:o};let u=s;return["hour","minute","second"].forEach(p=>{if(f[p]){let m;const g=f[p];switch(p){case"minute":{m=g(u.hour(),i,d);break}case"second":{m=g(u.hour(),u.minute(),i,d);break}default:{m=g(i,d);break}}if((m==null?void 0:m.length)&&!m.includes(u[p]())){const h=c?0:m.length-1;u=u[p](m[h])}}}),u},l={};return{timePickerOptions:l,getAvailableTime:r,onSetOption:([s,i])=>{l[s]=i}}},Bf=t=>{const n=(r,l)=>r||l,o=r=>r!==!0;return t.map(n).filter(o)},gC=(t,n,o)=>({getHoursList:(s,i)=>Hs(24,t&&(()=>t==null?void 0:t(s,i))),getMinutesList:(s,i,c)=>Hs(60,n&&(()=>n==null?void 0:n(s,i,c))),getSecondsList:(s,i,c,d)=>Hs(60,o&&(()=>o==null?void 0:o(s,i,c,d)))}),yC=(t,n,o)=>{const{getHoursList:r,getMinutesList:l,getSecondsList:a}=gC(t,n,o);return{getAvailableHours:(d,f)=>Bf(r(d,f)),getAvailableMinutes:(d,f,u)=>Bf(l(d,f,u)),getAvailableSeconds:(d,f,u,p)=>Bf(a(d,f,u,p))}},bC=t=>{const n=e.ref(t.parsedValue);return e.watch(()=>t.visible,o=>{o||(n.value=t.parsedValue)}),n},Zo=new Map;let CC;Oe&&(document.addEventListener("mousedown",t=>CC=t),document.addEventListener("mouseup",t=>{for(const n of Zo.values())for(const{documentHandler:o}of n)o(t,CC)}));function wC(t,n){let o=[];return Array.isArray(n.arg)?o=n.arg:go(n.arg)&&o.push(n.arg),function(r,l){const a=n.instance.popperRef,s=r.target,i=l==null?void 0:l.target,c=!n||!n.instance,d=!s||!i,f=t.contains(s)||t.contains(i),u=t===s,p=o.length&&o.some(g=>g==null?void 0:g.contains(s))||o.length&&o.includes(i),m=a&&(a.contains(s)||a.contains(i));c||d||f||u||p||m||n.value(r,l)}}const _o={beforeMount(t,n){Zo.has(t)||Zo.set(t,[]),Zo.get(t).push({documentHandler:wC(t,n),bindingFn:n.value})},updated(t,n){Zo.has(t)||Zo.set(t,[]);const o=Zo.get(t),r=o.findIndex(a=>a.bindingFn===n.oldValue),l={documentHandler:wC(t,n),bindingFn:n.value};r>=0?o.splice(r,1,l):o.push(l)},unmounted(t){Zo.delete(t)}},aa={beforeMount(t,n){let o=null,r=!1;const l=()=>n.value&&n.value(),a=()=>{clearInterval(o),o=null,r||l(),r=!1};t.addEventListener("mousedown",s=>{s.button===0&&(document.addEventListener("mouseup",a,{once:!0}),clearInterval(o),o=setInterval(()=>{r=!0,l()},100))})}},_f="_trap-focus-children",Sr=[],kC=t=>{if(Sr.length===0)return;const n=Sr[Sr.length-1][_f];if(n.length>0&&t.code===ue.tab){if(n.length===1){t.preventDefault(),document.activeElement!==n[0]&&n[0].focus();return}const o=t.shiftKey,r=t.target===n[0],l=t.target===n[n.length-1];r&&o&&(t.preventDefault(),n[n.length-1].focus()),l&&!o&&(t.preventDefault(),n[0].focus())}},SC={beforeMount(t){t[_f]=c0(t),Sr.push(t),Sr.length<=1&&document.addEventListener("keydown",kC)},updated(t){e.nextTick(()=>{t[_f]=c0(t)})},unmounted(){Sr.shift(),Sr.length===0&&document.removeEventListener("keydown",kC)}};var EC=!1,Er,vf,Tf,Ws,js,NC,Us,Vf,Mf,Rf,$C,If,Pf,BC,_C;function rn(){if(!EC){EC=!0;var t=navigator.userAgent,n=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(t),o=/(Mac OS X)|(Windows)|(Linux)/.exec(t);if(If=/\b(iPhone|iP[ao]d)/.exec(t),Pf=/\b(iP[ao]d)/.exec(t),Rf=/Android/i.exec(t),BC=/FBAN\/\w+;/i.exec(t),_C=/Mobile/i.exec(t),$C=!!/Win64/.exec(t),n){Er=n[1]?parseFloat(n[1]):n[5]?parseFloat(n[5]):NaN,Er&&document&&document.documentMode&&(Er=document.documentMode);var r=/(?:Trident\/(\d+.\d+))/.exec(t);NC=r?parseFloat(r[1])+4:Er,vf=n[2]?parseFloat(n[2]):NaN,Tf=n[3]?parseFloat(n[3]):NaN,Ws=n[4]?parseFloat(n[4]):NaN,Ws?(n=/(?:Chrome\/(\d+\.\d+))/.exec(t),js=n&&n[1]?parseFloat(n[1]):NaN):js=NaN}else Er=vf=Tf=js=Ws=NaN;if(o){if(o[1]){var l=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(t);Us=l?parseFloat(l[1].replace("_",".")):!0}else Us=!1;Vf=!!o[2],Mf=!!o[3]}else Us=Vf=Mf=!1}}var Af={ie:function(){return rn()||Er},ieCompatibilityMode:function(){return rn()||NC>Er},ie64:function(){return Af.ie()&&$C},firefox:function(){return rn()||vf},opera:function(){return rn()||Tf},webkit:function(){return rn()||Ws},safari:function(){return Af.webkit()},chrome:function(){return rn()||js},windows:function(){return rn()||Vf},osx:function(){return rn()||Us},linux:function(){return rn()||Mf},iphone:function(){return rn()||If},mobile:function(){return rn()||If||Pf||Rf||_C},nativeApp:function(){return rn()||BC},android:function(){return rn()||Rf},ipad:function(){return rn()||Pf}},rH=Af,Gs=!!(typeof window<"u"&&window.document&&window.document.createElement),lH={canUseDOM:Gs,canUseWorkers:typeof Worker<"u",canUseEventListeners:Gs&&!!(window.addEventListener||window.attachEvent),canUseViewport:Gs&&!!window.screen,isInWorker:!Gs},vC=lH,TC;vC.canUseDOM&&(TC=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function aH(t,n){if(!vC.canUseDOM||n&&!("addEventListener"in document))return!1;var o="on"+t,r=o in document;if(!r){var l=document.createElement("div");l.setAttribute(o,"return;"),r=typeof l[o]=="function"}return!r&&TC&&t==="wheel"&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var sH=aH,VC=10,MC=40,RC=800;function IC(t){var n=0,o=0,r=0,l=0;return"detail"in t&&(o=t.detail),"wheelDelta"in t&&(o=-t.wheelDelta/120),"wheelDeltaY"in t&&(o=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(n=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(n=o,o=0),r=n*VC,l=o*VC,"deltaY"in t&&(l=t.deltaY),"deltaX"in t&&(r=t.deltaX),(r||l)&&t.deltaMode&&(t.deltaMode==1?(r*=MC,l*=MC):(r*=RC,l*=RC)),r&&!n&&(n=r<1?-1:1),l&&!o&&(o=l<1?-1:1),{spinX:n,spinY:o,pixelX:r,pixelY:l}}IC.getEventType=function(){return rH.firefox()?"DOMMouseScroll":sH("wheel")?"wheel":"mousewheel"};var iH=IC;/** +* Checks if an event is supported in the current execution environment. +* +* NOTE: This will not work correctly for non-generic events such as `change`, +* `reset`, `load`, `error`, and `select`. +* +* Borrows from Modernizr. +* +* @param {string} eventNameSuffix Event name, e.g. "click". +* @param {?boolean} capture Check if the capture phase is supported. +* @return {boolean} True if the event is supported. +* @internal +* @license Modernizr 3.0.0pre (Custom Build) | MIT +*/const cH=function(t,n){if(t&&t.addEventListener){const o=function(r){const l=iH(r);n&&Reflect.apply(n,this,[r,l])};t.addEventListener("wheel",o,{passive:!0})}},PC={beforeMount(t,n){cH(t,n.value)}},dH=se({role:{type:String,required:!0},spinnerDate:{type:j(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:j(String),default:""},...pC}),fH=["onClick"],uH=["onMouseenter"];var Of=re(e.defineComponent({__name:"basic-time-spinner",props:dH,emits:["change","select-range","set-option"],setup(t,{emit:n}){const o=t,r=Z("time"),{getHoursList:l,getMinutesList:a,getSecondsList:s}=gC(o.disabledHours,o.disabledMinutes,o.disabledSeconds);let i=!1;const c=e.ref(),d=e.ref(),f=e.ref(),u=e.ref(),p={hours:d,minutes:f,seconds:u},m=e.computed(()=>o.showSeconds?bf:bf.slice(0,2)),g=e.computed(()=>{const{spinnerDate:v}=o,V=v.hour(),H=v.minute(),x=v.second();return{hours:V,minutes:H,seconds:x}}),h=e.computed(()=>{const{hours:v,minutes:V}=e.unref(g);return{hours:l(o.role),minutes:a(v,o.role),seconds:s(v,V,o.role)}}),b=e.computed(()=>{const{hours:v,minutes:V,seconds:H}=e.unref(g);return{hours:xs(v,23),minutes:xs(V,59),seconds:xs(H,59)}}),y=Dt(v=>{i=!1,k(v)},200),w=v=>{if(!!!o.amPmMode)return"";const H=o.amPmMode==="A";let x=v<12?" am":" pm";return H&&(x=x.toUpperCase()),x},C=v=>{let V;switch(v){case"hours":V=[0,2];break;case"minutes":V=[3,5];break;case"seconds":V=[6,8];break}const[H,x]=V;n("select-range",H,x),c.value=v},k=v=>{N(v,e.unref(g)[v])},E=()=>{k("hours"),k("minutes"),k("seconds")},S=v=>v.querySelector(`.${r.namespace.value}-scrollbar__wrap`),N=(v,V)=>{if(o.arrowControl)return;const H=e.unref(p[v]);H&&H.$el&&(S(H.$el).scrollTop=Math.max(0,V*$(v)))},$=v=>{const V=e.unref(p[v]);return(V==null?void 0:V.$el.querySelector("li").offsetHeight)||0},B=()=>{D(1)},P=()=>{D(-1)},D=v=>{c.value||C("hours");const V=c.value;let H=e.unref(g)[V];const x=c.value==="hours"?24:60;H=(H+v+x)%x,z(V,H),N(V,H),e.nextTick(()=>C(V))},z=(v,V)=>{if(e.unref(h)[v][V])return;const{hours:F,minutes:K,seconds:X}=e.unref(g);let J;switch(v){case"hours":J=o.spinnerDate.hour(V).minute(K).second(X);break;case"minutes":J=o.spinnerDate.hour(F).minute(V).second(X);break;case"seconds":J=o.spinnerDate.hour(F).minute(K).second(V);break}n("change",J)},I=(v,{value:V,disabled:H})=>{H||(z(v,V),C(v),N(v,V))},A=v=>{i=!0,y(v);const V=Math.min(Math.round((S(e.unref(p[v]).$el).scrollTop-(L(v)*.5-10)/$(v)+3)/$(v)),v==="hours"?23:59);z(v,V)},L=v=>e.unref(p[v]).$el.offsetHeight,R=()=>{const v=V=>{const H=e.unref(p[V]);H&&H.$el&&(S(H.$el).onscroll=()=>{A(V)})};v("hours"),v("minutes"),v("seconds")};e.onMounted(()=>{e.nextTick(()=>{!o.arrowControl&&R(),E(),o.role==="start"&&C("hours")})});const T=(v,V)=>{p[V].value=v};return n("set-option",[`${o.role}_scrollDown`,D]),n("set-option",[`${o.role}_emitSelectRange`,C]),e.watch(()=>o.spinnerDate,()=>{i||E()}),(v,V)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(r).b("spinner"),{"has-seconds":v.showSeconds}])},[v.arrowControl?e.createCommentVNode("v-if",!0):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(e.unref(m),H=>(e.openBlock(),e.createBlock(e.unref(Zn),{key:H,ref_for:!0,ref:x=>T(x,H),class:e.normalizeClass(e.unref(r).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":e.unref(r).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:x=>C(H),onMousemove:x=>k(H)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h)[H],(x,F)=>(e.openBlock(),e.createElementBlock("li",{key:F,class:e.normalizeClass([e.unref(r).be("spinner","item"),e.unref(r).is("active",F===e.unref(g)[H]),e.unref(r).is("disabled",x)]),onClick:K=>I(H,{value:F,disabled:x})},[H==="hours"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(("0"+(v.amPmMode?F%12||12:F)).slice(-2))+e.toDisplayString(w(F)),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(("0"+F).slice(-2)),1)],64))],10,fH))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),v.arrowControl?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(m),H=>(e.openBlock(),e.createElementBlock("div",{key:H,class:e.normalizeClass([e.unref(r).be("spinner","wrapper"),e.unref(r).is("arrow")]),onMouseenter:x=>C(H)},[e.withDirectives((e.openBlock(),e.createBlock(e.unref(de),{class:e.normalizeClass(["arrow-up",e.unref(r).be("spinner","arrow")])},{default:e.withCtx(()=>[e.createVNode(e.unref(Kl))]),_:1},8,["class"])),[[e.unref(aa),P]]),e.withDirectives((e.openBlock(),e.createBlock(e.unref(de),{class:e.normalizeClass(["arrow-down",e.unref(r).be("spinner","arrow")])},{default:e.withCtx(()=>[e.createVNode(e.unref(mr))]),_:1},8,["class"])),[[e.unref(aa),B]]),e.createElementVNode("ul",{class:e.normalizeClass(e.unref(r).be("spinner","list"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b)[H],(x,F)=>(e.openBlock(),e.createElementBlock("li",{key:F,class:e.normalizeClass([e.unref(r).be("spinner","item"),e.unref(r).is("active",x===e.unref(g)[H]),e.unref(r).is("disabled",e.unref(h)[H][x])])},[typeof x=="number"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[H==="hours"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(("0"+(v.amPmMode?x%12||12:x)).slice(-2))+e.toDisplayString(w(x)),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(("0"+x).slice(-2)),1)],64))],64)):e.createCommentVNode("v-if",!0)],2))),128))],2)],42,uH))),128)):e.createCommentVNode("v-if",!0)],2))}}),[["__file","basic-time-spinner.vue"]]),sa=re(e.defineComponent({__name:"panel-time-pick",props:oH,emits:["pick","select-range","set-picker-option"],setup(t,{emit:n}){const o=t,r=e.inject("EP_PICKER_BASE"),{arrowControl:l,disabledHours:a,disabledMinutes:s,disabledSeconds:i,defaultValue:c}=r.props,{getAvailableHours:d,getAvailableMinutes:f,getAvailableSeconds:u}=yC(a,s,i),p=Z("time"),{t:m,lang:g}=We(),h=e.ref([0,2]),b=bC(o),y=e.computed(()=>Rt(o.actualVisible)?`${p.namespace.value}-zoom-in-top`:""),w=e.computed(()=>o.format.includes("ss")),C=e.computed(()=>o.format.includes("A")?"A":o.format.includes("a")?"a":""),k=v=>{const V=_e(v).locale(g.value),H=A(V);return V.isSame(H)},E=()=>{n("pick",b.value,!1)},S=(v=!1,V=!1)=>{V||n("pick",o.parsedValue,v)},N=v=>{if(!o.visible)return;const V=A(v).millisecond(0);n("pick",V,!0)},$=(v,V)=>{n("select-range",v,V),h.value=[v,V]},B=v=>{const V=[0,3].concat(w.value?[6]:[]),H=["hours","minutes"].concat(w.value?["seconds"]:[]),F=(V.indexOf(h.value[0])+v+V.length)%V.length;D.start_emitSelectRange(H[F])},P=v=>{const V=v.code,{left:H,right:x,up:F,down:K}=ue;if([H,x].includes(V)){B(V===H?-1:1),v.preventDefault();return}if([F,K].includes(V)){const X=V===F?-1:1;D.start_scrollDown(X),v.preventDefault();return}},{timePickerOptions:D,onSetOption:z,getAvailableTime:I}=hC({getAvailableHours:d,getAvailableMinutes:f,getAvailableSeconds:u}),A=v=>I(v,o.datetimeRole||"",!0),L=v=>v?_e(v,o.format).locale(g.value):null,R=v=>v?v.format(o.format):null,T=()=>_e(c).locale(g.value);return n("set-picker-option",["isValidValue",k]),n("set-picker-option",["formatToString",R]),n("set-picker-option",["parseUserInput",L]),n("set-picker-option",["handleKeydownInput",P]),n("set-picker-option",["getRangeAvailableTime",A]),n("set-picker-option",["getDefaultValue",T]),(v,V)=>(e.openBlock(),e.createBlock(e.Transition,{name:e.unref(y)},{default:e.withCtx(()=>[v.actualVisible||v.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(p).b("panel"))},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(p).be("panel","content"),{"has-seconds":e.unref(w)}])},[e.createVNode(Of,{ref:"spinner",role:v.datetimeRole||"start","arrow-control":e.unref(l),"show-seconds":e.unref(w),"am-pm-mode":e.unref(C),"spinner-date":v.parsedValue,"disabled-hours":e.unref(a),"disabled-minutes":e.unref(s),"disabled-seconds":e.unref(i),onChange:N,onSetOption:e.unref(z),onSelectRange:$},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(p).be("panel","footer"))},[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(p).be("panel","btn"),"cancel"]),onClick:E},e.toDisplayString(e.unref(m)("el.datepicker.cancel")),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(p).be("panel","btn"),"confirm"]),onClick:V[0]||(V[0]=H=>S())},e.toDisplayString(e.unref(m)("el.datepicker.confirm")),3)],2)],2)):e.createCommentVNode("v-if",!0)]),_:1},8,["name"]))}}),[["__file","panel-time-pick.vue"]]);const pH=se({...mC,parsedValue:{type:j(Array)}}),mH=["disabled"];var hH=re(e.defineComponent({__name:"panel-time-range",props:pH,emits:["pick","select-range","set-picker-option"],setup(t,{emit:n}){const o=t,r=(Y,ee)=>{const pe=[];for(let he=Y;he<=ee;he++)pe.push(he);return pe},{t:l,lang:a}=We(),s=Z("time"),i=Z("picker"),c=e.inject("EP_PICKER_BASE"),{arrowControl:d,disabledHours:f,disabledMinutes:u,disabledSeconds:p,defaultValue:m}=c.props,g=e.computed(()=>o.parsedValue[0]),h=e.computed(()=>o.parsedValue[1]),b=bC(o),y=()=>{n("pick",b.value,!1)},w=e.computed(()=>o.format.includes("ss")),C=e.computed(()=>o.format.includes("A")?"A":o.format.includes("a")?"a":""),k=(Y=!1)=>{n("pick",[g.value,h.value],Y)},E=Y=>{$(Y.millisecond(0),h.value)},S=Y=>{$(g.value,Y.millisecond(0))},N=Y=>{const ee=Y.map(he=>_e(he).locale(a.value)),pe=V(ee);return ee[0].isSame(pe[0])&&ee[1].isSame(pe[1])},$=(Y,ee)=>{n("pick",[Y,ee],!0)},B=e.computed(()=>g.value>h.value),P=e.ref([0,2]),D=(Y,ee)=>{n("select-range",Y,ee,"min"),P.value=[Y,ee]},z=e.computed(()=>w.value?11:8),I=(Y,ee)=>{n("select-range",Y,ee,"max");const pe=e.unref(z);P.value=[Y+pe,ee+pe]},A=Y=>{const ee=w.value?[0,3,6,11,14,17]:[0,3,8,11],pe=["hours","minutes"].concat(w.value?["seconds"]:[]),we=(ee.indexOf(P.value[0])+Y+ee.length)%ee.length,Me=ee.length/2;we{const ee=Y.code,{left:pe,right:he,up:we,down:Me}=ue;if([pe,he].includes(ee)){A(ee===pe?-1:1),Y.preventDefault();return}if([we,Me].includes(ee)){const be=ee===we?-1:1,Ke=P.value[0]{const pe=f?f(Y):[],he=Y==="start",Me=(ee||(he?h.value:g.value)).hour(),be=he?r(Me+1,23):r(0,Me-1);return is(pe,be)},T=(Y,ee,pe)=>{const he=u?u(Y,ee):[],we=ee==="start",Me=pe||(we?h.value:g.value),be=Me.hour();if(Y!==be)return he;const Ke=Me.minute(),me=we?r(Ke+1,59):r(0,Ke-1);return is(he,me)},v=(Y,ee,pe,he)=>{const we=p?p(Y,ee,pe):[],Me=pe==="start",be=he||(Me?h.value:g.value),Ke=be.hour(),me=be.minute();if(Y!==Ke||ee!==me)return we;const ne=be.second(),oe=Me?r(ne+1,59):r(0,ne-1);return is(we,oe)},V=([Y,ee])=>[X(Y,"start",!0,ee),X(ee,"end",!1,Y)],{getAvailableHours:H,getAvailableMinutes:x,getAvailableSeconds:F}=yC(R,T,v),{timePickerOptions:K,getAvailableTime:X,onSetOption:J}=hC({getAvailableHours:H,getAvailableMinutes:x,getAvailableSeconds:F}),U=Y=>Y?Ae(Y)?Y.map(ee=>_e(ee,o.format).locale(a.value)):_e(Y,o.format).locale(a.value):null,W=Y=>Y?Ae(Y)?Y.map(ee=>ee.format(o.format)):Y.format(o.format):null,Q=()=>{if(Ae(m))return m.map(ee=>_e(ee).locale(a.value));const Y=_e(m).locale(a.value);return[Y,Y.add(60,"m")]};return n("set-picker-option",["formatToString",W]),n("set-picker-option",["parseUserInput",U]),n("set-picker-option",["isValidValue",N]),n("set-picker-option",["handleKeydownInput",L]),n("set-picker-option",["getDefaultValue",Q]),n("set-picker-option",["getRangeAvailableTime",V]),(Y,ee)=>Y.actualVisible?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(s).b("range-picker"),e.unref(i).b("panel")])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).be("range-picker","content"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).be("range-picker","cell"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).be("range-picker","header"))},e.toDisplayString(e.unref(l)("el.datepicker.startTime")),3),e.createElementVNode("div",{class:e.normalizeClass([e.unref(s).be("range-picker","body"),e.unref(s).be("panel","content"),e.unref(s).is("arrow",e.unref(d)),{"has-seconds":e.unref(w)}])},[e.createVNode(Of,{ref:"minSpinner",role:"start","show-seconds":e.unref(w),"am-pm-mode":e.unref(C),"arrow-control":e.unref(d),"spinner-date":e.unref(g),"disabled-hours":R,"disabled-minutes":T,"disabled-seconds":v,onChange:E,onSetOption:e.unref(J),onSelectRange:D},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).be("range-picker","cell"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).be("range-picker","header"))},e.toDisplayString(e.unref(l)("el.datepicker.endTime")),3),e.createElementVNode("div",{class:e.normalizeClass([e.unref(s).be("range-picker","body"),e.unref(s).be("panel","content"),e.unref(s).is("arrow",e.unref(d)),{"has-seconds":e.unref(w)}])},[e.createVNode(Of,{ref:"maxSpinner",role:"end","show-seconds":e.unref(w),"am-pm-mode":e.unref(C),"arrow-control":e.unref(d),"spinner-date":e.unref(h),"disabled-hours":R,"disabled-minutes":T,"disabled-seconds":v,onChange:S,onSetOption:e.unref(J),onSelectRange:I},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).be("panel","footer"))},[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(s).be("panel","btn"),"cancel"]),onClick:ee[0]||(ee[0]=pe=>y())},e.toDisplayString(e.unref(l)("el.datepicker.cancel")),3),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(s).be("panel","btn"),"confirm"]),disabled:e.unref(B),onClick:ee[1]||(ee[1]=pe=>k())},e.toDisplayString(e.unref(l)("el.datepicker.confirm")),11,mH)],2)],2)):e.createCommentVNode("v-if",!0)}}),[["__file","panel-time-range.vue"]]);_e.extend(yf);var gH=e.defineComponent({name:"ElTimePicker",install:null,props:{...Ks,isRange:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,n){const o=e.ref(),[r,l]=t.isRange?["timerange",hH]:["time",sa],a=s=>n.emit("update:modelValue",s);return e.provide("ElPopperOptions",t.popperOptions),n.expose({focus:s=>{var i;(i=o.value)==null||i.handleFocusInput(s)},blur:s=>{var i;(i=o.value)==null||i.handleBlurInput(s)}}),()=>{var s;const i=(s=t.format)!=null?s:Fs;return e.createVNode($f,e.mergeProps(t,{ref:o,type:r,format:i,"onUpdate:modelValue":a}),{default:c=>e.createVNode(l,c,null)})}}});const qs=gH;qs.install=t=>{t.component(qs.name,qs)};const AC=qs,yH=(t,n)=>{const o=t.subtract(1,"month").endOf("month").date();return Bo(n).map((r,l)=>o-(n-l-1))},bH=t=>{const n=t.daysInMonth();return Bo(n).map((o,r)=>r+1)},CH=t=>Bo(t.length/7).map(n=>{const o=n*7;return t.slice(o,o+7)}),wH=se({selectedDay:{type:j(Object)},range:{type:j(Array)},date:{type:j(Object),required:!0},hideHeader:{type:Boolean}}),kH={pick:t=>it(t)},SH={key:0},EH=["onClick"],NH={name:"DateTable"},$H=e.defineComponent({...NH,props:wH,emits:kH,setup(t,{expose:n,emit:o}){const r=t;_e.extend(dC);const{t:l,lang:a}=We(),s=Z("calendar-table"),i=Z("calendar-day"),c=_e().locale(a.value),d=c.$locale().weekStart||0,f=e.computed(()=>!!r.range&&!!r.range.length),u=e.computed(()=>{let y=[];if(f.value){const[w,C]=r.range,k=Bo(C.date()-w.date()+1).map(N=>({text:w.date()+N,type:"current"}));let E=k.length%7;E=E===0?0:7-E;const S=Bo(E).map((N,$)=>({text:$+1,type:"next"}));y=k.concat(S)}else{const w=r.date.startOf("month").day(),C=yH(r.date,w-d).map(N=>({text:N,type:"prev"})),k=bH(r.date).map(N=>({text:N,type:"current"}));y=[...C,...k];const E=7-(y.length%7||7),S=Bo(E).map((N,$)=>({text:$+1,type:"next"}));y=y.concat(S)}return CH(y)}),p=e.computed(()=>{const y=d;return y===0?bs.map(w=>l(`el.datepicker.weeks.${w}`)):bs.slice(y).concat(bs.slice(0,y)).map(w=>l(`el.datepicker.weeks.${w}`))}),m=(y,w)=>{switch(w){case"prev":return r.date.startOf("month").subtract(1,"month").date(y);case"next":return r.date.startOf("month").add(1,"month").date(y);case"current":return r.date.date(y)}},g=({text:y,type:w})=>{const C=[w];if(w==="current"){const k=m(y,w);k.isSame(r.selectedDay,"day")&&C.push(i.is("selected")),k.isSame(c,"day")&&C.push(i.is("today"))}return C},h=({text:y,type:w})=>{const C=m(y,w);o("pick",C)},b=({text:y,type:w})=>{const C=m(y,w);return{isSelected:C.isSame(r.selectedDay),type:`${w}-month`,day:C.format("YYYY-MM-DD"),date:C.toDate()}};return n({getFormattedDate:m}),(y,w)=>(e.openBlock(),e.createElementBlock("table",{class:e.normalizeClass([e.unref(s).b(),e.unref(s).is("range",e.unref(f))]),cellspacing:"0",cellpadding:"0"},[y.hideHeader?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("thead",SH,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),C=>(e.openBlock(),e.createElementBlock("th",{key:C},e.toDisplayString(C),1))),128))])),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(u),(C,k)=>(e.openBlock(),e.createElementBlock("tr",{key:k,class:e.normalizeClass({[e.unref(s).e("row")]:!0,[e.unref(s).em("row","hide-border")]:k===0&&y.hideHeader})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,(E,S)=>(e.openBlock(),e.createElementBlock("td",{key:S,class:e.normalizeClass(g(E)),onClick:N=>h(E)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(i).b())},[e.renderSlot(y.$slots,"dateCell",{data:b(E)},()=>[e.createElementVNode("span",null,e.toDisplayString(E.text),1)])],2)],10,EH))),128))],2))),128))])],2))}});var OC=re($H,[["__file","date-table.vue"]]);const BH=t=>Ae(t)&&t.length===2&&t.every(n=>xl(n)),zC=se({modelValue:{type:Date},range:{type:j(Array),validator:BH}}),DC={[Ve]:t=>xl(t),[fn]:t=>xl(t)},_H={name:"ElCalendar"},vH=e.defineComponent({..._H,props:zC,emits:DC,setup(t,{expose:n,emit:o}){const r=t,l=Z("calendar"),{t:a,lang:s}=We(),i=e.ref(),c=_e().locale(s.value),d=e.computed({get(){return r.modelValue?u.value:i.value},set(k){if(!k)return;i.value=k;const E=k.toDate();o(fn,E),o(Ve,E)}}),f=e.computed(()=>{if(!r.range)return[];const k=r.range.map(N=>_e(N).locale(s.value)),[E,S]=k;return E.isAfter(S)?[]:E.isSame(S,"month")?y(E,S):E.add(1,"month").month()!==S.month()?[]:y(E,S)}),u=e.computed(()=>r.modelValue?_e(r.modelValue).locale(s.value):d.value?d.value:f.value.length?f.value[0][0]:c),p=e.computed(()=>u.value.subtract(1,"month").date(1)),m=e.computed(()=>u.value.add(1,"month").date(1)),g=e.computed(()=>u.value.subtract(1,"year").date(1)),h=e.computed(()=>u.value.add(1,"year").date(1)),b=e.computed(()=>{const k=`el.datepicker.month${u.value.format("M")}`;return`${u.value.year()} ${a("el.datepicker.year")} ${a(k)}`}),y=(k,E)=>{const S=k.startOf("week"),N=E.endOf("week"),$=S.get("month"),B=N.get("month");if($===B)return[[S,N]];if($+1===B){const P=S.endOf("month"),D=N.startOf("month"),I=P.isSame(D,"week")?D.add(1,"week"):D;return[[S,P],[I.startOf("week"),N]]}else if($+2===B||($+1)%11===B){const P=S.endOf("month"),D=S.add(1,"month").startOf("month"),z=P.isSame(D,"week")?D.add(1,"week"):D,I=z.endOf("month"),A=N.startOf("month"),L=I.isSame(A,"week")?A.add(1,"week"):A;return[[S,P],[z.startOf("week"),I],[L.startOf("week"),N]]}else return[]},w=k=>{d.value=k},C=k=>{let E;k==="prev-month"?E=p.value:k==="next-month"?E=m.value:k==="prev-year"?E=g.value:k==="next-year"?E=h.value:E=c,!E.isSame(u.value,"day")&&w(E)};return n({selectedDay:d,pickDay:w,selectDate:C,calculateValidatedDateRange:y}),(k,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("header"))},[e.renderSlot(k.$slots,"header",{date:e.unref(b)},()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("title"))},e.toDisplayString(e.unref(b)),3),e.unref(f).length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("button-group"))},[e.createVNode(e.unref(gf),null,{default:e.withCtx(()=>[e.createVNode(e.unref(At),{size:"small",onClick:E[0]||(E[0]=S=>C("prev-month"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("el.datepicker.prevMonth")),1)]),_:1}),e.createVNode(e.unref(At),{size:"small",onClick:E[1]||(E[1]=S=>C("today"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("el.datepicker.today")),1)]),_:1}),e.createVNode(e.unref(At),{size:"small",onClick:E[2]||(E[2]=S=>C("next-month"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("el.datepicker.nextMonth")),1)]),_:1})]),_:1})],2)):e.createCommentVNode("v-if",!0)])],2),e.unref(f).length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("body"))},[e.createVNode(OC,{date:e.unref(u),"selected-day":e.unref(d),onPick:w},e.createSlots({_:2},[k.$slots.dateCell?{name:"dateCell",fn:e.withCtx(S=>[e.renderSlot(k.$slots,"dateCell",e.normalizeProps(e.guardReactiveProps(S)))])}:void 0]),1032,["date","selected-day"])],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).e("body"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f),(S,N)=>(e.openBlock(),e.createBlock(OC,{key:N,date:S[0],"selected-day":e.unref(d),range:S,"hide-header":N!==0,onPick:w},e.createSlots({_:2},[k.$slots.dateCell?{name:"dateCell",fn:e.withCtx($=>[e.renderSlot(k.$slots,"dateCell",e.normalizeProps(e.guardReactiveProps($)))])}:void 0]),1032,["date","selected-day","range","hide-header"]))),128))],2))],2))}});var TH=re(vH,[["__file","calendar.vue"]]);const LC=Te(TH),FC=se({header:{type:String,default:""},bodyStyle:{type:j([String,Object,Array]),default:""},shadow:{type:String,values:["always","hover","never"],default:"always"}}),VH={name:"ElCard"},MH=e.defineComponent({...VH,props:FC,setup(t){const n=Z("card");return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(n).b(),e.unref(n).is(`${o.shadow}-shadow`)])},[o.$slots.header||o.header?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(n).e("header"))},[e.renderSlot(o.$slots,"header",{},()=>[e.createTextVNode(e.toDisplayString(o.header),1)])],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(n).e("body")),style:e.normalizeStyle(o.bodyStyle)},[e.renderSlot(o.$slots,"default")],6)],2))}});var RH=re(MH,[["__file","card.vue"]]);const xC=Te(RH),HC=se({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},indicator:{type:Boolean,default:!0},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0}}),KC={change:(t,n)=>[t,n].every(Ne)},IH=["onMouseenter","onMouseleave"],PH=["onMouseenter","onClick"],AH={key:0},OH={name:"ElCarousel"},zH=e.defineComponent({...OH,props:HC,emits:KC,setup(t,{expose:n,emit:o}){const r=t,l=Z("carousel"),a=300,s=e.ref(-1),i=e.ref(null),c=e.ref(!1),d=e.ref(),f=e.ref([]),u=e.computed(()=>r.arrow!=="never"&&!e.unref(b)),p=e.computed(()=>f.value.some(x=>x.props.label.toString().length>0)),m=e.computed(()=>{const x=[l.b(),l.m(r.direction)];return e.unref(h)&&x.push(l.m("card")),x}),g=e.computed(()=>{const x=[l.e("indicators"),l.em("indicators",r.direction)];return p.value&&x.push(l.em("indicators","labels")),(r.indicatorPosition==="outside"||e.unref(h))&&x.push(l.em("indicators","outside")),x}),h=e.computed(()=>r.type==="card"),b=e.computed(()=>r.direction==="vertical"),y=zo(x=>{S(x)},a,{trailing:!0}),w=zo(x=>{R(x)},a);function C(){i.value&&(clearInterval(i.value),i.value=null)}function k(){r.interval<=0||!r.autoplay||i.value||(i.value=setInterval(()=>E(),r.interval))}const E=()=>{s.valueJ.props.name===x);X.length>0&&(x=f.value.indexOf(X[0]))}if(x=Number(x),Number.isNaN(x)||x!==Math.floor(x))return;const F=f.value.length,K=s.value;x<0?s.value=r.loop?F-1:0:x>=F?s.value=r.loop?0:F-1:s.value=x,K===s.value&&N(K),V()}function N(x){f.value.forEach((F,K)=>{F.translateItem(K,s.value,x)})}function $(x){f.value.push(x)}function B(x){const F=f.value.findIndex(K=>K.uid===x);F!==-1&&(f.value.splice(F,1),s.value===F&&v())}function P(x,F){var K,X,J,U;const W=e.unref(f),Q=W.length;if(Q===0||!x.states.inStage)return!1;const Y=F+1,ee=F-1,pe=Q-1,he=W[pe].states.active,we=W[0].states.active,Me=(X=(K=W[Y])==null?void 0:K.states)==null?void 0:X.active,be=(U=(J=W[ee])==null?void 0:J.states)==null?void 0:U.active;return F===pe&&we||Me?"left":F===0&&he||be?"right":!1}function D(){c.value=!0,r.pauseOnHover&&C()}function z(){c.value=!1,k()}function I(x){e.unref(b)||f.value.forEach((F,K)=>{x===P(F,K)&&(F.states.hover=!0)})}function A(){e.unref(b)||f.value.forEach(x=>{x.states.hover=!1})}function L(x){s.value=x}function R(x){r.trigger==="hover"&&x!==s.value&&(s.value=x)}function T(){S(s.value-1)}function v(){S(s.value+1)}function V(){C(),k()}e.watch(()=>s.value,(x,F)=>{N(F),F>-1&&o("change",x,F)}),e.watch(()=>r.autoplay,x=>{x?k():C()}),e.watch(()=>r.loop,()=>{S(s.value)}),e.watch(()=>r.interval,()=>{V()});const H=e.shallowRef();return e.onMounted(async()=>{await e.nextTick(),H.value=Wt(d.value,()=>{N()}),r.initialIndex=0&&(s.value=r.initialIndex),k()}),e.onBeforeUnmount(()=>{C(),d.value&&H.value&&H.value.stop()}),e.provide(Cd,{root:d,isCardType:h,isVertical:b,items:f,loop:r.loop,addItem:$,removeItem:B,setActiveItem:S}),n({setActiveItem:S,prev:T,next:v}),(x,F)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:d,class:e.normalizeClass(e.unref(m)),onMouseenter:e.withModifiers(D,["stop"]),onMouseleave:e.withModifiers(z,["stop"])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("container")),style:e.normalizeStyle({height:x.height})},[e.unref(u)?(e.openBlock(),e.createBlock(e.Transition,{key:0,name:"carousel-arrow-left",persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(l).e("arrow"),e.unref(l).em("arrow","left")]),onMouseenter:F[0]||(F[0]=K=>I("left")),onMouseleave:A,onClick:F[1]||(F[1]=e.withModifiers(K=>e.unref(y)(s.value-1),["stop"]))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1})],34),[[e.vShow,(x.arrow==="always"||c.value)&&(r.loop||s.value>0)]])]),_:1})):e.createCommentVNode("v-if",!0),e.unref(u)?(e.openBlock(),e.createBlock(e.Transition,{key:1,name:"carousel-arrow-right",persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(l).e("arrow"),e.unref(l).em("arrow","right")]),onMouseenter:F[2]||(F[2]=K=>I("right")),onMouseleave:A,onClick:F[3]||(F[3]=e.withModifiers(K=>e.unref(y)(s.value+1),["stop"]))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})],34),[[e.vShow,(x.arrow==="always"||c.value)&&(r.loop||s.value(e.openBlock(),e.createElementBlock("li",{key:X,class:e.normalizeClass([e.unref(l).e("indicator"),e.unref(l).em("indicator",x.direction),e.unref(l).is("active",X===s.value)]),onMouseenter:J=>e.unref(w)(X),onClick:e.withModifiers(J=>L(X),["stop"])},[e.createElementVNode("button",{class:e.normalizeClass(e.unref(l).e("button"))},[e.unref(p)?(e.openBlock(),e.createElementBlock("span",AH,e.toDisplayString(K.props.label),1)):e.createCommentVNode("v-if",!0)],2)],42,PH))),128))],2)):e.createCommentVNode("v-if",!0)],42,IH))}});var DH=re(zH,[["__file","carousel.vue"]]);const WC=se({name:{type:String,default:""},label:{type:[String,Number],default:""}}),LH={name:"ElCarouselItem"},FH=e.defineComponent({...LH,props:WC,setup(t){const n=t,o=Z("carousel"),r=e.inject(Cd),l=e.getCurrentInstance(),a=.83,s=e.ref(!1),i=e.ref(0),c=e.ref(1),d=e.ref(!1),f=e.ref(!1),u=e.ref(!1),p=e.ref(!1),{isCardType:m,isVertical:g}=r,h=e.computed(()=>{const S=`${`translate${e.unref(g)?"Y":"X"}`}(${e.unref(i)}px)`,N=`scale(${e.unref(c)})`;return{transform:[S,N].join(" ")}});function b(E,S,N){const $=N-1,B=S-1,P=S+1,D=N/2;return S===0&&E===$?-1:S===$&&E===0?N:E=D?N+1:E>P&&E-S>=D?-2:E}function y(E,S){var N;const $=((N=r.root.value)==null?void 0:N.offsetWidth)||0;return u.value?$*((2-a)*(E-S)+1)/4:E{var $;const B=e.unref(m),P=($=r.items.value.length)!=null?$:Number.NaN,D=E===S;!B&&!Rt(N)&&(p.value=D||E===N),!D&&P>2&&r.loop&&(E=b(E,S,P));const z=e.unref(g);d.value=D,B?(u.value=Math.round(Math.abs(E-S))<=1,i.value=y(E,S),c.value=e.unref(d)?1:a):i.value=w(E,S,z),f.value=!0};function k(){if(r&&e.unref(m)){const E=r.items.value.findIndex(({uid:S})=>S===l.uid);r.setActiveItem(E)}}return e.onMounted(()=>{r.addItem({props:n,states:e.reactive({hover:s,translate:i,scale:c,active:d,ready:f,inStage:u,animating:p}),uid:l.uid,translateItem:C})}),e.onUnmounted(()=>{r.removeItem(l.uid)}),(E,S)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(o).e("item"),e.unref(o).is("active",d.value),e.unref(o).is("in-stage",u.value),e.unref(o).is("hover",s.value),e.unref(o).is("animating",p.value),{[e.unref(o).em("item","card")]:e.unref(m)}]),style:e.normalizeStyle(e.unref(h)),onClick:k},[e.unref(m)?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).e("mask"))},null,2)),[[e.vShow,!d.value]]):e.createCommentVNode("v-if",!0),e.renderSlot(E.$slots,"default")],6)),[[e.vShow,f.value]])}});var jC=re(FH,[["__file","carousel-item.vue"]]);const UC=Te(DH,{CarouselItem:jC}),GC=ut(jC),qC={modelValue:{type:Array,default:()=>[]},disabled:Boolean,min:{type:Number,default:void 0},max:{type:Number,default:void 0},size:tn,id:{type:String,default:void 0},label:{type:String,default:void 0},fill:{type:String,default:void 0},textColor:{type:String,default:void 0},tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0}},zf={modelValue:{type:[Number,String,Boolean],default:()=>{}},label:{type:[String,Boolean,Number,Object]},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:tn,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0}},Nr=()=>{const t=e.inject(un,{}),n=e.inject(Lt,{}),o=e.inject("CheckboxGroup",{}),r=e.computed(()=>o&&(o==null?void 0:o.name)==="ElCheckboxGroup"),l=e.computed(()=>n.size);return{isGroup:r,checkboxGroup:o,elForm:t,elFormItemSize:l,elFormItem:n}},YC=(t,{elFormItem:n})=>{const{inputId:o,isLabeledByFormItem:r}=wo(t,{formItemContext:n});return{isLabeledByFormItem:r,groupId:o}},xH=t=>{const n=e.ref(!1),{emit:o}=e.getCurrentInstance(),{isGroup:r,checkboxGroup:l,elFormItem:a}=Nr(),s=e.ref(!1);return{model:e.computed({get(){var c,d;return r.value?(c=l.modelValue)==null?void 0:c.value:(d=t.modelValue)!=null?d:n.value},set(c){var d;r.value&&Array.isArray(c)?(s.value=l.max!==void 0&&c.length>l.max.value,s.value===!1&&((d=l==null?void 0:l.changeEvent)==null||d.call(l,c))):(o(Ve,c),n.value=c)}}),isGroup:r,isLimitExceeded:s,elFormItem:a}},HH=(t,n,{model:o})=>{const{isGroup:r,checkboxGroup:l}=Nr(),a=e.ref(!1),s=yt(l==null?void 0:l.checkboxGroupSize,{prop:!0}),i=e.computed(()=>{const f=o.value;return ld(f)==="[object Boolean]"?f:Array.isArray(f)?f.includes(t.label):f!=null?f===t.trueLabel:!!f}),c=yt(e.computed(()=>{var f;return r.value?(f=l==null?void 0:l.checkboxGroupSize)==null?void 0:f.value:void 0})),d=e.computed(()=>!!(n.default||t.label));return{isChecked:i,focus:a,size:s,checkboxSize:c,hasOwnLabel:d}},KH=(t,{model:n,isChecked:o})=>{const{elForm:r,isGroup:l,checkboxGroup:a}=Nr(),s=e.computed(()=>{var c,d;const f=(c=a.max)==null?void 0:c.value,u=(d=a.min)==null?void 0:d.value;return!!(f||u)&&n.value.length>=f&&!o.value||n.value.length<=u&&o.value});return{isDisabled:e.computed(()=>{var c,d;const f=t.disabled||(r==null?void 0:r.disabled);return(d=l.value?((c=a.disabled)==null?void 0:c.value)||f||s.value:f)!=null?d:!1}),isLimitDisabled:s}},WH=(t,{model:n})=>{function o(){Array.isArray(n.value)&&!n.value.includes(t.label)?n.value.push(t.label):n.value=t.trueLabel||!0}t.checked&&o()},jH=(t,{model:n,isLimitExceeded:o,hasOwnLabel:r,isDisabled:l,isLabeledByFormItem:a})=>{const{elFormItem:s,checkboxGroup:i}=Nr(),{emit:c}=e.getCurrentInstance();function d(g){var h,b;return g===t.trueLabel||g===!0?(h=t.trueLabel)!=null?h:!0:(b=t.falseLabel)!=null?b:!1}function f(g,h){c("change",d(g),h)}function u(g){if(o.value)return;const h=g.target;c("change",d(h.checked),g)}async function p(g){o.value||!r.value&&!l.value&&a.value&&(n.value=d([!1,t.falseLabel].includes(n.value)),await e.nextTick(),f(n.value,g))}const m=e.computed(()=>{var g;return((g=i.validateEvent)==null?void 0:g.value)||t.validateEvent});return e.watch(()=>t.modelValue,()=>{var g;m.value&&((g=s==null?void 0:s.validate)==null||g.call(s,"change").catch(h=>void 0))}),{handleChange:u,onClickRoot:p}},Df={[Ve]:t=>Fe(t)||Ne(t)||St(t),change:t=>Fe(t)||Ne(t)||St(t)},XC={[Ve]:t=>Ae(t),change:t=>Ae(t)},Lf=(t,n)=>{const{model:o,isGroup:r,isLimitExceeded:l,elFormItem:a}=xH(t),{focus:s,size:i,isChecked:c,checkboxSize:d,hasOwnLabel:f}=HH(t,n,{model:o}),{isDisabled:u}=KH(t,{model:o,isChecked:c}),{inputId:p,isLabeledByFormItem:m}=wo(t,{formItemContext:a,disableIdGeneration:f,disableIdManagement:r}),{handleChange:g,onClickRoot:h}=jH(t,{model:o,isLimitExceeded:l,hasOwnLabel:f,isDisabled:u,isLabeledByFormItem:m});return WH(t,{model:o}),{elFormItem:a,inputId:p,isLabeledByFormItem:m,isChecked:c,isDisabled:u,isGroup:r,checkboxSize:d,hasOwnLabel:f,model:o,handleChange:g,onClickRoot:h,focus:s,size:i}},UH=["tabindex","role","aria-checked"],GH=["id","aria-hidden","name","tabindex","disabled","true-value","false-value"],qH=["id","aria-hidden","disabled","value","name","tabindex"],YH={name:"ElCheckbox"},XH=e.defineComponent({...YH,props:zf,emits:Df,setup(t){const n=t,o=e.useSlots(),{inputId:r,isLabeledByFormItem:l,isChecked:a,isDisabled:s,checkboxSize:i,hasOwnLabel:c,model:d,handleChange:f,onClickRoot:u,focus:p}=Lf(n,o),m=Z("checkbox");return(g,h)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(!e.unref(c)&&e.unref(l)?"span":"label"),{class:e.normalizeClass([e.unref(m).b(),e.unref(m).m(e.unref(i)),e.unref(m).is("disabled",e.unref(s)),e.unref(m).is("bordered",g.border),e.unref(m).is("checked",e.unref(a))]),"aria-controls":g.indeterminate?g.controls:null,onClick:e.unref(u)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass([e.unref(m).e("input"),e.unref(m).is("disabled",e.unref(s)),e.unref(m).is("checked",e.unref(a)),e.unref(m).is("indeterminate",g.indeterminate),e.unref(m).is("focus",e.unref(p))]),tabindex:g.indeterminate?0:void 0,role:g.indeterminate?"checkbox":void 0,"aria-checked":g.indeterminate?"mixed":void 0},[g.trueLabel||g.falseLabel?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,id:e.unref(r),"onUpdate:modelValue":h[0]||(h[0]=b=>e.isRef(d)?d.value=b:null),class:e.normalizeClass(e.unref(m).e("original")),type:"checkbox","aria-hidden":g.indeterminate?"true":"false",name:g.name,tabindex:g.tabindex,disabled:e.unref(s),"true-value":g.trueLabel,"false-value":g.falseLabel,onChange:h[1]||(h[1]=(...b)=>e.unref(f)&&e.unref(f)(...b)),onFocus:h[2]||(h[2]=b=>p.value=!0),onBlur:h[3]||(h[3]=b=>p.value=!1)},null,42,GH)),[[e.vModelCheckbox,e.unref(d)]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,id:e.unref(r),"onUpdate:modelValue":h[4]||(h[4]=b=>e.isRef(d)?d.value=b:null),class:e.normalizeClass(e.unref(m).e("original")),type:"checkbox","aria-hidden":g.indeterminate?"true":"false",disabled:e.unref(s),value:g.label,name:g.name,tabindex:g.tabindex,onChange:h[5]||(h[5]=(...b)=>e.unref(f)&&e.unref(f)(...b)),onFocus:h[6]||(h[6]=b=>p.value=!0),onBlur:h[7]||(h[7]=b=>p.value=!1)},null,42,qH)),[[e.vModelCheckbox,e.unref(d)]]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(m).e("inner"))},null,2)],10,UH),e.unref(c)?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(m).e("label"))},[e.renderSlot(g.$slots,"default"),g.$slots.default?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(g.label),1)],64))],2)):e.createCommentVNode("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var ZH=re(XH,[["__file","checkbox.vue"]]);const JH=["name","tabindex","disabled","true-value","false-value"],QH=["name","tabindex","disabled","value"],e9={name:"ElCheckboxButton"},t9=e.defineComponent({...e9,props:zf,emits:Df,setup(t){const n=t,o=e.useSlots(),{focus:r,isChecked:l,isDisabled:a,size:s,model:i,handleChange:c}=Lf(n,o),{checkboxGroup:d}=Nr(),f=Z("checkbox"),u=e.computed(()=>{var p,m,g,h;const b=(m=(p=d==null?void 0:d.fill)==null?void 0:p.value)!=null?m:"";return{backgroundColor:b,borderColor:b,color:(h=(g=d==null?void 0:d.textColor)==null?void 0:g.value)!=null?h:"",boxShadow:b?`-1px 0 0 0 ${b}`:void 0}});return(p,m)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass([e.unref(f).b("button"),e.unref(f).bm("button",e.unref(s)),e.unref(f).is("disabled",e.unref(a)),e.unref(f).is("checked",e.unref(l)),e.unref(f).is("focus",e.unref(r))])},[p.trueLabel||p.falseLabel?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":m[0]||(m[0]=g=>e.isRef(i)?i.value=g:null),class:e.normalizeClass(e.unref(f).be("button","original")),type:"checkbox",name:p.name,tabindex:p.tabindex,disabled:e.unref(a),"true-value":p.trueLabel,"false-value":p.falseLabel,onChange:m[1]||(m[1]=(...g)=>e.unref(c)&&e.unref(c)(...g)),onFocus:m[2]||(m[2]=g=>r.value=!0),onBlur:m[3]||(m[3]=g=>r.value=!1)},null,42,JH)),[[e.vModelCheckbox,e.unref(i)]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":m[4]||(m[4]=g=>e.isRef(i)?i.value=g:null),class:e.normalizeClass(e.unref(f).be("button","original")),type:"checkbox",name:p.name,tabindex:p.tabindex,disabled:e.unref(a),value:p.label,onChange:m[5]||(m[5]=(...g)=>e.unref(c)&&e.unref(c)(...g)),onFocus:m[6]||(m[6]=g=>r.value=!0),onBlur:m[7]||(m[7]=g=>r.value=!1)},null,42,QH)),[[e.vModelCheckbox,e.unref(i)]]),p.$slots.default||p.label?(e.openBlock(),e.createElementBlock("span",{key:2,class:e.normalizeClass(e.unref(f).be("button","inner")),style:e.normalizeStyle(e.unref(l)?e.unref(u):void 0)},[e.renderSlot(p.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(p.label),1)])],6)):e.createCommentVNode("v-if",!0)],2))}});var ZC=re(t9,[["__file","checkbox-button.vue"]]);const n9={name:"ElCheckboxGroup"},o9=e.defineComponent({...n9,props:qC,emits:XC,setup(t,{emit:n}){const o=t,{elFormItem:r}=Nr(),{groupId:l,isLabeledByFormItem:a}=YC(o,{elFormItem:r}),s=yt(),i=Z("checkbox"),c=f=>{n(Ve,f),e.nextTick(()=>{n("change",f)})},d=e.computed({get(){return o.modelValue},set(f){c(f)}});return e.provide("CheckboxGroup",{name:"ElCheckboxGroup",...e.toRefs(o),modelValue:d,checkboxGroupSize:s,changeEvent:c}),e.watch(()=>o.modelValue,()=>{var f;o.validateEvent&&((f=r.validate)==null||f.call(r,"change").catch(u=>void 0))}),(f,u)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(f.tag),{id:e.unref(l),class:e.normalizeClass(e.unref(i).b("group")),role:"group","aria-label":e.unref(a)?void 0:f.label||"checkbox-group","aria-labelledby":e.unref(a)?e.unref(r).labelId:void 0},{default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"]))}});var JC=re(o9,[["__file","checkbox-group.vue"]]);const mn=Te(ZH,{CheckboxButton:ZC,CheckboxGroup:JC}),QC=ut(ZC),Ff=ut(JC),xf=se({size:tn,disabled:Boolean,label:{type:[String,Number,Boolean],default:""}}),e1=se({...xf,modelValue:{type:[String,Number,Boolean],default:""},name:{type:String,default:""},border:Boolean}),Hf={[Ve]:t=>Fe(t)||Ne(t)||St(t),[at]:t=>Fe(t)||Ne(t)||St(t)},t1=(t,n)=>{const o=e.ref(),r=e.inject(Nd,void 0),l=e.computed(()=>!!r),a=e.computed({get(){return l.value?r.modelValue:t.modelValue},set(f){l.value?r.changeEvent(f):n&&n(Ve,f),o.value.checked=t.modelValue===t.label}}),s=yt(e.computed(()=>r==null?void 0:r.size)),i=bo(e.computed(()=>r==null?void 0:r.disabled)),c=e.ref(!1),d=e.computed(()=>i.value||l.value&&a.value!==t.label?-1:0);return{radioRef:o,isGroup:l,radioGroup:r,focus:c,size:s,disabled:i,tabIndex:d,modelValue:a}},r9=["value","name","disabled"],l9={name:"ElRadio"},a9=e.defineComponent({...l9,props:e1,emits:Hf,setup(t,{emit:n}){const o=t,r=Z("radio"),{radioRef:l,radioGroup:a,focus:s,size:i,disabled:c,modelValue:d}=t1(o,n);function f(){e.nextTick(()=>n("change",d.value))}return(u,p)=>{var m;return e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).is("disabled",e.unref(c)),e.unref(r).is("focus",e.unref(s)),e.unref(r).is("bordered",u.border),e.unref(r).is("checked",e.unref(d)===u.label),e.unref(r).m(e.unref(i))])},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(r).e("input"),e.unref(r).is("disabled",e.unref(c)),e.unref(r).is("checked",e.unref(d)===u.label)])},[e.withDirectives(e.createElementVNode("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":p[0]||(p[0]=g=>e.isRef(d)?d.value=g:null),class:e.normalizeClass(e.unref(r).e("original")),value:u.label,name:u.name||((m=e.unref(a))==null?void 0:m.name),disabled:e.unref(c),type:"radio",onFocus:p[1]||(p[1]=g=>s.value=!0),onBlur:p[2]||(p[2]=g=>s.value=!1),onChange:f},null,42,r9),[[e.vModelRadio,e.unref(d)]]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(r).e("inner"))},null,2)],2),e.createElementVNode("span",{class:e.normalizeClass(e.unref(r).e("label")),onKeydown:p[3]||(p[3]=e.withModifiers(()=>{},["stop"]))},[e.renderSlot(u.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(u.label),1)])],34)],2)}}});var s9=re(a9,[["__file","radio.vue"]]);const n1=se({...xf,name:{type:String,default:""}}),i9=["value","name","disabled"],c9={name:"ElRadioButton"},d9=e.defineComponent({...c9,props:n1,setup(t){const n=t,o=Z("radio"),{radioRef:r,focus:l,size:a,disabled:s,modelValue:i,radioGroup:c}=t1(n),d=e.computed(()=>({backgroundColor:(c==null?void 0:c.fill)||"",borderColor:(c==null?void 0:c.fill)||"",boxShadow:c!=null&&c.fill?`-1px 0 0 0 ${c.fill}`:"",color:(c==null?void 0:c.textColor)||""}));return(f,u)=>{var p;return e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass([e.unref(o).b("button"),e.unref(o).is("active",e.unref(i)===f.label),e.unref(o).is("disabled",e.unref(s)),e.unref(o).is("focus",e.unref(l)),e.unref(o).bm("button",e.unref(a))])},[e.withDirectives(e.createElementVNode("input",{ref_key:"radioRef",ref:r,"onUpdate:modelValue":u[0]||(u[0]=m=>e.isRef(i)?i.value=m:null),class:e.normalizeClass(e.unref(o).be("button","original-radio")),value:f.label,type:"radio",name:f.name||((p=e.unref(c))==null?void 0:p.name),disabled:e.unref(s),onFocus:u[1]||(u[1]=m=>l.value=!0),onBlur:u[2]||(u[2]=m=>l.value=!1)},null,42,i9),[[e.vModelRadio,e.unref(i)]]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(o).be("button","inner")),style:e.normalizeStyle(e.unref(i)===f.label?e.unref(d):{}),onKeydown:u[3]||(u[3]=e.withModifiers(()=>{},["stop"]))},[e.renderSlot(f.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(f.label),1)])],38)],2)}}});var o1=re(d9,[["__file","radio-button.vue"]]);const r1=se({id:{type:String,default:void 0},size:tn,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:""},fill:{type:String,default:""},label:{type:String,default:void 0},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0}}),l1=Hf,f9=["id","aria-label","aria-labelledby"],u9={name:"ElRadioGroup"},p9=e.defineComponent({...u9,props:r1,emits:l1,setup(t,{emit:n}){const o=t,r=Z("radio"),l=Nn(),a=e.ref(),{formItem:s}=Co(),{inputId:i,isLabeledByFormItem:c}=wo(o,{formItemContext:s}),d=u=>{n(Ve,u),e.nextTick(()=>n("change",u))};e.onMounted(()=>{const u=a.value.querySelectorAll("[type=radio]"),p=u[0];!Array.from(u).some(m=>m.checked)&&p&&(p.tabIndex=0)});const f=e.computed(()=>o.name||l.value);return e.provide(Nd,e.reactive({...e.toRefs(o),changeEvent:d,name:f})),e.watch(()=>o.modelValue,()=>{o.validateEvent&&(s==null||s.validate("change").catch(u=>void 0))}),(u,p)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(i),ref_key:"radioGroupRef",ref:a,class:e.normalizeClass(e.unref(r).b("group")),role:"radiogroup","aria-label":e.unref(c)?void 0:u.label||"radio-group","aria-labelledby":e.unref(c)?e.unref(s).labelId:void 0},[e.renderSlot(u.$slots,"default")],10,f9))}});var a1=re(p9,[["__file","radio-group.vue"]]);const Kf=Te(s9,{RadioButton:o1,RadioGroup:a1}),s1=ut(a1),i1=ut(o1);var m9=e.defineComponent({name:"NodeContent",setup(){return{ns:Z("cascader-node")}},render(){const{ns:t}=this,{node:n,panel:o}=this.$parent,{data:r,label:l}=n,{renderLabelFn:a}=o;return e.h("span",{class:t.e("label")},a?a({node:n,data:r}):l)}}),c1=(t=>(t.CLICK="click",t.HOVER="hover",t))(c1||{});const Ys=Symbol(),h9=e.defineComponent({name:"ElCascaderNode",components:{ElCheckbox:mn,ElRadio:Kf,NodeContent:m9,ElIcon:de,Check:Wl,Loading:xo,ArrowRight:jt},props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(t,{emit:n}){const o=e.inject(Ys),r=Z("cascader-node"),l=e.computed(()=>o.isHoverMenu),a=e.computed(()=>o.config.multiple),s=e.computed(()=>o.config.checkStrictly),i=e.computed(()=>{var S;return(S=o.checkedNodes[0])==null?void 0:S.uid}),c=e.computed(()=>t.node.isDisabled),d=e.computed(()=>t.node.isLeaf),f=e.computed(()=>s.value&&!d.value||!c.value),u=e.computed(()=>m(o.expandingNode)),p=e.computed(()=>s.value&&o.checkedNodes.some(m)),m=S=>{var N;const{level:$,uid:B}=t.node;return((N=S==null?void 0:S.pathNodes[$-1])==null?void 0:N.uid)===B},g=()=>{u.value||o.expandNode(t.node)},h=S=>{const{node:N}=t;S!==N.checked&&o.handleCheckChange(N,S)},b=()=>{o.lazyLoad(t.node,()=>{d.value||g()})},y=S=>{!l.value||(w(),!d.value&&n("expand",S))},w=()=>{const{node:S}=t;!f.value||S.loading||(S.loaded?g():b())},C=()=>{l.value&&!d.value||(d.value&&!c.value&&!s.value&&!a.value?E(!0):w())},k=S=>{s.value?(h(S),t.node.loaded&&g()):E(S)},E=S=>{t.node.loaded?(h(S),!s.value&&g()):b()};return{panel:o,isHoverMenu:l,multiple:a,checkStrictly:s,checkedNodeId:i,isDisabled:c,isLeaf:d,expandable:f,inExpandingPath:u,inCheckedPath:p,ns:r,handleHoverExpand:y,handleExpand:w,handleClick:C,handleCheck:E,handleSelectCheck:k}}}),g9=["id","aria-haspopup","aria-owns","aria-expanded","tabindex"],y9=e.createElementVNode("span",null,null,-1);function b9(t,n,o,r,l,a){const s=e.resolveComponent("el-checkbox"),i=e.resolveComponent("el-radio"),c=e.resolveComponent("check"),d=e.resolveComponent("el-icon"),f=e.resolveComponent("node-content"),u=e.resolveComponent("loading"),p=e.resolveComponent("arrow-right");return e.openBlock(),e.createElementBlock("li",{id:`${t.menuId}-${t.node.uid}`,role:"menuitem","aria-haspopup":!t.isLeaf,"aria-owns":t.isLeaf?null:t.menuId,"aria-expanded":t.inExpandingPath,tabindex:t.expandable?-1:void 0,class:e.normalizeClass([t.ns.b(),t.ns.is("selectable",t.checkStrictly),t.ns.is("active",t.node.checked),t.ns.is("disabled",!t.expandable),t.inExpandingPath&&"in-active-path",t.inCheckedPath&&"in-checked-path"]),onMouseenter:n[2]||(n[2]=(...m)=>t.handleHoverExpand&&t.handleHoverExpand(...m)),onFocus:n[3]||(n[3]=(...m)=>t.handleHoverExpand&&t.handleHoverExpand(...m)),onClick:n[4]||(n[4]=(...m)=>t.handleClick&&t.handleClick(...m))},[e.createCommentVNode(" prefix "),t.multiple?(e.openBlock(),e.createBlock(s,{key:0,"model-value":t.node.checked,indeterminate:t.node.indeterminate,disabled:t.isDisabled,onClick:n[0]||(n[0]=e.withModifiers(()=>{},["stop"])),"onUpdate:modelValue":t.handleSelectCheck},null,8,["model-value","indeterminate","disabled","onUpdate:modelValue"])):t.checkStrictly?(e.openBlock(),e.createBlock(i,{key:1,"model-value":t.checkedNodeId,label:t.node.uid,disabled:t.isDisabled,"onUpdate:modelValue":t.handleSelectCheck,onClick:n[1]||(n[1]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createCommentVNode(` + Add an empty element to avoid render label, + do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485 + `),y9]),_:1},8,["model-value","label","disabled","onUpdate:modelValue"])):t.isLeaf&&t.node.checked?(e.openBlock(),e.createBlock(d,{key:2,class:e.normalizeClass(t.ns.e("prefix"))},{default:e.withCtx(()=>[e.createVNode(c)]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.createCommentVNode(" content "),e.createVNode(f),e.createCommentVNode(" postfix "),t.isLeaf?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[t.node.loading?(e.openBlock(),e.createBlock(d,{key:0,class:e.normalizeClass([t.ns.is("loading"),t.ns.e("postfix")])},{default:e.withCtx(()=>[e.createVNode(u)]),_:1},8,["class"])):(e.openBlock(),e.createBlock(d,{key:1,class:e.normalizeClass(["arrow-right",t.ns.e("postfix")])},{default:e.withCtx(()=>[e.createVNode(p)]),_:1},8,["class"]))],64))],42,g9)}var C9=re(h9,[["render",b9],["__file","node.vue"]]);const w9=e.defineComponent({name:"ElCascaderMenu",components:{Loading:xo,ElIcon:de,ElScrollbar:Zn,ElCascaderNode:C9},props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(t){const n=e.getCurrentInstance(),o=Z("cascader-menu"),{t:r}=We(),l=jl();let a=null,s=null;const i=e.inject(Ys),c=e.ref(null),d=e.computed(()=>!t.nodes.length),f=e.computed(()=>!i.initialLoaded),u=e.computed(()=>`cascader-menu-${l}-${t.index}`),p=b=>{a=b.target},m=b=>{if(!(!i.isHoverMenu||!a||!c.value))if(a.contains(b.target)){g();const y=n.vnode.el,{left:w}=y.getBoundingClientRect(),{offsetWidth:C,offsetHeight:k}=y,E=b.clientX-w,S=a.offsetTop,N=S+a.offsetHeight;c.value.innerHTML=` + + + `}else s||(s=window.setTimeout(h,i.config.hoverThreshold))},g=()=>{!s||(clearTimeout(s),s=null)},h=()=>{!c.value||(c.value.innerHTML="",g())};return{ns:o,panel:i,hoverZone:c,isEmpty:d,isLoading:f,menuId:u,t:r,handleExpand:p,handleMouseMove:m,clearHoverZone:h}}});function k9(t,n,o,r,l,a){const s=e.resolveComponent("el-cascader-node"),i=e.resolveComponent("loading"),c=e.resolveComponent("el-icon"),d=e.resolveComponent("el-scrollbar");return e.openBlock(),e.createBlock(d,{key:t.menuId,tag:"ul",role:"menu",class:e.normalizeClass(t.ns.b()),"wrap-class":t.ns.e("wrap"),"view-class":[t.ns.e("list"),t.ns.is("empty",t.isEmpty)],onMousemove:t.handleMouseMove,onMouseleave:t.clearHoverZone},{default:e.withCtx(()=>{var f;return[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.nodes,u=>(e.openBlock(),e.createBlock(s,{key:u.uid,node:u,"menu-id":t.menuId,onExpand:t.handleExpand},null,8,["node","menu-id","onExpand"]))),128)),t.isLoading?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.ns.e("empty-text"))},[e.createVNode(c,{size:"14",class:e.normalizeClass(t.ns.is("loading"))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1},8,["class"]),e.createTextVNode(" "+e.toDisplayString(t.t("el.cascader.loading")),1)],2)):t.isEmpty?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(t.ns.e("empty-text"))},e.toDisplayString(t.t("el.cascader.noData")),3)):(f=t.panel)!=null&&f.isHoverMenu?(e.openBlock(),e.createElementBlock("svg",{key:2,ref:"hoverZone",class:e.normalizeClass(t.ns.e("hover-zone"))},null,2)):e.createCommentVNode("v-if",!0)]}),_:1},8,["class","wrap-class","view-class","onMousemove","onMouseleave"])}var S9=re(w9,[["render",k9],["__file","menu.vue"]]),Wf=(t=>(t.CLICK="click",t.HOVER="hover",t))(Wf||{});let E9=0;const N9=t=>{const n=[t];let{parent:o}=t;for(;o;)n.unshift(o),o=o.parent;return n};class rl{constructor(n,o,r,l=!1){this.data=n,this.config=o,this.parent=r,this.root=l,this.uid=E9++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:a,label:s,children:i}=o,c=n[i],d=N9(this);this.level=l?0:r?r.level+1:1,this.value=n[a],this.label=n[s],this.pathNodes=d,this.pathValues=d.map(f=>f.value),this.pathLabels=d.map(f=>f.label),this.childrenData=c,this.children=(c||[]).map(f=>new rl(f,o,this)),this.loaded=!o.lazy||this.isLeaf||!Sn(c)}get isDisabled(){const{data:n,parent:o,config:r}=this,{disabled:l,checkStrictly:a}=r;return(ot(l)?l(n,this):!!n[l])||!a&&(o==null?void 0:o.isDisabled)}get isLeaf(){const{data:n,config:o,childrenData:r,loaded:l}=this,{lazy:a,leaf:s}=o,i=ot(s)?s(n,this):n[s];return Rt(i)?a&&!l?!1:!(Array.isArray(r)&&r.length):!!i}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(n){const{childrenData:o,children:r}=this,l=new rl(n,this.config,this);return Array.isArray(o)?o.push(n):this.childrenData=[n],r.push(l),l}calcText(n,o){const r=n?this.pathLabels.join(o):this.label;return this.text=r,r}broadcast(n,...o){const r=`onParent${ho(n)}`;this.children.forEach(l=>{l&&(l.broadcast(n,...o),l[r]&&l[r](...o))})}emit(n,...o){const{parent:r}=this,l=`onChild${ho(n)}`;r&&(r[l]&&r[l](...o),r.emit(n,...o))}onParentCheck(n){this.isDisabled||this.setCheckState(n)}onChildCheck(){const{children:n}=this,o=n.filter(l=>!l.isDisabled),r=o.length?o.every(l=>l.checked):!1;this.setCheckState(r)}setCheckState(n){const o=this.children.length,r=this.children.reduce((l,a)=>{const s=a.checked?1:a.indeterminate?.5:0;return l+s},0);this.checked=this.loaded&&this.children.filter(l=>!l.isDisabled).every(l=>l.loaded&&l.checked)&&n,this.indeterminate=this.loaded&&r!==o&&r>0}doCheck(n){if(this.checked===n)return;const{checkStrictly:o,multiple:r}=this.config;o||!r?this.checked=n:(this.broadcast("check",n),this.setCheckState(n),this.emit("check"))}}const jf=(t,n)=>t.reduce((o,r)=>(r.isLeaf?o.push(r):(!n&&o.push(r),o=o.concat(jf(r.children,n))),o),[]);class d1{constructor(n,o){this.config=o;const r=(n||[]).map(l=>new rl(l,this.config));this.nodes=r,this.allNodes=jf(r,!1),this.leafNodes=jf(r,!0)}getNodes(){return this.nodes}getFlattedNodes(n){return n?this.leafNodes:this.allNodes}appendNode(n,o){const r=o?o.appendChild(n):new rl(n,this.config);o||this.nodes.push(r),this.allNodes.push(r),r.isLeaf&&this.leafNodes.push(r)}appendNodes(n,o){n.forEach(r=>this.appendNode(r,o))}getNodeByValue(n,o=!1){return!n&&n!==0?null:this.getFlattedNodes(o).find(l=>Jt(l.value,n)||Jt(l.pathValues,n))||null}getSameNode(n){return n&&this.getFlattedNodes(!1).find(({value:r,level:l})=>Jt(n.value,r)&&n.level===l)||null}}const Uf={modelValue:[Number,String,Array],options:{type:Array,default:()=>[]},props:{type:Object,default:()=>({})}},f1={expandTrigger:Wf.CLICK,multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:Xe,value:"value",label:"label",children:"children",leaf:"leaf",disabled:"disabled",hoverThreshold:500},u1=t=>e.computed(()=>({...f1,...t.props})),p1=t=>{if(!t)return 0;const n=t.id.split("-");return Number(n[n.length-2])},$9=t=>{if(!t)return;const n=t.querySelector("input");n?n.click():d0(t)&&t.click()},B9=(t,n)=>{const o=n.slice(0),r=o.map(a=>a.uid),l=t.reduce((a,s)=>{const i=r.indexOf(s.uid);return i>-1&&(a.push(s),o.splice(i,1),r.splice(i,1)),a},[]);return l.push(...o),l},_9=e.defineComponent({name:"ElCascaderPanel",components:{ElCascaderMenu:S9},props:{...Uf,border:{type:Boolean,default:!0},renderLabel:Function},emits:[Ve,at,"close","expand-change"],setup(t,{emit:n,slots:o}){let r=!1;const l=Z("cascader"),a=u1(t);let s=null;const i=e.ref(!0),c=e.ref([]),d=e.ref(null),f=e.ref([]),u=e.ref(null),p=e.ref([]),m=e.computed(()=>a.value.expandTrigger===Wf.HOVER),g=e.computed(()=>t.renderLabel||o.default),h=()=>{const{options:z}=t,I=a.value;r=!1,s=new d1(z,I),f.value=[s.getNodes()],I.lazy&&Sn(t.options)?(i.value=!1,b(void 0,A=>{A&&(s=new d1(A,I),f.value=[s.getNodes()]),i.value=!0,$(!1,!0)})):$(!1,!0)},b=(z,I)=>{const A=a.value;z=z||new rl({},A,void 0,!0),z.loading=!0;const L=R=>{const T=z,v=T.root?null:T;R&&(s==null||s.appendNodes(R,v)),T.loading=!1,T.loaded=!0,T.childrenData=T.childrenData||[],I&&I(R)};A.lazyLoad(z,L)},y=(z,I)=>{var A;const{level:L}=z,R=f.value.slice(0,L);let T;z.isLeaf?T=z.pathNodes[L-2]:(T=z,R.push(z.children)),((A=u.value)==null?void 0:A.uid)!==(T==null?void 0:T.uid)&&(u.value=z,f.value=R,!I&&n("expand-change",(z==null?void 0:z.pathValues)||[]))},w=(z,I,A=!0)=>{const{checkStrictly:L,multiple:R}=a.value,T=p.value[0];r=!0,!R&&(T==null||T.doCheck(!1)),z.doCheck(I),N(),A&&!R&&!L&&n("close"),!A&&!R&&!L&&C(z)},C=z=>{!z||(z=z.parent,C(z),z&&y(z))},k=z=>s==null?void 0:s.getFlattedNodes(z),E=z=>{var I;return(I=k(z))==null?void 0:I.filter(A=>A.checked!==!1)},S=()=>{p.value.forEach(z=>z.doCheck(!1)),N()},N=()=>{var z;const{checkStrictly:I,multiple:A}=a.value,L=p.value,R=E(!I),T=B9(L,R),v=T.map(V=>V.valueByOption);p.value=T,d.value=A?v:(z=v[0])!=null?z:null},$=(z=!1,I=!1)=>{const{modelValue:A}=t,{lazy:L,multiple:R,checkStrictly:T}=a.value,v=!T;if(!(!i.value||r||!I&&Jt(A,d.value)))if(L&&!z){const H=F0(pg(yo(A))).map(x=>s==null?void 0:s.getNodeByValue(x)).filter(x=>!!x&&!x.loaded&&!x.loading);H.length?H.forEach(x=>{b(x,()=>$(!1,I))}):$(!0,I)}else{const V=R?yo(A):[A],H=F0(V.map(x=>s==null?void 0:s.getNodeByValue(x,v)));B(H,I),d.value=A}},B=(z,I=!0)=>{const{checkStrictly:A}=a.value,L=p.value,R=z.filter(V=>!!V&&(A||V.isLeaf)),T=s==null?void 0:s.getSameNode(u.value),v=I&&T||R[0];v?v.pathNodes.forEach(V=>y(V,!0)):u.value=null,L.forEach(V=>V.doCheck(!1)),R.forEach(V=>V.doCheck(!0)),p.value=R,e.nextTick(P)},P=()=>{!Oe||c.value.forEach(z=>{const I=z==null?void 0:z.$el;if(I){const A=I.querySelector(`.${l.namespace.value}-scrollbar__wrap`),L=I.querySelector(`.${l.b("node")}.${l.is("active")}`)||I.querySelector(`.${l.b("node")}.in-active-path`);_0(A,L)}})},D=z=>{const I=z.target,{code:A}=z;switch(A){case ue.up:case ue.down:{z.preventDefault();const L=A===ue.up?-1:1;ds(f0(I,L,`.${l.b("node")}[tabindex="-1"]`));break}case ue.left:{z.preventDefault();const L=c.value[p1(I)-1],R=L==null?void 0:L.$el.querySelector(`.${l.b("node")}[aria-expanded="true"]`);ds(R);break}case ue.right:{z.preventDefault();const L=c.value[p1(I)+1],R=L==null?void 0:L.$el.querySelector(`.${l.b("node")}[tabindex="-1"]`);ds(R);break}case ue.enter:$9(I);break}};return e.provide(Ys,e.reactive({config:a,expandingNode:u,checkedNodes:p,isHoverMenu:m,initialLoaded:i,renderLabelFn:g,lazyLoad:b,expandNode:y,handleCheckChange:w})),e.watch([a,()=>t.options],h,{deep:!0,immediate:!0}),e.watch(()=>t.modelValue,()=>{r=!1,$()}),e.watch(d,z=>{Jt(z,t.modelValue)||(n(Ve,z),n(at,z))}),e.onBeforeUpdate(()=>c.value=[]),e.onMounted(()=>!Sn(t.modelValue)&&$()),{ns:l,menuList:c,menus:f,checkedNodes:p,handleKeyDown:D,handleCheckChange:w,getFlattedNodes:k,getCheckedNodes:E,clearCheckedNodes:S,calculateCheckedValue:N,scrollToExpandingNode:P}}});function v9(t,n,o,r,l,a){const s=e.resolveComponent("el-cascader-menu");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.ns.b("panel"),t.ns.is("bordered",t.border)]),onKeydown:n[0]||(n[0]=(...i)=>t.handleKeyDown&&t.handleKeyDown(...i))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.menus,(i,c)=>(e.openBlock(),e.createBlock(s,{key:c,ref_for:!0,ref:d=>t.menuList[c]=d,index:c,nodes:[...i]},null,8,["index","nodes"]))),128))],34)}var Xs=re(_9,[["render",v9],["__file","index.vue"]]);Xs.install=t=>{t.component(Xs.name,Xs)};const m1=Xs,h1=m1,Zs=se({closable:Boolean,type:{type:String,values:["success","info","warning","danger",""],default:""},hit:Boolean,disableTransitions:Boolean,color:{type:String,default:""},size:{type:String,values:Ko,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),g1={close:t=>t instanceof MouseEvent,click:t=>t instanceof MouseEvent},T9={name:"ElTag"},V9=e.defineComponent({...T9,props:Zs,emits:g1,setup(t,{emit:n}){const o=t,r=yt(),l=Z("tag"),a=e.computed(()=>{const{type:c,hit:d,effect:f,closable:u,round:p}=o;return[l.b(),l.is("closable",u),l.m(c),l.m(r.value),l.m(f),l.is("hit",d),l.is("round",p)]}),s=c=>{n("close",c)},i=c=>{n("click",c)};return(c,d)=>c.disableTransitions?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(a)),style:e.normalizeStyle({backgroundColor:c.color}),onClick:i},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(l).e("content"))},[e.renderSlot(c.$slots,"default")],2),c.closable?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(l).e("close")),onClick:e.withModifiers(s,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(Pn))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0)],6)):(e.openBlock(),e.createBlock(e.Transition,{key:1,name:`${e.unref(l).namespace.value}-zoom-in-center`,appear:""},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(e.unref(a)),style:e.normalizeStyle({backgroundColor:c.color}),onClick:i},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(l).e("content"))},[e.renderSlot(c.$slots,"default")],2),c.closable?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(l).e("close")),onClick:e.withModifiers(s,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(Pn))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0)],6)]),_:3},8,["name"]))}});var M9=re(V9,[["__file","tag.vue"]]);const ia=Te(M9),R9=40,I9={large:36,default:32,small:28},P9={modifiers:[{name:"arrowPosition",enabled:!0,phase:"main",fn:({state:t})=>{const{modifiersData:n,placement:o}=t;["right","left","bottom","top"].includes(o)||(n.arrow.x=35)},requires:["arrow"]}]},A9="ElCascader",O9=e.defineComponent({name:A9,components:{ElCascaderPanel:m1,ElInput:It,ElTooltip:Ut,ElScrollbar:Zn,ElTag:ia,ElIcon:de,CircleClose:Fo,Check:Wl,ArrowDown:mr},directives:{Clickoutside:_o},props:{...Uf,size:{type:String,validator:hr},placeholder:{type:String},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:{type:Function,default:(t,n)=>t.text.includes(n)},separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},debounce:{type:Number,default:300},beforeFilter:{type:Function,default:()=>!0},popperClass:{type:String,default:""},teleported:vt.teleported,tagType:{...Zs.type,default:"info"},validateEvent:{type:Boolean,default:!0}},emits:[Ve,at,"focus","blur","visible-change","expand-change","remove-tag"],setup(t,{emit:n}){let o=0,r=0;const l=Z("cascader"),a=Z("input"),{t:s}=We(),i=e.inject(un,{}),c=e.inject(Lt,{}),d=e.ref(null),f=e.ref(null),u=e.ref(null),p=e.ref(null),m=e.ref(null),g=e.ref(!1),h=e.ref(!1),b=e.ref(!1),y=e.ref(""),w=e.ref(""),C=e.ref([]),k=e.ref([]),E=e.ref([]),S=e.ref(!1),N=e.computed(()=>t.disabled||i.disabled),$=e.computed(()=>t.placeholder||s("el.cascader.placeholder")),B=yt(),P=e.computed(()=>["small"].includes(B.value)?"small":"default"),D=e.computed(()=>!!t.props.multiple),z=e.computed(()=>!t.filterable||D.value),I=e.computed(()=>D.value?w.value:y.value),A=e.computed(()=>{var ne;return((ne=p.value)==null?void 0:ne.checkedNodes)||[]}),L=e.computed(()=>!t.clearable||N.value||b.value||!h.value?!1:!!A.value.length),R=e.computed(()=>{const{showAllLevels:ne,separator:oe}=t,fe=A.value;return fe.length?D.value?" ":fe[0].calcText(ne,oe):""}),T=e.computed({get(){return t.modelValue},set(ne){var oe;n(Ve,ne),n(at,ne),t.validateEvent&&((oe=c.validate)==null||oe.call(c,"change").catch(fe=>void 0))}}),v=e.computed(()=>{var ne,oe;return(oe=(ne=d.value)==null?void 0:ne.popperRef)==null?void 0:oe.contentRef}),V=ne=>{var oe,fe,ye;if(!N.value&&(ne=ne!=null?ne:!g.value,ne!==g.value)){if(g.value=ne,(fe=(oe=f.value)==null?void 0:oe.input)==null||fe.setAttribute("aria-expanded",`${ne}`),ne)H(),e.nextTick((ye=p.value)==null?void 0:ye.scrollToExpandingNode);else if(t.filterable){const{value:$e}=R;y.value=$e,w.value=$e}n("visible-change",ne)}},H=()=>{e.nextTick(()=>{var ne;(ne=d.value)==null||ne.updatePopper()})},x=()=>{b.value=!1},F=ne=>{const{showAllLevels:oe,separator:fe}=t;return{node:ne,key:ne.uid,text:ne.calcText(oe,fe),hitState:!1,closable:!N.value&&!ne.isDisabled,isCollapseTag:!1}},K=ne=>{var oe;const fe=ne.node;fe.doCheck(!1),(oe=p.value)==null||oe.calculateCheckedValue(),n("remove-tag",fe.valueByOption)},X=()=>{if(!D.value)return;const ne=A.value,oe=[],fe=[];if(ne.forEach(ye=>fe.push(F(ye))),k.value=fe,ne.length){const[ye,...$e]=ne,ve=$e.length;oe.push(F(ye)),ve&&(t.collapseTags?oe.push({key:-1,text:`+ ${ve}`,closable:!1,isCollapseTag:!0}):$e.forEach(te=>oe.push(F(te))))}C.value=oe},J=()=>{var ne,oe;const{filterMethod:fe,showAllLevels:ye,separator:$e}=t,ve=(oe=(ne=p.value)==null?void 0:ne.getFlattedNodes(!t.props.checkStrictly))==null?void 0:oe.filter(te=>te.isDisabled?!1:(te.calcText(ye,$e),fe(te,I.value)));D.value&&(C.value.forEach(te=>{te.hitState=!1}),k.value.forEach(te=>{te.hitState=!1})),b.value=!0,E.value=ve,H()},U=()=>{var ne;let oe;b.value&&m.value?oe=m.value.$el.querySelector(`.${l.e("suggestion-item")}`):oe=(ne=p.value)==null?void 0:ne.$el.querySelector(`.${l.b("node")}[tabindex="-1"]`),oe&&(oe.focus(),!b.value&&oe.click())},W=()=>{var ne,oe;const fe=(ne=f.value)==null?void 0:ne.input,ye=u.value,$e=(oe=m.value)==null?void 0:oe.$el;if(!(!Oe||!fe)){if($e){const ve=$e.querySelector(`.${l.e("suggestion-list")}`);ve.style.minWidth=`${fe.offsetWidth}px`}if(ye){const{offsetHeight:ve}=ye,te=C.value.length>0?`${Math.max(ve+6,o)}px`:`${o}px`;fe.style.height=te,H()}}},Q=ne=>{var oe;return(oe=p.value)==null?void 0:oe.getCheckedNodes(ne)},Y=ne=>{H(),n("expand-change",ne)},ee=ne=>{var oe;const fe=(oe=ne.target)==null?void 0:oe.value;if(ne.type==="compositionend")S.value=!1,e.nextTick(()=>me(fe));else{const ye=fe[fe.length-1]||"";S.value=!Cs(ye)}},pe=ne=>{if(!S.value)switch(ne.code){case ue.enter:V();break;case ue.down:V(!0),e.nextTick(U),ne.preventDefault();break;case ue.esc:g.value===!0&&(ne.preventDefault(),ne.stopPropagation(),V(!1));break;case ue.tab:V(!1);break}},he=()=>{var ne;(ne=p.value)==null||ne.clearCheckedNodes(),V(!1)},we=ne=>{var oe,fe;const{checked:ye}=ne;D.value?(oe=p.value)==null||oe.handleCheckChange(ne,!ye,!1):(!ye&&((fe=p.value)==null||fe.handleCheckChange(ne,!0,!1)),V(!1))},Me=ne=>{const oe=ne.target,{code:fe}=ne;switch(fe){case ue.up:case ue.down:{const ye=fe===ue.up?-1:1;ds(f0(oe,ye,`.${l.e("suggestion-item")}[tabindex="-1"]`));break}case ue.enter:oe.click();break}},be=()=>{const ne=C.value,oe=ne[ne.length-1];r=w.value?0:r+1,!(!oe||!r)&&(oe.hitState?K(oe):oe.hitState=!0)},Ke=Dt(()=>{const{value:ne}=I;if(!ne)return;const oe=t.beforeFilter(ne);rd(oe)?oe.then(J).catch(()=>{}):oe!==!1?J():x()},t.debounce),me=(ne,oe)=>{!g.value&&V(!0),!(oe!=null&&oe.isComposing)&&(ne?Ke():x())};return e.watch(b,H),e.watch([A,N],X),e.watch(C,()=>{e.nextTick(()=>W())}),e.watch(R,ne=>y.value=ne,{immediate:!0}),e.onMounted(()=>{var ne;const oe=(ne=f.value)==null?void 0:ne.$el;o=(oe==null?void 0:oe.offsetHeight)||I9[B.value]||R9,Wt(oe,W)}),{popperOptions:P9,tooltipRef:d,popperPaneRef:v,input:f,tagWrapper:u,panel:p,suggestionPanel:m,popperVisible:g,inputHover:h,inputPlaceholder:$,filtering:b,presentText:R,checkedValue:T,inputValue:y,searchInputValue:w,presentTags:C,allPresentTags:k,suggestions:E,isDisabled:N,isOnComposition:S,realSize:B,tagSize:P,multiple:D,readonly:z,clearBtnVisible:L,nsCascader:l,nsInput:a,t:s,togglePopperVisible:V,hideSuggestionPanel:x,deleteTag:K,focusFirstNode:U,getCheckedNodes:Q,handleExpandChange:Y,handleKeyDown:pe,handleComposition:ee,handleClear:he,handleSuggestionClick:we,handleSuggestionKeyDown:Me,handleDelete:be,handleInput:me}}}),z9={key:0},D9=["placeholder"],L9=["onClick"];function F9(t,n,o,r,l,a){const s=e.resolveComponent("circle-close"),i=e.resolveComponent("el-icon"),c=e.resolveComponent("arrow-down"),d=e.resolveComponent("el-input"),f=e.resolveComponent("el-tag"),u=e.resolveComponent("el-tooltip"),p=e.resolveComponent("el-cascader-panel"),m=e.resolveComponent("check"),g=e.resolveComponent("el-scrollbar"),h=e.resolveDirective("clickoutside");return e.openBlock(),e.createBlock(u,{ref:"tooltipRef",visible:t.popperVisible,teleported:t.teleported,"popper-class":[t.nsCascader.e("dropdown"),t.popperClass],"popper-options":t.popperOptions,"fallback-placements":["bottom-start","bottom","top-start","top","right","left"],"stop-popper-mouse-event":!1,"gpu-acceleration":!1,placement:"bottom-start",transition:`${t.nsCascader.namespace.value}-zoom-in-top`,effect:"light",pure:"",persistent:"",onHide:t.hideSuggestionPanel},{default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.nsCascader.b(),t.nsCascader.m(t.realSize),t.nsCascader.is("disabled",t.isDisabled),t.$attrs.class]),style:e.normalizeStyle(t.$attrs.style),onClick:n[11]||(n[11]=()=>t.togglePopperVisible(t.readonly?void 0:!0)),onKeydown:n[12]||(n[12]=(...b)=>t.handleKeyDown&&t.handleKeyDown(...b)),onMouseenter:n[13]||(n[13]=b=>t.inputHover=!0),onMouseleave:n[14]||(n[14]=b=>t.inputHover=!1)},[e.createVNode(d,{ref:"input",modelValue:t.inputValue,"onUpdate:modelValue":n[1]||(n[1]=b=>t.inputValue=b),placeholder:t.searchInputValue?"":t.inputPlaceholder,readonly:t.readonly,disabled:t.isDisabled,"validate-event":!1,size:t.realSize,class:e.normalizeClass(t.nsCascader.is("focus",t.popperVisible)),onCompositionstart:t.handleComposition,onCompositionupdate:t.handleComposition,onCompositionend:t.handleComposition,onFocus:n[2]||(n[2]=b=>t.$emit("focus",b)),onBlur:n[3]||(n[3]=b=>t.$emit("blur",b)),onInput:t.handleInput},{suffix:e.withCtx(()=>[t.clearBtnVisible?(e.openBlock(),e.createBlock(i,{key:"clear",class:e.normalizeClass([t.nsInput.e("icon"),"icon-circle-close"]),onClick:e.withModifiers(t.handleClear,["stop"])},{default:e.withCtx(()=>[e.createVNode(s)]),_:1},8,["class","onClick"])):(e.openBlock(),e.createBlock(i,{key:"arrow-down",class:e.normalizeClass([t.nsInput.e("icon"),"icon-arrow-down",t.nsCascader.is("reverse",t.popperVisible)]),onClick:n[0]||(n[0]=e.withModifiers(b=>t.togglePopperVisible(),["stop"]))},{default:e.withCtx(()=>[e.createVNode(c)]),_:1},8,["class"]))]),_:1},8,["modelValue","placeholder","readonly","disabled","size","class","onCompositionstart","onCompositionupdate","onCompositionend","onInput"]),t.multiple?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"tagWrapper",class:e.normalizeClass(t.nsCascader.e("tags"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.presentTags,b=>(e.openBlock(),e.createBlock(f,{key:b.key,type:t.tagType,size:t.tagSize,hit:b.hitState,closable:b.closable,"disable-transitions":"",onClose:y=>t.deleteTag(b)},{default:e.withCtx(()=>[b.isCollapseTag===!1?(e.openBlock(),e.createElementBlock("span",z9,e.toDisplayString(b.text),1)):(e.openBlock(),e.createBlock(u,{key:1,teleported:!1,disabled:t.popperVisible||!t.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],placement:"bottom",effect:"light"},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(b.text),1)]),content:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(t.nsCascader.e("collapse-tags"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.allPresentTags,(y,w)=>(e.openBlock(),e.createElementBlock("div",{key:w,class:e.normalizeClass(t.nsCascader.e("collapse-tag"))},[(e.openBlock(),e.createBlock(f,{key:y.key,class:"in-tooltip",type:t.tagType,size:t.tagSize,hit:y.hitState,closable:y.closable,"disable-transitions":"",onClose:C=>t.deleteTag(y)},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(y.text),1)]),_:2},1032,["type","size","hit","closable","onClose"]))],2))),128))],2)]),_:2},1032,["disabled"]))]),_:2},1032,["type","size","hit","closable","onClose"]))),128)),t.filterable&&!t.isDisabled?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":n[4]||(n[4]=b=>t.searchInputValue=b),type:"text",class:e.normalizeClass(t.nsCascader.e("search-input")),placeholder:t.presentText?"":t.inputPlaceholder,onInput:n[5]||(n[5]=b=>t.handleInput(t.searchInputValue,b)),onClick:n[6]||(n[6]=e.withModifiers(b=>t.togglePopperVisible(!0),["stop"])),onKeydown:n[7]||(n[7]=e.withKeys((...b)=>t.handleDelete&&t.handleDelete(...b),["delete"])),onCompositionstart:n[8]||(n[8]=(...b)=>t.handleComposition&&t.handleComposition(...b)),onCompositionupdate:n[9]||(n[9]=(...b)=>t.handleComposition&&t.handleComposition(...b)),onCompositionend:n[10]||(n[10]=(...b)=>t.handleComposition&&t.handleComposition(...b))},null,42,D9)),[[e.vModelText,t.searchInputValue]]):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0)],38)),[[h,()=>t.togglePopperVisible(!1),t.popperPaneRef]])]),content:e.withCtx(()=>[e.withDirectives(e.createVNode(p,{ref:"panel",modelValue:t.checkedValue,"onUpdate:modelValue":n[15]||(n[15]=b=>t.checkedValue=b),options:t.options,props:t.props,border:!1,"render-label":t.$slots.default,onExpandChange:t.handleExpandChange,onClose:n[16]||(n[16]=b=>t.$nextTick(()=>t.togglePopperVisible(!1)))},null,8,["modelValue","options","props","render-label","onExpandChange"]),[[e.vShow,!t.filtering]]),t.filterable?e.withDirectives((e.openBlock(),e.createBlock(g,{key:0,ref:"suggestionPanel",tag:"ul",class:e.normalizeClass(t.nsCascader.e("suggestion-panel")),"view-class":t.nsCascader.e("suggestion-list"),onKeydown:t.handleSuggestionKeyDown},{default:e.withCtx(()=>[t.suggestions.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.suggestions,b=>(e.openBlock(),e.createElementBlock("li",{key:b.uid,class:e.normalizeClass([t.nsCascader.e("suggestion-item"),t.nsCascader.is("checked",b.checked)]),tabindex:-1,onClick:y=>t.handleSuggestionClick(b)},[e.createElementVNode("span",null,e.toDisplayString(b.text),1),b.checked?(e.openBlock(),e.createBlock(i,{key:0},{default:e.withCtx(()=>[e.createVNode(m)]),_:1})):e.createCommentVNode("v-if",!0)],10,L9))),128)):e.renderSlot(t.$slots,"empty",{key:1},()=>[e.createElementVNode("li",{class:e.normalizeClass(t.nsCascader.e("empty-text"))},e.toDisplayString(t.t("el.cascader.noMatch")),3)])]),_:3},8,["class","view-class","onKeydown"])),[[e.vShow,t.filtering]]):e.createCommentVNode("v-if",!0)]),_:3},8,["visible","teleported","popper-class","popper-options","transition","onHide"])}var Js=re(O9,[["render",F9],["__file","index.vue"]]);Js.install=t=>{t.component(Js.name,Js)};const y1=Js,b1=se({checked:{type:Boolean,default:!1}}),C1={"update:checked":t=>St(t),[at]:t=>St(t)},x9={name:"ElCheckTag"},H9=e.defineComponent({...x9,props:b1,emits:C1,setup(t,{emit:n}){const o=t,r=Z("check-tag"),l=()=>{const a=!o.checked;n(at,a),n("update:checked",a)};return(a,s)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).is("checked",a.checked)]),onClick:l},[e.renderSlot(a.$slots,"default")],2))}});var K9=re(H9,[["__file","check-tag.vue"]]);const w1=Te(K9),k1=se({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:j([Number,Object]),default:()=>st({})},sm:{type:j([Number,Object]),default:()=>st({})},md:{type:j([Number,Object]),default:()=>st({})},lg:{type:j([Number,Object]),default:()=>st({})},xl:{type:j([Number,Object]),default:()=>st({})}}),W9={name:"ElCol"},j9=e.defineComponent({...W9,props:k1,setup(t){const n=t,{gutter:o}=e.inject($d,{gutter:e.computed(()=>0)}),r=Z("col"),l=e.computed(()=>{const s={};return o.value&&(s.paddingLeft=s.paddingRight=`${o.value/2}px`),s}),a=e.computed(()=>{const s=[];return["span","offset","pull","push"].forEach(d=>{const f=n[d];Ne(f)&&(d==="span"?s.push(r.b(`${n[d]}`)):f>0&&s.push(r.b(`${d}-${n[d]}`)))}),["xs","sm","md","lg","xl"].forEach(d=>{Ne(n[d])?s.push(r.b(`${d}-${n[d]}`)):it(n[d])&&Object.entries(n[d]).forEach(([f,u])=>{s.push(f!=="span"?r.b(`${d}-${f}-${u}`):r.b(`${d}-${u}`))})}),o.value&&s.push(r.is("guttered")),s});return(s,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.tag),{class:e.normalizeClass([e.unref(r).b(),e.unref(a)]),style:e.normalizeStyle(e.unref(l))},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},8,["class","style"]))}});var U9=re(j9,[["__file","col.vue"]]);const S1=Te(U9),Gf=t=>typeof Ne(t),E1=se({accordion:Boolean,modelValue:{type:j([Array,String,Number]),default:()=>st([])}}),N1={[Ve]:Gf,[at]:Gf},G9={name:"ElCollapse"},q9=e.defineComponent({...G9,props:E1,emits:N1,setup(t,{expose:n,emit:o}){const r=t,l=Z("collapse"),a=e.ref(cr(r.modelValue)),s=c=>{a.value=c;const d=r.accordion?a.value[0]:a.value;o(Ve,d),o(at,d)},i=c=>{if(r.accordion)s([(a.value[0]||a.value[0]===0)&&a.value[0]===c?"":c]);else{const d=[...a.value],f=d.indexOf(c);f>-1?d.splice(f,1):d.push(c),s(d)}};return e.watch(()=>r.modelValue,()=>a.value=cr(r.modelValue),{deep:!0}),e.provide(wd,{activeNames:a,handleItemClick:i}),n({activeNames:a,setActiveNames:s}),(c,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l).b()),role:"tablist","aria-multiselectable":"true"},[e.renderSlot(c.$slots,"default")],2))}});var Y9=re(q9,[["__file","collapse.vue"]]);const X9={name:"ElCollapseTransition"},Z9=e.defineComponent({...X9,setup(t){const n=Z("collapse-transition"),o={beforeEnter(r){r.dataset||(r.dataset={}),r.dataset.oldPaddingTop=r.style.paddingTop,r.dataset.oldPaddingBottom=r.style.paddingBottom,r.style.maxHeight=0,r.style.paddingTop=0,r.style.paddingBottom=0},enter(r){r.dataset.oldOverflow=r.style.overflow,r.scrollHeight!==0?(r.style.maxHeight=`${r.scrollHeight}px`,r.style.paddingTop=r.dataset.oldPaddingTop,r.style.paddingBottom=r.dataset.oldPaddingBottom):(r.style.maxHeight=0,r.style.paddingTop=r.dataset.oldPaddingTop,r.style.paddingBottom=r.dataset.oldPaddingBottom),r.style.overflow="hidden"},afterEnter(r){r.style.maxHeight="",r.style.overflow=r.dataset.oldOverflow},beforeLeave(r){r.dataset||(r.dataset={}),r.dataset.oldPaddingTop=r.style.paddingTop,r.dataset.oldPaddingBottom=r.style.paddingBottom,r.dataset.oldOverflow=r.style.overflow,r.style.maxHeight=`${r.scrollHeight}px`,r.style.overflow="hidden"},leave(r){r.scrollHeight!==0&&(r.style.maxHeight=0,r.style.paddingTop=0,r.style.paddingBottom=0)},afterLeave(r){r.style.maxHeight="",r.style.overflow=r.dataset.oldOverflow,r.style.paddingTop=r.dataset.oldPaddingTop,r.style.paddingBottom=r.dataset.oldPaddingBottom}};return(r,l)=>(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({name:e.unref(n).b()},e.toHandlers(o)),{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default")]),_:3},16,["name"]))}});var Qs=re(Z9,[["__file","collapse-transition.vue"]]);Qs.install=t=>{t.component(Qs.name,Qs)};const ei=Qs,$1=ei,B1=se({title:{type:String,default:""},name:{type:j([String,Number]),default:()=>jl()},disabled:Boolean}),J9=["aria-expanded","aria-controls","aria-describedby"],Q9=["id","tabindex","onKeypress"],eK=["id","aria-hidden","aria-labelledby"],tK={name:"ElCollapseItem"},nK=e.defineComponent({...tK,props:B1,setup(t,{expose:n}){const o=t,r=e.inject(wd),l=Z("collapse"),a=e.ref(!1),s=e.ref(!1),i=e.ref(jl()),c=e.computed(()=>r==null?void 0:r.activeNames.value.includes(o.name)),d=()=>{setTimeout(()=>{s.value?s.value=!1:a.value=!0},50)},f=()=>{o.disabled||(r==null||r.handleItemClick(o.name),a.value=!1,s.value=!0)},u=()=>{r==null||r.handleItemClick(o.name)};return n({isActive:c}),(p,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(l).b("item"),e.unref(l).is("active",e.unref(c)),e.unref(l).is("disabled",p.disabled)])},[e.createElementVNode("div",{role:"tab","aria-expanded":e.unref(c),"aria-controls":e.unref(l).b(`content-${i.value}`),"aria-describedby":e.unref(l).b(`content-${i.value}`)},[e.createElementVNode("div",{id:e.unref(l).b(`head-${i.value}`),class:e.normalizeClass([e.unref(l).be("item","header"),e.unref(l).is("active",e.unref(c)),{focusing:a.value&&!p.disabled}]),role:"button",tabindex:p.disabled?-1:0,onClick:f,onKeypress:e.withKeys(e.withModifiers(u,["stop","prevent"]),["space","enter"]),onFocus:d,onBlur:m[0]||(m[0]=g=>a.value=!1)},[e.renderSlot(p.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(p.title),1)]),e.createVNode(e.unref(de),{class:e.normalizeClass([e.unref(l).be("item","arrow"),e.unref(l).is("active",e.unref(c))])},{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1},8,["class"])],42,Q9)],8,J9),e.createVNode(e.unref(ei),null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{id:e.unref(l).b(`content-${i.value}`),class:e.normalizeClass(e.unref(l).be("item","wrap")),role:"tabpanel","aria-hidden":!e.unref(c),"aria-labelledby":e.unref(l).b(`head-${i.value}`)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).be("item","content"))},[e.renderSlot(p.$slots,"default")],2)],10,eK),[[e.vShow,e.unref(c)]])]),_:3})],2))}});var _1=re(nK,[["__file","collapse-item.vue"]]);const v1=Te(Y9,{CollapseItem:_1}),T1=ut(_1);let qf=!1;function ca(t,n){if(!Oe)return;const o=function(a){var s;(s=n.drag)==null||s.call(n,a)},r=function(a){var s;document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",r),document.removeEventListener("touchmove",o),document.removeEventListener("touchend",r),document.onselectstart=null,document.ondragstart=null,qf=!1,(s=n.end)==null||s.call(n,a)},l=function(a){var s;qf||(a.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener("mousemove",o),document.addEventListener("mouseup",r),document.addEventListener("touchmove",o),document.addEventListener("touchend",r),qf=!0,(s=n.start)==null||s.call(n,a))};t.addEventListener("mousedown",l),t.addEventListener("touchstart",l)}const oK=e.defineComponent({name:"ElColorAlphaSlider",props:{color:{type:Object,required:!0},vertical:{type:Boolean,default:!1}},setup(t){const n=Z("color-alpha-slider"),o=e.getCurrentInstance(),r=e.shallowRef(null),l=e.shallowRef(null),a=e.ref(0),s=e.ref(0),i=e.ref(null);e.watch(()=>t.color.get("alpha"),()=>{m()}),e.watch(()=>t.color.value,()=>{m()});function c(){if(t.vertical)return 0;const g=o.vnode.el,h=t.color.get("alpha");return g?Math.round(h*(g.offsetWidth-r.value.offsetWidth/2)/100):0}function d(){const g=o.vnode.el;if(!t.vertical)return 0;const h=t.color.get("alpha");return g?Math.round(h*(g.offsetHeight-r.value.offsetHeight/2)/100):0}function f(){if(t.color&&t.color.value){const{r:g,g:h,b}=t.color.toRgb();return`linear-gradient(to right, rgba(${g}, ${h}, ${b}, 0) 0%, rgba(${g}, ${h}, ${b}, 1) 100%)`}return null}function u(g){g.target!==r.value&&p(g)}function p(g){const b=o.vnode.el.getBoundingClientRect(),{clientX:y,clientY:w}=od(g);if(t.vertical){let C=w-b.top;C=Math.max(r.value.offsetHeight/2,C),C=Math.min(C,b.height-r.value.offsetHeight/2),t.color.set("alpha",Math.round((C-r.value.offsetHeight/2)/(b.height-r.value.offsetHeight)*100))}else{let C=y-b.left;C=Math.max(r.value.offsetWidth/2,C),C=Math.min(C,b.width-r.value.offsetWidth/2),t.color.set("alpha",Math.round((C-r.value.offsetWidth/2)/(b.width-r.value.offsetWidth)*100))}}function m(){a.value=c(),s.value=d(),i.value=f()}return e.onMounted(()=>{const g={drag:h=>{p(h)},end:h=>{p(h)}};ca(l.value,g),ca(r.value,g),m()}),{thumb:r,bar:l,thumbLeft:a,thumbTop:s,background:i,handleClick:u,update:m,ns:n}}});function rK(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.ns.b(),t.ns.is("vertical",t.vertical)])},[e.createElementVNode("div",{ref:"bar",class:e.normalizeClass(t.ns.e("bar")),style:e.normalizeStyle({background:t.background}),onClick:n[0]||(n[0]=(...s)=>t.handleClick&&t.handleClick(...s))},null,6),e.createElementVNode("div",{ref:"thumb",class:e.normalizeClass(t.ns.e("thumb")),style:e.normalizeStyle({left:t.thumbLeft+"px",top:t.thumbTop+"px"})},null,6)],2)}var lK=re(oK,[["render",rK],["__file","alpha-slider.vue"]]);const aK=e.defineComponent({name:"ElColorHueSlider",props:{color:{type:Object,required:!0},vertical:Boolean},setup(t){const n=Z("color-hue-slider"),o=e.getCurrentInstance(),r=e.ref(null),l=e.ref(null),a=e.ref(0),s=e.ref(0),i=e.computed(()=>t.color.get("hue"));e.watch(()=>i.value,()=>{p()});function c(m){m.target!==r.value&&d(m)}function d(m){const h=o.vnode.el.getBoundingClientRect(),{clientX:b,clientY:y}=od(m);let w;if(t.vertical){let C=y-h.top;C=Math.min(C,h.height-r.value.offsetHeight/2),C=Math.max(r.value.offsetHeight/2,C),w=Math.round((C-r.value.offsetHeight/2)/(h.height-r.value.offsetHeight)*360)}else{let C=b-h.left;C=Math.min(C,h.width-r.value.offsetWidth/2),C=Math.max(r.value.offsetWidth/2,C),w=Math.round((C-r.value.offsetWidth/2)/(h.width-r.value.offsetWidth)*360)}t.color.set("hue",w)}function f(){const m=o.vnode.el;if(t.vertical)return 0;const g=t.color.get("hue");return m?Math.round(g*(m.offsetWidth-r.value.offsetWidth/2)/360):0}function u(){const m=o.vnode.el;if(!t.vertical)return 0;const g=t.color.get("hue");return m?Math.round(g*(m.offsetHeight-r.value.offsetHeight/2)/360):0}function p(){a.value=f(),s.value=u()}return e.onMounted(()=>{const m={drag:g=>{d(g)},end:g=>{d(g)}};ca(l.value,m),ca(r.value,m),p()}),{bar:l,thumb:r,thumbLeft:a,thumbTop:s,hueValue:i,handleClick:c,update:p,ns:n}}});function sK(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.ns.b(),t.ns.is("vertical",t.vertical)])},[e.createElementVNode("div",{ref:"bar",class:e.normalizeClass(t.ns.e("bar")),onClick:n[0]||(n[0]=(...s)=>t.handleClick&&t.handleClick(...s))},null,2),e.createElementVNode("div",{ref:"thumb",class:e.normalizeClass(t.ns.e("thumb")),style:e.normalizeStyle({left:t.thumbLeft+"px",top:t.thumbTop+"px"})},null,6)],2)}var iK=re(aK,[["render",sK],["__file","hue-slider.vue"]]);const V1=Symbol(),cK=()=>e.inject(V1),M1=function(t,n,o){return[t,n*o/((t=(2-n)*o)<1?t:2-t)||0,t/2]},dK=function(t){return typeof t=="string"&&t.includes(".")&&Number.parseFloat(t)===1},fK=function(t){return typeof t=="string"&&t.includes("%")},ll=function(t,n){dK(t)&&(t="100%");const o=fK(t);return t=Math.min(n,Math.max(0,Number.parseFloat(`${t}`))),o&&(t=Number.parseInt(`${t*n}`,10)/100),Math.abs(t-n)<1e-6?1:t%n/Number.parseFloat(n)},R1={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},ti=function(t){t=Math.min(Math.round(t),255);const n=Math.floor(t/16),o=t%16;return`${R1[n]||n}${R1[o]||o}`},I1=function({r:t,g:n,b:o}){return Number.isNaN(+t)||Number.isNaN(+n)||Number.isNaN(+o)?"":`#${ti(t)}${ti(n)}${ti(o)}`},Yf={A:10,B:11,C:12,D:13,E:14,F:15},$r=function(t){return t.length===2?(Yf[t[0].toUpperCase()]||+t[0])*16+(Yf[t[1].toUpperCase()]||+t[1]):Yf[t[1].toUpperCase()]||+t[1]},uK=function(t,n,o){n=n/100,o=o/100;let r=n;const l=Math.max(o,.01);o*=2,n*=o<=1?o:2-o,r*=l<=1?l:2-l;const a=(o+n)/2,s=o===0?2*r/(l+r):2*n/(o+n);return{h:t,s:s*100,v:a*100}},P1=function(t,n,o){t=ll(t,255),n=ll(n,255),o=ll(o,255);const r=Math.max(t,n,o),l=Math.min(t,n,o);let a;const s=r,i=r-l,c=r===0?0:i/r;if(r===l)a=0;else{switch(r){case t:{a=(n-o)/i+(n{this._hue=Math.max(0,Math.min(360,r)),this._saturation=Math.max(0,Math.min(100,l)),this._value=Math.max(0,Math.min(100,a)),this.doOnChange()};if(n.includes("hsl")){const r=n.replace(/hsla|hsl|\(|\)/gm,"").split(/\s|,/g).filter(l=>l!=="").map((l,a)=>a>2?Number.parseFloat(l):Number.parseInt(l,10));if(r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3){const{h:l,s:a,v:s}=uK(r[0],r[1],r[2]);o(l,a,s)}}else if(n.includes("hsv")){const r=n.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(l=>l!=="").map((l,a)=>a>2?Number.parseFloat(l):Number.parseInt(l,10));r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3&&o(r[0],r[1],r[2])}else if(n.includes("rgb")){const r=n.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(l=>l!=="").map((l,a)=>a>2?Number.parseFloat(l):Number.parseInt(l,10));if(r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3){const{h:l,s:a,v:s}=P1(r[0],r[1],r[2]);o(l,a,s)}}else if(n.includes("#")){const r=n.replace("#","").trim();if(!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(r))return;let l,a,s;r.length===3?(l=$r(r[0]+r[0]),a=$r(r[1]+r[1]),s=$r(r[2]+r[2])):(r.length===6||r.length===8)&&(l=$r(r.slice(0,2)),a=$r(r.slice(2,4)),s=$r(r.slice(4,6))),r.length===8?this._alpha=$r(r.slice(6))/255*100:(r.length===3||r.length===6)&&(this._alpha=100);const{h:i,s:c,v:d}=P1(l,a,s);o(i,c,d)}}compare(n){return Math.abs(n._hue-this._hue)<2&&Math.abs(n._saturation-this._saturation)<1&&Math.abs(n._value-this._value)<1&&Math.abs(n._alpha-this._alpha)<1}doOnChange(){const{_hue:n,_saturation:o,_value:r,_alpha:l,format:a}=this;if(this.enableAlpha)switch(a){case"hsl":{const s=M1(n,o/100,r/100);this.value=`hsla(${n}, ${Math.round(s[1]*100)}%, ${Math.round(s[2]*100)}%, ${this.get("alpha")/100})`;break}case"hsv":{this.value=`hsva(${n}, ${Math.round(o)}%, ${Math.round(r)}%, ${this.get("alpha")/100})`;break}case"hex":{this.value=`${I1(da(n,o,r))}${ti(l*255/100)}`;break}default:{const{r:s,g:i,b:c}=da(n,o,r);this.value=`rgba(${s}, ${i}, ${c}, ${this.get("alpha")/100})`}}else switch(a){case"hsl":{const s=M1(n,o/100,r/100);this.value=`hsl(${n}, ${Math.round(s[1]*100)}%, ${Math.round(s[2]*100)}%)`;break}case"hsv":{this.value=`hsv(${n}, ${Math.round(o)}%, ${Math.round(r)}%)`;break}case"rgb":{const{r:s,g:i,b:c}=da(n,o,r);this.value=`rgb(${s}, ${i}, ${c})`;break}default:this.value=I1(da(n,o,r))}}}const pK=e.defineComponent({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0}},setup(t){const n=Z("color-predefine"),{currentColor:o}=cK(),r=e.ref(a(t.colors,t.color));e.watch(()=>o.value,s=>{const i=new fa;i.fromString(s),r.value.forEach(c=>{c.selected=i.compare(c)})}),e.watchEffect(()=>{r.value=a(t.colors,t.color)});function l(s){t.color.fromString(t.colors[s])}function a(s,i){return s.map(c=>{const d=new fa;return d.enableAlpha=!0,d.format="rgba",d.fromString(c),d.selected=d.value===i.value,d})}return{rgbaColors:r,handleSelect:l,ns:n}}}),mK=["onClick"];function hK(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(t.ns.b())},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("colors"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.rgbaColors,(s,i)=>(e.openBlock(),e.createElementBlock("div",{key:t.colors[i],class:e.normalizeClass([t.ns.e("color-selector"),t.ns.is("alpha",s._alpha<100),{selected:s.selected}]),onClick:c=>t.handleSelect(i)},[e.createElementVNode("div",{style:e.normalizeStyle({backgroundColor:s.value})},null,4)],10,mK))),128))],2)],2)}var gK=re(pK,[["render",hK],["__file","predefine.vue"]]);const yK=e.defineComponent({name:"ElSlPanel",props:{color:{type:Object,required:!0}},setup(t){const n=Z("color-svpanel"),o=e.getCurrentInstance(),r=e.ref(0),l=e.ref(0),a=e.ref("hsl(0, 100%, 50%)"),s=e.computed(()=>{const d=t.color.get("hue"),f=t.color.get("value");return{hue:d,value:f}});function i(){const d=t.color.get("saturation"),f=t.color.get("value"),u=o.vnode.el,{clientWidth:p,clientHeight:m}=u;l.value=d*p/100,r.value=(100-f)*m/100,a.value=`hsl(${t.color.get("hue")}, 100%, 50%)`}function c(d){const u=o.vnode.el.getBoundingClientRect(),{clientX:p,clientY:m}=od(d);let g=p-u.left,h=m-u.top;g=Math.max(0,g),g=Math.min(g,u.width),h=Math.max(0,h),h=Math.min(h,u.height),l.value=g,r.value=h,t.color.set({saturation:g/u.width*100,value:100-h/u.height*100})}return e.watch(()=>s.value,()=>{i()}),e.onMounted(()=>{ca(o.vnode.el,{drag:d=>{c(d)},end:d=>{c(d)}}),i()}),{cursorTop:r,cursorLeft:l,background:a,colorValue:s,handleDrag:c,update:i,ns:n}}}),bK=[e.createElementVNode("div",null,null,-1)];function CK(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(t.ns.b()),style:e.normalizeStyle({backgroundColor:t.background})},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("white"))},null,2),e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("black"))},null,2),e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("cursor")),style:e.normalizeStyle({top:t.cursorTop+"px",left:t.cursorLeft+"px"})},bK,6)],6)}var wK=re(yK,[["render",CK],["__file","sv-panel.vue"]]);const kK=e.defineComponent({name:"ElColorPicker",components:{ElButton:At,ElTooltip:Ut,ElInput:It,ElIcon:de,Close:Pn,ArrowDown:mr,SvPanel:wK,HueSlider:iK,AlphaSlider:lK,Predefine:gK},directives:{ClickOutside:_o},props:{modelValue:String,id:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:{type:String,validator:hr},popperClass:String,label:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},predefine:Array,validateEvent:{type:Boolean,default:!0}},emits:["change","active-change",Ve],setup(t,{emit:n}){const{t:o}=We(),r=Z("color"),l=e.inject(un,{}),a=e.inject(Lt,{}),{inputId:s,isLabeledByFormItem:i}=wo(t,{formItemContext:a}),c=e.ref(),d=e.ref(),f=e.ref(),u=e.ref(null);let p=!0;const m=e.reactive(new fa({enableAlpha:t.showAlpha,format:t.colorFormat||"",value:t.modelValue})),g=e.ref(!1),h=e.ref(!1),b=e.ref(""),y=e.computed(()=>!t.modelValue&&!h.value?"transparent":N(m,t.showAlpha)),w=yt(),C=e.computed(()=>!!(t.disabled||l.disabled)),k=e.computed(()=>!t.modelValue&&!h.value?"":m.value),E=e.computed(()=>i.value?void 0:t.label||o("el.colorpicker.defaultLabel")),S=e.computed(()=>i.value?a.labelId:void 0);e.watch(()=>t.modelValue,R=>{R?R&&R!==m.value&&(p=!1,m.fromString(R)):h.value=!1}),e.watch(()=>k.value,R=>{b.value=R,p&&n("active-change",R),p=!0}),e.watch(()=>m.value,()=>{!t.modelValue&&!h.value&&(h.value=!0)});function N(R,T){if(!(R instanceof fa))throw new TypeError("color should be instance of _color Class");const{r:v,g:V,b:H}=R.toRgb();return T?`rgba(${v}, ${V}, ${H}, ${R.get("alpha")/100})`:`rgb(${v}, ${V}, ${H})`}function $(R){g.value=R}const B=Dt($,100);function P(){B(!1),D()}function D(){e.nextTick(()=>{t.modelValue?m.fromString(t.modelValue):(m.value="",e.nextTick(()=>{h.value=!1}))})}function z(){C.value||B(!g.value)}function I(){m.fromString(b.value)}function A(){var R;const T=m.value;n(Ve,T),n("change",T),t.validateEvent&&((R=a.validate)==null||R.call(a,"change").catch(v=>void 0)),B(!1),e.nextTick(()=>{const v=new fa({enableAlpha:t.showAlpha,format:t.colorFormat||"",value:t.modelValue});m.compare(v)||D()})}function L(){var R;B(!1),n(Ve,null),n("change",null),t.modelValue!==null&&t.validateEvent&&((R=a.validate)==null||R.call(a,"change").catch(T=>void 0)),D()}return e.onMounted(()=>{t.modelValue&&(b.value=k.value)}),e.watch(()=>g.value,()=>{e.nextTick(()=>{var R,T,v;(R=c.value)==null||R.update(),(T=d.value)==null||T.update(),(v=f.value)==null||v.update()})}),e.provide(V1,{currentColor:k}),{color:m,colorDisabled:C,colorSize:w,displayedColor:y,showPanelColor:h,showPicker:g,customInput:b,buttonId:s,buttonAriaLabel:E,buttonAriaLabelledby:S,handleConfirm:I,hide:P,handleTrigger:z,clear:L,confirmValue:A,t:o,ns:r,hue:c,svPanel:d,alpha:f,popper:u}}}),SK=["id","aria-label","aria-labelledby","aria-description","tabindex"];function EK(t,n,o,r,l,a){const s=e.resolveComponent("hue-slider"),i=e.resolveComponent("sv-panel"),c=e.resolveComponent("alpha-slider"),d=e.resolveComponent("predefine"),f=e.resolveComponent("el-input"),u=e.resolveComponent("el-button"),p=e.resolveComponent("arrow-down"),m=e.resolveComponent("el-icon"),g=e.resolveComponent("close"),h=e.resolveComponent("el-tooltip"),b=e.resolveDirective("click-outside");return e.openBlock(),e.createBlock(h,{ref:"popper",visible:t.showPicker,"show-arrow":!1,"fallback-placements":["bottom","top","right","left"],offset:0,"gpu-acceleration":!1,"popper-class":[t.ns.be("picker","panel"),t.ns.b("dropdown"),t.popperClass],"stop-popper-mouse-event":!1,effect:"light",trigger:"click",transition:"el-zoom-in-top",persistent:""},{content:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:e.normalizeClass(t.ns.be("dropdown","main-wrapper"))},[e.createVNode(s,{ref:"hue",class:"hue-slider",color:t.color,vertical:""},null,8,["color"]),e.createVNode(i,{ref:"svPanel",color:t.color},null,8,["color"])],2),t.showAlpha?(e.openBlock(),e.createBlock(c,{key:0,ref:"alpha",color:t.color},null,8,["color"])):e.createCommentVNode("v-if",!0),t.predefine?(e.openBlock(),e.createBlock(d,{key:1,ref:"predefine",color:t.color,colors:t.predefine},null,8,["color","colors"])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(t.ns.be("dropdown","btns"))},[e.createElementVNode("span",{class:e.normalizeClass(t.ns.be("dropdown","value"))},[e.createVNode(f,{modelValue:t.customInput,"onUpdate:modelValue":n[0]||(n[0]=y=>t.customInput=y),"validate-event":!1,size:"small",onKeyup:e.withKeys(t.handleConfirm,["enter"]),onBlur:t.handleConfirm},null,8,["modelValue","onKeyup","onBlur"])],2),e.createVNode(u,{class:e.normalizeClass(t.ns.be("dropdown","link-btn")),text:"",size:"small",onClick:t.clear},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.t("el.colorpicker.clear")),1)]),_:1},8,["class","onClick"]),e.createVNode(u,{plain:"",size:"small",class:e.normalizeClass(t.ns.be("dropdown","btn")),onClick:t.confirmValue},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.t("el.colorpicker.confirm")),1)]),_:1},8,["class","onClick"])],2)])),[[b,t.hide]])]),default:e.withCtx(()=>[e.createElementVNode("div",{id:t.buttonId,class:e.normalizeClass([t.ns.b("picker"),t.ns.is("disabled",t.colorDisabled),t.ns.bm("picker",t.colorSize)]),role:"button","aria-label":t.buttonAriaLabel,"aria-labelledby":t.buttonAriaLabelledby,"aria-description":t.t("el.colorpicker.description",{color:t.modelValue||""}),tabindex:t.tabindex,onKeydown:n[2]||(n[2]=e.withKeys((...y)=>t.handleTrigger&&t.handleTrigger(...y),["enter"]))},[t.colorDisabled?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.ns.be("picker","mask"))},null,2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(t.ns.be("picker","trigger")),onClick:n[1]||(n[1]=(...y)=>t.handleTrigger&&t.handleTrigger(...y))},[e.createElementVNode("span",{class:e.normalizeClass([t.ns.be("picker","color"),t.ns.is("alpha",t.showAlpha)])},[e.createElementVNode("span",{class:e.normalizeClass(t.ns.be("picker","color-inner")),style:e.normalizeStyle({backgroundColor:t.displayedColor})},[e.withDirectives(e.createVNode(m,{class:e.normalizeClass([t.ns.be("picker","icon"),t.ns.is("icon-arrow-down")])},{default:e.withCtx(()=>[e.createVNode(p)]),_:1},8,["class"]),[[e.vShow,t.modelValue||t.showPanelColor]]),!t.modelValue&&!t.showPanelColor?(e.openBlock(),e.createBlock(m,{key:0,class:e.normalizeClass([t.ns.be("picker","empty"),t.ns.is("icon-close")])},{default:e.withCtx(()=>[e.createVNode(g)]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],6)],2)],2)],42,SK)]),_:1},8,["visible","popper-class"])}var ni=re(kK,[["render",EK],["__file","index.vue"]]);ni.install=t=>{t.component(ni.name,ni)};const A1=ni,oi={},O1=se({a11y:{type:Boolean,default:!0},locale:{type:j(Object)},size:tn,button:{type:j(Object)},experimentalFeatures:{type:j(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:j(Object)},zIndex:Number,namespace:{type:String,default:"el"}}),NK=e.defineComponent({name:"ElConfigProvider",props:O1,setup(t,{slots:n}){e.watch(()=>t.message,r=>{Object.assign(oi,r!=null?r:{})},{immediate:!0,deep:!0});const o=Rd(t);return()=>e.renderSlot(n,"default",{config:o==null?void 0:o.value})}}),z1=Te(NK),$K={name:"ElContainer"},BK=e.defineComponent({...$K,props:{direction:{type:String}},setup(t){const n=t,o=e.useSlots(),r=Z("container"),l=e.computed(()=>n.direction==="vertical"?!0:n.direction==="horizontal"?!1:o&&o.default?o.default().some(s=>{const i=s.type.name;return i==="ElHeader"||i==="ElFooter"}):!1);return(a,s)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).is("vertical",e.unref(l))])},[e.renderSlot(a.$slots,"default")],2))}});var _K=re(BK,[["__file","container.vue"]]);const vK={name:"ElAside"},TK=e.defineComponent({...vK,props:{width:{type:String,default:null}},setup(t){const n=t,o=Z("aside"),r=e.computed(()=>n.width?o.cssVarBlock({width:n.width}):{});return(l,a)=>(e.openBlock(),e.createElementBlock("aside",{class:e.normalizeClass(e.unref(o).b()),style:e.normalizeStyle(e.unref(r))},[e.renderSlot(l.$slots,"default")],6))}});var D1=re(TK,[["__file","aside.vue"]]);const VK={name:"ElFooter"},MK=e.defineComponent({...VK,props:{height:{type:String,default:null}},setup(t){const n=t,o=Z("footer"),r=e.computed(()=>n.height?o.cssVarBlock({height:n.height}):{});return(l,a)=>(e.openBlock(),e.createElementBlock("footer",{class:e.normalizeClass(e.unref(o).b()),style:e.normalizeStyle(e.unref(r))},[e.renderSlot(l.$slots,"default")],6))}});var L1=re(MK,[["__file","footer.vue"]]);const RK={name:"ElHeader"},IK=e.defineComponent({...RK,props:{height:{type:String,default:null}},setup(t){const n=t,o=Z("header"),r=e.computed(()=>n.height?o.cssVarBlock({height:n.height}):{});return(l,a)=>(e.openBlock(),e.createElementBlock("header",{class:e.normalizeClass(e.unref(o).b()),style:e.normalizeStyle(e.unref(r))},[e.renderSlot(l.$slots,"default")],6))}});var F1=re(IK,[["__file","header.vue"]]);const PK={name:"ElMain"},AK=e.defineComponent({...PK,setup(t){const n=Z("main");return(o,r)=>(e.openBlock(),e.createElementBlock("main",{class:e.normalizeClass(e.unref(n).b())},[e.renderSlot(o.$slots,"default")],2))}});var x1=re(AK,[["__file","main.vue"]]);const H1=Te(_K,{Aside:D1,Footer:L1,Header:F1,Main:x1}),K1=ut(D1),W1=ut(L1),j1=ut(F1),U1=ut(x1);var G1={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){return function(o,r,l){var a=r.prototype,s=a.format;l.en.ordinal=function(i){var c=["th","st","nd","rd"],d=i%100;return"["+i+(c[(d-20)%10]||c[d]||c[0])+"]"},a.format=function(i){var c=this,d=this.$locale();if(!this.isValid())return s.bind(this)(i);var f=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(p){switch(p){case"Q":return Math.ceil((c.$M+1)/3);case"Do":return d.ordinal(c.$D);case"gggg":return c.weekYear();case"GGGG":return c.isoWeekYear();case"wo":return d.ordinal(c.week(),"W");case"w":case"ww":return f.s(c.week(),p==="w"?1:2,"0");case"W":case"WW":return f.s(c.isoWeek(),p==="W"?1:2,"0");case"k":case"kk":return f.s(String(c.$H===0?24:c.$H),p==="k"?1:2,"0");case"X":return Math.floor(c.$d.getTime()/1e3);case"x":return c.$d.getTime();case"z":return"["+c.offsetName()+"]";case"zzz":return"["+c.offsetName("long")+"]";default:return p}});return s.bind(this)(u)}}})})(G1);var OK=G1.exports,q1={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){var o="week",r="year";return function(l,a,s){var i=a.prototype;i.week=function(c){if(c===void 0&&(c=null),c!==null)return this.add(7*(c-this.week()),"day");var d=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var f=s(this).startOf(r).add(1,r).date(d),u=s(this).endOf(o);if(f.isBefore(u))return 1}var p=s(this).startOf(r).date(d).startOf(o).subtract(1,"millisecond"),m=this.diff(p,o,!0);return m<0?s(this).startOf("week").week():Math.ceil(m)},i.weeks=function(c){return c===void 0&&(c=null),this.week(c)}}})})(q1);var zK=q1.exports,Y1={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){return function(o,r){r.prototype.weekYear=function(){var l=this.month(),a=this.week(),s=this.year();return a===1&&l===11?s+1:l===0&&a>=52?s-1:s}}})})(Y1);var DK=Y1.exports,X1={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){return function(o,r,l){r.prototype.dayOfYear=function(a){var s=Math.round((l(this).startOf("day")-l(this).startOf("year"))/864e5)+1;return a==null?s:this.add(a-s,"day")}}})})(X1);var LK=X1.exports,Z1={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){return function(o,r){r.prototype.isSameOrAfter=function(l,a){return this.isSame(l,a)||this.isAfter(l,a)}}})})(Z1);var FK=Z1.exports,J1={exports:{}};(function(t,n){(function(o,r){t.exports=r()})($o,function(){return function(o,r){r.prototype.isSameOrBefore=function(l,a){return this.isSame(l,a)||this.isBefore(l,a)}}})})(J1);var xK=J1.exports;const HK=se({type:{type:j(String),default:"date"}}),KK=["date","dates","year","month","week","range"],Xf=se({disabledDate:{type:j(Function)},date:{type:j(Object),required:!0},minDate:{type:j(Object)},maxDate:{type:j(Object)},parsedValue:{type:j([Object,Array])},rangeState:{type:j(Object),default:()=>({endDate:null,selecting:!1})}}),Q1=se({type:{type:j(String),required:!0,values:z0}}),ew=se({unlinkPanels:Boolean,parsedValue:{type:j(Array)}}),tw=t=>({type:String,values:KK,default:t}),WK=se({...Q1,parsedValue:{type:j([Object,Array])},visible:{type:Boolean},format:{type:String,default:""}}),jK=se({...Xf,cellClassName:{type:j(Function)},showWeekNumber:Boolean,selectionMode:tw("date")}),Zf=t=>{if(!Ae(t))return!1;const[n,o]=t;return _e.isDayjs(n)&&_e.isDayjs(o)&&n.isSameOrBefore(o)},nw=(t,{lang:n,unit:o,unlinkPanels:r})=>{let l;if(Ae(t)){let[a,s]=t.map(i=>_e(i).locale(n));return r||(s=a.add(1,o)),[a,s]}else t?l=_e(t):l=_e();return l=l.locale(n),[l,l.add(1,o)]},UK=(t,n,{columnIndexOffset:o,startDate:r,nextEndDate:l,now:a,unit:s,relativeDateGetter:i,setCellMetadata:c,setRowMetadata:d})=>{for(let f=0;f{const{cell:r}=t;if(o.default){const l=o.default(r).filter(a=>a.patchFlag!==-2&&a.type.toString()!=="Symbol(Comment)");if(l.length)return l}return e.createVNode("div",{class:n.b()},[e.createVNode("span",{class:n.e("text")},[r==null?void 0:r.text])])}}});const YK=["aria-label"],XK={key:0,scope:"col"},ZK=["aria-label"],JK=["aria-current","aria-selected","tabindex"];var Jf=re(e.defineComponent({__name:"basic-date-table",props:jK,emits:["changerange","pick","select"],setup(t,{expose:n,emit:o}){const r=t,l=Z("date-table"),{t:a,lang:s}=We(),i=e.ref(),c=e.ref(),d=e.ref(),f=e.ref(),u=e.ref([[],[],[],[],[],[]]);let p=!1;const m=r.date.$locale().weekStart||7,g=r.date.locale("en").localeData().weekdaysShort().map(F=>F.toLowerCase()),h=e.computed(()=>m>3?7-m:-m),b=e.computed(()=>{const F=r.date.startOf("month");return F.subtract(F.day()||7,"day")}),y=e.computed(()=>g.concat(g).slice(m,m+7)),w=e.computed(()=>$.value.flat().some(F=>F.isCurrent)),C=e.computed(()=>{const F=r.date.startOf("month"),K=F.day()||7,X=F.daysInMonth(),J=F.subtract(1,"month").daysInMonth();return{startOfMonthDay:K,dateCountOfMonth:X,dateCountOfLastMonth:J}}),k=e.computed(()=>r.selectionMode==="dates"?yo(r.parsedValue):[]),E=(F,{count:K,rowIndex:X,columnIndex:J})=>{const{startOfMonthDay:U,dateCountOfMonth:W,dateCountOfLastMonth:Q}=e.unref(C),Y=e.unref(h);if(X>=0&&X<=1){const ee=U+Y<0?7+U+Y:U+Y;if(J+X*7>=ee)return F.text=K,!0;F.text=Q-(ee-J%7)+1+X*7,F.type="prev-month"}else return K<=W?F.text=K:(F.text=K-W,F.type="next-month"),!0;return!1},S=(F,{columnIndex:K,rowIndex:X},J)=>{const{disabledDate:U,cellClassName:W}=r,Q=e.unref(k),Y=E(F,{count:J,rowIndex:X,columnIndex:K}),ee=F.dayjs.toDate();return F.selected=Q.find(pe=>pe.valueOf()===F.dayjs.valueOf()),F.isSelected=!!F.selected,F.isCurrent=D(F),F.disabled=U==null?void 0:U(ee),F.customClass=W==null?void 0:W(ee),Y},N=F=>{if(r.selectionMode==="week"){const[K,X]=r.showWeekNumber?[1,7]:[0,6],J=x(F[K+1]);F[K].inRange=J,F[K].start=J,F[X].inRange=J,F[X].end=J}},$=e.computed(()=>{const{minDate:F,maxDate:K,rangeState:X,showWeekNumber:J}=r,U=h.value,W=u.value,Q="day";let Y=1;if(J)for(let ee=0;ee<6;ee++)W[ee][0]||(W[ee][0]={type:"week",text:b.value.add(ee*7+1,Q).week()});return UK({row:6,column:7},W,{startDate:F,columnIndexOffset:J?1:0,nextEndDate:X.endDate||K||X.selecting&&F||null,now:_e().locale(e.unref(s)).startOf(Q),unit:Q,relativeDateGetter:ee=>b.value.add(ee-U,Q),setCellMetadata:(...ee)=>{S(...ee,Y)&&(Y+=1)},setRowMetadata:N}),W});e.watch(()=>r.date,async()=>{var F,K;(F=i.value)!=null&&F.contains(document.activeElement)&&(await e.nextTick(),(K=c.value)==null||K.focus())});const B=async()=>{var F;(F=c.value)==null||F.focus()},P=(F="")=>["normal","today"].includes(F),D=F=>r.selectionMode==="date"&&P(F.type)&&z(F,r.parsedValue),z=(F,K)=>K?_e(K).locale(s.value).isSame(r.date.date(Number(F.text)),"day"):!1,I=F=>{const K=[];return P(F.type)&&!F.disabled?(K.push("available"),F.type==="today"&&K.push("today")):K.push(F.type),D(F)&&K.push("current"),F.inRange&&(P(F.type)||r.selectionMode==="week")&&(K.push("in-range"),F.start&&K.push("start-date"),F.end&&K.push("end-date")),F.disabled&&K.push("disabled"),F.selected&&K.push("selected"),F.customClass&&K.push(F.customClass),K.join(" ")},A=(F,K)=>{const X=F*7+(K-(r.showWeekNumber?1:0))-h.value;return b.value.add(X,"day")},L=F=>{var K;if(!r.rangeState.selecting)return;let X=F.target;if(X.tagName==="SPAN"&&(X=(K=X.parentNode)==null?void 0:K.parentNode),X.tagName==="DIV"&&(X=X.parentNode),X.tagName!=="TD")return;const J=X.parentNode.rowIndex-1,U=X.cellIndex;$.value[J][U].disabled||(J!==d.value||U!==f.value)&&(d.value=J,f.value=U,o("changerange",{selecting:!0,endDate:A(J,U)}))},R=F=>!w.value&&(F==null?void 0:F.text)===1&&F.type==="normal"||F.isCurrent,T=F=>{p||w.value||r.selectionMode!=="date"||H(F,!0)},v=F=>{!F.target.closest("td")||(p=!0)},V=F=>{!F.target.closest("td")||(p=!1)},H=(F,K=!1)=>{const X=F.target.closest("td");if(!X)return;const J=X.parentNode.rowIndex-1,U=X.cellIndex,W=$.value[J][U];if(W.disabled||W.type==="week")return;const Q=A(J,U);if(r.selectionMode==="range")!r.rangeState.selecting||!r.minDate?(o("pick",{minDate:Q,maxDate:null}),o("select",!0)):(Q>=r.minDate?o("pick",{minDate:r.minDate,maxDate:Q}):o("pick",{minDate:Q,maxDate:r.minDate}),o("select",!1));else if(r.selectionMode==="date")o("pick",Q,K);else if(r.selectionMode==="week"){const Y=Q.week(),ee=`${Q.year()}w${Y}`;o("pick",{year:Q.year(),week:Y,value:ee,date:Q.startOf("week")})}else if(r.selectionMode==="dates"){const Y=W.selected?yo(r.parsedValue).filter(ee=>(ee==null?void 0:ee.valueOf())!==Q.valueOf()):yo(r.parsedValue).concat([Q]);o("pick",Y)}},x=F=>{if(r.selectionMode!=="week")return!1;let K=r.date.startOf("day");if(F.type==="prev-month"&&(K=K.subtract(1,"month")),F.type==="next-month"&&(K=K.add(1,"month")),K=K.date(Number.parseInt(F.text,10)),r.parsedValue&&!Array.isArray(r.parsedValue)){const X=(r.parsedValue.day()-m+7)%7-1;return r.parsedValue.subtract(X,"day").isSame(K,"day")}return!1};return n({focus:B}),(F,K)=>(e.openBlock(),e.createElementBlock("table",{role:"grid","aria-label":e.unref(a)("el.datepicker.dateTablePrompt"),cellspacing:"0",cellpadding:"0",class:e.normalizeClass([e.unref(l).b(),{"is-week-mode":F.selectionMode==="week"}]),onClick:H,onMousemove:L,onMousedown:v,onMouseup:V},[e.createElementVNode("tbody",{ref_key:"tbodyRef",ref:i},[e.createElementVNode("tr",null,[F.showWeekNumber?(e.openBlock(),e.createElementBlock("th",XK,e.toDisplayString(e.unref(a)("el.datepicker.week")),1)):e.createCommentVNode("v-if",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),(X,J)=>(e.openBlock(),e.createElementBlock("th",{key:J,scope:"col","aria-label":e.unref(a)("el.datepicker.weeksFull."+X)},e.toDisplayString(e.unref(a)("el.datepicker.weeks."+X)),9,ZK))),128))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref($),(X,J)=>(e.openBlock(),e.createElementBlock("tr",{key:J,class:e.normalizeClass([e.unref(l).e("row"),{current:x(X[1])}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X,(U,W)=>(e.openBlock(),e.createElementBlock("td",{key:`${J}.${W}`,ref_for:!0,ref:Q=>R(U)&&(c.value=Q),class:e.normalizeClass(I(U)),"aria-current":U.isCurrent?"date":void 0,"aria-selected":U.isCurrent,tabindex:R(U)?0:-1,onFocus:T},[e.createVNode(e.unref(qK),{cell:U},null,8,["cell"])],42,JK))),128))],2))),128))],512)],42,YK))}}),[["__file","basic-date-table.vue"]]);const QK=se({...Xf,selectionMode:tw("month")}),eW=["aria-label"],tW=["aria-selected","aria-label","tabindex","onKeydown"],nW={class:"cell"};var Qf=re(e.defineComponent({__name:"basic-month-table",props:QK,emits:["changerange","pick","select"],setup(t,{expose:n,emit:o}){const r=t,l=(k,E,S)=>{const N=_e().locale(S).startOf("month").month(E).year(k),$=N.daysInMonth();return Bo($).map(B=>N.add(B,"day").toDate())},a=Z("month-table"),{t:s,lang:i}=We(),c=e.ref(),d=e.ref(),f=e.ref(r.date.locale("en").localeData().monthsShort().map(k=>k.toLowerCase())),u=e.ref([[],[],[]]),p=e.ref(),m=e.ref(),g=e.computed(()=>{var k,E;const S=u.value,N=_e().locale(i.value).startOf("month");for(let $=0;$<3;$++){const B=S[$];for(let P=0;P<4;P++){const D=B[P]||(B[P]={row:$,column:P,type:"normal",inRange:!1,start:!1,end:!1,text:-1,disabled:!1});D.type="normal";const z=$*4+P,I=r.date.startOf("year").month(z),A=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;D.inRange=!!(r.minDate&&I.isSameOrAfter(r.minDate,"month")&&A&&I.isSameOrBefore(A,"month"))||!!(r.minDate&&I.isSameOrBefore(r.minDate,"month")&&A&&I.isSameOrAfter(A,"month")),(k=r.minDate)!=null&&k.isSameOrAfter(A)?(D.start=!!(A&&I.isSame(A,"month")),D.end=r.minDate&&I.isSame(r.minDate,"month")):(D.start=!!(r.minDate&&I.isSame(r.minDate,"month")),D.end=!!(A&&I.isSame(A,"month"))),N.isSame(I)&&(D.type="today"),D.text=z,D.disabled=((E=r.disabledDate)==null?void 0:E.call(r,I.toDate()))||!1}}return S}),h=()=>{var k;(k=d.value)==null||k.focus()},b=k=>{const E={},S=r.date.year(),N=new Date,$=k.text;return E.disabled=r.disabledDate?l(S,$,i.value).every(r.disabledDate):!1,E.current=yo(r.parsedValue).findIndex(B=>_e.isDayjs(B)&&B.year()===S&&B.month()===$)>=0,E.today=N.getFullYear()===S&&N.getMonth()===$,k.inRange&&(E["in-range"]=!0,k.start&&(E["start-date"]=!0),k.end&&(E["end-date"]=!0)),E},y=k=>{const E=r.date.year(),S=k.text;return yo(r.date).findIndex(N=>N.year()===E&&N.month()===S)>=0},w=k=>{var E;if(!r.rangeState.selecting)return;let S=k.target;if(S.tagName==="A"&&(S=(E=S.parentNode)==null?void 0:E.parentNode),S.tagName==="DIV"&&(S=S.parentNode),S.tagName!=="TD")return;const N=S.parentNode.rowIndex,$=S.cellIndex;g.value[N][$].disabled||(N!==p.value||$!==m.value)&&(p.value=N,m.value=$,o("changerange",{selecting:!0,endDate:r.date.startOf("year").month(N*4+$)}))},C=k=>{var E;const S=(E=k.target)==null?void 0:E.closest("td");if((S==null?void 0:S.tagName)!=="TD"||In(S,"disabled"))return;const N=S.cellIndex,B=S.parentNode.rowIndex*4+N,P=r.date.startOf("year").month(B);r.selectionMode==="range"?r.rangeState.selecting?(r.minDate&&P>=r.minDate?o("pick",{minDate:r.minDate,maxDate:P}):o("pick",{minDate:P,maxDate:r.minDate}),o("select",!1)):(o("pick",{minDate:P,maxDate:null}),o("select",!0)):o("pick",B)};return e.watch(()=>r.date,async()=>{var k,E;(k=c.value)!=null&&k.contains(document.activeElement)&&(await e.nextTick(),(E=d.value)==null||E.focus())}),n({focus:h}),(k,E)=>(e.openBlock(),e.createElementBlock("table",{role:"grid","aria-label":e.unref(s)("el.datepicker.monthTablePrompt"),class:e.normalizeClass(e.unref(a).b()),onClick:C,onMousemove:w},[e.createElementVNode("tbody",{ref_key:"tbodyRef",ref:c},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),(S,N)=>(e.openBlock(),e.createElementBlock("tr",{key:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S,($,B)=>(e.openBlock(),e.createElementBlock("td",{key:B,ref_for:!0,ref:P=>y($)&&(d.value=P),class:e.normalizeClass(b($)),"aria-selected":`${y($)}`,"aria-label":e.unref(s)(`el.datepicker.month${+$.text+1}`),tabindex:y($)?0:-1,onKeydown:[e.withKeys(e.withModifiers(C,["prevent","stop"]),["space"]),e.withKeys(e.withModifiers(C,["prevent","stop"]),["enter"])]},[e.createElementVNode("div",null,[e.createElementVNode("span",nW,e.toDisplayString(e.unref(s)("el.datepicker.months."+f.value[$.text])),1)])],42,tW))),128))]))),128))],512)],42,eW))}}),[["__file","basic-month-table.vue"]]);const{date:oW,disabledDate:rW,parsedValue:lW}=Xf,aW=se({date:oW,disabledDate:rW,parsedValue:lW}),sW=["aria-label"],iW=["aria-selected","tabindex","onKeydown"],cW={class:"cell"},dW={key:1};var fW=re(e.defineComponent({__name:"basic-year-table",props:aW,emits:["pick"],setup(t,{expose:n,emit:o}){const r=t,l=(h,b)=>{const y=_e(String(h)).locale(b).startOf("year"),C=y.endOf("year").dayOfYear();return Bo(C).map(k=>y.add(k,"day").toDate())},a=Z("year-table"),{t:s,lang:i}=We(),c=e.ref(),d=e.ref(),f=e.computed(()=>Math.floor(r.date.year()/10)*10),u=()=>{var h;(h=d.value)==null||h.focus()},p=h=>{const b={},y=_e().locale(i.value);return b.disabled=r.disabledDate?l(h,i.value).every(r.disabledDate):!1,b.current=yo(r.parsedValue).findIndex(w=>w.year()===h)>=0,b.today=y.year()===h,b},m=h=>h===f.value&&r.date.year()f.value+9||yo(r.date).findIndex(b=>b.year()===h)>=0,g=h=>{const y=h.target.closest("td");if(y){if(In(y,"disabled"))return;const w=y.textContent||y.innerText;o("pick",Number(w))}};return e.watch(()=>r.date,async()=>{var h,b;(h=c.value)!=null&&h.contains(document.activeElement)&&(await e.nextTick(),(b=d.value)==null||b.focus())}),n({focus:u}),(h,b)=>(e.openBlock(),e.createElementBlock("table",{role:"grid","aria-label":e.unref(s)("el.datepicker.yearTablePrompt"),class:e.normalizeClass(e.unref(a).b()),onClick:g},[e.createElementVNode("tbody",{ref_key:"tbodyRef",ref:c},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(3,(y,w)=>e.createElementVNode("tr",{key:w},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(4,(C,k)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:w+"_"+k},[w*4+k<10?(e.openBlock(),e.createElementBlock("td",{key:0,ref_for:!0,ref:E=>m(e.unref(f)+w*4+k)&&(d.value=E),class:e.normalizeClass(["available",p(e.unref(f)+w*4+k)]),"aria-selected":`${m(e.unref(f)+w*4+k)}`,tabindex:m(e.unref(f)+w*4+k)?0:-1,onKeydown:[e.withKeys(e.withModifiers(g,["prevent","stop"]),["space"]),e.withKeys(e.withModifiers(g,["prevent","stop"]),["enter"])]},[e.createElementVNode("span",cW,e.toDisplayString(e.unref(f)+w*4+k),1)],42,iW)):(e.openBlock(),e.createElementBlock("td",dW))],64))),64))])),64))],512)],10,sW))}}),[["__file","basic-year-table.vue"]]);const uW=["onClick"],pW=["aria-label"],mW=["aria-label"],hW=["aria-label"],gW=["aria-label"];var yW=re(e.defineComponent({__name:"panel-date-pick",props:WK,emits:["pick","set-picker-option","panel-change"],setup(t,{emit:n}){const o=t,r=(q,le,M)=>!0,l=Z("picker-panel"),a=Z("date-picker"),s=e.useAttrs(),i=e.useSlots(),{t:c,lang:d}=We(),f=e.inject("EP_PICKER_BASE"),u=e.inject(la),{shortcuts:p,disabledDate:m,cellClassName:g,defaultTime:h,arrowControl:b}=f.props,y=e.toRef(f.props,"defaultValue"),w=e.ref(),C=e.ref(_e().locale(d.value)),k=e.computed(()=>_e(h).locale(d.value)),E=e.computed(()=>C.value.month()),S=e.computed(()=>C.value.year()),N=e.ref([]),$=e.ref(null),B=e.ref(null),P=q=>N.value.length>0?r(q,N.value,o.format||"HH:mm:ss"):!0,D=q=>h&&!pe.value?k.value.year(q.year()).month(q.month()).date(q.date()):J.value?q.millisecond(0):q.startOf("day"),z=(q,...le)=>{if(!q)n("pick",q,...le);else if(Ae(q)){const M=q.map(D);n("pick",M,...le)}else n("pick",D(q),...le);$.value=null,B.value=null},I=(q,le)=>{if(V.value==="date"){q=q;let M=o.parsedValue?o.parsedValue.year(q.year()).month(q.month()).date(q.date()):q;P(M)||(M=N.value[0][0].year(q.year()).month(q.month()).date(q.date())),C.value=M,z(M,J.value||le)}else V.value==="week"?z(q.date):V.value==="dates"&&z(q,!0)},A=q=>{const le=q?"add":"subtract";C.value=C.value[le](1,"month"),xe("month")},L=q=>{const le=C.value,M=q?"add":"subtract";C.value=R.value==="year"?le[M](10,"year"):le[M](1,"year"),xe("year")},R=e.ref("date"),T=e.computed(()=>{const q=c("el.datepicker.year");if(R.value==="year"){const le=Math.floor(S.value/10)*10;return q?`${le} ${q} - ${le+9} ${q}`:`${le} - ${le+9}`}return`${S.value} ${q}`}),v=q=>{const le=ot(q.value)?q.value():q.value;if(le){z(_e(le).locale(d.value));return}q.onClick&&q.onClick({attrs:s,slots:i,emit:n})},V=e.computed(()=>{const{type:q}=o;return["week","month","year","dates"].includes(q)?q:"date"}),H=e.computed(()=>V.value==="date"?R.value:V.value),x=e.computed(()=>!!p.length),F=async q=>{C.value=C.value.startOf("month").month(q),V.value==="month"?z(C.value,!1):(R.value="date",["month","year","date","week"].includes(V.value)&&(z(C.value,!0),await e.nextTick(),te())),xe("month")},K=async q=>{V.value==="year"?(C.value=C.value.startOf("year").year(q),z(C.value,!1)):(C.value=C.value.year(q),R.value="month",["month","year","date","week"].includes(V.value)&&(z(C.value,!0),await e.nextTick(),te())),xe("year")},X=async q=>{R.value=q,await e.nextTick(),te()},J=e.computed(()=>o.type==="datetime"||o.type==="datetimerange"),U=e.computed(()=>J.value||V.value==="dates"),W=()=>{if(V.value==="dates")z(o.parsedValue);else{let q=o.parsedValue;if(!q){const le=_e(h).locale(d.value),M=ve();q=le.year(M.year()).month(M.month()).date(M.date())}C.value=q,z(q)}},Q=()=>{const le=_e().locale(d.value).toDate();(!m||!m(le))&&P(le)&&(C.value=_e().locale(d.value),z(C.value))},Y=e.computed(()=>wf(o.format)),ee=e.computed(()=>Cf(o.format)),pe=e.computed(()=>{if(B.value)return B.value;if(!(!o.parsedValue&&!y.value))return(o.parsedValue||C.value).format(Y.value)}),he=e.computed(()=>{if($.value)return $.value;if(!(!o.parsedValue&&!y.value))return(o.parsedValue||C.value).format(ee.value)}),we=e.ref(!1),Me=()=>{we.value=!0},be=()=>{we.value=!1},Ke=q=>({hour:q.hour(),minute:q.minute(),second:q.second(),year:q.year(),month:q.month(),date:q.date()}),me=(q,le,M)=>{const{hour:G,minute:ie,second:ge}=Ke(q),ce=o.parsedValue?o.parsedValue.hour(G).minute(ie).second(ge):q;C.value=ce,z(C.value,!0),M||(we.value=le)},ne=q=>{const le=_e(q,Y.value).locale(d.value);if(le.isValid()&&P(le)){const{year:M,month:G,date:ie}=Ke(C.value);C.value=le.year(M).month(G).date(ie),B.value=null,we.value=!1,z(C.value,!0)}},oe=q=>{const le=_e(q,ee.value).locale(d.value);if(le.isValid()){if(m&&m(le.toDate()))return;const{hour:M,minute:G,second:ie}=Ke(C.value);C.value=le.hour(M).minute(G).second(ie),$.value=null,z(C.value,!0)}},fe=q=>_e.isDayjs(q)&&q.isValid()&&(m?!m(q.toDate()):!0),ye=q=>V.value==="dates"?q.map(le=>le.format(o.format)):q.format(o.format),$e=q=>_e(q,o.format).locale(d.value),ve=()=>{const q=_e(y.value).locale(d.value);if(!y.value){const le=k.value;return _e().hour(le.hour()).minute(le.minute()).second(le.second()).locale(d.value)}return q},te=async()=>{var q;["week","month","year","date"].includes(V.value)&&((q=w.value)==null||q.focus(),V.value==="week"&&Re(ue.down))},Ee=q=>{const{code:le}=q;[ue.up,ue.down,ue.left,ue.right,ue.home,ue.end,ue.pageUp,ue.pageDown].includes(le)&&(Re(le),q.stopPropagation(),q.preventDefault()),[ue.enter,ue.space].includes(le)&&$.value===null&&B.value===null&&(q.preventDefault(),z(C.value,!1))},Re=q=>{var le;const{up:M,down:G,left:ie,right:ge,home:ce,end:Ce,pageUp:ke,pageDown:ct}=ue,pt={year:{[M]:-4,[G]:4,[ie]:-1,[ge]:1,offset:(Pe,Tt)=>Pe.setFullYear(Pe.getFullYear()+Tt)},month:{[M]:-4,[G]:4,[ie]:-1,[ge]:1,offset:(Pe,Tt)=>Pe.setMonth(Pe.getMonth()+Tt)},week:{[M]:-1,[G]:1,[ie]:-1,[ge]:1,offset:(Pe,Tt)=>Pe.setDate(Pe.getDate()+Tt*7)},date:{[M]:-7,[G]:7,[ie]:-1,[ge]:1,[ce]:Pe=>-Pe.getDay(),[Ce]:Pe=>-Pe.getDay()+6,[ke]:Pe=>-new Date(Pe.getFullYear(),Pe.getMonth(),0).getDate(),[ct]:Pe=>new Date(Pe.getFullYear(),Pe.getMonth()+1,0).getDate(),offset:(Pe,Tt)=>Pe.setDate(Pe.getDate()+Tt)}},Je=C.value.toDate();for(;Math.abs(C.value.diff(Je,"year",!0))<1;){const Pe=pt[H.value];if(!Pe)return;if(Pe.offset(Je,ot(Pe[q])?Pe[q](Je):(le=Pe[q])!=null?le:0),m&&m(Je))break;const Tt=_e(Je).locale(d.value);C.value=Tt,n("pick",Tt,!0);break}},xe=q=>{n("panel-change",C.value.toDate(),q,R.value)};return e.watch(()=>V.value,q=>{if(["month","year"].includes(q)){R.value=q;return}R.value="date"},{immediate:!0}),e.watch(()=>R.value,()=>{u==null||u.updatePopper()}),e.watch(()=>y.value,q=>{q&&(C.value=ve())},{immediate:!0}),e.watch(()=>o.parsedValue,q=>{if(q){if(V.value==="dates"||Array.isArray(q))return;C.value=q}else C.value=ve()},{immediate:!0}),n("set-picker-option",["isValidValue",fe]),n("set-picker-option",["formatToString",ye]),n("set-picker-option",["parseUserInput",$e]),n("set-picker-option",["handleFocusPicker",te]),(q,le)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(l).b(),e.unref(a).b(),{"has-sidebar":q.$slots.sidebar||e.unref(x),"has-time":e.unref(J)}])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("body-wrapper"))},[e.renderSlot(q.$slots,"sidebar",{class:e.normalizeClass(e.unref(l).e("sidebar"))}),e.unref(x)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l).e("sidebar"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),(M,G)=>(e.openBlock(),e.createElementBlock("button",{key:G,type:"button",class:e.normalizeClass(e.unref(l).e("shortcut")),onClick:ie=>v(M)},e.toDisplayString(M.text),11,uW))),128))],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("body"))},[e.unref(J)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(a).e("time-header"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("editor-wrap"))},[e.createVNode(e.unref(It),{placeholder:e.unref(c)("el.datepicker.selectDate"),"model-value":e.unref(he),size:"small",onInput:le[0]||(le[0]=M=>$.value=M),onChange:oe},null,8,["placeholder","model-value"])],2),e.withDirectives((e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(a).e("editor-wrap"))},[e.createVNode(e.unref(It),{placeholder:e.unref(c)("el.datepicker.selectTime"),"model-value":e.unref(pe),size:"small",onFocus:Me,onInput:le[1]||(le[1]=M=>B.value=M),onChange:ne},null,8,["placeholder","model-value"]),e.createVNode(e.unref(sa),{visible:we.value,format:e.unref(Y),"time-arrow-control":e.unref(b),"parsed-value":C.value,onPick:me},null,8,["visible","format","time-arrow-control","parsed-value"])],2)),[[e.unref(_o),be]])],2)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass([e.unref(a).e("header"),(R.value==="year"||R.value==="month")&&e.unref(a).e("header--bordered")])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("prev-btn"))},[e.createElementVNode("button",{type:"button","aria-label":e.unref(c)("el.datepicker.prevYear"),class:e.normalizeClass(["d-arrow-left",e.unref(l).e("icon-btn")]),onClick:le[2]||(le[2]=M=>L(!1))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jr))]),_:1})],10,pW),e.withDirectives(e.createElementVNode("button",{type:"button","aria-label":e.unref(c)("el.datepicker.prevMonth"),class:e.normalizeClass([e.unref(l).e("icon-btn"),"arrow-left"]),onClick:le[3]||(le[3]=M=>A(!1))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1})],10,mW),[[e.vShow,R.value==="date"]])],2),e.createElementVNode("span",{role:"button",class:e.normalizeClass(e.unref(a).e("header-label")),"aria-live":"polite",tabindex:"0",onKeydown:le[4]||(le[4]=e.withKeys(M=>X("year"),["enter"])),onClick:le[5]||(le[5]=M=>X("year"))},e.toDisplayString(e.unref(T)),35),e.withDirectives(e.createElementVNode("span",{role:"button","aria-live":"polite",tabindex:"0",class:e.normalizeClass([e.unref(a).e("header-label"),{active:R.value==="month"}]),onKeydown:le[6]||(le[6]=e.withKeys(M=>X("month"),["enter"])),onClick:le[7]||(le[7]=M=>X("month"))},e.toDisplayString(e.unref(c)(`el.datepicker.month${e.unref(E)+1}`)),35),[[e.vShow,R.value==="date"]]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(a).e("next-btn"))},[e.withDirectives(e.createElementVNode("button",{type:"button","aria-label":e.unref(c)("el.datepicker.nextMonth"),class:e.normalizeClass([e.unref(l).e("icon-btn"),"arrow-right"]),onClick:le[8]||(le[8]=M=>A(!0))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})],10,hW),[[e.vShow,R.value==="date"]]),e.createElementVNode("button",{type:"button","aria-label":e.unref(c)("el.datepicker.nextYear"),class:e.normalizeClass([e.unref(l).e("icon-btn"),"d-arrow-right"]),onClick:le[9]||(le[9]=M=>L(!0))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ur))]),_:1})],10,gW)],2)],2),[[e.vShow,R.value!=="time"]]),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("content")),onKeydown:Ee},[R.value==="date"?(e.openBlock(),e.createBlock(Jf,{key:0,ref_key:"currentViewRef",ref:w,"selection-mode":e.unref(V),date:C.value,"parsed-value":q.parsedValue,"disabled-date":e.unref(m),"cell-class-name":e.unref(g),onPick:I},null,8,["selection-mode","date","parsed-value","disabled-date","cell-class-name"])):e.createCommentVNode("v-if",!0),R.value==="year"?(e.openBlock(),e.createBlock(fW,{key:1,ref_key:"currentViewRef",ref:w,date:C.value,"disabled-date":e.unref(m),"parsed-value":q.parsedValue,onPick:K},null,8,["date","disabled-date","parsed-value"])):e.createCommentVNode("v-if",!0),R.value==="month"?(e.openBlock(),e.createBlock(Qf,{key:2,ref_key:"currentViewRef",ref:w,date:C.value,"parsed-value":q.parsedValue,"disabled-date":e.unref(m),onPick:F},null,8,["date","parsed-value","disabled-date"])):e.createCommentVNode("v-if",!0)],34)],2)],2),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("footer"))},[e.withDirectives(e.createVNode(e.unref(At),{text:"",size:"small",class:e.normalizeClass(e.unref(l).e("link-btn")),onClick:Q},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)("el.datepicker.now")),1)]),_:1},8,["class"]),[[e.vShow,e.unref(V)!=="dates"]]),e.createVNode(e.unref(At),{plain:"",size:"small",class:e.normalizeClass(e.unref(l).e("link-btn")),onClick:W},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)("el.datepicker.confirm")),1)]),_:1},8,["class"])],2),[[e.vShow,e.unref(U)&&R.value==="date"]])],2))}}),[["__file","panel-date-pick.vue"]]);const bW=se({...Q1,...ew}),CW=t=>{const{emit:n}=e.getCurrentInstance(),o=e.useAttrs(),r=e.useSlots();return a=>{const s=ot(a.value)?a.value():a.value;if(s){n("pick",[_e(s[0]).locale(t.value),_e(s[1]).locale(t.value)]);return}a.onClick&&a.onClick({attrs:o,slots:r,emit:n})}},ow=(t,{defaultValue:n,leftDate:o,rightDate:r,unit:l,onParsedValueChanged:a})=>{const{emit:s}=e.getCurrentInstance(),{pickerNs:i}=e.inject(Es),c=Z("date-range-picker"),{t:d,lang:f}=We(),u=CW(f),p=e.ref(),m=e.ref(),g=e.ref({endDate:null,selecting:!1}),h=C=>{g.value=C},b=(C=!1)=>{const k=e.unref(p),E=e.unref(m);Zf([k,E])&&s("pick",[k,E],C)},y=C=>{g.value.selecting=C,C||(g.value.endDate=null)},w=()=>{const[C,k]=nw(e.unref(n),{lang:e.unref(f),unit:l,unlinkPanels:t.unlinkPanels});p.value=void 0,m.value=void 0,o.value=C,r.value=k};return e.watch(n,C=>{C&&w()},{immediate:!0}),e.watch(()=>t.parsedValue,C=>{if(Ae(C)&&C.length===2){const[k,E]=C;p.value=k,o.value=k,m.value=E,a(e.unref(p),e.unref(m))}else w()},{immediate:!0}),{minDate:p,maxDate:m,rangeState:g,lang:f,ppNs:i,drpNs:c,handleChangeRange:h,handleRangeConfirm:b,handleShortcutClick:u,onSelect:y,t:d}},wW=["onClick"],kW=["disabled"],SW=["disabled"],EW=["disabled"],NW=["disabled"];var $W=re(e.defineComponent({__name:"panel-date-range",props:bW,emits:["pick","set-picker-option","calendar-change","panel-change"],setup(t,{emit:n}){const o=t,r="month",l=e.inject("EP_PICKER_BASE"),{disabledDate:a,cellClassName:s,format:i,defaultTime:c,arrowControl:d,clearable:f}=l.props,u=e.toRef(l.props,"shortcuts"),p=e.toRef(l.props,"defaultValue"),{lang:m}=We(),g=e.ref(_e().locale(m.value)),h=e.ref(_e().locale(m.value).add(1,r)),{minDate:b,maxDate:y,rangeState:w,ppNs:C,drpNs:k,handleChangeRange:E,handleRangeConfirm:S,handleShortcutClick:N,onSelect:$,t:B}=ow(o,{defaultValue:p,leftDate:g,rightDate:h,unit:r,onParsedValueChanged:ge}),P=e.ref({min:null,max:null}),D=e.ref({min:null,max:null}),z=e.computed(()=>`${g.value.year()} ${B("el.datepicker.year")} ${B(`el.datepicker.month${g.value.month()+1}`)}`),I=e.computed(()=>`${h.value.year()} ${B("el.datepicker.year")} ${B(`el.datepicker.month${h.value.month()+1}`)}`),A=e.computed(()=>g.value.year()),L=e.computed(()=>g.value.month()),R=e.computed(()=>h.value.year()),T=e.computed(()=>h.value.month()),v=e.computed(()=>!!u.value.length),V=e.computed(()=>P.value.min!==null?P.value.min:b.value?b.value.format(X.value):""),H=e.computed(()=>P.value.max!==null?P.value.max:y.value||b.value?(y.value||b.value).format(X.value):""),x=e.computed(()=>D.value.min!==null?D.value.min:b.value?b.value.format(K.value):""),F=e.computed(()=>D.value.max!==null?D.value.max:y.value||b.value?(y.value||b.value).format(K.value):""),K=e.computed(()=>wf(i)),X=e.computed(()=>Cf(i)),J=()=>{g.value=g.value.subtract(1,"year"),o.unlinkPanels||(h.value=g.value.add(1,"month")),we("year")},U=()=>{g.value=g.value.subtract(1,"month"),o.unlinkPanels||(h.value=g.value.add(1,"month")),we("month")},W=()=>{o.unlinkPanels?h.value=h.value.add(1,"year"):(g.value=g.value.add(1,"year"),h.value=g.value.add(1,"month")),we("year")},Q=()=>{o.unlinkPanels?h.value=h.value.add(1,"month"):(g.value=g.value.add(1,"month"),h.value=g.value.add(1,"month")),we("month")},Y=()=>{g.value=g.value.add(1,"year"),we("year")},ee=()=>{g.value=g.value.add(1,"month"),we("month")},pe=()=>{h.value=h.value.subtract(1,"year"),we("year")},he=()=>{h.value=h.value.subtract(1,"month"),we("month")},we=ce=>{n("panel-change",[g.value.toDate(),h.value.toDate()],ce)},Me=e.computed(()=>{const ce=(L.value+1)%12,Ce=L.value+1>=12?1:0;return o.unlinkPanels&&new Date(A.value+Ce,ce)o.unlinkPanels&&R.value*12+T.value-(A.value*12+L.value+1)>=12),Ke=e.computed(()=>!(b.value&&y.value&&!w.value.selecting&&Zf([b.value,y.value]))),me=e.computed(()=>o.type==="datetime"||o.type==="datetimerange"),ne=(ce,Ce)=>{if(!!ce)return c?_e(c[Ce]||c).locale(m.value).year(ce.year()).month(ce.month()).date(ce.date()):ce},oe=(ce,Ce=!0)=>{const ke=ce.minDate,ct=ce.maxDate,pt=ne(ke,0),Je=ne(ct,1);y.value===Je&&b.value===pt||(n("calendar-change",[ke.toDate(),ct&&ct.toDate()]),y.value=Je,b.value=pt,!(!Ce||me.value)&&S())},fe=e.ref(!1),ye=e.ref(!1),$e=()=>{fe.value=!1},ve=()=>{ye.value=!1},te=(ce,Ce)=>{P.value[Ce]=ce;const ke=_e(ce,X.value).locale(m.value);if(ke.isValid()){if(a&&a(ke.toDate()))return;Ce==="min"?(g.value=ke,b.value=(b.value||g.value).year(ke.year()).month(ke.month()).date(ke.date()),o.unlinkPanels||(h.value=ke.add(1,"month"),y.value=b.value.add(1,"month"))):(h.value=ke,y.value=(y.value||h.value).year(ke.year()).month(ke.month()).date(ke.date()),o.unlinkPanels||(g.value=ke.subtract(1,"month"),b.value=y.value.subtract(1,"month")))}},Ee=(ce,Ce)=>{P.value[Ce]=null},Re=(ce,Ce)=>{D.value[Ce]=ce;const ke=_e(ce,K.value).locale(m.value);ke.isValid()&&(Ce==="min"?(fe.value=!0,b.value=(b.value||g.value).hour(ke.hour()).minute(ke.minute()).second(ke.second()),(!y.value||y.value.isBefore(b.value))&&(y.value=b.value)):(ye.value=!0,y.value=(y.value||h.value).hour(ke.hour()).minute(ke.minute()).second(ke.second()),h.value=y.value,y.value&&y.value.isBefore(b.value)&&(b.value=y.value)))},xe=(ce,Ce)=>{D.value[Ce]=null,Ce==="min"?(g.value=b.value,fe.value=!1):(h.value=y.value,ye.value=!1)},q=(ce,Ce,ke)=>{D.value.min||(ce&&(g.value=ce,b.value=(b.value||g.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),ke||(fe.value=Ce),(!y.value||y.value.isBefore(b.value))&&(y.value=b.value,h.value=ce))},le=(ce,Ce,ke)=>{D.value.max||(ce&&(h.value=ce,y.value=(y.value||h.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),ke||(ye.value=Ce),y.value&&y.value.isBefore(b.value)&&(b.value=y.value))},M=()=>{g.value=nw(e.unref(p),{lang:e.unref(m),unit:"month",unlinkPanels:o.unlinkPanels})[0],h.value=g.value.add(1,"month"),n("pick",null)},G=ce=>Ae(ce)?ce.map(Ce=>Ce.format(i)):ce.format(i),ie=ce=>Ae(ce)?ce.map(Ce=>_e(Ce,i).locale(m.value)):_e(ce,i).locale(m.value);function ge(ce,Ce){if(o.unlinkPanels&&Ce){const ke=(ce==null?void 0:ce.year())||0,ct=(ce==null?void 0:ce.month())||0,pt=Ce.year(),Je=Ce.month();h.value=ke===pt&&ct===Je?Ce.add(1,r):Ce}else h.value=g.value.add(1,r),Ce&&(h.value=h.value.hour(Ce.hour()).minute(Ce.minute()).second(Ce.second()))}return n("set-picker-option",["isValidValue",Zf]),n("set-picker-option",["parseUserInput",ie]),n("set-picker-option",["formatToString",G]),n("set-picker-option",["handleClear",M]),(ce,Ce)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(C).b(),e.unref(k).b(),{"has-sidebar":ce.$slots.sidebar||e.unref(v),"has-time":e.unref(me)}])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(C).e("body-wrapper"))},[e.renderSlot(ce.$slots,"sidebar",{class:e.normalizeClass(e.unref(C).e("sidebar"))}),e.unref(v)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(C).e("sidebar"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(u),(ke,ct)=>(e.openBlock(),e.createElementBlock("button",{key:ct,type:"button",class:e.normalizeClass(e.unref(C).e("shortcut")),onClick:pt=>e.unref(N)(ke)},e.toDisplayString(ke.text),11,wW))),128))],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(C).e("body"))},[e.unref(me)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(k).e("time-header"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(k).e("editors-wrap"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(k).e("time-picker-wrap"))},[e.createVNode(e.unref(It),{size:"small",disabled:e.unref(w).selecting,placeholder:e.unref(B)("el.datepicker.startDate"),class:e.normalizeClass(e.unref(k).e("editor")),"model-value":e.unref(V),onInput:Ce[0]||(Ce[0]=ke=>te(ke,"min")),onChange:Ce[1]||(Ce[1]=ke=>Ee(ke,"min"))},null,8,["disabled","placeholder","class","model-value"])],2),e.withDirectives((e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(k).e("time-picker-wrap"))},[e.createVNode(e.unref(It),{size:"small",class:e.normalizeClass(e.unref(k).e("editor")),disabled:e.unref(w).selecting,placeholder:e.unref(B)("el.datepicker.startTime"),"model-value":e.unref(x),onFocus:Ce[2]||(Ce[2]=ke=>fe.value=!0),onInput:Ce[3]||(Ce[3]=ke=>Re(ke,"min")),onChange:Ce[4]||(Ce[4]=ke=>xe(ke,"min"))},null,8,["class","disabled","placeholder","model-value"]),e.createVNode(e.unref(sa),{visible:fe.value,format:e.unref(K),"datetime-role":"start","time-arrow-control":e.unref(d),"parsed-value":g.value,onPick:q},null,8,["visible","format","time-arrow-control","parsed-value"])],2)),[[e.unref(_o),$e]])],2),e.createElementVNode("span",null,[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})]),e.createElementVNode("span",{class:e.normalizeClass([e.unref(k).e("editors-wrap"),"is-right"])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(k).e("time-picker-wrap"))},[e.createVNode(e.unref(It),{size:"small",class:e.normalizeClass(e.unref(k).e("editor")),disabled:e.unref(w).selecting,placeholder:e.unref(B)("el.datepicker.endDate"),"model-value":e.unref(H),readonly:!e.unref(b),onInput:Ce[5]||(Ce[5]=ke=>te(ke,"max")),onChange:Ce[6]||(Ce[6]=ke=>Ee(ke,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"])],2),e.withDirectives((e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(k).e("time-picker-wrap"))},[e.createVNode(e.unref(It),{size:"small",class:e.normalizeClass(e.unref(k).e("editor")),disabled:e.unref(w).selecting,placeholder:e.unref(B)("el.datepicker.endTime"),"model-value":e.unref(F),readonly:!e.unref(b),onFocus:Ce[7]||(Ce[7]=ke=>e.unref(b)&&(ye.value=!0)),onInput:Ce[8]||(Ce[8]=ke=>Re(ke,"max")),onChange:Ce[9]||(Ce[9]=ke=>xe(ke,"max"))},null,8,["class","disabled","placeholder","model-value","readonly"]),e.createVNode(e.unref(sa),{"datetime-role":"end",visible:ye.value,format:e.unref(K),"time-arrow-control":e.unref(d),"parsed-value":h.value,onPick:le},null,8,["visible","format","time-arrow-control","parsed-value"])],2)),[[e.unref(_o),ve]])],2)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass([[e.unref(C).e("content"),e.unref(k).e("content")],"is-left"])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(k).e("header"))},[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(C).e("icon-btn"),"d-arrow-left"]),onClick:J},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jr))]),_:1})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(C).e("icon-btn"),"arrow-left"]),onClick:U},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1})],2),ce.unlinkPanels?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:!e.unref(be),class:e.normalizeClass([[e.unref(C).e("icon-btn"),{"is-disabled":!e.unref(be)}],"d-arrow-right"]),onClick:Y},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ur))]),_:1})],10,kW)):e.createCommentVNode("v-if",!0),ce.unlinkPanels?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:!e.unref(Me),class:e.normalizeClass([[e.unref(C).e("icon-btn"),{"is-disabled":!e.unref(Me)}],"arrow-right"]),onClick:ee},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})],10,SW)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",null,e.toDisplayString(e.unref(z)),1)],2),e.createVNode(Jf,{"selection-mode":"range",date:g.value,"min-date":e.unref(b),"max-date":e.unref(y),"range-state":e.unref(w),"disabled-date":e.unref(a),"cell-class-name":e.unref(s),onChangerange:e.unref(E),onPick:oe,onSelect:e.unref($)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2),e.createElementVNode("div",{class:e.normalizeClass([[e.unref(C).e("content"),e.unref(k).e("content")],"is-right"])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(k).e("header"))},[ce.unlinkPanels?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:!e.unref(be),class:e.normalizeClass([[e.unref(C).e("icon-btn"),{"is-disabled":!e.unref(be)}],"d-arrow-left"]),onClick:pe},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jr))]),_:1})],10,EW)):e.createCommentVNode("v-if",!0),ce.unlinkPanels?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:!e.unref(Me),class:e.normalizeClass([[e.unref(C).e("icon-btn"),{"is-disabled":!e.unref(Me)}],"arrow-left"]),onClick:he},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1})],10,NW)):e.createCommentVNode("v-if",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(C).e("icon-btn"),"d-arrow-right"]),onClick:W},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ur))]),_:1})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(C).e("icon-btn"),"arrow-right"]),onClick:Q},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})],2),e.createElementVNode("div",null,e.toDisplayString(e.unref(I)),1)],2),e.createVNode(Jf,{"selection-mode":"range",date:h.value,"min-date":e.unref(b),"max-date":e.unref(y),"range-state":e.unref(w),"disabled-date":e.unref(a),"cell-class-name":e.unref(s),onChangerange:e.unref(E),onPick:oe,onSelect:e.unref($)},null,8,["date","min-date","max-date","range-state","disabled-date","cell-class-name","onChangerange","onSelect"])],2)],2)],2),e.unref(me)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(C).e("footer"))},[e.unref(f)?(e.openBlock(),e.createBlock(e.unref(At),{key:0,text:"",size:"small",class:e.normalizeClass(e.unref(C).e("link-btn")),onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)("el.datepicker.clear")),1)]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.createVNode(e.unref(At),{plain:"",size:"small",class:e.normalizeClass(e.unref(C).e("link-btn")),disabled:e.unref(Ke),onClick:Ce[10]||(Ce[10]=ke=>e.unref(S)(!1))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(B)("el.datepicker.confirm")),1)]),_:1},8,["class","disabled"])],2)):e.createCommentVNode("v-if",!0)],2))}}),[["__file","panel-date-range.vue"]]);const BW=se({...ew}),_W=["pick","set-picker-option"],vW=({unlinkPanels:t,leftDate:n,rightDate:o})=>{const{t:r}=We(),l=()=>{n.value=n.value.subtract(1,"year"),t||(o.value=o.value.subtract(1,"year"))},a=()=>{t||(n.value=n.value.add(1,"year")),o.value=o.value.add(1,"year")},s=()=>{n.value=n.value.add(1,"year")},i=()=>{o.value=o.value.subtract(1,"year")},c=e.computed(()=>`${n.value.year()} ${r("el.datepicker.year")}`),d=e.computed(()=>`${o.value.year()} ${r("el.datepicker.year")}`),f=e.computed(()=>n.value.year()),u=e.computed(()=>o.value.year()===n.value.year()?n.value.year()+1:o.value.year());return{leftPrevYear:l,rightNextYear:a,leftNextYear:s,rightPrevYear:i,leftLabel:c,rightLabel:d,leftYear:f,rightYear:u}},TW=["onClick"],VW=["disabled"],MW=["disabled"],RW={name:"DatePickerMonthRange"},IW=e.defineComponent({...RW,props:BW,emits:_W,setup(t,{emit:n}){const o=t,r="year",{lang:l}=We(),a=e.inject("EP_PICKER_BASE"),{shortcuts:s,disabledDate:i,format:c}=a.props,d=e.toRef(a.props,"defaultValue"),f=e.ref(_e().locale(l.value)),u=e.ref(_e().locale(l.value).add(1,r)),{minDate:p,maxDate:m,rangeState:g,ppNs:h,drpNs:b,handleChangeRange:y,handleRangeConfirm:w,handleShortcutClick:C,onSelect:k}=ow(o,{defaultValue:d,leftDate:f,rightDate:u,unit:r,onParsedValueChanged:T}),E=e.computed(()=>!!s.length),{leftPrevYear:S,rightNextYear:N,leftNextYear:$,rightPrevYear:B,leftLabel:P,rightLabel:D,leftYear:z,rightYear:I}=vW({unlinkPanels:e.toRef(o,"unlinkPanels"),leftDate:f,rightDate:u}),A=e.computed(()=>o.unlinkPanels&&I.value>z.value+1),L=(v,V=!0)=>{const H=v.minDate,x=v.maxDate;m.value===x&&p.value===H||(m.value=x,p.value=H,V&&w())},R=v=>v.map(V=>V.format(c));function T(v,V){if(o.unlinkPanels&&V){const H=(v==null?void 0:v.year())||0,x=V.year();u.value=H===x?V.add(1,r):V}else u.value=f.value.add(1,r)}return n("set-picker-option",["formatToString",R]),(v,V)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(h).b(),e.unref(b).b(),{"has-sidebar":Boolean(v.$slots.sidebar)||e.unref(E)}])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(h).e("body-wrapper"))},[e.renderSlot(v.$slots,"sidebar",{class:e.normalizeClass(e.unref(h).e("sidebar"))}),e.unref(E)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(h).e("sidebar"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s),(H,x)=>(e.openBlock(),e.createElementBlock("button",{key:x,type:"button",class:e.normalizeClass(e.unref(h).e("shortcut")),onClick:F=>e.unref(C)(H)},e.toDisplayString(H.text),11,TW))),128))],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(h).e("body"))},[e.createElementVNode("div",{class:e.normalizeClass([[e.unref(h).e("content"),e.unref(b).e("content")],"is-left"])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(b).e("header"))},[e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(h).e("icon-btn"),"d-arrow-left"]),onClick:V[0]||(V[0]=(...H)=>e.unref(S)&&e.unref(S)(...H))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jr))]),_:1})],2),v.unlinkPanels?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:!e.unref(A),class:e.normalizeClass([[e.unref(h).e("icon-btn"),{[e.unref(h).is("disabled")]:!e.unref(A)}],"d-arrow-right"]),onClick:V[1]||(V[1]=(...H)=>e.unref($)&&e.unref($)(...H))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ur))]),_:1})],10,VW)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",null,e.toDisplayString(e.unref(P)),1)],2),e.createVNode(Qf,{"selection-mode":"range",date:f.value,"min-date":e.unref(p),"max-date":e.unref(m),"range-state":e.unref(g),"disabled-date":e.unref(i),onChangerange:e.unref(y),onPick:L,onSelect:e.unref(k)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2),e.createElementVNode("div",{class:e.normalizeClass([[e.unref(h).e("content"),e.unref(b).e("content")],"is-right"])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(b).e("header"))},[v.unlinkPanels?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:!e.unref(A),class:e.normalizeClass([[e.unref(h).e("icon-btn"),{"is-disabled":!e.unref(A)}],"d-arrow-left"]),onClick:V[2]||(V[2]=(...H)=>e.unref(B)&&e.unref(B)(...H))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jr))]),_:1})],10,MW)):e.createCommentVNode("v-if",!0),e.createElementVNode("button",{type:"button",class:e.normalizeClass([e.unref(h).e("icon-btn"),"d-arrow-right"]),onClick:V[3]||(V[3]=(...H)=>e.unref(N)&&e.unref(N)(...H))},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ur))]),_:1})],2),e.createElementVNode("div",null,e.toDisplayString(e.unref(D)),1)],2),e.createVNode(Qf,{"selection-mode":"range",date:u.value,"min-date":e.unref(p),"max-date":e.unref(m),"range-state":e.unref(g),"disabled-date":e.unref(i),onChangerange:e.unref(y),onPick:L,onSelect:e.unref(k)},null,8,["date","min-date","max-date","range-state","disabled-date","onChangerange","onSelect"])],2)],2)],2)],2))}});var PW=re(IW,[["__file","panel-month-range.vue"]]);const AW=function(t){switch(t){case"daterange":case"datetimerange":return $W;case"monthrange":return PW;default:return yW}};_e.extend(dC),_e.extend(OK),_e.extend(yf),_e.extend(zK),_e.extend(DK),_e.extend(LK),_e.extend(FK),_e.extend(xK);var OW=e.defineComponent({name:"ElDatePicker",install:null,props:{...Ks,...HK},emits:["update:modelValue"],setup(t,{expose:n,emit:o,slots:r}){const l=Z("picker-panel");e.provide("ElPopperOptions",e.reactive(e.toRef(t,"popperOptions"))),e.provide(Es,{slots:r,pickerNs:l});const a=e.ref();n({focus:(c=!0)=>{var d;(d=a.value)==null||d.focus(c)}});const i=c=>{o("update:modelValue",c)};return()=>{var c;const d=(c=t.format)!=null?c:uC[t.type]||kr,f=AW(t.type);return e.createVNode($f,e.mergeProps(t,{format:d,type:t.type,ref:a,"onUpdate:modelValue":i}),{default:u=>e.createVNode(f,u,null),"range-separator":r["range-separator"]})}}});const ri=OW;ri.install=t=>{t.component(ri.name,ri)};const rw=ri,eu="elDescriptions";var ua=e.defineComponent({name:"ElDescriptionsCell",props:{cell:{type:Object},tag:{type:String},type:{type:String}},setup(){return{descriptions:e.inject(eu,{})}},render(){var t,n,o,r,l,a;const s=q8(this.cell),{border:i,direction:c}=this.descriptions,d=c==="vertical",f=((o=(n=(t=this.cell)==null?void 0:t.children)==null?void 0:n.label)==null?void 0:o.call(n))||s.label,u=(a=(l=(r=this.cell)==null?void 0:r.children)==null?void 0:l.default)==null?void 0:a.call(l),p=s.span,m=s.align?`is-${s.align}`:"",g=s.labelAlign?`is-${s.labelAlign}`:m,h=s.className,b=s.labelClassName,y={width:Nt(s.width),minWidth:Nt(s.minWidth)},w=Z("descriptions");switch(this.type){case"label":return e.h(this.tag,{style:y,class:[w.e("cell"),w.e("label"),w.is("bordered-label",i),w.is("vertical-label",d),g,b],colSpan:d?p:1},f);case"content":return e.h(this.tag,{style:y,class:[w.e("cell"),w.e("content"),w.is("bordered-content",i),w.is("vertical-content",d),m,h],colSpan:d?p:p*2-1},u);default:return e.h("td",{style:y,class:[w.e("cell"),m],colSpan:p},[e.h("span",{class:[w.e("label"),b]},f),e.h("span",{class:[w.e("content"),h]},u)])}}});const zW=se({row:{type:Array,default:()=>[]}}),DW={key:1},LW={name:"ElDescriptionsRow"},FW=e.defineComponent({...LW,props:zW,setup(t){const n=e.inject(eu,{});return(o,r)=>e.unref(n).direction==="vertical"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.row,(l,a)=>(e.openBlock(),e.createBlock(e.unref(ua),{key:`tr1-${a}`,cell:l,tag:"th",type:"label"},null,8,["cell"]))),128))]),e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.row,(l,a)=>(e.openBlock(),e.createBlock(e.unref(ua),{key:`tr2-${a}`,cell:l,tag:"td",type:"content"},null,8,["cell"]))),128))])],64)):(e.openBlock(),e.createElementBlock("tr",DW,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.row,(l,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:`tr3-${a}`},[e.unref(n).border?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(e.unref(ua),{cell:l,tag:"td",type:"label"},null,8,["cell"]),e.createVNode(e.unref(ua),{cell:l,tag:"td",type:"content"},null,8,["cell"])],64)):(e.openBlock(),e.createBlock(e.unref(ua),{key:1,cell:l,tag:"td",type:"both"},null,8,["cell"]))],64))),128))]))}});var xW=re(FW,[["__file","descriptions-row.vue"]]);const lw=se({border:{type:Boolean,default:!1},column:{type:Number,default:3},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},size:tn,title:{type:String,default:""},extra:{type:String,default:""}}),HW={name:"ElDescriptions"},KW=e.defineComponent({...HW,props:lw,setup(t){const n=t,o=Z("descriptions"),r=yt(),l=e.useSlots();e.provide(eu,n);const a=e.computed(()=>[o.b(),o.m(r.value)]),s=d=>{const f=Array.isArray(d)?d:[d],u=[];return f.forEach(p=>{Array.isArray(p.children)?u.push(...s(p.children)):u.push(p)}),u},i=(d,f,u,p=!1)=>(d.props||(d.props={}),f>u&&(d.props.span=u),p&&(d.props.span=f),d),c=()=>{var d;const f=s((d=l.default)==null?void 0:d.call(l)).filter(h=>{var b;return((b=h==null?void 0:h.type)==null?void 0:b.name)==="ElDescriptionsItem"}),u=[];let p=[],m=n.column,g=0;return f.forEach((h,b)=>{var y;const w=((y=h.props)==null?void 0:y.span)||1;if(bm?m:w),b===f.length-1){const C=n.column-g%n.column;p.push(i(h,C,m,!0)),u.push(p);return}w(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(a))},[d.title||d.extra||d.$slots.title||d.$slots.extra?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).e("header"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(o).e("title"))},[e.renderSlot(d.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(d.title),1)])],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(o).e("extra"))},[e.renderSlot(d.$slots,"extra",{},()=>[e.createTextVNode(e.toDisplayString(d.extra),1)])],2)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(o).e("body"))},[e.createElementVNode("table",{class:e.normalizeClass([e.unref(o).e("table"),e.unref(o).is("bordered",d.border)])},[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c(),(u,p)=>(e.openBlock(),e.createBlock(xW,{key:p,row:u},null,8,["row"]))),128))])],2)],2)],2))}});var WW=re(KW,[["__file","description.vue"]]),aw=e.defineComponent({name:"ElDescriptionsItem",props:{label:{type:String,default:""},span:{type:Number,default:1},width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},align:{type:String,default:"left"},labelAlign:{type:String,default:""},className:{type:String,default:""},labelClassName:{type:String,default:""}}});const sw=Te(WW,{DescriptionsItem:aw}),iw=ut(aw),cw=se({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:j([String,Array,Object])},zIndex:{type:j([String,Number])}}),dw={click:t=>t instanceof MouseEvent};var jW=e.defineComponent({name:"ElOverlay",props:cw,emits:dw,setup(t,{slots:n,emit:o}){const r=Z("overlay"),l=c=>{o("click",c)},{onClick:a,onMousedown:s,onMouseup:i}=_s(t.customMaskEvent?void 0:l);return()=>t.mask?e.createVNode("div",{class:[r.b(),t.overlayClass],style:{zIndex:t.zIndex},onClick:a,onMousedown:s,onMouseup:i},[e.renderSlot(n,"default")],En.STYLE|En.CLASS|En.PROPS,["onClick","onMouseup","onMousedown"]):e.h("div",{class:t.overlayClass,style:{zIndex:t.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[e.renderSlot(n,"default")])}});const li=jW,fw=se({center:{type:Boolean,default:!1},closeIcon:{type:$t,default:""},customClass:{type:String,default:""},draggable:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!0},title:{type:String,default:""}}),UW={close:()=>!0},GW=["aria-label"],qW=["id"],YW={name:"ElDialogContent"},XW=e.defineComponent({...YW,props:fw,emits:UW,setup(t){const n=t,{t:o}=We(),{Close:r}=K8,{dialogRef:l,headerRef:a,bodyId:s,ns:i,style:c}=e.inject(Sd),{focusTrapRef:d}=e.inject(sf),f=ys(d,l),u=e.computed(()=>n.draggable);return Id(l,a,u),(p,m)=>(e.openBlock(),e.createElementBlock("div",{ref:e.unref(f),class:e.normalizeClass([e.unref(i).b(),e.unref(i).is("fullscreen",p.fullscreen),e.unref(i).is("draggable",e.unref(u)),{[e.unref(i).m("center")]:p.center},p.customClass]),style:e.normalizeStyle(e.unref(c)),tabindex:"-1",onClick:m[1]||(m[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("header",{ref_key:"headerRef",ref:a,class:e.normalizeClass(e.unref(i).e("header"))},[e.renderSlot(p.$slots,"header",{},()=>[e.createElementVNode("span",{role:"heading",class:e.normalizeClass(e.unref(i).e("title"))},e.toDisplayString(p.title),3)]),p.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,"aria-label":e.unref(o)("el.dialog.close"),class:e.normalizeClass(e.unref(i).e("headerbtn")),type:"button",onClick:m[0]||(m[0]=g=>p.$emit("close"))},[e.createVNode(e.unref(de),{class:e.normalizeClass(e.unref(i).e("close"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.closeIcon||e.unref(r))))]),_:1},8,["class"])],10,GW)):e.createCommentVNode("v-if",!0)],2),e.createElementVNode("div",{id:e.unref(s),class:e.normalizeClass(e.unref(i).e("body"))},[e.renderSlot(p.$slots,"default")],10,qW),p.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(e.unref(i).e("footer"))},[e.renderSlot(p.$slots,"footer")],2)):e.createCommentVNode("v-if",!0)],6))}});var ZW=re(XW,[["__file","dialog-content.vue"]]);const tu=se({...fw,appendToBody:{type:Boolean,default:!1},beforeClose:{type:j(Function)},destroyOnClose:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:{type:Boolean,default:!1},modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1}}),nu={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[Ve]:t=>St(t),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},ou=(t,n)=>{const r=e.getCurrentInstance().emit,{nextZIndex:l}=Yn();let a="";const s=Nn(),i=Nn(),c=e.ref(!1),d=e.ref(!1),f=e.ref(!1),u=e.ref(t.zIndex||l());let p,m;const g=Wo("namespace",Ad),h=e.computed(()=>{const z={},I=`--${g.value}-dialog`;return t.fullscreen||(t.top&&(z[`${I}-margin-top`]=t.top),t.width&&(z[`${I}-width`]=Nt(t.width))),z});function b(){r("opened")}function y(){r("closed"),r(Ve,!1),t.destroyOnClose&&(f.value=!1)}function w(){r("close")}function C(){m==null||m(),p==null||p(),t.openDelay&&t.openDelay>0?{stop:p}=pr(()=>N(),t.openDelay):N()}function k(){p==null||p(),m==null||m(),t.closeDelay&&t.closeDelay>0?{stop:m}=pr(()=>$(),t.closeDelay):$()}function E(){function z(I){I||(d.value=!0,c.value=!1)}t.beforeClose?t.beforeClose(z):k()}function S(){t.closeOnClickModal&&E()}function N(){!Oe||(c.value=!0)}function $(){c.value=!1}function B(){r("openAutoFocus")}function P(){r("closeAutoFocus")}t.lockScroll&&Od(c);function D(){t.closeOnPressEscape&&E()}return e.watch(()=>t.modelValue,z=>{z?(d.value=!1,C(),f.value=!0,r("open"),u.value=t.zIndex?u.value++:l(),e.nextTick(()=>{n.value&&(n.value.scrollTop=0)})):c.value&&k()}),e.watch(()=>t.fullscreen,z=>{!n.value||(z?(a=n.value.style.transform,n.value.style.transform=""):n.value.style.transform=a)}),e.onMounted(()=>{t.modelValue&&(c.value=!0,f.value=!0,C())}),{afterEnter:b,afterLeave:y,beforeLeave:w,handleClose:E,onModalClick:S,close:k,doClose:$,onOpenAutoFocus:B,onCloseAutoFocus:P,onCloseRequested:D,titleId:s,bodyId:i,closed:d,style:h,rendered:f,visible:c,zIndex:u}},JW=["aria-label","aria-labelledby","aria-describedby"],QW={name:"ElDialog"},e7=e.defineComponent({...QW,props:tu,emits:nu,setup(t,{expose:n}){const o=t,r=e.useSlots();Gr({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},e.computed(()=>!!r.title));const l=Z("dialog"),a=e.ref(),s=e.ref(),i=e.ref(),{visible:c,titleId:d,bodyId:f,style:u,rendered:p,zIndex:m,afterEnter:g,afterLeave:h,beforeLeave:b,handleClose:y,onModalClick:w,onOpenAutoFocus:C,onCloseAutoFocus:k,onCloseRequested:E}=ou(o,a);e.provide(Sd,{dialogRef:a,headerRef:s,bodyId:f,ns:l,rendered:p,style:u});const S=_s(w),N=e.computed(()=>o.draggable&&!o.fullscreen);return n({visible:c,dialogContentRef:i}),($,B)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:!$.appendToBody},[e.createVNode(e.Transition,{name:"dialog-fade",onAfterEnter:e.unref(g),onAfterLeave:e.unref(h),onBeforeLeave:e.unref(b),persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(e.unref(li),{"custom-mask-event":"",mask:$.modal,"overlay-class":$.modalClass,"z-index":e.unref(m)},{default:e.withCtx(()=>[e.createElementVNode("div",{role:"dialog","aria-modal":"true","aria-label":$.title||void 0,"aria-labelledby":$.title?void 0:e.unref(d),"aria-describedby":e.unref(f),class:e.normalizeClass(`${e.unref(l).namespace.value}-overlay-dialog`),onClick:B[0]||(B[0]=(...P)=>e.unref(S).onClick&&e.unref(S).onClick(...P)),onMousedown:B[1]||(B[1]=(...P)=>e.unref(S).onMousedown&&e.unref(S).onMousedown(...P)),onMouseup:B[2]||(B[2]=(...P)=>e.unref(S).onMouseup&&e.unref(S).onMouseup(...P))},[e.createVNode(e.unref(As),{loop:"",trapped:e.unref(c),"focus-start-el":"container",onFocusAfterTrapped:e.unref(C),onFocusAfterReleased:e.unref(k),onReleaseRequested:e.unref(E)},{default:e.withCtx(()=>[e.unref(p)?(e.openBlock(),e.createBlock(ZW,{key:0,ref_key:"dialogContentRef",ref:i,"custom-class":$.customClass,center:$.center,"close-icon":$.closeIcon,draggable:e.unref(N),fullscreen:$.fullscreen,"show-close":$.showClose,title:$.title,onClose:e.unref(y)},e.createSlots({header:e.withCtx(()=>[$.$slots.title?e.renderSlot($.$slots,"title",{key:1}):e.renderSlot($.$slots,"header",{key:0,close:e.unref(y),titleId:e.unref(d),titleClass:e.unref(l).e("title")})]),default:e.withCtx(()=>[e.renderSlot($.$slots,"default")]),_:2},[$.$slots.footer?{name:"footer",fn:e.withCtx(()=>[e.renderSlot($.$slots,"footer")])}:void 0]),1032,["custom-class","center","close-icon","draggable","fullscreen","show-close","title","onClose"])):e.createCommentVNode("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onReleaseRequested"])],42,JW)]),_:3},8,["mask","overlay-class","z-index"]),[[e.vShow,e.unref(c)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"]))}});var t7=re(e7,[["__file","dialog.vue"]]);const uw=Te(t7),pw=se({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:j(String),default:"solid"}}),n7={name:"ElDivider"},o7=e.defineComponent({...n7,props:pw,setup(t){const n=t,o=Z("divider"),r=e.computed(()=>o.cssVar({"border-style":n.borderStyle}));return(l,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(o).b(),e.unref(o).m(l.direction)]),style:e.normalizeStyle(e.unref(r)),role:"separator"},[l.$slots.default&&l.direction!=="vertical"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(o).e("text"),e.unref(o).is(l.contentPosition)])},[e.renderSlot(l.$slots,"default")],2)):e.createCommentVNode("v-if",!0)],6))}});var r7=re(o7,[["__file","divider.vue"]]);const mw=Te(r7),hw=se({...tu,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0}}),gw=nu,l7=e.defineComponent({name:"ElDrawer",components:{ElOverlay:li,ElFocusTrap:As,ElIcon:de,Close:Pn},props:hw,emits:gw,setup(t,{slots:n}){Gr({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},e.computed(()=>!!n.title));const o=e.ref(),r=e.ref(),l=Z("drawer"),{t:a}=We(),s=e.computed(()=>t.direction==="rtl"||t.direction==="ltr"),i=e.computed(()=>Nt(t.size));return{...ou(t,o),drawerRef:o,focusStartRef:r,isHorizontal:s,drawerSize:i,ns:l,t:a}}}),a7=["aria-label","aria-labelledby","aria-describedby"],s7=["id"],i7=["aria-label"],c7=["id"];function d7(t,n,o,r,l,a){const s=e.resolveComponent("close"),i=e.resolveComponent("el-icon"),c=e.resolveComponent("el-focus-trap"),d=e.resolveComponent("el-overlay");return e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:!t.appendToBody},[e.createVNode(e.Transition,{name:t.ns.b("fade"),onAfterEnter:t.afterEnter,onAfterLeave:t.afterLeave,onBeforeLeave:t.beforeLeave,persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(d,{mask:t.modal,"overlay-class":t.modalClass,"z-index":t.zIndex,onClick:t.onModalClick},{default:e.withCtx(()=>[e.createVNode(c,{loop:"",trapped:t.visible,"focus-trap-el":t.drawerRef,"focus-start-el":t.focusStartRef,onReleaseRequested:t.onCloseRequested},{default:e.withCtx(()=>[e.createElementVNode("div",{ref:"drawerRef","aria-modal":"true","aria-label":t.title||void 0,"aria-labelledby":t.title?void 0:t.titleId,"aria-describedby":t.bodyId,class:e.normalizeClass([t.ns.b(),t.direction,t.visible&&"open",t.customClass]),style:e.normalizeStyle(t.isHorizontal?"width: "+t.drawerSize:"height: "+t.drawerSize),role:"dialog",onClick:n[1]||(n[1]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("span",{ref:"focusStartRef",class:e.normalizeClass(t.ns.e("sr-focus")),tabindex:"-1"},null,2),t.withHeader?(e.openBlock(),e.createElementBlock("header",{key:0,class:e.normalizeClass(t.ns.e("header"))},[t.$slots.title?e.renderSlot(t.$slots,"title",{key:1},()=>[e.createCommentVNode(" DEPRECATED SLOT ")]):e.renderSlot(t.$slots,"header",{key:0,close:t.handleClose,titleId:t.titleId,titleClass:t.ns.e("title")},()=>[t.$slots.title?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("span",{key:0,id:t.titleId,role:"heading",class:e.normalizeClass(t.ns.e("title"))},e.toDisplayString(t.title),11,s7))]),t.showClose?(e.openBlock(),e.createElementBlock("button",{key:2,"aria-label":t.t("el.drawer.close"),class:e.normalizeClass(t.ns.e("close-btn")),type:"button",onClick:n[0]||(n[0]=(...f)=>t.handleClose&&t.handleClose(...f))},[e.createVNode(i,{class:e.normalizeClass(t.ns.e("close"))},{default:e.withCtx(()=>[e.createVNode(s)]),_:1},8,["class"])],10,i7)):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),t.rendered?(e.openBlock(),e.createElementBlock("div",{key:1,id:t.bodyId,class:e.normalizeClass(t.ns.e("body"))},[e.renderSlot(t.$slots,"default")],10,c7)):e.createCommentVNode("v-if",!0),t.$slots.footer?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(t.ns.e("footer"))},[e.renderSlot(t.$slots,"footer")],2)):e.createCommentVNode("v-if",!0)],14,a7)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[e.vShow,t.visible]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["disabled"])}var f7=re(l7,[["render",d7],["__file","drawer.vue"]]);const yw=Te(f7),u7={inheritAttrs:!1};function p7(t,n,o,r,l,a){return e.renderSlot(t.$slots,"default")}var m7=re(u7,[["render",p7],["__file","collection.vue"]]);const h7={name:"ElCollectionItem",inheritAttrs:!1};function g7(t,n,o,r,l,a){return e.renderSlot(t.$slots,"default")}var y7=re(h7,[["render",g7],["__file","collection-item.vue"]]);const bw="data-el-collection-item",Cw=t=>{const n=`El${t}Collection`,o=`${n}Item`,r=Symbol(n),l=Symbol(o),a={...m7,name:n,setup(){const i=e.ref(null),c=new Map,d=()=>{const f=e.unref(i);if(!f)return[];const u=Array.from(f.querySelectorAll(`[${bw}]`));return[...c.values()].sort((m,g)=>u.indexOf(m.ref)-u.indexOf(g.ref))};e.provide(r,{itemMap:c,getItems:d,collectionRef:i})}},s={...y7,name:o,setup(i,{attrs:c}){const d=e.ref(null),f=e.inject(r,void 0);e.provide(l,{collectionItemRef:d}),e.onMounted(()=>{const u=e.unref(d);u&&f.itemMap.set(u,{ref:u,...c})}),e.onBeforeUnmount(()=>{const u=e.unref(d);f.itemMap.delete(u)})}};return{COLLECTION_INJECTION_KEY:r,COLLECTION_ITEM_INJECTION_KEY:l,ElCollection:a,ElCollectionItem:s}},b7=se({style:{type:j([String,Array,Object])},currentTabId:{type:j(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:["ltr","rtl"],default:"ltr"},orientation:{type:j(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:C7,ElCollectionItem:w7,COLLECTION_INJECTION_KEY:ru,COLLECTION_ITEM_INJECTION_KEY:k7}=Cw("RovingFocusGroup"),lu=Symbol("elRovingFocusGroup"),ww=Symbol("elRovingFocusGroupItem"),S7={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"},E7=(t,n)=>{if(n!=="rtl")return t;switch(t){case ue.right:return ue.left;case ue.left:return ue.right;default:return t}},N7=(t,n,o)=>{const r=E7(t.key,o);if(!(n==="vertical"&&[ue.left,ue.right].includes(r))&&!(n==="horizontal"&&[ue.up,ue.down].includes(r)))return S7[r]},$7=(t,n)=>t.map((o,r)=>t[(r+n)%t.length]),au=t=>{const{activeElement:n}=document;for(const o of t)if(o===n||(o.focus(),n!==document.activeElement))return},kw="currentTabIdChange",Sw="rovingFocusGroup.entryFocus",B7={bubbles:!1,cancelable:!0},_7=e.defineComponent({name:"ElRovingFocusGroupImpl",inheritAttrs:!1,props:b7,emits:[kw,"entryFocus"],setup(t,{emit:n}){var o;const r=e.ref((o=t.currentTabId||t.defaultCurrentTabId)!=null?o:null),l=e.ref(!1),a=e.ref(!1),s=e.ref(null),{getItems:i}=e.inject(ru,void 0),c=e.computed(()=>[{outline:"none"},t.style]),d=h=>{n(kw,h)},f=()=>{l.value=!0},u=ft(h=>{var b;(b=t.onMousedown)==null||b.call(t,h)},()=>{a.value=!0}),p=ft(h=>{var b;(b=t.onFocus)==null||b.call(t,h)},h=>{const b=!e.unref(a),{target:y,currentTarget:w}=h;if(y===w&&b&&!e.unref(l)){const C=new Event(Sw,B7);if(w==null||w.dispatchEvent(C),!C.defaultPrevented){const k=i().filter(B=>B.focusable),E=k.find(B=>B.active),S=k.find(B=>B.id===e.unref(r)),$=[E,S,...k].filter(Boolean).map(B=>B.ref);au($)}}a.value=!1}),m=ft(h=>{var b;(b=t.onBlur)==null||b.call(t,h)},()=>{l.value=!1}),g=(...h)=>{n("entryFocus",...h)};e.provide(lu,{currentTabbedId:e.readonly(r),loop:e.toRef(t,"loop"),tabIndex:e.computed(()=>e.unref(l)?-1:0),rovingFocusGroupRef:s,rovingFocusGroupRootStyle:c,orientation:e.toRef(t,"orientation"),dir:e.toRef(t,"dir"),onItemFocus:d,onItemShiftTab:f,onBlur:m,onFocus:p,onMousedown:u}),e.watch(()=>t.currentTabId,h=>{r.value=h!=null?h:null}),nt(s,Sw,g)}});function v7(t,n,o,r,l,a){return e.renderSlot(t.$slots,"default")}var T7=re(_7,[["render",v7],["__file","roving-focus-group-impl.vue"]]);const V7=e.defineComponent({name:"ElRovingFocusGroup",components:{ElFocusGroupCollection:C7,ElRovingFocusGroupImpl:T7}});function M7(t,n,o,r,l,a){const s=e.resolveComponent("el-roving-focus-group-impl"),i=e.resolveComponent("el-focus-group-collection");return e.openBlock(),e.createBlock(i,null,{default:e.withCtx(()=>[e.createVNode(s,e.normalizeProps(e.guardReactiveProps(t.$attrs)),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},16)]),_:3})}var R7=re(V7,[["render",M7],["__file","roving-focus-group.vue"]]);const I7=e.defineComponent({components:{ElRovingFocusCollectionItem:w7},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:["mousedown","focus","keydown"],setup(t,{emit:n}){const{currentTabbedId:o,loop:r,onItemFocus:l,onItemShiftTab:a}=e.inject(lu,void 0),{getItems:s}=e.inject(ru,void 0),i=Nn(),c=e.ref(null),d=ft(m=>{n("mousedown",m)},m=>{t.focusable?l(e.unref(i)):m.preventDefault()}),f=ft(m=>{n("focus",m)},()=>{l(e.unref(i))}),u=ft(m=>{n("keydown",m)},m=>{const{key:g,shiftKey:h,target:b,currentTarget:y}=m;if(g===ue.tab&&h){a();return}if(b!==y)return;const w=N7(m);if(w){m.preventDefault();let k=s().filter(E=>E.focusable).map(E=>E.ref);switch(w){case"last":{k.reverse();break}case"prev":case"next":{w==="prev"&&k.reverse();const E=k.indexOf(y);k=r.value?$7(k,E+1):k.slice(E+1);break}}e.nextTick(()=>{au(k)})}}),p=e.computed(()=>o.value===e.unref(i));return e.provide(ww,{rovingFocusGroupItemRef:c,tabIndex:e.computed(()=>e.unref(p)?0:-1),handleMousedown:d,handleFocus:f,handleKeydown:u}),{id:i,handleKeydown:u,handleFocus:f,handleMousedown:d}}});function P7(t,n,o,r,l,a){const s=e.resolveComponent("el-roving-focus-collection-item");return e.openBlock(),e.createBlock(s,{id:t.id,focusable:t.focusable,active:t.active},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},8,["id","focusable","active"])}var A7=re(I7,[["render",P7],["__file","roving-focus-item.vue"]]);const pa=se({trigger:nl.trigger,effect:{...vt.effect,default:"light"},type:{type:j(String)},placement:{type:j(String),default:"bottom"},popperOptions:{type:j(Object),default:()=>({})},id:String,size:{type:String,default:""},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:j([Number,String]),default:0},maxHeight:{type:j([Number,String]),default:""},popperClass:{type:String,default:""},disabled:{type:Boolean,default:!1},role:{type:String,default:"menu"},buttonProps:{type:j(Object)}}),su=se({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:$t}}),Ew=se({onKeydown:{type:j(Function)}}),Nw=[ue.down,ue.pageDown,ue.home],iu=[ue.up,ue.pageUp,ue.end],$w=[...Nw,...iu],{ElCollection:Bw,ElCollectionItem:_w,COLLECTION_INJECTION_KEY:vw,COLLECTION_ITEM_INJECTION_KEY:Tw}=Cw("Dropdown"),ma=Symbol("elDropdown"),{ButtonGroup:O7}=At,z7=e.defineComponent({name:"ElDropdown",components:{ElButton:At,ElButtonGroup:O7,ElScrollbar:Zn,ElDropdownCollection:Bw,ElTooltip:Ut,ElRovingFocusGroup:R7,ElOnlyChild:tb,ElIcon:de,ArrowDown:mr},props:pa,emits:["visible-change","click","command"],setup(t,{emit:n}){const o=e.getCurrentInstance(),r=Z("dropdown"),{t:l}=We(),a=e.ref(),s=e.ref(),i=e.ref(null),c=e.ref(null),d=e.ref(null),f=e.ref(null),u=e.ref(!1),p=[ue.enter,ue.space,ue.down],m=e.computed(()=>({maxHeight:Nt(t.maxHeight)})),g=e.computed(()=>[r.m(k.value)]),h=Nn().value,b=e.computed(()=>t.id||h);function y(){w()}function w(){var L;(L=i.value)==null||L.onClose()}function C(){var L;(L=i.value)==null||L.onOpen()}const k=yt();function E(...L){n("command",...L)}function S(){}function N(){const L=e.unref(c);L==null||L.focus(),f.value=null}function $(L){f.value=L}function B(L){u.value||(L.preventDefault(),L.stopImmediatePropagation())}function P(){n("visible-change",!0)}function D(L){(L==null?void 0:L.type)==="keydown"&&c.value.focus()}function z(){n("visible-change",!1)}return e.provide(ma,{contentRef:c,role:e.computed(()=>t.role),triggerId:b,isUsingKeyboard:u,onItemEnter:S,onItemLeave:N}),e.provide("elDropdown",{instance:o,dropdownSize:k,handleClick:y,commandHandler:E,trigger:e.toRef(t,"trigger"),hideOnClick:e.toRef(t,"hideOnClick")}),{t:l,ns:r,scrollbar:d,wrapStyle:m,dropdownTriggerKls:g,dropdownSize:k,triggerId:b,triggerKeys:p,currentTabId:f,handleCurrentTabIdChange:$,handlerMainButtonClick:L=>{n("click",L)},handleEntryFocus:B,handleClose:w,handleOpen:C,handleBeforeShowTooltip:P,handleShowTooltip:D,handleBeforeHideTooltip:z,onFocusAfterTrapped:L=>{var R,T;L.preventDefault(),(T=(R=c.value)==null?void 0:R.focus)==null||T.call(R,{preventScroll:!0})},popperRef:i,contentRef:c,triggeringElementRef:a,referenceElementRef:s}}});function D7(t,n,o,r,l,a){var s;const i=e.resolveComponent("el-dropdown-collection"),c=e.resolveComponent("el-roving-focus-group"),d=e.resolveComponent("el-scrollbar"),f=e.resolveComponent("el-only-child"),u=e.resolveComponent("el-tooltip"),p=e.resolveComponent("el-button"),m=e.resolveComponent("arrow-down"),g=e.resolveComponent("el-icon"),h=e.resolveComponent("el-button-group");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.ns.b(),t.ns.is("disabled",t.disabled)])},[e.createVNode(u,{ref:"popperRef",role:t.role,effect:t.effect,"fallback-placements":["bottom","top"],"popper-options":t.popperOptions,"gpu-acceleration":!1,"hide-after":t.trigger==="hover"?t.hideTimeout:0,"manual-mode":!0,placement:t.placement,"popper-class":[t.ns.e("popper"),t.popperClass],"reference-element":(s=t.referenceElementRef)==null?void 0:s.$el,trigger:t.trigger,"trigger-keys":t.triggerKeys,"trigger-target-el":t.contentRef,"show-after":t.trigger==="hover"?t.showTimeout:0,"stop-popper-mouse-event":!1,"virtual-ref":t.triggeringElementRef,"virtual-triggering":t.splitButton,disabled:t.disabled,transition:`${t.ns.namespace.value}-zoom-in-top`,teleported:"",pure:"",persistent:"",onBeforeShow:t.handleBeforeShowTooltip,onShow:t.handleShowTooltip,onBeforeHide:t.handleBeforeHideTooltip},e.createSlots({content:e.withCtx(()=>[e.createVNode(d,{ref:"scrollbar","wrap-style":t.wrapStyle,tag:"div","view-class":t.ns.e("list")},{default:e.withCtx(()=>[e.createVNode(c,{loop:t.loop,"current-tab-id":t.currentTabId,orientation:"horizontal",onCurrentTabIdChange:t.handleCurrentTabIdChange,onEntryFocus:t.handleEntryFocus},{default:e.withCtx(()=>[e.createVNode(i,null,{default:e.withCtx(()=>[e.renderSlot(t.$slots,"dropdown")]),_:3})]),_:3},8,["loop","current-tab-id","onCurrentTabIdChange","onEntryFocus"])]),_:3},8,["wrap-style","view-class"])]),_:2},[t.splitButton?void 0:{name:"default",fn:e.withCtx(()=>[e.createVNode(f,{id:t.triggerId,role:"button",tabindex:t.tabindex},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},8,["id","tabindex"])])}]),1032,["role","effect","popper-options","hide-after","placement","popper-class","reference-element","trigger","trigger-keys","trigger-target-el","show-after","virtual-ref","virtual-triggering","disabled","transition","onBeforeShow","onShow","onBeforeHide"]),t.splitButton?(e.openBlock(),e.createBlock(h,{key:0},{default:e.withCtx(()=>[e.createVNode(p,e.mergeProps({ref:"referenceElementRef"},t.buttonProps,{size:t.dropdownSize,type:t.type,disabled:t.disabled,tabindex:t.tabindex,onClick:t.handlerMainButtonClick}),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},16,["size","type","disabled","tabindex","onClick"]),e.createVNode(p,e.mergeProps({id:t.triggerId,ref:"triggeringElementRef"},t.buttonProps,{role:"button",size:t.dropdownSize,type:t.type,class:t.ns.e("caret-button"),disabled:t.disabled,tabindex:t.tabindex,"aria-label":t.t("el.dropdown.toggleDropdown")}),{default:e.withCtx(()=>[e.createVNode(g,{class:e.normalizeClass(t.ns.e("icon"))},{default:e.withCtx(()=>[e.createVNode(m)]),_:1},8,["class"])]),_:1},16,["id","size","type","class","disabled","tabindex","aria-label"])]),_:3})):e.createCommentVNode("v-if",!0)],2)}var L7=re(z7,[["render",D7],["__file","dropdown.vue"]]);const F7=e.defineComponent({name:"DropdownItemImpl",components:{ElIcon:de},props:su,emits:["pointermove","pointerleave","click","clickimpl"],setup(t,{emit:n}){const o=Z("dropdown"),{role:r}=e.inject(ma,void 0),{collectionItemRef:l}=e.inject(Tw,void 0),{collectionItemRef:a}=e.inject(k7,void 0),{rovingFocusGroupItemRef:s,tabIndex:i,handleFocus:c,handleKeydown:d,handleMousedown:f}=e.inject(ww,void 0),u=ys(l,a,s),p=e.computed(()=>r.value==="menu"?"menuitem":r.value==="navigation"?"link":"button"),m=ft(g=>{const{code:h}=g;if(h===ue.enter||h===ue.space)return g.preventDefault(),g.stopImmediatePropagation(),n("clickimpl",g),!0},d);return{ns:o,itemRef:u,dataset:{[bw]:""},role:p,tabIndex:i,handleFocus:c,handleKeydown:m,handleMousedown:f}}}),x7=["aria-disabled","tabindex","role"];function H7(t,n,o,r,l,a){const s=e.resolveComponent("el-icon");return e.openBlock(),e.createElementBlock(e.Fragment,null,[t.divided?(e.openBlock(),e.createElementBlock("li",e.mergeProps({key:0,role:"separator",class:t.ns.bem("menu","item","divided")},t.$attrs),null,16)):e.createCommentVNode("v-if",!0),e.createElementVNode("li",e.mergeProps({ref:t.itemRef},{...t.dataset,...t.$attrs},{"aria-disabled":t.disabled,class:[t.ns.be("menu","item"),t.ns.is("disabled",t.disabled)],tabindex:t.tabIndex,role:t.role,onClick:n[0]||(n[0]=i=>t.$emit("clickimpl",i)),onFocus:n[1]||(n[1]=(...i)=>t.handleFocus&&t.handleFocus(...i)),onKeydown:n[2]||(n[2]=(...i)=>t.handleKeydown&&t.handleKeydown(...i)),onMousedown:n[3]||(n[3]=(...i)=>t.handleMousedown&&t.handleMousedown(...i)),onPointermove:n[4]||(n[4]=i=>t.$emit("pointermove",i)),onPointerleave:n[5]||(n[5]=i=>t.$emit("pointerleave",i))}),[t.icon?(e.openBlock(),e.createBlock(s,{key:0},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))]),_:1})):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"default")],16,x7)],64)}var K7=re(F7,[["render",H7],["__file","dropdown-item-impl.vue"]]);const Vw=()=>{const t=e.inject("elDropdown",{}),n=e.computed(()=>t==null?void 0:t.dropdownSize);return{elDropdown:t,_elDropdownSize:n}},W7=e.defineComponent({name:"ElDropdownItem",components:{ElDropdownCollectionItem:_w,ElRovingFocusItem:A7,ElDropdownItemImpl:K7},inheritAttrs:!1,props:su,emits:["pointermove","pointerleave","click"],setup(t,{emit:n,attrs:o}){const{elDropdown:r}=Vw(),l=e.getCurrentInstance(),a=e.ref(null),s=e.computed(()=>{var m,g;return(g=(m=e.unref(a))==null?void 0:m.textContent)!=null?g:""}),{onItemEnter:i,onItemLeave:c}=e.inject(ma,void 0),d=ft(m=>(n("pointermove",m),m.defaultPrevented),u0(m=>{var g;t.disabled?c(m):(i(m),m.defaultPrevented||(g=m.currentTarget)==null||g.focus())})),f=ft(m=>(n("pointerleave",m),m.defaultPrevented),u0(m=>{c(m)})),u=ft(m=>(n("click",m),m.type!=="keydown"&&m.defaultPrevented),m=>{var g,h,b;if(t.disabled){m.stopImmediatePropagation();return}(g=r==null?void 0:r.hideOnClick)!=null&&g.value&&((h=r.handleClick)==null||h.call(r)),(b=r.commandHandler)==null||b.call(r,t.command,l,m)}),p=e.computed(()=>({...t,...o}));return{handleClick:u,handlePointerMove:d,handlePointerLeave:f,textContent:s,propsAndAttrs:p}}});function j7(t,n,o,r,l,a){var s;const i=e.resolveComponent("el-dropdown-item-impl"),c=e.resolveComponent("el-roving-focus-item"),d=e.resolveComponent("el-dropdown-collection-item");return e.openBlock(),e.createBlock(d,{disabled:t.disabled,"text-value":(s=t.textValue)!=null?s:t.textContent},{default:e.withCtx(()=>[e.createVNode(c,{focusable:!t.disabled},{default:e.withCtx(()=>[e.createVNode(i,e.mergeProps(t.propsAndAttrs,{onPointerleave:t.handlePointerLeave,onPointermove:t.handlePointerMove,onClickimpl:t.handleClick}),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},16,["onPointerleave","onPointermove","onClickimpl"])]),_:3},8,["focusable"])]),_:3},8,["disabled","text-value"])}var Mw=re(W7,[["render",j7],["__file","dropdown-item.vue"]]);const U7=e.defineComponent({name:"ElDropdownMenu",props:Ew,setup(t){const n=Z("dropdown"),{_elDropdownSize:o}=Vw(),r=o.value,{focusTrapRef:l,onKeydown:a}=e.inject(sf,void 0),{contentRef:s,role:i,triggerId:c}=e.inject(ma,void 0),{collectionRef:d,getItems:f}=e.inject(vw,void 0),{rovingFocusGroupRef:u,rovingFocusGroupRootStyle:p,tabIndex:m,onBlur:g,onFocus:h,onMousedown:b}=e.inject(lu,void 0),{collectionRef:y}=e.inject(ru,void 0),w=e.computed(()=>[n.b("menu"),n.bm("menu",r==null?void 0:r.value)]),C=ys(s,d,l,u,y),k=ft(S=>{var N;(N=t.onKeydown)==null||N.call(t,S)},S=>{const{currentTarget:N,code:$,target:B}=S;if(N.contains(B),ue.tab===$&&S.stopImmediatePropagation(),S.preventDefault(),B!==e.unref(s)||!$w.includes($))return;const D=f().filter(z=>!z.disabled).map(z=>z.ref);iu.includes($)&&D.reverse(),au(D)});return{size:r,rovingFocusGroupRootStyle:p,tabIndex:m,dropdownKls:w,role:i,triggerId:c,dropdownListWrapperRef:C,handleKeydown:S=>{k(S),a(S)},onBlur:g,onFocus:h,onMousedown:b}}}),G7=["role","aria-labelledby"];function q7(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("ul",{ref:t.dropdownListWrapperRef,class:e.normalizeClass(t.dropdownKls),style:e.normalizeStyle(t.rovingFocusGroupRootStyle),tabindex:-1,role:t.role,"aria-labelledby":t.triggerId,onBlur:n[0]||(n[0]=(...s)=>t.onBlur&&t.onBlur(...s)),onFocus:n[1]||(n[1]=(...s)=>t.onFocus&&t.onFocus(...s)),onKeydown:n[2]||(n[2]=(...s)=>t.handleKeydown&&t.handleKeydown(...s)),onMousedown:n[3]||(n[3]=(...s)=>t.onMousedown&&t.onMousedown(...s))},[e.renderSlot(t.$slots,"default")],46,G7)}var Rw=re(U7,[["render",q7],["__file","dropdown-menu.vue"]]);const Iw=Te(L7,{DropdownItem:Mw,DropdownMenu:Rw}),Pw=ut(Mw),Aw=ut(Rw);let Y7=0;const X7=e.defineComponent({name:"ImgEmpty",setup(){return{ns:Z("empty"),id:++Y7}}}),Z7={viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},J7=["id"],Q7=["stop-color"],ej=["stop-color"],tj=["id"],nj=["stop-color"],oj=["stop-color"],rj=["id"],lj={id:"Illustrations",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},aj={id:"B-type",transform:"translate(-1268.000000, -535.000000)"},sj={id:"Group-2",transform:"translate(1268.000000, 535.000000)"},ij=["fill"],cj=["fill"],dj={id:"Group-Copy",transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},fj=["fill"],uj=["fill"],pj=["fill"],mj=["fill"],hj=["fill"],gj={id:"Rectangle-Copy-17",transform:"translate(53.000000, 45.000000)"},yj=["fill","xlink:href"],bj=["fill","mask"],Cj=["fill"];function wj(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("svg",Z7,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:`linearGradient-1-${t.id}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[e.createElementVNode("stop",{"stop-color":`var(${t.ns.cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,Q7),e.createElementVNode("stop",{"stop-color":`var(${t.ns.cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,ej)],8,J7),e.createElementVNode("linearGradient",{id:`linearGradient-2-${t.id}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[e.createElementVNode("stop",{"stop-color":`var(${t.ns.cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,nj),e.createElementVNode("stop",{"stop-color":`var(${t.ns.cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,oj)],8,tj),e.createElementVNode("rect",{id:`path-3-${t.id}`,x:"0",y:"0",width:"17",height:"36"},null,8,rj)]),e.createElementVNode("g",lj,[e.createElementVNode("g",aj,[e.createElementVNode("g",sj,[e.createElementVNode("path",{id:"Oval-Copy-2",d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${t.ns.cssVarBlockName("fill-color-3")})`},null,8,ij),e.createElementVNode("polygon",{id:"Rectangle-Copy-14",fill:`var(${t.ns.cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,cj),e.createElementVNode("g",dj,[e.createElementVNode("polygon",{id:"Rectangle-Copy-10",fill:`var(${t.ns.cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,fj),e.createElementVNode("polygon",{id:"Rectangle-Copy-11",fill:`var(${t.ns.cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,uj),e.createElementVNode("rect",{id:"Rectangle-Copy-12",fill:`url(#linearGradient-1-${t.id})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,pj),e.createElementVNode("polygon",{id:"Rectangle-Copy-13",fill:`var(${t.ns.cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,mj)]),e.createElementVNode("rect",{id:"Rectangle-Copy-15",fill:`url(#linearGradient-2-${t.id})`,x:"13",y:"45",width:"40",height:"36"},null,8,hj),e.createElementVNode("g",gj,[e.createElementVNode("use",{id:"Mask",fill:`var(${t.ns.cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${t.id}`},null,8,yj),e.createElementVNode("polygon",{id:"Rectangle-Copy",fill:`var(${t.ns.cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${t.id})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,bj)]),e.createElementVNode("polygon",{id:"Rectangle-Copy-18",fill:`var(${t.ns.cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,Cj)])])])])}var kj=re(X7,[["render",wj],["__file","img-empty.vue"]]);const Ow={image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}},Sj=["src"],Ej={key:1},Nj={name:"ElEmpty"},$j=e.defineComponent({...Nj,props:Ow,setup(t){const n=t,{t:o}=We(),r=Z("empty"),l=e.computed(()=>n.description||o("el.table.emptyText")),a=e.computed(()=>({width:n.imageSize?`${n.imageSize}px`:""}));return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(r).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("image")),style:e.normalizeStyle(e.unref(a))},[s.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:s.image,ondragstart:"return false"},null,8,Sj)):e.renderSlot(s.$slots,"image",{key:1},()=>[e.createVNode(kj)])],6),e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("description"))},[s.$slots.description?e.renderSlot(s.$slots,"description",{key:0}):(e.openBlock(),e.createElementBlock("p",Ej,e.toDisplayString(e.unref(l)),1))],2),s.$slots.default?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(r).e("bottom"))},[e.renderSlot(s.$slots,"default")],2)):e.createCommentVNode("v-if",!0)],2))}});var Bj=re($j,[["__file","empty.vue"]]);const cu=Te(Bj),zw=se({model:Object,rules:{type:j(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:{type:String,values:Ko},disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1},scrollToError:Boolean}),Dw={validate:(t,n,o)=>(Ae(t)||Fe(t))&&St(n)&&Fe(o)};function _j(){const t=e.ref([]),n=e.computed(()=>{if(!t.value.length)return"0";const a=Math.max(...t.value);return a?`${a}px`:""});function o(a){return t.value.indexOf(a)}function r(a,s){if(a&&s){const i=o(s);t.value.splice(i,1,a)}else a&&t.value.push(a)}function l(a){const s=o(a);s>-1&&t.value.splice(s,1)}return{autoLabelWidth:n,registerLabelWidth:r,deregisterLabelWidth:l}}const ai=(t,n)=>{const o=cr(n);return o.length>0?t.filter(r=>r.prop&&o.includes(r.prop)):t},vj={name:"ElForm"},Tj=e.defineComponent({...vj,props:zw,emits:Dw,setup(t,{expose:n,emit:o}){const r=t,l=[],a=yt(),s=Z("form"),i=e.computed(()=>{const{labelPosition:w,inline:C}=r;return[s.b(),s.m(a.value||"default"),{[s.m(`label-${w}`)]:w,[s.m("inline")]:C}]}),c=w=>{l.push(w)},d=w=>{w.prop&&l.splice(l.indexOf(w),1)},f=(w=[])=>{!r.model||ai(l,w).forEach(C=>C.resetField())},u=(w=[])=>{ai(l,w).forEach(C=>C.clearValidate())},p=e.computed(()=>!!r.model),m=w=>{if(l.length===0)return[];const C=ai(l,w);return C.length?C:[]},g=async w=>b(void 0,w),h=async(w=[])=>{if(!p.value)return!1;const C=m(w);if(C.length===0)return!0;let k={};for(const E of C)try{await E.validate("")}catch(S){k={...k,...S}}return Object.keys(k).length===0?!0:Promise.reject(k)},b=async(w=[],C)=>{const k=!ot(C);try{const E=await h(w);return E===!0&&(C==null||C(E)),E}catch(E){const S=E;return r.scrollToError&&y(Object.keys(S)[0]),C==null||C(!1,S),k&&Promise.reject(S)}},y=w=>{var C;const k=ai(l,w)[0];k&&((C=k.$el)==null||C.scrollIntoView())};return e.watch(()=>r.rules,()=>{r.validateOnRuleChange&&g().catch(w=>void 0)},{deep:!0}),e.provide(un,e.reactive({...e.toRefs(r),emit:o,resetFields:f,clearValidate:u,validateField:b,addField:c,removeField:d,..._j()})),n({validate:g,validateField:b,resetFields:f,clearValidate:u,scrollToField:y}),(w,C)=>(e.openBlock(),e.createElementBlock("form",{class:e.normalizeClass(e.unref(i))},[e.renderSlot(w.$slots,"default")],2))}});var Vj=re(Tj,[["__file","form.vue"]]);function Br(){return Br=Object.assign?Object.assign.bind():function(t){for(var n=1;n1?n-1:0),r=1;r=a)return i;switch(i){case"%s":return String(o[l++]);case"%d":return Number(o[l++]);case"%j":try{return JSON.stringify(o[l++])}catch(c){return"[Circular]"}break;default:return i}});return s}return t}function Oj(t){return t==="string"||t==="url"||t==="hex"||t==="email"||t==="date"||t==="pattern"}function Bt(t,n){return!!(t==null||n==="array"&&Array.isArray(t)&&!t.length||Oj(n)&&typeof t=="string"&&!t)}function zj(t,n,o){var r=[],l=0,a=t.length;function s(i){r.push.apply(r,i||[]),l++,l===a&&o(r)}t.forEach(function(i){n(i,s)})}function Lw(t,n,o){var r=0,l=t.length;function a(s){if(s&&s.length){o(s);return}var i=r;r=r+1,i()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},ga={integer:function(n){return ga.number(n)&&parseInt(n,10)===n},float:function(n){return ga.number(n)&&!ga.integer(n)},array:function(n){return Array.isArray(n)},regexp:function(n){if(n instanceof RegExp)return!0;try{return!!new RegExp(n)}catch(o){return!1}},date:function(n){return typeof n.getTime=="function"&&typeof n.getMonth=="function"&&typeof n.getYear=="function"&&!isNaN(n.getTime())},number:function(n){return isNaN(n)?!1:typeof n=="number"},object:function(n){return typeof n=="object"&&!ga.array(n)},method:function(n){return typeof n=="function"},email:function(n){return typeof n=="string"&&n.length<=320&&!!n.match(Ww.email)},url:function(n){return typeof n=="string"&&n.length<=2048&&!!n.match(Kj())},hex:function(n){return typeof n=="string"&&!!n.match(Ww.hex)}},Wj=function(n,o,r,l,a){if(n.required&&o===void 0){Kw(n,o,r,l,a);return}var s=["integer","float","array","regexp","object","method","email","number","date","url","hex"],i=n.type;s.indexOf(i)>-1?ga[i](o)||l.push(hn(a.messages.types[i],n.fullField,n.type)):i&&typeof o!==n.type&&l.push(hn(a.messages.types[i],n.fullField,n.type))},jj=function(n,o,r,l,a){var s=typeof n.len=="number",i=typeof n.min=="number",c=typeof n.max=="number",d=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=o,u=null,p=typeof o=="number",m=typeof o=="string",g=Array.isArray(o);if(p?u="number":m?u="string":g&&(u="array"),!u)return!1;g&&(f=o.length),m&&(f=o.replace(d,"_").length),s?f!==n.len&&l.push(hn(a.messages[u].len,n.fullField,n.len)):i&&!c&&fn.max?l.push(hn(a.messages[u].max,n.fullField,n.max)):i&&c&&(fn.max)&&l.push(hn(a.messages[u].range,n.fullField,n.min,n.max))},al="enum",Uj=function(n,o,r,l,a){n[al]=Array.isArray(n[al])?n[al]:[],n[al].indexOf(o)===-1&&l.push(hn(a.messages[al],n.fullField,n[al].join(", ")))},Gj=function(n,o,r,l,a){if(n.pattern){if(n.pattern instanceof RegExp)n.pattern.lastIndex=0,n.pattern.test(o)||l.push(hn(a.messages.pattern.mismatch,n.fullField,o,n.pattern));else if(typeof n.pattern=="string"){var s=new RegExp(n.pattern);s.test(o)||l.push(hn(a.messages.pattern.mismatch,n.fullField,o,n.pattern))}}},Ye={required:Kw,whitespace:Hj,type:Wj,range:jj,enum:Uj,pattern:Gj},qj=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o,"string")&&!n.required)return r();Ye.required(n,o,l,s,a,"string"),Bt(o,"string")||(Ye.type(n,o,l,s,a),Ye.range(n,o,l,s,a),Ye.pattern(n,o,l,s,a),n.whitespace===!0&&Ye.whitespace(n,o,l,s,a))}r(s)},Yj=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&Ye.type(n,o,l,s,a)}r(s)},Xj=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(o===""&&(o=void 0),Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&(Ye.type(n,o,l,s,a),Ye.range(n,o,l,s,a))}r(s)},Zj=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&Ye.type(n,o,l,s,a)}r(s)},Jj=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),Bt(o)||Ye.type(n,o,l,s,a)}r(s)},Qj=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&(Ye.type(n,o,l,s,a),Ye.range(n,o,l,s,a))}r(s)},eU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&(Ye.type(n,o,l,s,a),Ye.range(n,o,l,s,a))}r(s)},tU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(o==null&&!n.required)return r();Ye.required(n,o,l,s,a,"array"),o!=null&&(Ye.type(n,o,l,s,a),Ye.range(n,o,l,s,a))}r(s)},nU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&Ye.type(n,o,l,s,a)}r(s)},oU="enum",rU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a),o!==void 0&&Ye[oU](n,o,l,s,a)}r(s)},lU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o,"string")&&!n.required)return r();Ye.required(n,o,l,s,a),Bt(o,"string")||Ye.pattern(n,o,l,s,a)}r(s)},aU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o,"date")&&!n.required)return r();if(Ye.required(n,o,l,s,a),!Bt(o,"date")){var c;o instanceof Date?c=o:c=new Date(o),Ye.type(n,c,l,s,a),c&&Ye.range(n,c.getTime(),l,s,a)}}r(s)},sU=function(n,o,r,l,a){var s=[],i=Array.isArray(o)?"array":typeof o;Ye.required(n,o,l,s,a,i),r(s)},pu=function(n,o,r,l,a){var s=n.type,i=[],c=n.required||!n.required&&l.hasOwnProperty(n.field);if(c){if(Bt(o,s)&&!n.required)return r();Ye.required(n,o,l,i,a,s),Bt(o,s)||Ye.type(n,o,l,i,a)}r(i)},iU=function(n,o,r,l,a){var s=[],i=n.required||!n.required&&l.hasOwnProperty(n.field);if(i){if(Bt(o)&&!n.required)return r();Ye.required(n,o,l,s,a)}r(s)},ya={string:qj,method:Yj,number:Xj,boolean:Zj,regexp:Jj,integer:Qj,float:eU,array:tU,object:nU,enum:rU,pattern:lU,date:aU,url:pu,hex:pu,email:pu,required:sU,any:iU};function mu(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var n=JSON.parse(JSON.stringify(this));return n.clone=this.clone,n}}}var hu=mu(),ba=function(){function t(o){this.rules=null,this._messages=hu,this.define(o)}var n=t.prototype;return n.define=function(r){var l=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(a){var s=r[a];l.rules[a]=Array.isArray(s)?s:[s]})},n.messages=function(r){return r&&(this._messages=Hw(mu(),r)),this._messages},n.validate=function(r,l,a){var s=this;l===void 0&&(l={}),a===void 0&&(a=function(){});var i=r,c=l,d=a;if(typeof c=="function"&&(d=c,c={}),!this.rules||Object.keys(this.rules).length===0)return d&&d(null,i),Promise.resolve(i);function f(h){var b=[],y={};function w(k){if(Array.isArray(k)){var E;b=(E=b).concat.apply(E,k)}else b.push(k)}for(var C=0;C");const l=Z("form"),a=e.ref(),s=e.ref(0),i=()=>{var f;if((f=a.value)!=null&&f.firstElementChild){const u=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(u))}else return 0},c=(f="update")=>{e.nextTick(()=>{n.default&&t.isAutoWidth&&(f==="update"?s.value=i():f==="remove"&&(o==null||o.deregisterLabelWidth(s.value)))})},d=()=>c("update");return e.onMounted(()=>{d()}),e.onBeforeUnmount(()=>{c("remove")}),e.onUpdated(()=>d()),e.watch(s,(f,u)=>{t.updateAll&&(o==null||o.registerLabelWidth(f,u))}),Wt(e.computed(()=>{var f,u;return(u=(f=a.value)==null?void 0:f.firstElementChild)!=null?u:null}),d),()=>{var f,u;if(!n)return null;const{isAutoWidth:p}=t;if(p){const m=o==null?void 0:o.autoLabelWidth,g={};if(m&&m!=="auto"){const h=Math.max(0,Number.parseInt(m,10)-s.value),b=o.labelPosition==="left"?"marginRight":"marginLeft";h&&(g[b]=`${h}px`)}return e.createVNode("div",{ref:a,class:[l.be("item","label-wrap")],style:g},[(f=n.default)==null?void 0:f.call(n)])}else return e.createVNode(e.Fragment,{ref:a},[(u=n.default)==null?void 0:u.call(n)])}}});const dU=["role","aria-labelledby"],fU={name:"ElFormItem"},uU=e.defineComponent({...fU,props:Uw,setup(t,{expose:n}){const o=t,r=e.useSlots(),l=e.inject(un,void 0),a=e.inject(Lt,void 0),s=yt(void 0,{formItem:!1}),i=Z("form-item"),c=Nn().value,d=e.ref([]),f=e.ref(""),u=ZA(f,100),p=e.ref(""),m=e.ref();let g,h=!1;const b=e.computed(()=>{if((l==null?void 0:l.labelPosition)==="top")return{};const W=Nt(o.labelWidth||(l==null?void 0:l.labelWidth)||"");return W?{width:W}:{}}),y=e.computed(()=>{if((l==null?void 0:l.labelPosition)==="top"||(l==null?void 0:l.inline))return{};if(!o.label&&!o.labelWidth&&B)return{};const W=Nt(o.labelWidth||(l==null?void 0:l.labelWidth)||"");return!o.label&&!r.label?{marginLeft:W}:{}}),w=e.computed(()=>[i.b(),i.m(s.value),i.is("error",f.value==="error"),i.is("validating",f.value==="validating"),i.is("success",f.value==="success"),i.is("required",A.value||o.required),i.is("no-asterisk",l==null?void 0:l.hideRequiredAsterisk),{[i.m("feedback")]:l==null?void 0:l.statusIcon}]),C=e.computed(()=>St(o.inlineMessage)?o.inlineMessage:(l==null?void 0:l.inlineMessage)||!1),k=e.computed(()=>[i.e("error"),{[i.em("error","inline")]:C.value}]),E=e.computed(()=>o.prop?Fe(o.prop)?o.prop:o.prop.join("."):""),S=e.computed(()=>!!(o.label||r.label)),N=e.computed(()=>o.for||d.value.length===1?d.value[0]:void 0),$=e.computed(()=>!N.value&&S.value),B=!!a,P=e.computed(()=>{const W=l==null?void 0:l.model;if(!(!W||!o.prop))return us(W,o.prop).value}),D=e.computed(()=>{const W=o.rules?cr(o.rules):[],Q=l==null?void 0:l.rules;if(Q&&o.prop){const Y=us(Q,o.prop).value;Y&&W.push(...cr(Y))}return o.required!==void 0&&W.push({required:!!o.required}),W}),z=e.computed(()=>D.value.length>0),I=W=>D.value.filter(Y=>!Y.trigger||!W?!0:Array.isArray(Y.trigger)?Y.trigger.includes(W):Y.trigger===W).map(({trigger:Y,...ee})=>ee),A=e.computed(()=>D.value.some(W=>W.required===!0)),L=e.computed(()=>{var W;return u.value==="error"&&o.showMessage&&((W=l==null?void 0:l.showMessage)!=null?W:!0)}),R=e.computed(()=>`${o.label||""}${(l==null?void 0:l.labelSuffix)||""}`),T=W=>{f.value=W},v=W=>{var Q,Y;const{errors:ee,fields:pe}=W;(!ee||!pe)&&console.error(W),T("error"),p.value=ee?(Y=(Q=ee==null?void 0:ee[0])==null?void 0:Q.message)!=null?Y:`${o.prop} is required`:"",l==null||l.emit("validate",o.prop,!1,p.value)},V=()=>{T("success"),l==null||l.emit("validate",o.prop,!0,"")},H=async W=>{const Q=E.value;return new ba({[Q]:W}).validate({[Q]:P.value},{firstFields:!0}).then(()=>(V(),!0)).catch(ee=>(v(ee),Promise.reject(ee)))},x=async(W,Q)=>{if(h)return h=!1,!1;const Y=ot(Q);if(!z.value)return Q==null||Q(!1),!1;const ee=I(W);return ee.length===0?(Q==null||Q(!0),!0):(T("validating"),H(ee).then(()=>(Q==null||Q(!0),!0)).catch(pe=>{const{fields:he}=pe;return Q==null||Q(!1,he),Y?!1:Promise.reject(he)}))},F=()=>{T(""),p.value=""},K=async()=>{const W=l==null?void 0:l.model;if(!W||!o.prop)return;const Q=us(W,o.prop);Jt(Q.value,g)||(h=!0,Q.value=uc(g)),await e.nextTick(),F()},X=W=>{d.value.includes(W)||d.value.push(W)},J=W=>{d.value=d.value.filter(Q=>Q!==W)};e.watch(()=>o.error,W=>{p.value=W||"",T(W?"error":"")},{immediate:!0}),e.watch(()=>o.validateStatus,W=>T(W||""));const U=e.reactive({...e.toRefs(o),$el:m,size:s,validateState:f,labelId:c,inputIds:d,isGroup:$,addInputId:X,removeInputId:J,resetField:K,clearValidate:F,validate:x});return e.provide(Lt,U),e.onMounted(()=>{o.prop&&(l==null||l.addField(U),g=uc(P.value))}),e.onBeforeUnmount(()=>{l==null||l.removeField(U)}),n({size:s,validateMessage:p,validateState:f,validate:x,clearValidate:F,resetField:K}),(W,Q)=>{var Y;return e.openBlock(),e.createElementBlock("div",{ref_key:"formItemRef",ref:m,class:e.normalizeClass(e.unref(w)),role:e.unref($)?"group":void 0,"aria-labelledby":e.unref($)?e.unref(c):void 0},[e.createVNode(e.unref(cU),{"is-auto-width":e.unref(b).width==="auto","update-all":((Y=e.unref(l))==null?void 0:Y.labelWidth)==="auto"},{default:e.withCtx(()=>[e.unref(S)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(N)?"label":"div"),{key:0,id:e.unref(c),for:e.unref(N),class:e.normalizeClass(e.unref(i).e("label")),style:e.normalizeStyle(e.unref(b))},{default:e.withCtx(()=>[e.renderSlot(W.$slots,"label",{label:e.unref(R)},()=>[e.createTextVNode(e.toDisplayString(e.unref(R)),1)])]),_:3},8,["id","for","class","style"])):e.createCommentVNode("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),e.createElementVNode("div",{class:e.normalizeClass(e.unref(i).e("content")),style:e.normalizeStyle(e.unref(y))},[e.renderSlot(W.$slots,"default"),e.createVNode(e.Transition,{name:`${e.unref(i).namespace.value}-zoom-in-top`},{default:e.withCtx(()=>[e.unref(L)?e.renderSlot(W.$slots,"error",{key:0,error:p.value},()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(k))},e.toDisplayString(p.value),3)]):e.createCommentVNode("v-if",!0)]),_:3},8,["name"])],6)],10,dU)}}});var qw=re(uU,[["__file","form-item.vue"]]);const Yw=Te(Vj,{FormItem:qw}),Xw=ut(qw),Zw=se({urlList:{type:j(Array),default:()=>st([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:{type:Boolean,default:!1},teleported:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!0}}),Jw={close:()=>!0,switch:t=>Ne(t)},pU=["src"],mU={name:"ElImageViewer"},hU=e.defineComponent({...mU,props:Zw,emits:Jw,setup(t,{emit:n}){const o=t,r={CONTAIN:{name:"contain",icon:e.markRaw(ND)},ORIGINAL:{name:"original",icon:e.markRaw(LL)}},l=md()?"DOMMouseScroll":"mousewheel",{t:a}=We(),s=Z("image-viewer"),{nextZIndex:i}=Yn(),c=e.ref(),d=e.ref([]),f=e.effectScope(),u=e.ref(!0),p=e.ref(o.initialIndex),m=e.shallowRef(r.CONTAIN),g=e.ref({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),h=e.computed(()=>{const{urlList:R}=o;return R.length<=1}),b=e.computed(()=>p.value===0),y=e.computed(()=>p.value===o.urlList.length-1),w=e.computed(()=>o.urlList[p.value]),C=e.computed(()=>{const{scale:R,deg:T,offsetX:v,offsetY:V,enableTransition:H}=g.value;let x=v/R,F=V/R;switch(T%360){case 90:case-270:[x,F]=[F,-x];break;case 180:case-180:[x,F]=[-x,-F];break;case 270:case-90:[x,F]=[-F,x];break}const K={transform:`scale(${R}) rotate(${T}deg) translate(${x}px, ${F}px)`,transition:H?"transform .3s":""};return m.value.name===r.CONTAIN.name&&(K.maxWidth=K.maxHeight="100%"),K}),k=e.computed(()=>Ne(o.zIndex)?o.zIndex:i());function E(){N(),n("close")}function S(){const R=zo(v=>{switch(v.code){case ue.esc:o.closeOnPressEscape&&E();break;case ue.space:z();break;case ue.left:I();break;case ue.up:L("zoomIn");break;case ue.right:A();break;case ue.down:L("zoomOut");break}}),T=zo(v=>{(v.wheelDelta?v.wheelDelta:-v.detail)>0?L("zoomIn",{zoomRate:1.2,enableTransition:!1}):L("zoomOut",{zoomRate:1.2,enableTransition:!1})});f.run(()=>{nt(document,"keydown",R),nt(document,l,T)})}function N(){f.stop()}function $(){u.value=!1}function B(R){u.value=!1,R.target.alt=a("el.image.error")}function P(R){if(u.value||R.button!==0||!c.value)return;g.value.enableTransition=!1;const{offsetX:T,offsetY:v}=g.value,V=R.pageX,H=R.pageY,x=zo(K=>{g.value={...g.value,offsetX:T+K.pageX-V,offsetY:v+K.pageY-H}}),F=nt(document,"mousemove",x);nt(document,"mouseup",()=>{F()}),R.preventDefault()}function D(){g.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function z(){if(u.value)return;const R=Hl(r),T=Object.values(r),v=m.value.name,H=(T.findIndex(x=>x.name===v)+1)%R.length;m.value=r[R[H]],D()}function I(){if(b.value&&!o.infinite)return;const R=o.urlList.length;p.value=(p.value-1+R)%R}function A(){if(y.value&&!o.infinite)return;const R=o.urlList.length;p.value=(p.value+1)%R}function L(R,T={}){if(u.value)return;const{zoomRate:v,rotateDeg:V,enableTransition:H}={zoomRate:1.4,rotateDeg:90,enableTransition:!0,...T};switch(R){case"zoomOut":g.value.scale>.2&&(g.value.scale=Number.parseFloat((g.value.scale/v).toFixed(3)));break;case"zoomIn":g.value.scale<7&&(g.value.scale=Number.parseFloat((g.value.scale*v).toFixed(3)));break;case"clockwise":g.value.deg+=V;break;case"anticlockwise":g.value.deg-=V;break}g.value.enableTransition=H}return e.watch(w,()=>{e.nextTick(()=>{const R=d.value[0];R!=null&&R.complete||(u.value=!0)})}),e.watch(p,R=>{D(),n("switch",R)}),e.onMounted(()=>{var R,T;S(),(T=(R=c.value)==null?void 0:R.focus)==null||T.call(R)}),(R,T)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",disabled:!R.teleported},[e.createVNode(e.Transition,{name:"viewer-fade",appear:""},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"wrapper",ref:c,tabindex:-1,class:e.normalizeClass(e.unref(s).e("wrapper")),style:e.normalizeStyle({zIndex:e.unref(k)})},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).e("mask")),onClick:T[0]||(T[0]=e.withModifiers(v=>R.hideOnClickModal&&E(),["self"]))},null,2),e.createCommentVNode(" CLOSE "),e.createElementVNode("span",{class:e.normalizeClass([e.unref(s).e("btn"),e.unref(s).e("close")]),onClick:E},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Pn))]),_:1})],2),e.createCommentVNode(" ARROW "),e.unref(h)?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(s).e("btn"),e.unref(s).e("prev"),e.unref(s).is("disabled",!R.infinite&&e.unref(b))]),onClick:I},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1})],2),e.createElementVNode("span",{class:e.normalizeClass([e.unref(s).e("btn"),e.unref(s).e("next"),e.unref(s).is("disabled",!R.infinite&&e.unref(y))]),onClick:A},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})],2)],64)),e.createCommentVNode(" ACTIONS "),e.createElementVNode("div",{class:e.normalizeClass([e.unref(s).e("btn"),e.unref(s).e("actions")])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).e("actions__inner"))},[e.createVNode(e.unref(de),{onClick:T[1]||(T[1]=v=>L("zoomOut"))},{default:e.withCtx(()=>[e.createVNode(e.unref(x8))]),_:1}),e.createVNode(e.unref(de),{onClick:T[2]||(T[2]=v=>L("zoomIn"))},{default:e.withCtx(()=>[e.createVNode(e.unref(I0))]),_:1}),e.createElementVNode("i",{class:e.normalizeClass(e.unref(s).e("actions__divider"))},null,2),e.createVNode(e.unref(de),{onClick:z},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(m).icon)))]),_:1}),e.createElementVNode("i",{class:e.normalizeClass(e.unref(s).e("actions__divider"))},null,2),e.createVNode(e.unref(de),{onClick:T[3]||(T[3]=v=>L("anticlockwise"))},{default:e.withCtx(()=>[e.createVNode(e.unref(_L))]),_:1}),e.createVNode(e.unref(de),{onClick:T[4]||(T[4]=v=>L("clockwise"))},{default:e.withCtx(()=>[e.createVNode(e.unref(IL))]),_:1})],2)],2),e.createCommentVNode(" CANVAS "),e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).e("canvas"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.urlList,(v,V)=>e.withDirectives((e.openBlock(),e.createElementBlock("img",{ref_for:!0,ref:H=>d.value[V]=H,key:v,src:v,style:e.normalizeStyle(e.unref(C)),class:e.normalizeClass(e.unref(s).e("img")),onLoad:$,onError:B,onMousedown:P},null,46,pU)),[[e.vShow,V===p.value]])),128))],2),e.renderSlot(R.$slots,"default")],6)]),_:3})],8,["disabled"]))}});var gU=re(hU,[["__file","image-viewer.vue"]]);const gu=Te(gU),Qw=se({hideOnClickModal:{type:Boolean,default:!1},src:{type:String,default:""},fit:{type:String,values:["","contain","cover","fill","none","scale-down"],default:""},loading:{type:String,values:["eager","lazy"]},lazy:{type:Boolean,default:!1},scrollContainer:{type:j([String,Object])},previewSrcList:{type:j(Array),default:()=>st([])},previewTeleported:{type:Boolean,default:!1},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0}}),ek={load:t=>t instanceof Event,error:t=>t instanceof Event,switch:t=>Ne(t),close:()=>!0,show:()=>!0},yU=["src","loading"],bU={key:0},CU={name:"ElImage",inheritAttrs:!1},wU=e.defineComponent({...CU,props:Qw,emits:ek,setup(t,{emit:n}){const o=t;let r="";const{t:l}=We(),a=Z("image"),s=e.useAttrs(),i=ws(),c=e.ref(),d=e.ref(!1),f=e.ref(!0),u=e.ref(!1),p=e.ref(),m=e.ref(),g=Oe&&"loading"in HTMLImageElement.prototype;let h,b;const y=e.computed(()=>s.style),w=e.computed(()=>{const{fit:T}=o;return Oe&&T?{objectFit:T}:{}}),C=e.computed(()=>{const{previewSrcList:T}=o;return Array.isArray(T)&&T.length>0}),k=e.computed(()=>{const{previewSrcList:T,initialIndex:v}=o;let V=v;return v>T.length-1&&(V=0),V}),E=e.computed(()=>o.loading==="eager"?!1:!g&&o.loading==="lazy"||o.lazy),S=()=>{!Oe||(f.value=!0,d.value=!1,c.value=o.src)};function N(T){f.value=!1,d.value=!1,n("load",T)}function $(T){f.value=!1,d.value=!0,n("error",T)}function B(){aO(p.value,m.value)&&(S(),z())}const P=b0(B,200);async function D(){var T;if(!Oe)return;await e.nextTick();const{scrollContainer:v}=o;go(v)?m.value=v:Fe(v)&&v!==""?m.value=(T=document.querySelector(v))!=null?T:void 0:p.value&&(m.value=id(p.value)),m.value&&(h=nt(m,"scroll",P),setTimeout(()=>B(),100))}function z(){!Oe||!m.value||!P||(h==null||h(),m.value=void 0)}function I(T){if(!!T.ctrlKey){if(T.deltaY<0)return T.preventDefault(),!1;if(T.deltaY>0)return T.preventDefault(),!1}}function A(){!C.value||(b=nt("wheel",I,{passive:!1}),r=document.body.style.overflow,document.body.style.overflow="hidden",u.value=!0,n("show"))}function L(){b==null||b(),document.body.style.overflow=r,u.value=!1,n("close")}function R(T){n("switch",T)}return e.watch(()=>o.src,()=>{E.value?(f.value=!0,d.value=!1,z(),D()):S()}),e.onMounted(()=>{E.value?D():S()}),(T,v)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"container",ref:p,class:e.normalizeClass([e.unref(a).b(),T.$attrs.class]),style:e.normalizeStyle(e.unref(y))},[c.value!==void 0&&!d.value?(e.openBlock(),e.createElementBlock("img",e.mergeProps({key:0},e.unref(i),{src:c.value,loading:T.loading,style:e.unref(w),class:[e.unref(a).e("inner"),e.unref(C)&&e.unref(a).e("preview"),f.value&&e.unref(a).is("loading")],onClick:A,onLoad:N,onError:$}),null,16,yU)):e.createCommentVNode("v-if",!0),f.value||d.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(a).e("wrapper"))},[f.value?e.renderSlot(T.$slots,"placeholder",{key:0},()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("placeholder"))},null,2)]):d.value?e.renderSlot(T.$slots,"error",{key:1},()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).e("error"))},e.toDisplayString(e.unref(l)("el.image.error")),3)]):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),e.unref(C)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[u.value?(e.openBlock(),e.createBlock(e.unref(gu),{key:0,"z-index":T.zIndex,"initial-index":e.unref(k),infinite:T.infinite,"url-list":T.previewSrcList,"hide-on-click-modal":T.hideOnClickModal,teleported:T.previewTeleported,"close-on-press-escape":T.closeOnPressEscape,onClose:L,onSwitch:R},{default:e.withCtx(()=>[T.$slots.viewer?(e.openBlock(),e.createElementBlock("div",bU,[e.renderSlot(T.$slots,"viewer")])):e.createCommentVNode("v-if",!0)]),_:3},8,["z-index","initial-index","infinite","url-list","hide-on-click-modal","teleported","close-on-press-escape"])):e.createCommentVNode("v-if",!0)],64)):e.createCommentVNode("v-if",!0)],6))}});var kU=re(wU,[["__file","image.vue"]]);const tk=Te(kU),nk=se({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,disabled:Boolean,size:tn,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:t=>t===null||Ne(t)||["min","max"].includes(t),default:null},name:String,label:String,placeholder:String,precision:{type:Number,validator:t=>t>=0&&t===Number.parseInt(`${t}`,10)},validateEvent:{type:Boolean,default:!0}}),ok={[at]:(t,n)=>t!==n,blur:t=>t instanceof FocusEvent,focus:t=>t instanceof FocusEvent,[fn]:t=>Ne(t)||Qt(t),[Ve]:t=>Ne(t)||Qt(t)},SU=["aria-label","onKeydown"],EU=["aria-label","onKeydown"],NU={name:"ElInputNumber"},$U=e.defineComponent({...NU,props:nk,emits:ok,setup(t,{expose:n,emit:o}){const r=t,{t:l}=We(),a=Z("input-number"),s=e.ref(),i=e.reactive({currentValue:r.modelValue,userInput:null}),{formItem:c}=Co(),d=e.computed(()=>Ne(r.modelValue)&&w(r.modelValue,-1)Ne(r.modelValue)&&w(r.modelValue)>r.max),u=e.computed(()=>{const I=y(r.step);return Rt(r.precision)?Math.max(y(r.modelValue),I):(I>r.precision,r.precision)}),p=e.computed(()=>r.controls&&r.controlsPosition==="right"),m=yt(),g=bo(),h=e.computed(()=>{if(i.userInput!==null)return i.userInput;let I=i.currentValue;if(Qt(I))return"";if(Ne(I)){if(Number.isNaN(I))return"";Rt(r.precision)||(I=I.toFixed(r.precision))}return I}),b=(I,A)=>{if(Rt(A)&&(A=u.value),A===0)return Math.round(I);let L=String(I);const R=L.indexOf(".");if(R===-1||!L.replace(".","").split("")[R+A])return I;const V=L.length;return L.charAt(V-1)==="5"&&(L=`${L.slice(0,Math.max(0,V-1))}6`),Number.parseFloat(Number(L).toFixed(A))},y=I=>{if(Qt(I))return 0;const A=I.toString(),L=A.indexOf(".");let R=0;return L!==-1&&(R=A.length-L-1),R},w=(I,A=1)=>Ne(I)?b(I+r.step*A):i.currentValue,C=()=>{if(g.value||f.value)return;const I=r.modelValue||0,A=w(I);S(A)},k=()=>{if(g.value||d.value)return;const I=r.modelValue||0,A=w(I,-1);S(A)},E=(I,A)=>{const{max:L,min:R,step:T,precision:v,stepStrictly:V,valueOnClear:H}=r;let x=Number(I);if(Qt(I)||Number.isNaN(x))return null;if(I===""){if(H===null)return null;x=Fe(H)?{min:R,max:L}[H]:H}return V&&(x=b(Math.round(x/T)*T,v)),Rt(v)||(x=b(x,v)),(x>L||xL?L:R,A&&o("update:modelValue",x)),x},S=I=>{var A;const L=i.currentValue,R=E(I);L!==R&&(i.userInput=null,o("update:modelValue",R),o("input",R),o("change",R,L),r.validateEvent&&((A=c==null?void 0:c.validate)==null||A.call(c,"change").catch(T=>void 0)),i.currentValue=R)},N=I=>i.userInput=I,$=I=>{const A=I!==""?Number(I):"";(Ne(A)&&!Number.isNaN(A)||I==="")&&S(A),i.userInput=null},B=()=>{var I,A;(A=(I=s.value)==null?void 0:I.focus)==null||A.call(I)},P=()=>{var I,A;(A=(I=s.value)==null?void 0:I.blur)==null||A.call(I)},D=I=>{o("focus",I)},z=I=>{var A;o("blur",I),r.validateEvent&&((A=c==null?void 0:c.validate)==null||A.call(c,"blur").catch(L=>void 0))};return e.watch(()=>r.modelValue,I=>{i.currentValue=E(I,!0),i.userInput=null},{immediate:!0}),e.onMounted(()=>{var I;const{min:A,max:L,modelValue:R}=r,T=(I=s.value)==null?void 0:I.input;if(T.setAttribute("role","spinbutton"),Number.isFinite(L)?T.setAttribute("aria-valuemax",String(L)):T.removeAttribute("aria-valuemax"),Number.isFinite(A)?T.setAttribute("aria-valuemin",String(A)):T.removeAttribute("aria-valuemin"),T.setAttribute("aria-valuenow",String(i.currentValue)),T.setAttribute("aria-disabled",String(g.value)),!Ne(R)&&R!=null){let v=Number(R);Number.isNaN(v)&&(v=null),o("update:modelValue",v)}}),e.onUpdated(()=>{var I;const A=(I=s.value)==null?void 0:I.input;A==null||A.setAttribute("aria-valuenow",`${i.currentValue}`)}),n({focus:B,blur:P}),(I,A)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(a).b(),e.unref(a).m(e.unref(m)),e.unref(a).is("disabled",e.unref(g)),e.unref(a).is("without-controls",!I.controls),e.unref(a).is("controls-right",e.unref(p))]),onDragstart:A[0]||(A[0]=e.withModifiers(()=>{},["prevent"]))},[I.controls?e.withDirectives((e.openBlock(),e.createElementBlock("span",{key:0,role:"button","aria-label":e.unref(l)("el.inputNumber.decrease"),class:e.normalizeClass([e.unref(a).e("decrease"),e.unref(a).is("disabled",e.unref(d))]),onKeydown:e.withKeys(k,["enter"])},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.unref(p)?(e.openBlock(),e.createBlock(e.unref(mr),{key:0})):(e.openBlock(),e.createBlock(e.unref(GD),{key:1}))]),_:1})],42,SU)),[[e.unref(aa),k]]):e.createCommentVNode("v-if",!0),I.controls?e.withDirectives((e.openBlock(),e.createElementBlock("span",{key:1,role:"button","aria-label":e.unref(l)("el.inputNumber.increase"),class:e.normalizeClass([e.unref(a).e("increase"),e.unref(a).is("disabled",e.unref(f))]),onKeydown:e.withKeys(C,["enter"])},[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.unref(p)?(e.openBlock(),e.createBlock(e.unref(Kl),{key:0})):(e.openBlock(),e.createBlock(e.unref(M0),{key:1}))]),_:1})],42,EU)),[[e.unref(aa),C]]):e.createCommentVNode("v-if",!0),e.createVNode(e.unref(It),{id:I.id,ref_key:"input",ref:s,type:"number",step:I.step,"model-value":e.unref(h),placeholder:I.placeholder,disabled:e.unref(g),size:e.unref(m),max:I.max,min:I.min,name:I.name,label:I.label,"validate-event":!1,onKeydown:[e.withKeys(e.withModifiers(C,["prevent"]),["up"]),e.withKeys(e.withModifiers(k,["prevent"]),["down"])],onBlur:z,onFocus:D,onInput:N,onChange:$},null,8,["id","step","model-value","placeholder","disabled","size","max","min","name","label","onKeydown"])],34))}});var BU=re($U,[["__file","input-number.vue"]]);const yu=Te(BU),rk=se({type:{type:String,values:["primary","success","warning","info","danger","default"],default:"default"},underline:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},href:{type:String,default:""},icon:{type:$t,default:""}}),lk={click:t=>t instanceof MouseEvent},_U=["href"],vU={name:"ElLink"},TU=e.defineComponent({...vU,props:rk,emits:lk,setup(t,{emit:n}){const o=t,r=Z("link");function l(a){o.disabled||n("click",a)}return(a,s)=>(e.openBlock(),e.createElementBlock("a",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).m(a.type),e.unref(r).is("disabled",a.disabled),e.unref(r).is("underline",a.underline&&!a.disabled)]),href:a.disabled||!a.href?void 0:a.href,onClick:l},[a.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:0},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.icon)))]),_:1})):e.createCommentVNode("v-if",!0),a.$slots.default?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(r).e("inner"))},[e.renderSlot(a.$slots,"default")],2)):e.createCommentVNode("v-if",!0),a.$slots.icon?e.renderSlot(a.$slots,"icon",{key:2}):e.createCommentVNode("v-if",!0)],10,_U))}});var VU=re(TU,[["__file","link.vue"]]);const ak=Te(VU);class MU{constructor(n,o){this.parent=n,this.domNode=o,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(n){n===this.subMenuItems.length?n=0:n<0&&(n=this.subMenuItems.length-1),this.subMenuItems[n].focus(),this.subIndex=n}addListeners(){const n=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,o=>{o.addEventListener("keydown",r=>{let l=!1;switch(r.code){case ue.down:{this.gotoSubIndex(this.subIndex+1),l=!0;break}case ue.up:{this.gotoSubIndex(this.subIndex-1),l=!0;break}case ue.tab:{cs(n,"mouseleave");break}case ue.enter:case ue.space:{l=!0,r.currentTarget.click();break}}return l&&(r.preventDefault(),r.stopPropagation()),!1})})}}var RU=MU;class IU{constructor(n,o){this.domNode=n,this.submenu=null,this.submenu=null,this.init(o)}init(n){this.domNode.setAttribute("tabindex","0");const o=this.domNode.querySelector(`.${n}-menu`);o&&(this.submenu=new RU(this,o)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",n=>{let o=!1;switch(n.code){case ue.down:{cs(n.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),o=!0;break}case ue.up:{cs(n.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),o=!0;break}case ue.tab:{cs(n.currentTarget,"mouseleave");break}case ue.enter:case ue.space:{o=!0,n.currentTarget.click();break}}o&&n.preventDefault()})}}var PU=IU;class AU{constructor(n,o){this.domNode=n,this.init(o)}init(n){const o=this.domNode.childNodes;Array.from(o).forEach(r=>{r.nodeType===1&&new PU(r,n)})}}var OU=AU;const zU=e.defineComponent({name:"ElMenuCollapseTransition",setup(){const t=Z("menu");return{listeners:{onBeforeEnter:o=>o.style.opacity="0.2",onEnter(o,r){Un(o,`${t.namespace.value}-opacity-transition`),o.style.opacity="1",r()},onAfterEnter(o){en(o,`${t.namespace.value}-opacity-transition`),o.style.opacity=""},onBeforeLeave(o){o.dataset||(o.dataset={}),In(o,t.m("collapse"))?(en(o,t.m("collapse")),o.dataset.oldOverflow=o.style.overflow,o.dataset.scrollWidth=o.clientWidth.toString(),Un(o,t.m("collapse"))):(Un(o,t.m("collapse")),o.dataset.oldOverflow=o.style.overflow,o.dataset.scrollWidth=o.clientWidth.toString(),en(o,t.m("collapse"))),o.style.width=`${o.scrollWidth}px`,o.style.overflow="hidden"},onLeave(o){Un(o,"horizontal-collapse-transition"),o.style.width=`${o.dataset.scrollWidth}px`}}}}});function DU(t,n,o,r,l,a){return e.openBlock(),e.createBlock(e.Transition,e.mergeProps({mode:"out-in"},t.listeners),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},16)}var LU=re(zU,[["render",DU],["__file","menu-collapse-transition.vue"]]);function sk(t,n){const o=e.computed(()=>{let l=t.parent;const a=[n.value];for(;l.type.name!=="ElMenu";)l.props.index&&a.unshift(l.props.index),l=l.parent;return a});return{parentMenu:e.computed(()=>{let l=t.parent;for(;l&&!["ElMenu","ElSubMenu"].includes(l.type.name);)l=l.parent;return l}),indexPath:o}}function FU(t){return e.computed(()=>{const o=t.backgroundColor;return o?new aC(o).shade(20).toString():""})}const ik=(t,n)=>{const o=Z("menu");return e.computed(()=>o.cssVarBlock({"text-color":t.textColor||"","hover-text-color":t.textColor||"","bg-color":t.backgroundColor||"","hover-bg-color":FU(t).value||"","active-color":t.activeTextColor||"",level:`${n}`}))},ck=se({index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{type:Number,default:6}}),bu="ElSubMenu";var Cu=e.defineComponent({name:bu,props:ck,setup(t,{slots:n,expose:o}){const r=e.getCurrentInstance(),{indexPath:l,parentMenu:a}=sk(r,e.computed(()=>t.index)),s=Z("menu"),i=Z("sub-menu"),c=e.inject("rootMenu");c||Et(bu,"can not inject root menu");const d=e.inject(`subMenu:${a.value.uid}`);d||Et(bu,"can not inject sub menu");const f=e.ref({}),u=e.ref({});let p;const m=e.ref(!1),g=e.ref(),h=e.ref(null),b=e.computed(()=>D.value==="horizontal"&&w.value?"bottom-start":"right-start"),y=e.computed(()=>D.value==="horizontal"&&w.value||D.value==="vertical"&&!c.props.collapse?mr:jt),w=e.computed(()=>d.level===0),C=e.computed(()=>t.popperAppendToBody===void 0?w.value:Boolean(t.popperAppendToBody)),k=e.computed(()=>c.props.collapse?`${s.namespace.value}-zoom-in-left`:`${s.namespace.value}-zoom-in-top`),E=e.computed(()=>D.value==="horizontal"&&w.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),S=e.computed(()=>c.openedMenus.includes(t.index)),N=e.computed(()=>{let V=!1;return Object.values(f.value).forEach(H=>{H.active&&(V=!0)}),Object.values(u.value).forEach(H=>{H.active&&(V=!0)}),V}),$=e.computed(()=>c.props.backgroundColor||""),B=e.computed(()=>c.props.activeTextColor||""),P=e.computed(()=>c.props.textColor||""),D=e.computed(()=>c.props.mode),z=e.reactive({index:t.index,indexPath:l,active:N}),I=e.computed(()=>D.value!=="horizontal"?{color:P.value}:{borderBottomColor:N.value?c.props.activeTextColor?B.value:"":"transparent",color:N.value?B.value:P.value}),A=()=>{var V,H,x;return(x=(H=(V=h.value)==null?void 0:V.popperRef)==null?void 0:H.popperInstanceRef)==null?void 0:x.destroy()},L=V=>{V||A()},R=()=>{c.props.menuTrigger==="hover"&&c.props.mode==="horizontal"||c.props.collapse&&c.props.mode==="vertical"||t.disabled||c.handleSubMenuClick({index:t.index,indexPath:l.value,active:N.value})},T=(V,H=t.showTimeout)=>{var x;V.type!=="focus"&&(c.props.menuTrigger==="click"&&c.props.mode==="horizontal"||!c.props.collapse&&c.props.mode==="vertical"||t.disabled||(d.mouseInChild.value=!0,p==null||p(),{stop:p}=pr(()=>{c.openMenu(t.index,l.value)},H),C.value&&((x=a.value.vnode.el)==null||x.dispatchEvent(new MouseEvent("mouseenter")))))},v=(V=!1)=>{var H,x;c.props.menuTrigger==="click"&&c.props.mode==="horizontal"||!c.props.collapse&&c.props.mode==="vertical"||(p==null||p(),d.mouseInChild.value=!1,{stop:p}=pr(()=>!m.value&&c.closeMenu(t.index,l.value),t.hideTimeout),C.value&&V&&((H=r.parent)==null?void 0:H.type.name)==="ElSubMenu"&&((x=d.handleMouseleave)==null||x.call(d,!0)))};e.watch(()=>c.props.collapse,V=>L(Boolean(V)));{const V=x=>{u.value[x.index]=x},H=x=>{delete u.value[x.index]};e.provide(`subMenu:${r.uid}`,{addSubMenu:V,removeSubMenu:H,handleMouseleave:v,mouseInChild:m,level:d.level+1})}return o({opened:S}),e.onMounted(()=>{c.addSubMenu(z),d.addSubMenu(z)}),e.onBeforeUnmount(()=>{d.removeSubMenu(z),c.removeSubMenu(z)}),()=>{var V;const H=[(V=n.title)==null?void 0:V.call(n),e.h(de,{class:i.e("icon-arrow")},{default:()=>e.h(y.value)})],x=ik(c.props,d.level+1),F=c.isMenuPopup?e.h(Ut,{ref:h,visible:S.value,effect:"light",pure:!0,offset:t.popperOffset,showArrow:!1,persistent:!0,popperClass:t.popperClass,placement:b.value,teleported:C.value,fallbackPlacements:E.value,transition:k.value,gpuAcceleration:!1},{content:()=>{var K;return e.h("div",{class:[s.m(D.value),s.m("popup-container"),t.popperClass],onMouseenter:X=>T(X,100),onMouseleave:()=>v(!0),onFocus:X=>T(X,100)},[e.h("ul",{class:[s.b(),s.m("popup"),s.m(`popup-${b.value}`)],style:x.value},[(K=n.default)==null?void 0:K.call(n)])])},default:()=>e.h("div",{class:i.e("title"),style:[I.value,{backgroundColor:$.value}],onClick:R},H)}):e.h(e.Fragment,{},[e.h("div",{class:i.e("title"),style:[I.value,{backgroundColor:$.value}],ref:g,onClick:R},H),e.h(ei,{},{default:()=>{var K;return e.withDirectives(e.h("ul",{role:"menu",class:[s.b(),s.m("inline")],style:x.value},[(K=n.default)==null?void 0:K.call(n)]),[[e.vShow,S.value]])}})]);return e.h("li",{class:[i.b(),i.is("active",N.value),i.is("opened",S.value),i.is("disabled",t.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:S.value,onMouseenter:T,onMouseleave:()=>v(!0),onFocus:T},[F])}}});const dk=se({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:j(Array),default:()=>st([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0}}),wu=t=>Array.isArray(t)&&t.every(n=>Fe(n)),fk={close:(t,n)=>Fe(t)&&wu(n),open:(t,n)=>Fe(t)&&wu(n),select:(t,n,o,r)=>Fe(t)&&wu(n)&&it(o)&&(r===void 0||r instanceof Promise)};var xU=e.defineComponent({name:"ElMenu",props:dk,emits:fk,setup(t,{emit:n,slots:o,expose:r}){const l=e.getCurrentInstance(),a=l.appContext.config.globalProperties.$router,s=e.ref(),i=Z("menu"),c=Z("sub-menu"),d=e.ref(t.defaultOpeneds&&!t.collapse?t.defaultOpeneds.slice(0):[]),f=e.ref(t.defaultActive),u=e.ref({}),p=e.ref({}),m=e.computed(()=>t.mode==="horizontal"||t.mode==="vertical"&&t.collapse),g=()=>{const N=f.value&&u.value[f.value];if(!N||t.mode==="horizontal"||t.collapse)return;N.indexPath.forEach(B=>{const P=p.value[B];P&&h(B,P.indexPath)})},h=(N,$)=>{d.value.includes(N)||(t.uniqueOpened&&(d.value=d.value.filter(B=>$.includes(B))),d.value.push(N),n("open",N,$))},b=(N,$)=>{const B=d.value.indexOf(N);B!==-1&&d.value.splice(B,1),n("close",N,$)},y=({index:N,indexPath:$})=>{d.value.includes(N)?b(N,$):h(N,$)},w=N=>{(t.mode==="horizontal"||t.collapse)&&(d.value=[]);const{index:$,indexPath:B}=N;if(!($===void 0||B===void 0))if(t.router&&a){const P=N.route||$,D=a.push(P).then(z=>(z||(f.value=$),z));n("select",$,B,{index:$,indexPath:B,route:P},D)}else f.value=$,n("select",$,B,{index:$,indexPath:B})},C=N=>{const $=u.value,B=$[N]||f.value&&$[f.value]||$[t.defaultActive];B?f.value=B.index:f.value=N},k=()=>{e.nextTick(()=>l.proxy.$forceUpdate())};e.watch(()=>t.defaultActive,N=>{u.value[N]||(f.value=""),C(N)}),e.watch(()=>t.collapse,N=>{N&&(d.value=[])}),e.watch(u.value,g);let E;e.watchEffect(()=>{t.mode==="horizontal"&&t.ellipsis?E=Wt(s,k).stop:E==null||E()});{const N=D=>{p.value[D.index]=D},$=D=>{delete p.value[D.index]},B=D=>{u.value[D.index]=D},P=D=>{delete u.value[D.index]};e.provide("rootMenu",e.reactive({props:t,openedMenus:d,items:u,subMenus:p,activeIndex:f,isMenuPopup:m,addMenuItem:B,removeMenuItem:P,addSubMenu:N,removeSubMenu:$,openMenu:h,closeMenu:b,handleMenuItemClick:w,handleSubMenuClick:y})),e.provide(`subMenu:${l.uid}`,{addSubMenu:N,removeSubMenu:$,mouseInChild:e.ref(!1),level:0})}e.onMounted(()=>{t.mode==="horizontal"&&new OU(l.vnode.el,i.namespace.value)}),r({open:$=>{const{indexPath:B}=p.value[$];B.forEach(P=>h(P,B))},close:b,handleResize:k});const S=N=>{const $=Array.isArray(N)?N:[N],B=[];return $.forEach(P=>{Array.isArray(P.children)?B.push(...S(P.children)):B.push(P)}),B};return()=>{var N,$,B,P;let D=($=(N=o.default)==null?void 0:N.call(o))!=null?$:[];const z=[];if(t.mode==="horizontal"&&s.value){const L=Array.from((P=(B=s.value)==null?void 0:B.childNodes)!=null?P:[]).filter(J=>J.nodeName!=="#text"||J.nodeValue),R=S(D),T=64,v=Number.parseInt(getComputedStyle(s.value).paddingLeft,10),V=Number.parseInt(getComputedStyle(s.value).paddingRight,10),H=s.value.clientWidth-v-V;let x=0,F=0;L.forEach((J,U)=>{x+=J.offsetWidth||0,x<=H-T&&(F=U+1)});const K=R.slice(0,F),X=R.slice(F);(X==null?void 0:X.length)&&t.ellipsis&&(D=K,z.push(e.h(Cu,{index:"sub-menu-more",class:c.e("hide-arrow")},{title:()=>e.h(de,{class:c.e("icon-more")},{default:()=>e.h(rL)}),default:()=>X})))}const I=ik(t,0),A=e.h("ul",{key:String(t.collapse),role:"menubar",ref:s,style:I.value,class:{[i.b()]:!0,[i.m(t.mode)]:!0,[i.m("collapse")]:t.collapse}},[...D,...z]);return t.collapseTransition&&t.mode==="vertical"?e.h(LU,()=>A):A}}});const uk=se({index:{type:j([String,null]),default:null},route:{type:j([String,Object])},disabled:Boolean}),pk={click:t=>Fe(t.index)&&Array.isArray(t.indexPath)},ku="ElMenuItem",HU=e.defineComponent({name:ku,components:{ElTooltip:Ut},props:uk,emits:pk,setup(t,{emit:n}){const o=e.getCurrentInstance(),r=e.inject("rootMenu"),l=Z("menu"),a=Z("menu-item");r||Et(ku,"can not inject root menu");const{parentMenu:s,indexPath:i}=sk(o,e.toRef(t,"index")),c=e.inject(`subMenu:${s.value.uid}`);c||Et(ku,"can not inject sub menu");const d=e.computed(()=>t.index===r.activeIndex),f=e.reactive({index:t.index,indexPath:i,active:d}),u=()=>{t.disabled||(r.handleMenuItemClick({index:t.index,indexPath:i.value,route:t.route}),n("click",f))};return e.onMounted(()=>{c.addSubMenu(f),r.addMenuItem(f)}),e.onBeforeUnmount(()=>{c.removeSubMenu(f),r.removeMenuItem(f)}),{Effect:Qy,parentMenu:s,rootMenu:r,active:d,nsMenu:l,nsMenuItem:a,handleClick:u}}});function KU(t,n,o,r,l,a){const s=e.resolveComponent("el-tooltip");return e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass([t.nsMenuItem.b(),t.nsMenuItem.is("active",t.active),t.nsMenuItem.is("disabled",t.disabled)]),role:"menuitem",tabindex:"-1",onClick:n[0]||(n[0]=(...i)=>t.handleClick&&t.handleClick(...i))},[t.parentMenu.type.name==="ElMenu"&&t.rootMenu.props.collapse&&t.$slots.title?(e.openBlock(),e.createBlock(s,{key:0,effect:t.Effect.DARK,placement:"right","fallback-placements":["left"],persistent:""},{content:e.withCtx(()=>[e.renderSlot(t.$slots,"title")]),default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(t.nsMenu.be("tooltip","trigger"))},[e.renderSlot(t.$slots,"default")],2)]),_:3},8,["effect"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.renderSlot(t.$slots,"default"),e.renderSlot(t.$slots,"title")],64))],2)}var mk=re(HU,[["render",KU],["__file","menu-item.vue"]]);const hk={title:String},WU="ElMenuItemGroup",jU=e.defineComponent({name:WU,props:hk,setup(){return{ns:Z("menu-item-group")}}});function UU(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(t.ns.b())},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("title"))},[t.$slots.title?e.renderSlot(t.$slots,"title",{key:1}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(t.title),1)],64))],2),e.createElementVNode("ul",null,[e.renderSlot(t.$slots,"default")])],2)}var gk=re(jU,[["render",UU],["__file","menu-item-group.vue"]]);const yk=Te(xU,{MenuItem:mk,MenuItemGroup:gk,SubMenu:Cu}),bk=ut(mk),Ck=ut(gk),GU=ut(Cu),wk=se({icon:{type:$t,default:()=>GO},title:String,content:{type:String,default:""}}),kk={back:()=>!0},qU={name:"ElPageHeader"},YU=e.defineComponent({...qU,props:wk,emits:kk,setup(t,{emit:n}){const{t:o}=We(),r=Z("page-header");function l(){n("back")}return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(r).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("left")),onClick:l},[a.icon||a.$slots.icon?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(r).e("icon"))},[e.renderSlot(a.$slots,"icon",{},()=>[a.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:0},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.icon)))]),_:1})):e.createCommentVNode("v-if",!0)])],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("title"))},[e.renderSlot(a.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(a.title||e.unref(o)("el.pageHeader.title")),1)])],2)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("content"))},[e.renderSlot(a.$slots,"content",{},()=>[e.createTextVNode(e.toDisplayString(a.content),1)])],2)],2))}});var XU=re(YU,[["__file","page-header.vue"]]);const Sk=Te(XU),ZU=se({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String}}),JU={click:t=>t instanceof MouseEvent},QU=["disabled","aria-disabled"],eG={key:0},tG={name:"ElPaginationPrev"},nG=e.defineComponent({...tG,props:ZU,emits:JU,setup(t){const n=t,o=e.computed(()=>n.disabled||n.currentPage<=1);return(r,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"btn-prev",disabled:e.unref(o),"aria-disabled":e.unref(o),onClick:l[0]||(l[0]=a=>r.$emit("click",a))},[r.prevText?(e.openBlock(),e.createElementBlock("span",eG,e.toDisplayString(r.prevText),1)):(e.openBlock(),e.createBlock(e.unref(de),{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1}))],8,QU))}});var oG=re(nG,[["__file","prev.vue"]]);const rG=se({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String}}),lG=["disabled","aria-disabled"],aG={key:0},sG={name:"ElPaginationNext"},iG=e.defineComponent({...sG,props:rG,emits:["click"],setup(t){const n=t,o=e.computed(()=>n.disabled||n.currentPage===n.pageCount||n.pageCount===0);return(r,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:"btn-next",disabled:e.unref(o),"aria-disabled":e.unref(o),onClick:l[0]||(l[0]=a=>r.$emit("click",a))},[r.nextText?(e.openBlock(),e.createElementBlock("span",aG,e.toDisplayString(r.nextText),1)):(e.openBlock(),e.createBlock(e.unref(de),{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1}))],8,lG))}});var cG=re(iG,[["__file","next.vue"]]);const Su="ElSelectGroup",Ca="ElSelect";function dG(t,n){const o=e.inject(Ca),r=e.inject(Su,{disabled:!1}),l=e.computed(()=>Object.prototype.toString.call(t.value).toLowerCase()==="[object object]"),a=e.computed(()=>o.props.multiple?u(o.props.modelValue,t.value):p(t.value,o.props.modelValue)),s=e.computed(()=>{if(o.props.multiple){const h=o.props.modelValue||[];return!a.value&&h.length>=o.props.multipleLimit&&o.props.multipleLimit>0}else return!1}),i=e.computed(()=>t.label||(l.value?"":t.value)),c=e.computed(()=>t.value||t.label||""),d=e.computed(()=>t.disabled||n.groupDisabled||s.value),f=e.getCurrentInstance(),u=(h=[],b)=>{if(l.value){const y=o.props.valueKey;return h&&h.some(w=>et(w,y)===et(b,y))}else return h&&h.includes(b)},p=(h,b)=>{if(l.value){const{valueKey:y}=o.props;return et(h,y)===et(b,y)}else return h===b},m=()=>{!t.disabled&&!r.disabled&&(o.hoverIndex=o.optionsArray.indexOf(f.proxy))};e.watch(()=>i.value,()=>{!t.created&&!o.props.remote&&o.setSelected()}),e.watch(()=>t.value,(h,b)=>{const{remote:y,valueKey:w}=o.props;if(!t.created&&!y){if(w&&typeof h=="object"&&typeof b=="object"&&h[w]===b[w])return;o.setSelected()}}),e.watch(()=>r.disabled,()=>{n.groupDisabled=r.disabled},{immediate:!0});const{queryChange:g}=e.toRaw(o);return e.watch(g,h=>{const{query:b}=e.unref(h),y=new RegExp(mO(b),"i");n.visible=y.test(i.value)||t.created,n.visible||o.filteredOptionsCount--}),{select:o,currentLabel:i,currentValue:c,itemSelected:a,isDisabled:d,hoverItem:m}}const fG=e.defineComponent({name:"ElOption",componentName:"ElOption",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},setup(t){const n=Z("select"),o=e.reactive({index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}),{currentLabel:r,itemSelected:l,isDisabled:a,select:s,hoverItem:i}=dG(t,o),{visible:c,hover:d}=e.toRefs(o),f=e.getCurrentInstance().proxy,u=f.value;s.onOptionCreate(f),e.onBeforeUnmount(()=>{const{selected:m}=s,h=(s.props.multiple?m:[m]).some(b=>b.value===f.value);e.nextTick(()=>{s.cachedOptions.get(u)===f&&!h&&s.cachedOptions.delete(u)}),s.onOptionDestroy(u,f)});function p(){t.disabled!==!0&&o.groupDisabled!==!0&&s.handleOptionSelect(f,!0)}return{ns:n,currentLabel:r,itemSelected:l,isDisabled:a,select:s,hoverItem:i,visible:c,hover:d,selectOptionClick:p,states:o}}});function uG(t,n,o,r,l,a){return e.withDirectives((e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass([t.ns.be("dropdown","item"),t.ns.is("disabled",t.isDisabled),{selected:t.itemSelected,hover:t.hover}]),onMouseenter:n[0]||(n[0]=(...s)=>t.hoverItem&&t.hoverItem(...s)),onClick:n[1]||(n[1]=e.withModifiers((...s)=>t.selectOptionClick&&t.selectOptionClick(...s),["stop"]))},[e.renderSlot(t.$slots,"default",{},()=>[e.createElementVNode("span",null,e.toDisplayString(t.currentLabel),1)])],34)),[[e.vShow,t.visible]])}var Eu=re(fG,[["render",uG],["__file","option.vue"]]);const pG=e.defineComponent({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const t=e.inject(Ca),n=Z("select"),o=e.computed(()=>t.props.popperClass),r=e.computed(()=>t.props.multiple),l=e.computed(()=>t.props.fitInputWidth),a=e.ref("");function s(){var i;a.value=`${(i=t.selectWrapper)==null?void 0:i.offsetWidth}px`}return e.onMounted(()=>{s(),Wt(t.selectWrapper,s)}),{ns:n,minWidth:a,popperClass:o,isMultiple:r,isFitInputWidth:l}}});function mG(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.ns.b("dropdown"),t.ns.is("multiple",t.isMultiple),t.popperClass]),style:e.normalizeStyle({[t.isFitInputWidth?"width":"minWidth"]:t.minWidth})},[e.renderSlot(t.$slots,"default")],6)}var hG=re(pG,[["render",mG],["__file","select-dropdown.vue"]]);function gG(t){const{t:n}=We();return e.reactive({options:new Map,cachedOptions:new Map,createdLabel:null,createdSelected:!1,selected:t.multiple?[]:{},inputLength:20,inputWidth:0,optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,cachedPlaceHolder:"",currentPlaceholder:n("el.select.placeholder"),menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1,prefixWidth:11,tagInMultiLine:!1})}const yG=(t,n,o)=>{const{t:r}=We(),l=Z("select"),a=e.ref(null),s=e.ref(null),i=e.ref(null),c=e.ref(null),d=e.ref(null),f=e.ref(null),u=e.ref(-1),p=e.shallowRef({query:""}),m=e.shallowRef(""),g=e.inject(un,{}),h=e.inject(Lt,{}),b=e.computed(()=>!t.filterable||t.multiple||!n.visible),y=e.computed(()=>t.disabled||g.disabled),w=e.computed(()=>{const M=t.multiple?Array.isArray(t.modelValue)&&t.modelValue.length>0:t.modelValue!==void 0&&t.modelValue!==null&&t.modelValue!=="";return t.clearable&&!y.value&&n.inputHovering&&M}),C=e.computed(()=>t.remote&&t.filterable?"":t.suffixIcon),k=e.computed(()=>l.is("reverse",C.value&&n.visible)),E=e.computed(()=>t.remote?300:0),S=e.computed(()=>t.loading?t.loadingText||r("el.select.loading"):t.remote&&n.query===""&&n.options.size===0?!1:t.filterable&&n.query&&n.options.size>0&&n.filteredOptionsCount===0?t.noMatchText||r("el.select.noMatch"):n.options.size===0?t.noDataText||r("el.select.noData"):null),N=e.computed(()=>Array.from(n.options.values())),$=e.computed(()=>Array.from(n.cachedOptions.values())),B=e.computed(()=>{const M=N.value.filter(G=>!G.created).some(G=>G.currentLabel===n.query);return t.filterable&&t.allowCreate&&n.query!==""&&!M}),P=yt(),D=e.computed(()=>["small"].includes(P.value)?"small":"default"),z=e.computed({get(){return n.visible&&S.value!==!1},set(M){n.visible=M}});e.watch([()=>y.value,()=>P.value,()=>g.size],()=>{e.nextTick(()=>{I()})}),e.watch(()=>t.placeholder,M=>{n.cachedPlaceHolder=n.currentPlaceholder=M}),e.watch(()=>t.modelValue,(M,G)=>{var ie;t.multiple&&(I(),M&&M.length>0||s.value&&n.query!==""?n.currentPlaceholder="":n.currentPlaceholder=n.cachedPlaceHolder,t.filterable&&!t.reserveKeyword&&(n.query="",A(n.query))),T(),t.filterable&&!t.multiple&&(n.inputLength=20),!Jt(M,G)&&t.validateEvent&&((ie=h.validate)==null||ie.call(h,"change").catch(ge=>void 0))},{flush:"post",deep:!0}),e.watch(()=>n.visible,M=>{var G,ie,ge;M?((ie=(G=i.value)==null?void 0:G.updatePopper)==null||ie.call(G),t.filterable&&(n.filteredOptionsCount=n.optionsCount,n.query=t.remote?"":n.selectedLabel,t.multiple?(ge=s.value)==null||ge.focus():n.selectedLabel&&(n.currentPlaceholder=`${n.selectedLabel}`,n.selectedLabel=""),A(n.query),!t.multiple&&!t.remote&&(p.value.query="",e.triggerRef(p),e.triggerRef(m)))):(s.value&&s.value.blur(),n.query="",n.previousQuery=null,n.selectedLabel="",n.inputLength=20,n.menuVisibleOnFocus=!1,V(),e.nextTick(()=>{s.value&&s.value.value===""&&n.selected.length===0&&(n.currentPlaceholder=n.cachedPlaceHolder)}),t.multiple||(n.selected&&(t.filterable&&t.allowCreate&&n.createdSelected&&n.createdLabel?n.selectedLabel=n.createdLabel:n.selectedLabel=n.selected.currentLabel,t.filterable&&(n.query=n.selectedLabel)),t.filterable&&(n.currentPlaceholder=n.cachedPlaceHolder))),o.emit("visible-change",M)}),e.watch(()=>n.options.entries(),()=>{var M,G,ie;if(!Oe)return;(G=(M=i.value)==null?void 0:M.updatePopper)==null||G.call(M),t.multiple&&I();const ge=((ie=d.value)==null?void 0:ie.querySelectorAll("input"))||[];Array.from(ge).includes(document.activeElement)||T(),t.defaultFirstOption&&(t.filterable||t.remote)&&n.filteredOptionsCount&&R()},{flush:"post"}),e.watch(()=>n.hoverIndex,M=>{typeof M=="number"&&M>-1&&(u.value=N.value[M]||{}),N.value.forEach(G=>{G.hover=u.value===G})});const I=()=>{t.collapseTags&&!t.filterable||e.nextTick(()=>{var M,G;if(!a.value)return;const ie=a.value.$el.querySelector("input"),ge=c.value,ce=j8(P.value||g.size);ie.style.height=`${(n.selected.length===0?ce:Math.max(ge?ge.clientHeight+(ge.clientHeight>ce?6:0):0,ce))-2}px`,n.tagInMultiLine=Number.parseFloat(ie.style.height)>=ce,n.visible&&S.value!==!1&&((G=(M=i.value)==null?void 0:M.updatePopper)==null||G.call(M))})},A=M=>{if(!(n.previousQuery===M||n.isOnComposition)){if(n.previousQuery===null&&(typeof t.filterMethod=="function"||typeof t.remoteMethod=="function")){n.previousQuery=M;return}n.previousQuery=M,e.nextTick(()=>{var G,ie;n.visible&&((ie=(G=i.value)==null?void 0:G.updatePopper)==null||ie.call(G))}),n.hoverIndex=-1,t.multiple&&t.filterable&&e.nextTick(()=>{const G=s.value.value.length*15+20;n.inputLength=t.collapseTags?Math.min(50,G):G,L(),I()}),t.remote&&typeof t.remoteMethod=="function"?(n.hoverIndex=-1,t.remoteMethod(M)):typeof t.filterMethod=="function"?(t.filterMethod(M),e.triggerRef(m)):(n.filteredOptionsCount=n.optionsCount,p.value.query=M,e.triggerRef(p),e.triggerRef(m)),t.defaultFirstOption&&(t.filterable||t.remote)&&n.filteredOptionsCount&&R()}},L=()=>{n.currentPlaceholder!==""&&(n.currentPlaceholder=s.value.value?"":n.cachedPlaceHolder)},R=()=>{const M=N.value.filter(ge=>ge.visible&&!ge.disabled&&!ge.states.groupDisabled),G=M.find(ge=>ge.created),ie=M[0];n.hoverIndex=ee(N.value,G||ie)},T=()=>{var M;if(t.multiple)n.selectedLabel="";else{const ie=v(t.modelValue);(M=ie.props)!=null&&M.created?(n.createdLabel=ie.props.value,n.createdSelected=!0):n.createdSelected=!1,n.selectedLabel=ie.currentLabel,n.selected=ie,t.filterable&&(n.query=n.selectedLabel);return}const G=[];Array.isArray(t.modelValue)&&t.modelValue.forEach(ie=>{G.push(v(ie))}),n.selected=G,e.nextTick(()=>{I()})},v=M=>{let G;const ie=ad(M).toLowerCase()==="object",ge=ad(M).toLowerCase()==="null",ce=ad(M).toLowerCase()==="undefined";for(let ct=n.cachedOptions.size-1;ct>=0;ct--){const pt=$.value[ct];if(ie?et(pt.value,t.valueKey)===et(M,t.valueKey):pt.value===M){G={value:M,currentLabel:pt.currentLabel,isDisabled:pt.isDisabled};break}}if(G)return G;const Ce=ie?M.label:!ge&&!ce?M:"",ke={value:M,currentLabel:Ce};return t.multiple&&(ke.hitState=!1),ke},V=()=>{setTimeout(()=>{const M=t.valueKey;t.multiple?n.selected.length>0?n.hoverIndex=Math.min.apply(null,n.selected.map(G=>N.value.findIndex(ie=>et(ie,M)===et(G,M)))):n.hoverIndex=-1:n.hoverIndex=N.value.findIndex(G=>xe(G)===xe(n.selected))},300)},H=()=>{var M,G;x(),(G=(M=i.value)==null?void 0:M.updatePopper)==null||G.call(M),t.multiple&&!t.filterable&&I()},x=()=>{var M;n.inputWidth=(M=a.value)==null?void 0:M.$el.getBoundingClientRect().width},F=()=>{t.filterable&&n.query!==n.selectedLabel&&(n.query=n.selectedLabel,A(n.query))},K=Dt(()=>{F()},E.value),X=Dt(M=>{A(M.target.value)},E.value),J=M=>{Jt(t.modelValue,M)||o.emit(at,M)},U=M=>{if(M.target.value.length<=0&&!Ke()){const G=t.modelValue.slice();G.pop(),o.emit(Ve,G),J(G)}M.target.value.length===1&&t.modelValue.length===0&&(n.currentPlaceholder=n.cachedPlaceHolder)},W=(M,G)=>{const ie=n.selected.indexOf(G);if(ie>-1&&!y.value){const ge=t.modelValue.slice();ge.splice(ie,1),o.emit(Ve,ge),J(ge),o.emit("remove-tag",G.value)}M.stopPropagation()},Q=M=>{M.stopPropagation();const G=t.multiple?[]:"";if(typeof G!="string")for(const ie of n.selected)ie.isDisabled&&G.push(ie.value);o.emit(Ve,G),J(G),n.visible=!1,o.emit("clear")},Y=(M,G)=>{var ie;if(t.multiple){const ge=(t.modelValue||[]).slice(),ce=ee(ge,M.value);ce>-1?ge.splice(ce,1):(t.multipleLimit<=0||ge.length{he(M)})},ee=(M=[],G)=>{if(!it(G))return M.indexOf(G);const ie=t.valueKey;let ge=-1;return M.some((ce,Ce)=>et(ce,ie)===et(G,ie)?(ge=Ce,!0):!1),ge},pe=()=>{n.softFocus=!0;const M=s.value||a.value;M&&(M==null||M.focus())},he=M=>{var G,ie,ge,ce,Ce;const ke=Array.isArray(M)?M[0]:M;let ct=null;if(ke!=null&&ke.value){const pt=N.value.filter(Je=>Je.value===ke.value);pt.length>0&&(ct=pt[0].$el)}if(i.value&&ct){const pt=(ce=(ge=(ie=(G=i.value)==null?void 0:G.popperRef)==null?void 0:ie.contentRef)==null?void 0:ge.querySelector)==null?void 0:ce.call(ge,`.${l.be("dropdown","wrap")}`);pt&&_0(pt,ct)}(Ce=f.value)==null||Ce.handleScroll()},we=M=>{n.optionsCount++,n.filteredOptionsCount++,n.options.set(M.value,M),n.cachedOptions.set(M.value,M)},Me=(M,G)=>{n.options.get(M)===G&&(n.optionsCount--,n.filteredOptionsCount--,n.options.delete(M))},be=M=>{M.code!==ue.backspace&&Ke(!1),n.inputLength=s.value.value.length*15+20,I()},Ke=M=>{if(!Array.isArray(n.selected))return;const G=n.selected[n.selected.length-1];if(!!G)return M===!0||M===!1?(G.hitState=M,M):(G.hitState=!G.hitState,G.hitState)},me=M=>{const G=M.target.value;if(M.type==="compositionend")n.isOnComposition=!1,e.nextTick(()=>A(G));else{const ie=G[G.length-1]||"";n.isOnComposition=!Cs(ie)}},ne=()=>{e.nextTick(()=>he(n.selected))},oe=M=>{n.softFocus?n.softFocus=!1:((t.automaticDropdown||t.filterable)&&(t.filterable&&!n.visible&&(n.menuVisibleOnFocus=!0),n.visible=!0),o.emit("focus",M))},fe=()=>{var M;n.visible=!1,(M=a.value)==null||M.blur()},ye=M=>{e.nextTick(()=>{n.isSilentBlur?n.isSilentBlur=!1:o.emit("blur",M)}),n.softFocus=!1},$e=M=>{Q(M)},ve=()=>{n.visible=!1},te=M=>{n.visible&&(M.preventDefault(),M.stopPropagation(),n.visible=!1)},Ee=()=>{var M;y.value||(n.menuVisibleOnFocus?n.menuVisibleOnFocus=!1:n.visible=!n.visible,n.visible&&((M=s.value||a.value)==null||M.focus()))},Re=()=>{n.visible?N.value[n.hoverIndex]&&Y(N.value[n.hoverIndex],void 0):Ee()},xe=M=>it(M.value)?et(M.value,t.valueKey):M.value,q=e.computed(()=>N.value.filter(M=>M.visible).every(M=>M.disabled)),le=M=>{if(!n.visible){n.visible=!0;return}if(!(n.options.size===0||n.filteredOptionsCount===0)&&!n.isOnComposition&&!q.value){M==="next"?(n.hoverIndex++,n.hoverIndex===n.options.size&&(n.hoverIndex=0)):M==="prev"&&(n.hoverIndex--,n.hoverIndex<0&&(n.hoverIndex=n.options.size-1));const G=N.value[n.hoverIndex];(G.disabled===!0||G.states.groupDisabled===!0||!G.visible)&&le(M),e.nextTick(()=>he(u.value))}};return{optionsArray:N,selectSize:P,handleResize:H,debouncedOnInputChange:K,debouncedQueryChange:X,deletePrevTag:U,deleteTag:W,deleteSelected:Q,handleOptionSelect:Y,scrollToOption:he,readonly:b,resetInputHeight:I,showClose:w,iconComponent:C,iconReverse:k,showNewOption:B,collapseTagSize:D,setSelected:T,managePlaceholder:L,selectDisabled:y,emptyText:S,toggleLastOptionHitState:Ke,resetInputState:be,handleComposition:me,onOptionCreate:we,onOptionDestroy:Me,handleMenuEnter:ne,handleFocus:oe,blur:fe,handleBlur:ye,handleClearClick:$e,handleClose:ve,handleKeydownEscape:te,toggleMenu:Ee,selectOption:Re,getValueKey:xe,navigateOptions:le,dropMenuVisible:z,queryChange:p,groupQueryChange:m,reference:a,input:s,tooltipRef:i,tags:c,selectWrapper:d,scrollbar:f}},Ek="ElSelect",bG=e.defineComponent({name:Ek,componentName:Ek,components:{ElInput:It,ElSelectMenu:hG,ElOption:Eu,ElTag:ia,ElScrollbar:Zn,ElTooltip:Ut,ElIcon:de},directives:{ClickOutside:_o},props:{name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:{type:String,validator:hr},effect:{type:String,default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},teleported:vt.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:[String,Object],default:Fo},fitInputWidth:{type:Boolean,default:!1},suffixIcon:{type:[String,Object],default:Kl},tagType:{...Zs.type,default:"info"},validateEvent:{type:Boolean,default:!0}},emits:[Ve,at,"remove-tag","clear","visible-change","focus","blur"],setup(t,n){const o=Z("select"),r=Z("input"),{t:l}=We(),a=gG(t),{optionsArray:s,selectSize:i,readonly:c,handleResize:d,collapseTagSize:f,debouncedOnInputChange:u,debouncedQueryChange:p,deletePrevTag:m,deleteTag:g,deleteSelected:h,handleOptionSelect:b,scrollToOption:y,setSelected:w,resetInputHeight:C,managePlaceholder:k,showClose:E,selectDisabled:S,iconComponent:N,iconReverse:$,showNewOption:B,emptyText:P,toggleLastOptionHitState:D,resetInputState:z,handleComposition:I,onOptionCreate:A,onOptionDestroy:L,handleMenuEnter:R,handleFocus:T,blur:v,handleBlur:V,handleClearClick:H,handleClose:x,handleKeydownEscape:F,toggleMenu:K,selectOption:X,getValueKey:J,navigateOptions:U,dropMenuVisible:W,reference:Q,input:Y,tooltipRef:ee,tags:pe,selectWrapper:he,scrollbar:we,queryChange:Me,groupQueryChange:be}=yG(t,a,n),{focus:Ke}=x0(Q),{inputWidth:me,selected:ne,inputLength:oe,filteredOptionsCount:fe,visible:ye,softFocus:$e,selectedLabel:ve,hoverIndex:te,query:Ee,inputHovering:Re,currentPlaceholder:xe,menuVisibleOnFocus:q,isOnComposition:le,isSilentBlur:M,options:G,cachedOptions:ie,optionsCount:ge,prefixWidth:ce,tagInMultiLine:Ce}=e.toRefs(a),ke=e.computed(()=>{const Je=[o.b()],Pe=e.unref(i);return Pe&&Je.push(o.m(Pe)),t.disabled&&Je.push(o.m("disabled")),Je}),ct=e.computed(()=>({maxWidth:`${e.unref(me)-32}px`,width:"100%"}));e.provide(Ca,e.reactive({props:t,options:G,optionsArray:s,cachedOptions:ie,optionsCount:ge,filteredOptionsCount:fe,hoverIndex:te,handleOptionSelect:b,onOptionCreate:A,onOptionDestroy:L,selectWrapper:he,selected:ne,setSelected:w,queryChange:Me,groupQueryChange:be})),e.onMounted(()=>{a.cachedPlaceHolder=xe.value=t.placeholder||l("el.select.placeholder"),t.multiple&&Array.isArray(t.modelValue)&&t.modelValue.length>0&&(xe.value=""),Wt(he,d),t.remote&&t.multiple&&C(),e.nextTick(()=>{const Je=Q.value&&Q.value.$el;if(!!Je&&(me.value=Je.getBoundingClientRect().width,n.slots.prefix)){const Pe=Je.querySelector(`.${r.e("prefix")}`);ce.value=Math.max(Pe.getBoundingClientRect().width+5,30)}}),w()}),t.multiple&&!Array.isArray(t.modelValue)&&n.emit(Ve,[]),!t.multiple&&Array.isArray(t.modelValue)&&n.emit(Ve,"");const pt=e.computed(()=>{var Je,Pe;return(Pe=(Je=ee.value)==null?void 0:Je.popperRef)==null?void 0:Pe.contentRef});return{tagInMultiLine:Ce,prefixWidth:ce,selectSize:i,readonly:c,handleResize:d,collapseTagSize:f,debouncedOnInputChange:u,debouncedQueryChange:p,deletePrevTag:m,deleteTag:g,deleteSelected:h,handleOptionSelect:b,scrollToOption:y,inputWidth:me,selected:ne,inputLength:oe,filteredOptionsCount:fe,visible:ye,softFocus:$e,selectedLabel:ve,hoverIndex:te,query:Ee,inputHovering:Re,currentPlaceholder:xe,menuVisibleOnFocus:q,isOnComposition:le,isSilentBlur:M,options:G,resetInputHeight:C,managePlaceholder:k,showClose:E,selectDisabled:S,iconComponent:N,iconReverse:$,showNewOption:B,emptyText:P,toggleLastOptionHitState:D,resetInputState:z,handleComposition:I,handleMenuEnter:R,handleFocus:T,blur:v,handleBlur:V,handleClearClick:H,handleClose:x,handleKeydownEscape:F,toggleMenu:K,selectOption:X,getValueKey:J,navigateOptions:U,dropMenuVisible:W,focus:Ke,reference:Q,input:Y,tooltipRef:ee,popperPaneRef:pt,tags:pe,selectWrapper:he,scrollbar:we,wrapperKls:ke,selectTagsStyle:ct,nsSelect:o}}}),CG={class:"select-trigger"},wG=["disabled","autocomplete"],kG={style:{height:"100%",display:"flex","justify-content":"center","align-items":"center"}};function SG(t,n,o,r,l,a){const s=e.resolveComponent("el-tag"),i=e.resolveComponent("el-tooltip"),c=e.resolveComponent("el-icon"),d=e.resolveComponent("el-input"),f=e.resolveComponent("el-option"),u=e.resolveComponent("el-scrollbar"),p=e.resolveComponent("el-select-menu"),m=e.resolveDirective("click-outside");return e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref:"selectWrapper",class:e.normalizeClass(t.wrapperKls),onClick:n[22]||(n[22]=e.withModifiers((...g)=>t.toggleMenu&&t.toggleMenu(...g),["stop"]))},[e.createVNode(i,{ref:"tooltipRef",visible:t.dropMenuVisible,placement:"bottom-start",teleported:t.teleported,"popper-class":[t.nsSelect.e("popper"),t.popperClass],"fallback-placements":["bottom-start","top-start","right","left"],effect:t.effect,pure:"",trigger:"click",transition:`${t.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:t.persistent,onShow:t.handleMenuEnter},{default:e.withCtx(()=>[e.createElementVNode("div",CG,[t.multiple?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"tags",class:e.normalizeClass(t.nsSelect.e("tags")),style:e.normalizeStyle(t.selectTagsStyle)},[t.collapseTags&&t.selected.length?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([t.nsSelect.b("tags-wrapper"),{"has-prefix":t.prefixWidth&&t.selected.length}])},[e.createVNode(s,{closable:!t.selectDisabled&&!t.selected[0].isDisabled,size:t.collapseTagSize,hit:t.selected[0].hitState,type:t.tagType,"disable-transitions":"",onClose:n[0]||(n[0]=g=>t.deleteTag(g,t.selected[0]))},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelect.e("tags-text")),style:e.normalizeStyle({maxWidth:t.inputWidth-123+"px"})},e.toDisplayString(t.selected[0].currentLabel),7)]),_:1},8,["closable","size","hit","type"]),t.selected.length>1?(e.openBlock(),e.createBlock(s,{key:0,closable:!1,size:t.collapseTagSize,type:t.tagType,"disable-transitions":""},{default:e.withCtx(()=>[t.collapseTagsTooltip?(e.openBlock(),e.createBlock(i,{key:0,disabled:t.dropMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:t.effect,placement:"bottom",teleported:t.teleported},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelect.e("tags-text"))},"+ "+e.toDisplayString(t.selected.length-1),3)]),content:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(t.nsSelect.e("collapse-tags"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected.slice(1),(g,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:e.normalizeClass(t.nsSelect.e("collapse-tag"))},[(e.openBlock(),e.createBlock(s,{key:t.getValueKey(g),class:"in-tooltip",closable:!t.selectDisabled&&!g.isDisabled,size:t.collapseTagSize,hit:g.hitState,type:t.tagType,"disable-transitions":"",style:{margin:"2px"},onClose:b=>t.deleteTag(b,g)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelect.e("tags-text")),style:e.normalizeStyle({maxWidth:t.inputWidth-75+"px"})},e.toDisplayString(g.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))],2))),128))],2)]),_:1},8,["disabled","effect","teleported"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(t.nsSelect.e("tags-text"))},"+ "+e.toDisplayString(t.selected.length-1),3))]),_:1},8,["size","type"])):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),e.createCommentVNode("
"),t.collapseTags?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(e.Transition,{key:1,onAfterLeave:t.resetInputHeight},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass([t.nsSelect.b("tags-wrapper"),{"has-prefix":t.prefixWidth&&t.selected.length}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.selected,g=>(e.openBlock(),e.createBlock(s,{key:t.getValueKey(g),closable:!t.selectDisabled&&!g.isDisabled,size:t.collapseTagSize,hit:g.hitState,type:t.tagType,"disable-transitions":"",onClose:h=>t.deleteTag(h,g)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelect.e("tags-text")),style:e.normalizeStyle({maxWidth:t.inputWidth-75+"px"})},e.toDisplayString(g.currentLabel),7)]),_:2},1032,["closable","size","hit","type","onClose"]))),128))],2)]),_:1},8,["onAfterLeave"])),e.createCommentVNode("
"),t.filterable?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:2,ref:"input","onUpdate:modelValue":n[1]||(n[1]=g=>t.query=g),type:"text",class:e.normalizeClass([t.nsSelect.e("input"),t.nsSelect.is(t.selectSize)]),disabled:t.selectDisabled,autocomplete:t.autocomplete,style:e.normalizeStyle({marginLeft:t.prefixWidth&&!t.selected.length||t.tagInMultiLine?`${t.prefixWidth}px`:"",flexGrow:1,width:`${t.inputLength/(t.inputWidth-32)}%`,maxWidth:`${t.inputWidth-42}px`}),onFocus:n[2]||(n[2]=(...g)=>t.handleFocus&&t.handleFocus(...g)),onBlur:n[3]||(n[3]=(...g)=>t.handleBlur&&t.handleBlur(...g)),onKeyup:n[4]||(n[4]=(...g)=>t.managePlaceholder&&t.managePlaceholder(...g)),onKeydown:[n[5]||(n[5]=(...g)=>t.resetInputState&&t.resetInputState(...g)),n[6]||(n[6]=e.withKeys(e.withModifiers(g=>t.navigateOptions("next"),["prevent"]),["down"])),n[7]||(n[7]=e.withKeys(e.withModifiers(g=>t.navigateOptions("prev"),["prevent"]),["up"])),n[8]||(n[8]=e.withKeys((...g)=>t.handleKeydownEscape&&t.handleKeydownEscape(...g),["esc"])),n[9]||(n[9]=e.withKeys(e.withModifiers((...g)=>t.selectOption&&t.selectOption(...g),["stop","prevent"]),["enter"])),n[10]||(n[10]=e.withKeys((...g)=>t.deletePrevTag&&t.deletePrevTag(...g),["delete"])),n[11]||(n[11]=e.withKeys(g=>t.visible=!1,["tab"]))],onCompositionstart:n[12]||(n[12]=(...g)=>t.handleComposition&&t.handleComposition(...g)),onCompositionupdate:n[13]||(n[13]=(...g)=>t.handleComposition&&t.handleComposition(...g)),onCompositionend:n[14]||(n[14]=(...g)=>t.handleComposition&&t.handleComposition(...g)),onInput:n[15]||(n[15]=(...g)=>t.debouncedQueryChange&&t.debouncedQueryChange(...g))},null,46,wG)),[[e.vModelText,t.query]]):e.createCommentVNode("v-if",!0)],6)):e.createCommentVNode("v-if",!0),e.createVNode(d,{id:t.id,ref:"reference",modelValue:t.selectedLabel,"onUpdate:modelValue":n[16]||(n[16]=g=>t.selectedLabel=g),type:"text",placeholder:t.currentPlaceholder,name:t.name,autocomplete:t.autocomplete,size:t.selectSize,disabled:t.selectDisabled,readonly:t.readonly,"validate-event":!1,class:e.normalizeClass([t.nsSelect.is("focus",t.visible)]),tabindex:t.multiple&&t.filterable?-1:void 0,onFocus:t.handleFocus,onBlur:t.handleBlur,onInput:t.debouncedOnInputChange,onPaste:t.debouncedOnInputChange,onCompositionstart:t.handleComposition,onCompositionupdate:t.handleComposition,onCompositionend:t.handleComposition,onKeydown:[n[17]||(n[17]=e.withKeys(e.withModifiers(g=>t.navigateOptions("next"),["stop","prevent"]),["down"])),n[18]||(n[18]=e.withKeys(e.withModifiers(g=>t.navigateOptions("prev"),["stop","prevent"]),["up"])),e.withKeys(e.withModifiers(t.selectOption,["stop","prevent"]),["enter"]),e.withKeys(t.handleKeydownEscape,["esc"]),n[19]||(n[19]=e.withKeys(g=>t.visible=!1,["tab"]))],onMouseenter:n[20]||(n[20]=g=>t.inputHovering=!0),onMouseleave:n[21]||(n[21]=g=>t.inputHovering=!1)},e.createSlots({suffix:e.withCtx(()=>[t.iconComponent&&!t.showClose?(e.openBlock(),e.createBlock(c,{key:0,class:e.normalizeClass([t.nsSelect.e("caret"),t.nsSelect.e("icon"),t.iconReverse])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.iconComponent)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),t.showClose&&t.clearIcon?(e.openBlock(),e.createBlock(c,{key:1,class:e.normalizeClass([t.nsSelect.e("caret"),t.nsSelect.e("icon")]),onClick:t.handleClearClick},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.clearIcon)))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0)]),_:2},[t.$slots.prefix?{name:"prefix",fn:e.withCtx(()=>[e.createElementVNode("div",kG,[e.renderSlot(t.$slots,"prefix")])])}:void 0]),1032,["id","modelValue","placeholder","name","autocomplete","size","disabled","readonly","class","tabindex","onFocus","onBlur","onInput","onPaste","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown"])])]),content:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.withDirectives(e.createVNode(u,{ref:"scrollbar",tag:"ul","wrap-class":t.nsSelect.be("dropdown","wrap"),"view-class":t.nsSelect.be("dropdown","list"),class:e.normalizeClass([t.nsSelect.is("empty",!t.allowCreate&&Boolean(t.query)&&t.filteredOptionsCount===0)])},{default:e.withCtx(()=>[t.showNewOption?(e.openBlock(),e.createBlock(f,{key:0,value:t.query,created:!0},null,8,["value"])):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"default")]),_:3},8,["wrap-class","view-class","class"]),[[e.vShow,t.options.size>0&&!t.loading]]),t.emptyText&&(!t.allowCreate||t.loading||t.allowCreate&&t.options.size===0)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[t.$slots.empty?e.renderSlot(t.$slots,"empty",{key:0}):(e.openBlock(),e.createElementBlock("p",{key:1,class:e.normalizeClass(t.nsSelect.be("dropdown","empty"))},e.toDisplayString(t.emptyText),3))],64)):e.createCommentVNode("v-if",!0)]),_:3})]),_:3},8,["visible","teleported","popper-class","effect","transition","persistent","onShow"])],2)),[[m,t.handleClose,t.popperPaneRef]])}var EG=re(bG,[["render",SG],["__file","select.vue"]]);const NG=e.defineComponent({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},setup(t){const n=Z("select"),o=e.ref(!0),r=e.getCurrentInstance(),l=e.ref([]);e.provide(Su,e.reactive({...e.toRefs(t)}));const a=e.inject(Ca);e.onMounted(()=>{l.value=s(r.subTree)});const s=c=>{const d=[];return Array.isArray(c.children)&&c.children.forEach(f=>{var u;f.type&&f.type.name==="ElOption"&&f.component&&f.component.proxy?d.push(f.component.proxy):(u=f.children)!=null&&u.length&&d.push(...s(f))}),d},{groupQueryChange:i}=e.toRaw(a);return e.watch(i,()=>{o.value=l.value.some(c=>c.visible===!0)}),{visible:o,ns:n}}});function $G(t,n,o,r,l,a){return e.withDirectives((e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(t.ns.be("group","wrap"))},[e.createElementVNode("li",{class:e.normalizeClass(t.ns.be("group","title"))},e.toDisplayString(t.label),3),e.createElementVNode("li",null,[e.createElementVNode("ul",{class:e.normalizeClass(t.ns.b("group"))},[e.renderSlot(t.$slots,"default")],2)])],2)),[[e.vShow,t.visible]])}var Nk=re(NG,[["render",$G],["__file","option-group.vue"]]);const Jo=Te(EG,{Option:Eu,OptionGroup:Nk}),wa=ut(Eu),$k=ut(Nk),Nu=()=>e.inject(Ed,{}),BG=se({pageSize:{type:Number,required:!0},pageSizes:{type:j(Array),default:()=>st([10,20,30,40,50,100])},popperClass:{type:String},disabled:Boolean,size:{type:String,default:"default"}}),_G={name:"ElPaginationSizes"},vG=e.defineComponent({..._G,props:BG,emits:["page-size-change"],setup(t,{emit:n}){const o=t,{t:r}=We(),l=Z("pagination"),a=Nu(),s=e.ref(o.pageSize);e.watch(()=>o.pageSizes,(d,f)=>{if(!Jt(d,f)&&Array.isArray(d)){const u=d.includes(o.pageSize)?o.pageSize:o.pageSizes[0];n("page-size-change",u)}}),e.watch(()=>o.pageSize,d=>{s.value=d});const i=e.computed(()=>o.pageSizes);function c(d){var f;d!==s.value&&(s.value=d,(f=a.handleSizeChange)==null||f.call(a,Number(d)))}return(d,f)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(l).e("sizes"))},[e.createVNode(e.unref(Jo),{"model-value":s.value,disabled:d.disabled,"popper-class":d.popperClass,size:d.size,onChange:c},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),u=>(e.openBlock(),e.createBlock(e.unref(wa),{key:u,value:u,label:u+e.unref(r)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","size"])],2))}});var TG=re(vG,[["__file","sizes.vue"]]);const VG=["disabled"],MG={name:"ElPaginationJumper"},RG=e.defineComponent({...MG,setup(t){const{t:n}=We(),o=Z("pagination"),{pageCount:r,disabled:l,currentPage:a,changeEvent:s}=Nu(),i=e.ref(),c=e.computed(()=>{var u;return(u=i.value)!=null?u:a==null?void 0:a.value});function d(u){i.value=+u}function f(u){u=Math.trunc(+u),s==null||s(+u),i.value=void 0}return(u,p)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(o).e("jump")),disabled:e.unref(l)},[e.createTextVNode(e.toDisplayString(e.unref(n)("el.pagination.goto"))+" ",1),e.createVNode(e.unref(It),{size:"small",class:e.normalizeClass([e.unref(o).e("editor"),e.unref(o).is("in-pagination")]),min:1,max:e.unref(r),disabled:e.unref(l),"model-value":e.unref(c),type:"number","onUpdate:modelValue":d,onChange:f},null,8,["class","max","disabled","model-value"]),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("el.pagination.pageClassifier")),1)],10,VG))}});var IG=re(RG,[["__file","jumper.vue"]]);const PG=se({total:{type:Number,default:1e3}}),AG=["disabled"],OG={name:"ElPaginationTotal"},zG=e.defineComponent({...OG,props:PG,setup(t){const{t:n}=We(),o=Z("pagination"),{disabled:r}=Nu();return(l,a)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(o).e("total")),disabled:e.unref(r)},e.toDisplayString(e.unref(n)("el.pagination.total",{total:l.total})),11,AG))}});var DG=re(zG,[["__file","total.vue"]]);const LG=se({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),FG=["onKeyup"],xG=["aria-current","tabindex"],HG=["tabindex"],KG=["aria-current","tabindex"],WG=["tabindex"],jG=["aria-current","tabindex"],UG={name:"ElPaginationPager"},GG=e.defineComponent({...UG,props:LG,emits:["change"],setup(t,{emit:n}){const o=t,r=Z("pager"),l=Z("icon"),a=e.ref(!1),s=e.ref(!1),i=e.ref(!1),c=e.ref(!1),d=e.ref(!1),f=e.ref(!1),u=e.computed(()=>{const y=o.pagerCount,w=(y-1)/2,C=Number(o.currentPage),k=Number(o.pageCount);let E=!1,S=!1;k>y&&(C>y-w&&(E=!0),Co.disabled?-1:0);e.watchEffect(()=>{const y=(o.pagerCount-1)/2;a.value=!1,s.value=!1,o.pageCount>o.pagerCount&&(o.currentPage>o.pagerCount-y&&(a.value=!0),o.currentPagek&&(C=k)),C!==E&&n("change",C)}return(y,w)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(e.unref(r).b()),onClick:b,onKeyup:e.withKeys(h,["enter"])},[y.pageCount>0?(e.openBlock(),e.createElementBlock("li",{key:0,class:e.normalizeClass([[e.unref(r).is("active",y.currentPage===1),e.unref(r).is("disabled",y.disabled)],"number"]),"aria-current":y.currentPage===1,tabindex:e.unref(p)}," 1 ",10,xG)):e.createCommentVNode("v-if",!0),a.value?(e.openBlock(),e.createElementBlock("li",{key:1,class:e.normalizeClass(["more","btn-quickprev",e.unref(l).b(),e.unref(r).is("disabled",y.disabled)]),tabindex:e.unref(p),onMouseenter:w[0]||(w[0]=C=>m(!0)),onMouseleave:w[1]||(w[1]=C=>i.value=!1),onFocus:w[2]||(w[2]=C=>g(!0)),onBlur:w[3]||(w[3]=C=>d.value=!1)},[i.value||d.value?(e.openBlock(),e.createBlock(e.unref(jr),{key:0})):(e.openBlock(),e.createBlock(e.unref(V0),{key:1}))],42,HG)):e.createCommentVNode("v-if",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(u),C=>(e.openBlock(),e.createElementBlock("li",{key:C,class:e.normalizeClass([[e.unref(r).is("active",y.currentPage===C),e.unref(r).is("disabled",y.disabled)],"number"]),"aria-current":y.currentPage===C,tabindex:e.unref(p)},e.toDisplayString(C),11,KG))),128)),s.value?(e.openBlock(),e.createElementBlock("li",{key:2,class:e.normalizeClass(["more","btn-quicknext",e.unref(l).b(),e.unref(r).is("disabled",y.disabled)]),tabindex:e.unref(p),onMouseenter:w[4]||(w[4]=C=>m()),onMouseleave:w[5]||(w[5]=C=>c.value=!1),onFocus:w[6]||(w[6]=C=>g()),onBlur:w[7]||(w[7]=C=>f.value=!1)},[c.value||f.value?(e.openBlock(),e.createBlock(e.unref(Ur),{key:0})):(e.openBlock(),e.createBlock(e.unref(V0),{key:1}))],42,WG)):e.createCommentVNode("v-if",!0),y.pageCount>1?(e.openBlock(),e.createElementBlock("li",{key:3,class:e.normalizeClass([[e.unref(r).is("active",y.currentPage===y.pageCount),e.unref(r).is("disabled",y.disabled)],"number"]),"aria-current":y.currentPage===y.pageCount,tabindex:e.unref(p)},e.toDisplayString(y.pageCount),11,jG)):e.createCommentVNode("v-if",!0)],42,FG))}});var qG=re(GG,[["__file","pager.vue"]]);const Gt=t=>typeof t!="number",Bk=se({total:Number,pageSize:Number,defaultPageSize:Number,currentPage:Number,defaultCurrentPage:Number,pageCount:Number,pagerCount:{type:Number,validator:t=>typeof t=="number"&&Math.trunc(t)===t&&t>4&&t<22&&t%2===1,default:7},layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:j(Array),default:()=>st([10,20,30,40,50,100])},popperClass:{type:String,default:""},prevText:{type:String,default:""},nextText:{type:String,default:""},small:Boolean,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean}),_k={"update:current-page":t=>typeof t=="number","update:page-size":t=>typeof t=="number","size-change":t=>typeof t=="number","current-change":t=>typeof t=="number","prev-click":t=>typeof t=="number","next-click":t=>typeof t=="number"},vk="ElPagination";var YG=e.defineComponent({name:vk,props:Bk,emits:_k,setup(t,{emit:n,slots:o}){const{t:r}=We(),l=Z("pagination"),a=e.getCurrentInstance().vnode.props||{},s="onUpdate:currentPage"in a||"onUpdate:current-page"in a||"onCurrentChange"in a,i="onUpdate:pageSize"in a||"onUpdate:page-size"in a||"onSizeChange"in a,c=e.computed(()=>{if(Gt(t.total)&&Gt(t.pageCount)||!Gt(t.currentPage)&&!s)return!1;if(t.layout.includes("sizes")){if(Gt(t.pageCount)){if(!Gt(t.total)&&!Gt(t.pageSize)&&!i)return!1}else if(!i)return!1}return!0}),d=e.ref(Gt(t.defaultPageSize)?10:t.defaultPageSize),f=e.ref(Gt(t.defaultCurrentPage)?1:t.defaultCurrentPage),u=e.computed({get(){return Gt(t.pageSize)?d.value:t.pageSize},set(C){Gt(t.pageSize)&&(d.value=C),i&&(n("update:page-size",C),n("size-change",C))}}),p=e.computed(()=>{let C=0;return Gt(t.pageCount)?Gt(t.total)||(C=Math.max(1,Math.ceil(t.total/u.value))):C=t.pageCount,C}),m=e.computed({get(){return Gt(t.currentPage)?f.value:t.currentPage},set(C){let k=C;C<1?k=1:C>p.value&&(k=p.value),Gt(t.currentPage)&&(f.value=k),s&&(n("update:current-page",k),n("current-change",k))}});e.watch(p,C=>{m.value>C&&(m.value=C)});function g(C){m.value=C}function h(C){u.value=C;const k=p.value;m.value>k&&(m.value=k)}function b(){t.disabled||(m.value-=1,n("prev-click",m.value))}function y(){t.disabled||(m.value+=1,n("next-click",m.value))}function w(C,k){C&&(C.props||(C.props={}),C.props.class=[C.props.class,k].join(" "))}return e.provide(Ed,{pageCount:p,disabled:e.computed(()=>t.disabled),currentPage:m,changeEvent:g,handleSizeChange:h}),()=>{var C,k;if(!c.value)return r("el.pagination.deprecationWarning"),null;if(!t.layout||t.hideOnSinglePage&&p.value<=1)return null;const E=[],S=[],N=e.h("div",{class:l.e("rightwrapper")},S),$={prev:e.h(oG,{disabled:t.disabled,currentPage:m.value,prevText:t.prevText,onClick:b}),jumper:e.h(IG),pager:e.h(qG,{currentPage:m.value,pageCount:p.value,pagerCount:t.pagerCount,onChange:g,disabled:t.disabled}),next:e.h(cG,{disabled:t.disabled,currentPage:m.value,pageCount:p.value,nextText:t.nextText,onClick:y}),sizes:e.h(TG,{pageSize:u.value,pageSizes:t.pageSizes,popperClass:t.popperClass,disabled:t.disabled,size:t.small?"small":"default"}),slot:(k=(C=o==null?void 0:o.default)==null?void 0:C.call(o))!=null?k:null,total:e.h(DG,{total:Gt(t.total)?0:t.total})},B=t.layout.split(",").map(D=>D.trim());let P=!1;return B.forEach(D=>{if(D==="->"){P=!0;return}P?S.push($[D]):E.push($[D])}),w(E[0],l.is("first")),w(E[E.length-1],l.is("last")),P&&S.length>0&&(w(S[0],l.is("first")),w(S[S.length-1],l.is("last")),E.push(N)),e.h("div",{role:"pagination","aria-label":"pagination",class:[l.b(),l.is("background",t.background),{[l.m("small")]:t.small}]},E)}}});const Tk=Te(YG),Vk=se({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:Os,default:"primary"},cancelButtonType:{type:String,values:Os,default:"text"},icon:{type:$t,default:kL},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},onConfirm:{type:j(Function)},onCancel:{type:j(Function)},teleported:vt.teleported,persistent:vt.persistent}),XG={name:"ElPopconfirm"},ZG=e.defineComponent({...XG,props:Vk,setup(t){const n=t,{t:o}=We(),r=Z("popconfirm"),l=e.ref(),a=()=>{var f,u;(u=(f=l.value)==null?void 0:f.onClose)==null||u.call(f)},s=f=>{var u;(u=n.onConfirm)==null||u.call(n,f),a()},i=f=>{var u;(u=n.onCancel)==null||u.call(n,f),a()},c=e.computed(()=>n.confirmButtonText||o("el.popconfirm.confirmButtonText")),d=e.computed(()=>n.cancelButtonText||o("el.popconfirm.cancelButtonText"));return(f,u)=>(e.openBlock(),e.createBlock(e.unref(Ut),{ref_key:"tooltipRef",ref:l,trigger:"click",effect:"light","popper-class":`${e.unref(r).namespace.value}-popover`,teleported:f.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":f.hideAfter,persistent:f.persistent},{content:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("main"))},[!f.hideIcon&&f.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(r).e("icon")),style:e.normalizeStyle({color:f.iconColor})},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(f.icon)))]),_:1},8,["class","style"])):e.createCommentVNode("v-if",!0),e.createTextVNode(" "+e.toDisplayString(f.title),1)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("action"))},[e.createVNode(e.unref(At),{size:"small",type:f.cancelButtonType==="text"?"":f.cancelButtonType,text:f.cancelButtonType==="text",onClick:i},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(d)),1)]),_:1},8,["type","text"]),e.createVNode(e.unref(At),{size:"small",type:f.confirmButtonType==="text"?"":f.confirmButtonType,text:f.confirmButtonType==="text",onClick:s},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)),1)]),_:1},8,["type","text"])],2)],2)]),default:e.withCtx(()=>[f.$slots.reference?e.renderSlot(f.$slots,"reference",{key:0}):e.createCommentVNode("v-if",!0)]),_:3},8,["popper-class","teleported","hide-after","persistent"]))}});var JG=re(ZG,[["__file","popconfirm.vue"]]);const Mk=Te(JG),Rk=se({trigger:nl.trigger,placement:pa.placement,disabled:nl.disabled,visible:vt.visible,transition:vt.transition,popperOptions:pa.popperOptions,tabindex:pa.tabindex,content:vt.content,popperStyle:vt.popperStyle,popperClass:vt.popperClass,enterable:{...vt.enterable,default:!0},effect:{...vt.effect,default:"light"},teleported:vt.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),Ik={"update:visible":t=>St(t),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},QG={name:"ElPopover"},eq=e.defineComponent({...QG,props:Rk,emits:Ik,setup(t,{expose:n,emit:o}){const r=t,l="onUpdate:visible",a=e.computed(()=>r[l]),s=Z("popover"),i=e.ref(),c=e.computed(()=>{var y;return(y=e.unref(i))==null?void 0:y.popperRef}),d=e.computed(()=>[{width:Nt(r.width)},r.popperStyle]),f=e.computed(()=>[s.b(),r.popperClass,{[s.m("plain")]:!!r.content}]),u=e.computed(()=>r.transition==="el-fade-in-linear"),p=()=>{var y;(y=i.value)==null||y.hide()},m=()=>{o("before-enter")},g=()=>{o("before-leave")},h=()=>{o("after-enter")},b=()=>{o("update:visible",!1),o("after-leave")};return n({popperRef:c,hide:p}),(y,w)=>(e.openBlock(),e.createBlock(e.unref(Ut),e.mergeProps({ref_key:"tooltipRef",ref:i},y.$attrs,{trigger:y.trigger,placement:y.placement,disabled:y.disabled,visible:y.visible,transition:y.transition,"popper-options":y.popperOptions,tabindex:y.tabindex,content:y.content,offset:y.offset,"show-after":y.showAfter,"hide-after":y.hideAfter,"auto-close":y.autoClose,"show-arrow":y.showArrow,"aria-label":y.title,effect:y.effect,enterable:y.enterable,"popper-class":e.unref(f),"popper-style":e.unref(d),teleported:y.teleported,persistent:y.persistent,"gpu-acceleration":e.unref(u),"onUpdate:visible":e.unref(a),onBeforeShow:m,onBeforeHide:g,onShow:h,onHide:b}),{content:e.withCtx(()=>[y.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(s).e("title")),role:"title"},e.toDisplayString(y.title),3)):e.createCommentVNode("v-if",!0),e.renderSlot(y.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(y.content),1)])]),default:e.withCtx(()=>[y.$slots.reference?e.renderSlot(y.$slots,"reference",{key:0}):e.createCommentVNode("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});var tq=re(eq,[["__file","popover.vue"]]);const Pk=(t,n)=>{const o=n.arg||n.value,r=o==null?void 0:o.popperRef;r&&(r.triggerRef=t)};var nq={mounted(t,n){Pk(t,n)},updated(t,n){Pk(t,n)}};const $u=W8(nq,"popover"),Ak=Te(tq,{directive:$u}),Ok=se({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:t=>t>=0&&t<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:{type:Boolean,default:!1},duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:j(String),default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:j([String,Array,Function]),default:""},format:{type:j(Function),default:t=>`${t}%`}}),oq=["aria-valuenow"],rq={viewBox:"0 0 100 100"},lq=["d","stroke","stroke-width"],aq=["d","stroke","opacity","stroke-linecap","stroke-width"],sq={key:0},iq={name:"ElProgress"},cq=e.defineComponent({...iq,props:Ok,setup(t){const n=t,o={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},r=Z("progress"),l=e.computed(()=>({width:`${n.percentage}%`,animationDuration:`${n.duration}s`,backgroundColor:w(n.percentage)})),a=e.computed(()=>(n.strokeWidth/n.width*100).toFixed(1)),s=e.computed(()=>["circle","dashboard"].includes(n.type)?Number.parseInt(`${50-Number.parseFloat(a.value)/2}`,10):0),i=e.computed(()=>{const C=s.value,k=n.type==="dashboard";return` + M 50 50 + m 0 ${k?"":"-"}${C} + a ${C} ${C} 0 1 1 0 ${k?"-":""}${C*2} + a ${C} ${C} 0 1 1 0 ${k?"":"-"}${C*2} + `}),c=e.computed(()=>2*Math.PI*s.value),d=e.computed(()=>n.type==="dashboard"?.75:1),f=e.computed(()=>`${-1*c.value*(1-d.value)/2}px`),u=e.computed(()=>({strokeDasharray:`${c.value*d.value}px, ${c.value}px`,strokeDashoffset:f.value})),p=e.computed(()=>({strokeDasharray:`${c.value*d.value*(n.percentage/100)}px, ${c.value}px`,strokeDashoffset:f.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),m=e.computed(()=>{let C;return n.color?C=w(n.percentage):C=o[n.status]||o.default,C}),g=e.computed(()=>n.status==="warning"?hs:n.type==="line"?n.status==="success"?cd:Fo:n.status==="success"?Wl:Pn),h=e.computed(()=>n.type==="line"?12+n.strokeWidth*.4:n.width*.111111+2),b=e.computed(()=>n.format(n.percentage));function y(C){const k=100/C.length;return C.map((S,N)=>Fe(S)?{color:S,percentage:(N+1)*k}:S).sort((S,N)=>S.percentage-N.percentage)}const w=C=>{var k;const{color:E}=n;if(ot(E))return E(C);if(Fe(E))return E;{const S=y(E);for(const N of S)if(N.percentage>C)return N.color;return(k=S[S.length-1])==null?void 0:k.color}};return(C,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).m(C.type),e.unref(r).is(C.status),{[e.unref(r).m("without-text")]:!C.showText,[e.unref(r).m("text-inside")]:C.textInside}]),role:"progressbar","aria-valuenow":C.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[C.type==="line"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(r).b("bar"))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).be("bar","outer")),style:e.normalizeStyle({height:`${C.strokeWidth}px`})},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(r).be("bar","inner"),{[e.unref(r).bem("bar","inner","indeterminate")]:C.indeterminate}]),style:e.normalizeStyle(e.unref(l))},[(C.showText||C.$slots.default)&&C.textInside?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(r).be("bar","innerText"))},[e.renderSlot(C.$slots,"default",{percentage:C.percentage},()=>[e.createElementVNode("span",null,e.toDisplayString(e.unref(b)),1)])],2)):e.createCommentVNode("v-if",!0)],6)],6)],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(r).b("circle")),style:e.normalizeStyle({height:`${C.width}px`,width:`${C.width}px`})},[(e.openBlock(),e.createElementBlock("svg",rq,[e.createElementVNode("path",{class:e.normalizeClass(e.unref(r).be("circle","track")),d:e.unref(i),stroke:`var(${e.unref(r).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-width":e.unref(a),fill:"none",style:e.normalizeStyle(e.unref(u))},null,14,lq),e.createElementVNode("path",{class:e.normalizeClass(e.unref(r).be("circle","path")),d:e.unref(i),stroke:e.unref(m),fill:"none",opacity:C.percentage?1:0,"stroke-linecap":C.strokeLinecap,"stroke-width":e.unref(a),style:e.normalizeStyle(e.unref(p))},null,14,aq)]))],6)),(C.showText||C.$slots.default)&&!C.textInside?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(r).e("text")),style:e.normalizeStyle({fontSize:`${e.unref(h)}px`})},[e.renderSlot(C.$slots,"default",{percentage:C.percentage},()=>[C.status?(e.openBlock(),e.createBlock(e.unref(de),{key:1},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(g))))]),_:1})):(e.openBlock(),e.createElementBlock("span",sq,e.toDisplayString(e.unref(b)),1))])],6)):e.createCommentVNode("v-if",!0)],10,oq))}});var dq=re(cq,[["__file","progress.vue"]]);const Bu=Te(dq),zk=se({modelValue:{type:Number,default:0},id:{type:String,default:void 0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:j([Array,Object]),default:()=>st(["","",""])},voidColor:{type:String,default:""},disabledVoidColor:{type:String,default:""},icons:{type:j([Array,Object]),default:()=>[ms,ms,ms]},voidIcon:{type:$t,default:()=>m8},disabledVoidIcon:{type:$t,default:()=>ms},disabled:{type:Boolean},allowHalf:{type:Boolean},showText:{type:Boolean},showScore:{type:Boolean},textColor:{type:String,default:""},texts:{type:j(Array),default:()=>st(["Extremely bad","Disappointed","Fair","Satisfied","Surprise"])},scoreTemplate:{type:String,default:"{value}"},size:{type:String,validator:hr},label:{type:String,default:void 0}}),Dk={[at]:t=>Ne(t),[Ve]:t=>Ne(t)},fq=["id","aria-label","aria-labelledby","aria-valuenow","aria-valuetext","aria-valuemax"],uq=["onMousemove","onClick"],pq={name:"ElRate"},mq=e.defineComponent({...pq,props:zk,emits:Dk,setup(t,{expose:n,emit:o}){const r=t;function l(R,T){const v=x=>it(x),V=Object.keys(T).map(x=>+x).filter(x=>{const F=T[x];return(v(F)?F.excluded:!1)?Rx-F),H=T[V[0]];return v(H)&&H.value||H}const a=e.inject(un,void 0),s=e.inject(Lt,void 0),i=yt(),c=Z("rate"),{inputId:d,isLabeledByFormItem:f}=wo(r,{formItemContext:s}),u=e.ref(r.modelValue),p=e.ref(-1),m=e.ref(!0),g=e.computed(()=>[c.b(),c.m(i.value)]),h=e.computed(()=>r.disabled||(a==null?void 0:a.disabled)),b=e.computed(()=>c.cssVarBlock({"void-color":r.voidColor,"disabled-void-color":r.disabledVoidColor,"fill-color":k.value})),y=e.computed(()=>{let R="";return r.showScore?R=r.scoreTemplate.replace(/\{\s*value\s*\}/,h.value?`${r.modelValue}`:`${u.value}`):r.showText&&(R=r.texts[Math.ceil(u.value)-1]),R}),w=e.computed(()=>r.modelValue*100-Math.floor(r.modelValue)*100),C=e.computed(()=>Ae(r.colors)?{[r.lowThreshold]:r.colors[0],[r.highThreshold]:{value:r.colors[1],excluded:!0},[r.max]:r.colors[2]}:r.colors),k=e.computed(()=>{const R=l(u.value,C.value);return it(R)?"":R}),E=e.computed(()=>{let R="";return h.value?R=`${w.value}%`:r.allowHalf&&(R="50%"),{color:k.value,width:R}}),S=e.computed(()=>Ae(r.icons)?{[r.lowThreshold]:r.icons[0],[r.highThreshold]:{value:r.icons[1],excluded:!0},[r.max]:r.icons[2]}:r.icons),N=e.computed(()=>l(r.modelValue,S.value)),$=e.computed(()=>h.value?r.disabledVoidIcon:r.voidIcon),B=e.computed(()=>l(u.value,S.value)),P=e.computed(()=>{const R=Array.from({length:r.max}),T=u.value;return R.fill(B.value,0,T),R.fill($.value,T,r.max),R});function D(R){const T=h.value&&w.value>0&&R-1r.modelValue,v=r.allowHalf&&m.value&&R-.5<=u.value&&R>u.value;return T||v}function z(R){h.value||(r.allowHalf&&m.value?(o(Ve,u.value),r.modelValue!==u.value&&o("change",u.value)):(o(Ve,R),r.modelValue!==R&&o("change",R)))}function I(R){if(h.value)return;let T=u.value;const v=R.code;return v===ue.up||v===ue.right?(r.allowHalf?T+=.5:T+=1,R.stopPropagation(),R.preventDefault()):(v===ue.left||v===ue.down)&&(r.allowHalf?T-=.5:T-=1,R.stopPropagation(),R.preventDefault()),T=T<0?0:T,T=T>r.max?r.max:T,o(Ve,T),o("change",T),T}function A(R,T){if(!h.value){if(r.allowHalf){let v=T.target;In(v,c.e("item"))&&(v=v.querySelector(`.${c.e("icon")}`)),(v.clientWidth===0||In(v,c.e("decimal")))&&(v=v.parentNode),m.value=T.offsetX*2<=v.clientWidth,u.value=m.value?R-.5:R}else u.value=R;p.value=R}}function L(){h.value||(r.allowHalf&&(m.value=r.modelValue!==Math.floor(r.modelValue)),u.value=r.modelValue,p.value=-1)}return e.watch(()=>r.modelValue,R=>{u.value=R,m.value=r.modelValue!==Math.floor(r.modelValue)}),r.modelValue||o(Ve,0),n({setCurrentValue:A,resetCurrentValue:L}),(R,T)=>{var v;return e.openBlock(),e.createElementBlock("div",{id:e.unref(d),class:e.normalizeClass([e.unref(g),e.unref(c).is("disabled",e.unref(h))]),role:"slider","aria-label":e.unref(f)?void 0:R.label||"rating","aria-labelledby":e.unref(f)?(v=e.unref(s))==null?void 0:v.labelId:void 0,"aria-valuenow":u.value,"aria-valuetext":e.unref(y)||void 0,"aria-valuemin":"0","aria-valuemax":R.max,tabindex:"0",style:e.normalizeStyle(e.unref(b)),onKeydown:I},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.max,(V,H)=>(e.openBlock(),e.createElementBlock("span",{key:H,class:e.normalizeClass(e.unref(c).e("item")),onMousemove:x=>A(V,x),onMouseleave:L,onClick:x=>z(V)},[e.createVNode(e.unref(de),{class:e.normalizeClass([e.unref(c).e("icon"),{hover:p.value===V},e.unref(c).is("active",V<=u.value)])},{default:e.withCtx(()=>[D(V)?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(P)[V-1]),{key:0})),D(V)?(e.openBlock(),e.createBlock(e.unref(de),{key:1,style:e.normalizeStyle(e.unref(E)),class:e.normalizeClass([e.unref(c).e("icon"),e.unref(c).e("decimal")])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(N))))]),_:1},8,["style","class"])):e.createCommentVNode("v-if",!0)]),_:2},1032,["class"])],42,uq))),128)),R.showText||R.showScore?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(c).e("text"))},e.toDisplayString(e.unref(y)),3)):e.createCommentVNode("v-if",!0)],46,fq)}}});var hq=re(mq,[["__file","rate.vue"]]);const Lk=Te(hq),_r={success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},_u={[_r.success]:kz,[_r.warning]:hs,[_r.error]:dd,[_r.info]:fd},Fk=se({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["success","warning","info","error"],default:"info"}}),gq={name:"ElResult"},yq=e.defineComponent({...gq,props:Fk,setup(t){const n=t,o=Z("result"),r=e.computed(()=>{const l=n.icon,a=l&&_r[l]?_r[l]:"icon-info",s=_u[a]||_u["icon-info"];return{class:a,component:s}});return(l,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(o).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(o).e("icon"))},[e.renderSlot(l.$slots,"icon",{},()=>[e.unref(r).component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(r).component),{key:0,class:e.normalizeClass(e.unref(r).class)},null,8,["class"])):e.createCommentVNode("v-if",!0)])],2),l.title||l.$slots.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).e("title"))},[e.renderSlot(l.$slots,"title",{},()=>[e.createElementVNode("p",null,e.toDisplayString(l.title),1)])],2)):e.createCommentVNode("v-if",!0),l.subTitle||l.$slots["sub-title"]?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(o).e("subtitle"))},[e.renderSlot(l.$slots,"sub-title",{},()=>[e.createElementVNode("p",null,e.toDisplayString(l.subTitle),1)])],2)):e.createCommentVNode("v-if",!0),l.$slots.extra?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(o).e("extra"))},[e.renderSlot(l.$slots,"extra")],2)):e.createCommentVNode("v-if",!0)],2))}});var bq=re(yq,[["__file","result.vue"]]);const xk=Te(bq),Hk=["start","center","end","space-around","space-between","space-evenly"],Kk=["top","middle","bottom"],Wk=se({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:Hk,default:"start"},align:{type:String,values:Kk,default:"top"}}),Cq={name:"ElRow"},wq=e.defineComponent({...Cq,props:Wk,setup(t){const n=t,o=Z("row"),r=e.computed(()=>n.gutter);e.provide($d,{gutter:r});const l=e.computed(()=>{const a={};return n.gutter&&(a.marginRight=a.marginLeft=`-${n.gutter/2}px`),a});return(a,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.tag),{class:e.normalizeClass([e.unref(o).b(),e.unref(o).is(`justify-${n.justify}`,a.justify!=="start"),e.unref(o).is(`align-${n.align}`,a.align!=="top")]),style:e.normalizeStyle(e.unref(l))},{default:e.withCtx(()=>[e.renderSlot(a.$slots,"default")]),_:3},8,["class","style"]))}});var kq=re(wq,[["__file","row.vue"]]);const jk=Te(kq);var Uk=Number.isNaN||function(n){return typeof n=="number"&&n!==n};function Sq(t,n){return!!(t===n||Uk(t)&&Uk(n))}function Eq(t,n){if(t.length!==n.length)return!1;for(var o=0;o{const n=e.getCurrentInstance().proxy.$props;return e.computed(()=>{const o=(r,l,a)=>({});return n.perfMode?Ml(o):Nq(o)})},vu=50,ci="itemRendered",di="scroll",sl="forward",fi="backward",vn="auto",ui="smart",ka="start",eo="center",Sa="end",il="horizontal",Tu="vertical",$q="ltr",cl="rtl",pi="negative",qk="positive-ascending",Vu="positive-descending",Bq={[il]:"left",[Tu]:"top"},_q=20,vq={[il]:"deltaX",[Tu]:"deltaY"};var Tq=({atEndEdge:t,atStartEdge:n,layout:o},r)=>{let l,a=0;const s=c=>c<0&&n.value||c>0&&t.value;return{hasReachedEdge:s,onWheel:c=>{gd(l);const d=c[vq[o.value]];s(a)&&s(a+d)||(a+=d,md()||c.preventDefault(),l=hd(()=>{r(a),a=0}))}}};const Mu=An({type:j([Number,Function]),required:!0}),Ru=An({type:Number}),Iu=An({type:Number,default:2}),Vq=An({type:String,values:["ltr","rtl"],default:"ltr"}),Pu=An({type:Number,default:0}),mi=An({type:Number,required:!0}),Yk=An({type:String,values:["horizontal","vertical"],default:Tu}),Au=se({className:{type:String,default:""},containerElement:{type:j([String,Object]),default:"div"},data:{type:j(Array),default:()=>st([])},direction:Vq,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},style:{type:j([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),Ou=se({cache:Iu,estimatedItemSize:Ru,layout:Yk,initScrollOffset:Pu,total:mi,itemSize:Mu,...Au}),zu={type:Number,default:6},Xk={type:Number,default:0},Zk={type:Number,default:2},Qo=se({columnCache:Iu,columnWidth:Mu,estimatedColumnWidth:Ru,estimatedRowHeight:Ru,initScrollLeft:Pu,initScrollTop:Pu,itemKey:{type:j(Function),default:({columnIndex:t,rowIndex:n})=>`${n}:${t}`},rowCache:Iu,rowHeight:Mu,totalColumn:mi,totalRow:mi,hScrollbarSize:zu,vScrollbarSize:zu,scrollbarStartGap:Xk,scrollbarEndGap:Zk,...Au}),Du=se({alwaysOn:Boolean,class:String,layout:Yk,total:mi,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:zu,startGap:Xk,endGap:Zk,visible:Boolean}),vr=(t,n)=>tt===$q||t===cl||t===il,Jk=t=>t===cl;let dl=null;function hi(t=!1){if(dl===null||t){const n=document.createElement("div"),o=n.style;o.width="50px",o.height="50px",o.overflow="scroll",o.direction="rtl";const r=document.createElement("div"),l=r.style;return l.width="100px",l.height="100px",n.appendChild(r),document.body.appendChild(n),n.scrollLeft>0?dl=Vu:(n.scrollLeft=1,n.scrollLeft===0?dl=pi:dl=qk),document.body.removeChild(n),dl}return dl}function Mq({move:t,size:n,bar:o},r){const l={},a=`translate${o.axis}(${t}px)`;return l[o.size]=n,l.transform=a,l.msTransform=a,l.webkitTransform=a,r==="horizontal"?l.height="100%":l.width="100%",l}var Lu=e.defineComponent({name:"ElVirtualScrollBar",props:Du,emits:["scroll","start-move","stop-move"],setup(t,{emit:n}){const o=e.computed(()=>t.startGap+t.endGap),r=Z("virtual-scrollbar"),l=Z("scrollbar"),a=e.ref(),s=e.ref();let i=null,c=null;const d=e.reactive({isDragging:!1,traveled:0}),f=e.computed(()=>Ud[t.layout]),u=e.computed(()=>t.clientSize-e.unref(o)),p=e.computed(()=>({position:"absolute",width:`${il===t.layout?u.value:t.scrollbarSize}px`,height:`${il===t.layout?t.scrollbarSize:u.value}px`,[Bq[t.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),m=e.computed(()=>{const S=t.ratio,N=t.clientSize;if(S>=100)return Number.POSITIVE_INFINITY;if(S>=50)return S*N/100;const $=N/3;return Math.floor(Math.min(Math.max(S*N,_q),$))}),g=e.computed(()=>{if(!Number.isFinite(m.value))return{display:"none"};const S=`${m.value}px`;return Mq({bar:f.value,size:S,move:d.traveled},t.layout)}),h=e.computed(()=>Math.floor(t.clientSize-m.value-e.unref(o))),b=()=>{window.addEventListener("mousemove",k),window.addEventListener("mouseup",C);const S=e.unref(s);!S||(c=document.onselectstart,document.onselectstart=()=>!1,S.addEventListener("touchmove",k),S.addEventListener("touchend",C))},y=()=>{window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",C),document.onselectstart=c,c=null;const S=e.unref(s);!S||(S.removeEventListener("touchmove",k),S.removeEventListener("touchend",C))},w=S=>{S.stopImmediatePropagation(),!(S.ctrlKey||[1,2].includes(S.button))&&(d.isDragging=!0,d[f.value.axis]=S.currentTarget[f.value.offset]-(S[f.value.client]-S.currentTarget.getBoundingClientRect()[f.value.direction]),n("start-move"),b())},C=()=>{d.isDragging=!1,d[f.value.axis]=0,n("stop-move"),y()},k=S=>{const{isDragging:N}=d;if(!N||!s.value||!a.value)return;const $=d[f.value.axis];if(!$)return;gd(i);const B=(a.value.getBoundingClientRect()[f.value.direction]-S[f.value.client])*-1,P=s.value[f.value.offset]-$,D=B-P;i=hd(()=>{d.traveled=Math.max(t.startGap,Math.min(D,h.value)),n("scroll",D,h.value)})},E=S=>{const N=Math.abs(S.target.getBoundingClientRect()[f.value.direction]-S[f.value.client]),$=s.value[f.value.offset]/2,B=N-$;d.traveled=Math.max(0,Math.min(B,h.value)),n("scroll",B,h.value)};return e.watch(()=>t.scrollFrom,S=>{d.isDragging||(d.traveled=Math.ceil(S*h.value))}),e.onBeforeUnmount(()=>{y()}),()=>e.h("div",{role:"presentation",ref:a,class:[r.b(),t.class,(t.alwaysOn||d.isDragging)&&"always-on"],style:p.value,onMousedown:e.withModifiers(E,["stop","prevent"]),onTouchstartPrevent:w},e.h("div",{ref:s,class:l.e("thumb"),style:g.value,onMousedown:w},[]))}}),Qk=({name:t,getOffset:n,getItemSize:o,getItemOffset:r,getEstimatedTotalSize:l,getStartIndexForOffset:a,getStopIndexForStartIndex:s,initCache:i,clearCache:c,validateProps:d})=>e.defineComponent({name:t!=null?t:"ElVirtualList",props:Ou,emits:[ci,di],setup(f,{emit:u,expose:p}){d(f);const m=e.getCurrentInstance(),g=Z("vl"),h=e.ref(i(f,m)),b=Gk(),y=e.ref(),w=e.ref(),C=e.ref(),k=e.ref({isScrolling:!1,scrollDir:"forward",scrollOffset:Ne(f.initScrollOffset)?f.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:f.scrollbarAlwaysOn}),E=e.computed(()=>{const{total:K,cache:X}=f,{isScrolling:J,scrollDir:U,scrollOffset:W}=e.unref(k);if(K===0)return[0,0,0,0];const Q=a(f,W,e.unref(h)),Y=s(f,Q,W,e.unref(h)),ee=!J||U===fi?Math.max(1,X):1,pe=!J||U===sl?Math.max(1,X):1;return[Math.max(0,Q-ee),Math.max(0,Math.min(K-1,Y+pe)),Q,Y]}),S=e.computed(()=>l(f,e.unref(h))),N=e.computed(()=>Ea(f.layout)),$=e.computed(()=>[{position:"relative",[`overflow-${N.value?"x":"y"}`]:"scroll",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:f.direction,height:Ne(f.height)?`${f.height}px`:f.height,width:Ne(f.width)?`${f.width}px`:f.width},f.style]),B=e.computed(()=>{const K=e.unref(S),X=e.unref(N);return{height:X?"100%":`${K}px`,pointerEvents:e.unref(k).isScrolling?"none":void 0,width:X?`${K}px`:"100%"}}),P=e.computed(()=>N.value?f.width:f.height),{onWheel:D}=Tq({atStartEdge:e.computed(()=>k.value.scrollOffset<=0),atEndEdge:e.computed(()=>k.value.scrollOffset>=S.value),layout:e.computed(()=>f.layout)},K=>{var X,J;(J=(X=C.value).onMouseUp)==null||J.call(X),T(Math.min(k.value.scrollOffset+K,S.value-P.value))}),z=()=>{const{total:K}=f;if(K>0){const[W,Q,Y,ee]=e.unref(E);u(ci,W,Q,Y,ee)}const{scrollDir:X,scrollOffset:J,updateRequested:U}=e.unref(k);u(di,X,J,U)},I=K=>{const{clientHeight:X,scrollHeight:J,scrollTop:U}=K.currentTarget,W=e.unref(k);if(W.scrollOffset===U)return;const Q=Math.max(0,Math.min(U,J-X));k.value={...W,isScrolling:!0,scrollDir:vr(W.scrollOffset,Q),scrollOffset:Q,updateRequested:!1},e.nextTick(H)},A=K=>{const{clientWidth:X,scrollLeft:J,scrollWidth:U}=K.currentTarget,W=e.unref(k);if(W.scrollOffset===J)return;const{direction:Q}=f;let Y=J;if(Q===cl)switch(hi()){case pi:{Y=-J;break}case Vu:{Y=U-X-J;break}}Y=Math.max(0,Math.min(Y,U-X)),k.value={...W,isScrolling:!0,scrollDir:vr(W.scrollOffset,Y),scrollOffset:Y,updateRequested:!1},e.nextTick(H)},L=K=>{e.unref(N)?A(K):I(K),z()},R=(K,X)=>{const J=(S.value-P.value)/X*K;T(Math.min(S.value-P.value,J))},T=K=>{K=Math.max(K,0),K!==e.unref(k).scrollOffset&&(k.value={...e.unref(k),scrollOffset:K,scrollDir:vr(e.unref(k).scrollOffset,K),updateRequested:!0},e.nextTick(H))},v=(K,X=vn)=>{const{scrollOffset:J}=e.unref(k);K=Math.max(0,Math.min(K,f.total-1)),T(n(f,K,X,J,e.unref(h)))},V=K=>{const{direction:X,itemSize:J,layout:U}=f,W=b.value(c&&J,c&&U,c&&X);let Q;if(Mt(W,String(K)))Q=W[K];else{const Y=r(f,K,e.unref(h)),ee=o(f,K,e.unref(h)),pe=e.unref(N),he=X===cl,we=pe?Y:0;W[K]=Q={position:"absolute",left:he?void 0:`${we}px`,right:he?`${we}px`:void 0,top:pe?0:`${Y}px`,height:pe?"100%":`${ee}px`,width:pe?`${ee}px`:"100%"}}return Q},H=()=>{k.value.isScrolling=!1,e.nextTick(()=>{b.value(-1,null,null)})},x=()=>{const K=y.value;K&&(K.scrollTop=0)};e.onMounted(()=>{if(!Oe)return;const{initScrollOffset:K}=f,X=e.unref(y);Ne(K)&&X&&(e.unref(N)?X.scrollLeft=K:X.scrollTop=K),z()}),e.onUpdated(()=>{const{direction:K,layout:X}=f,{scrollOffset:J,updateRequested:U}=e.unref(k),W=e.unref(y);if(U&&W)if(X===il)if(K===cl)switch(hi()){case"negative":{W.scrollLeft=-J;break}case"positive-ascending":{W.scrollLeft=J;break}default:{const{clientWidth:Q,scrollWidth:Y}=W;W.scrollLeft=Y-Q-J;break}}else W.scrollLeft=J;else W.scrollTop=J});const F={ns:g,clientSize:P,estimatedTotalSize:S,windowStyle:$,windowRef:y,innerRef:w,innerStyle:B,itemsToRender:E,scrollbarRef:C,states:k,getItemStyle:V,onScroll:L,onScrollbarScroll:R,onWheel:D,scrollTo:T,scrollToItem:v,resetScrollTop:x};return p({windowRef:y,innerRef:w,getItemStyleCache:b,scrollTo:T,scrollToItem:v,resetScrollTop:x,states:k}),F},render(f){var u;const{$slots:p,className:m,clientSize:g,containerElement:h,data:b,getItemStyle:y,innerElement:w,itemsToRender:C,innerStyle:k,layout:E,total:S,onScroll:N,onScrollbarScroll:$,onWheel:B,states:P,useIsScrolling:D,windowStyle:z,ns:I}=f,[A,L]=C,R=e.resolveDynamicComponent(h),T=e.resolveDynamicComponent(w),v=[];if(S>0)for(let F=A;F<=L;F++)v.push((u=p.default)==null?void 0:u.call(p,{data:b,key:F,index:F,isScrolling:D?P.isScrolling:void 0,style:y(F)}));const V=[e.h(T,{style:k,ref:"innerRef"},Fe(T)?v:{default:()=>v})],H=e.h(Lu,{ref:"scrollbarRef",clientSize:g,layout:E,onScroll:$,ratio:g*100/this.estimatedTotalSize,scrollFrom:P.scrollOffset/(this.estimatedTotalSize-g),total:S}),x=e.h(R,{class:[I.e("window"),m],style:z,onScroll:N,onWheel:B,ref:"windowRef",key:0},Fe(R)?[V]:{default:()=>[V]});return e.h("div",{key:0,class:[I.e("wrapper"),P.scrollbarAlwaysOn?"always-on":""]},[x,H])}}),Fu=Qk({name:"ElFixedSizeList",getItemOffset:({itemSize:t},n)=>n*t,getItemSize:({itemSize:t})=>t,getEstimatedTotalSize:({total:t,itemSize:n})=>n*t,getOffset:({height:t,total:n,itemSize:o,layout:r,width:l},a,s,i)=>{const c=Ea(r)?l:t,d=Math.max(0,n*o-c),f=Math.min(d,a*o),u=Math.max(0,(a+1)*o-c);switch(s===ui&&(i>=u-c&&i<=f+c?s=vn:s=eo),s){case ka:return f;case Sa:return u;case eo:{const p=Math.round(u+(f-u)/2);return pd+Math.floor(c/2)?d:p}case vn:default:return i>=u&&i<=f?i:iMath.max(0,Math.min(t-1,Math.floor(o/n))),getStopIndexForStartIndex:({height:t,total:n,itemSize:o,layout:r,width:l},a,s)=>{const i=a*o,c=Ea(r)?l:t,d=Math.ceil((c+s-i)/o);return Math.max(0,Math.min(n-1,a+d-1))},initCache(){},clearCache:!0,validateProps(){}});const fl=(t,n,o)=>{const{itemSize:r}=t,{items:l,lastVisitedIndex:a}=o;if(n>a){let s=0;if(a>=0){const i=l[a];s=i.offset+i.size}for(let i=a+1;i<=n;i++){const c=r(i);l[i]={offset:s,size:c},s+=c}o.lastVisitedIndex=n}return l[n]},Rq=(t,n,o)=>{const{items:r,lastVisitedIndex:l}=n;return(l>0?r[l].offset:0)>=o?eS(t,n,0,l,o):Iq(t,n,Math.max(0,l),o)},eS=(t,n,o,r,l)=>{for(;o<=r;){const a=o+Math.floor((r-o)/2),s=fl(t,a,n).offset;if(s===l)return a;sl&&(r=a-1)}return Math.max(0,o-1)},Iq=(t,n,o,r)=>{const{total:l}=t;let a=1;for(;o{let l=0;if(r>=t&&(r=t-1),r>=0){const i=n[r];l=i.offset+i.size}const s=(t-r-1)*o;return l+s};var nS=Qk({name:"ElDynamicSizeList",getItemOffset:(t,n,o)=>fl(t,n,o).offset,getItemSize:(t,n,{items:o})=>o[n].size,getEstimatedTotalSize:tS,getOffset:(t,n,o,r,l)=>{const{height:a,layout:s,width:i}=t,c=Ea(s)?i:a,d=fl(t,n,l),f=tS(t,l),u=Math.max(0,Math.min(f-c,d.offset)),p=Math.max(0,d.offset-c+d.size);switch(o===ui&&(r>=p-c&&r<=u+c?o=vn:o=eo),o){case ka:return u;case Sa:return p;case eo:return Math.round(p+(u-p)/2);case vn:default:return r>=p&&r<=u?r:rRq(t,o,n),getStopIndexForStartIndex:(t,n,o,r)=>{const{height:l,total:a,layout:s,width:i}=t,c=Ea(s)?i:l,d=fl(t,n,r),f=o+c;let u=d.offset+d.size,p=n;for(;p{var a,s;o.lastVisitedIndex=Math.min(o.lastVisitedIndex,r-1),(a=n.exposed)==null||a.getItemStyleCache(-1),l&&((s=n.proxy)==null||s.$forceUpdate())},o},clearCache:!1,validateProps:({itemSize:t})=>{}});const Pq=({atXEndEdge:t,atXStartEdge:n,atYEndEdge:o,atYStartEdge:r},l)=>{let a=null,s=0,i=0;const c=(f,u)=>{const p=f<0&&n.value||f>0&&t.value,m=u<0&&r.value||u>0&&o.value;return p&&m};return{hasReachedEdge:c,onWheel:f=>{gd(a);let u=f.deltaX,p=f.deltaY;Math.abs(u)>Math.abs(p)?p=0:u=0,f.shiftKey&&p!==0&&(u=p,p=0),!(c(s,i)&&c(s+u,i+p))&&(s+=u,i+=p,md()||f.preventDefault(),a=hd(()=>{l(s,i),s=0,i=0}))}}};var oS=({name:t,clearCache:n,getColumnPosition:o,getColumnStartIndexForOffset:r,getColumnStopIndexForStartIndex:l,getEstimatedTotalHeight:a,getEstimatedTotalWidth:s,getColumnOffset:i,getRowOffset:c,getRowPosition:d,getRowStartIndexForOffset:f,getRowStopIndexForStartIndex:u,initCache:p,injectToInstance:m,validateProps:g})=>e.defineComponent({name:t!=null?t:"ElVirtualList",props:Qo,emits:[ci,di],setup(h,{emit:b,expose:y,slots:w}){const C=Z("vl");g(h);const k=e.getCurrentInstance(),E=e.ref(p(h,k));m==null||m(k,E);const S=e.ref(),N=e.ref(),$=e.ref(),B=e.ref(null),P=e.ref({isScrolling:!1,scrollLeft:Ne(h.initScrollLeft)?h.initScrollLeft:0,scrollTop:Ne(h.initScrollTop)?h.initScrollTop:0,updateRequested:!1,xAxisScrollDir:sl,yAxisScrollDir:sl}),D=Gk(),z=e.computed(()=>Number.parseInt(`${h.height}`,10)),I=e.computed(()=>Number.parseInt(`${h.width}`,10)),A=e.computed(()=>{const{totalColumn:me,totalRow:ne,columnCache:oe}=h,{isScrolling:fe,xAxisScrollDir:ye,scrollLeft:$e}=e.unref(P);if(me===0||ne===0)return[0,0,0,0];const ve=r(h,$e,e.unref(E)),te=l(h,ve,$e,e.unref(E)),Ee=!fe||ye===fi?Math.max(1,oe):1,Re=!fe||ye===sl?Math.max(1,oe):1;return[Math.max(0,ve-Ee),Math.max(0,Math.min(me-1,te+Re)),ve,te]}),L=e.computed(()=>{const{totalColumn:me,totalRow:ne,rowCache:oe}=h,{isScrolling:fe,yAxisScrollDir:ye,scrollTop:$e}=e.unref(P);if(me===0||ne===0)return[0,0,0,0];const ve=f(h,$e,e.unref(E)),te=u(h,ve,$e,e.unref(E)),Ee=!fe||ye===fi?Math.max(1,oe):1,Re=!fe||ye===sl?Math.max(1,oe):1;return[Math.max(0,ve-Ee),Math.max(0,Math.min(ne-1,te+Re)),ve,te]}),R=e.computed(()=>a(h,e.unref(E))),T=e.computed(()=>s(h,e.unref(E))),v=e.computed(()=>{var me;return[{position:"relative",overflow:"hidden",WebkitOverflowScrolling:"touch",willChange:"transform"},{direction:h.direction,height:Ne(h.height)?`${h.height}px`:h.height,width:Ne(h.width)?`${h.width}px`:h.width},(me=h.style)!=null?me:{}]}),V=e.computed(()=>{const me=`${e.unref(T)}px`;return{height:`${e.unref(R)}px`,pointerEvents:e.unref(P).isScrolling?"none":void 0,width:me}}),H=()=>{const{totalColumn:me,totalRow:ne}=h;if(me>0&&ne>0){const[te,Ee,Re,xe]=e.unref(A),[q,le,M,G]=e.unref(L);b(ci,{columnCacheStart:te,columnCacheEnd:Ee,rowCacheStart:q,rowCacheEnd:le,columnVisibleStart:Re,columnVisibleEnd:xe,rowVisibleStart:M,rowVisibleEnd:G})}const{scrollLeft:oe,scrollTop:fe,updateRequested:ye,xAxisScrollDir:$e,yAxisScrollDir:ve}=e.unref(P);b(di,{xAxisScrollDir:$e,scrollLeft:oe,yAxisScrollDir:ve,scrollTop:fe,updateRequested:ye})},x=me=>{const{clientHeight:ne,clientWidth:oe,scrollHeight:fe,scrollLeft:ye,scrollTop:$e,scrollWidth:ve}=me.currentTarget,te=e.unref(P);if(te.scrollTop===$e&&te.scrollLeft===ye)return;let Ee=ye;if(Jk(h.direction))switch(hi()){case pi:Ee=-ye;break;case Vu:Ee=ve-oe-ye;break}P.value={...te,isScrolling:!0,scrollLeft:Ee,scrollTop:Math.max(0,Math.min($e,fe-ne)),updateRequested:!0,xAxisScrollDir:vr(te.scrollLeft,Ee),yAxisScrollDir:vr(te.scrollTop,$e)},e.nextTick(()=>Q()),Y(),H()},F=(me,ne)=>{const oe=e.unref(z),fe=(R.value-oe)/ne*me;J({scrollTop:Math.min(R.value-oe,fe)})},K=(me,ne)=>{const oe=e.unref(I),fe=(T.value-oe)/ne*me;J({scrollLeft:Math.min(T.value-oe,fe)})},{onWheel:X}=Pq({atXStartEdge:e.computed(()=>P.value.scrollLeft<=0),atXEndEdge:e.computed(()=>P.value.scrollLeft>=T.value),atYStartEdge:e.computed(()=>P.value.scrollTop<=0),atYEndEdge:e.computed(()=>P.value.scrollTop>=R.value)},(me,ne)=>{var oe,fe,ye,$e;(fe=(oe=N.value)==null?void 0:oe.onMouseUp)==null||fe.call(oe),($e=(ye=N.value)==null?void 0:ye.onMouseUp)==null||$e.call(ye);const ve=e.unref(I),te=e.unref(z);J({scrollLeft:Math.min(P.value.scrollLeft+me,T.value-ve),scrollTop:Math.min(P.value.scrollTop+ne,R.value-te)})}),J=({scrollLeft:me=P.value.scrollLeft,scrollTop:ne=P.value.scrollTop})=>{me=Math.max(me,0),ne=Math.max(ne,0);const oe=e.unref(P);ne===oe.scrollTop&&me===oe.scrollLeft||(P.value={...oe,xAxisScrollDir:vr(oe.scrollLeft,me),yAxisScrollDir:vr(oe.scrollTop,ne),scrollLeft:me,scrollTop:ne,updateRequested:!0},e.nextTick(()=>Q()),Y(),H())},U=(me=0,ne=0,oe=vn)=>{const fe=e.unref(P);ne=Math.max(0,Math.min(ne,h.totalColumn-1)),me=Math.max(0,Math.min(me,h.totalRow-1));const ye=B0(C.namespace.value),$e=e.unref(E),ve=a(h,$e),te=s(h,$e);J({scrollLeft:i(h,ne,oe,fe.scrollLeft,$e,te>h.width?ye:0),scrollTop:c(h,me,oe,fe.scrollTop,$e,ve>h.height?ye:0)})},W=(me,ne)=>{const{columnWidth:oe,direction:fe,rowHeight:ye}=h,$e=D.value(n&&oe,n&&ye,n&&fe),ve=`${me},${ne}`;if(Mt($e,ve))return $e[ve];{const[,te]=o(h,ne,e.unref(E)),Ee=e.unref(E),Re=Jk(fe),[xe,q]=d(h,me,Ee),[le]=o(h,ne,Ee);return $e[ve]={position:"absolute",left:Re?void 0:`${te}px`,right:Re?`${te}px`:void 0,top:`${q}px`,height:`${xe}px`,width:`${le}px`},$e[ve]}},Q=()=>{P.value.isScrolling=!1,e.nextTick(()=>{D.value(-1,null,null)})};e.onMounted(()=>{if(!Oe)return;const{initScrollLeft:me,initScrollTop:ne}=h,oe=e.unref(S);oe&&(Ne(me)&&(oe.scrollLeft=me),Ne(ne)&&(oe.scrollTop=ne)),H()});const Y=()=>{const{direction:me}=h,{scrollLeft:ne,scrollTop:oe,updateRequested:fe}=e.unref(P),ye=e.unref(S);if(fe&&ye){if(me===cl)switch(hi()){case pi:{ye.scrollLeft=-ne;break}case qk:{ye.scrollLeft=ne;break}default:{const{clientWidth:$e,scrollWidth:ve}=ye;ye.scrollLeft=ve-$e-ne;break}}else ye.scrollLeft=Math.max(0,ne);ye.scrollTop=Math.max(0,oe)}},{resetAfterColumnIndex:ee,resetAfterRowIndex:pe,resetAfter:he}=k.proxy;y({windowRef:S,innerRef:B,getItemStyleCache:D,scrollTo:J,scrollToItem:U,states:P,resetAfterColumnIndex:ee,resetAfterRowIndex:pe,resetAfter:he});const we=()=>{const{scrollbarAlwaysOn:me,scrollbarStartGap:ne,scrollbarEndGap:oe,totalColumn:fe,totalRow:ye}=h,$e=e.unref(I),ve=e.unref(z),te=e.unref(T),Ee=e.unref(R),{scrollLeft:Re,scrollTop:xe}=e.unref(P),q=e.h(Lu,{ref:N,alwaysOn:me,startGap:ne,endGap:oe,class:C.e("horizontal"),clientSize:$e,layout:"horizontal",onScroll:K,ratio:$e*100/te,scrollFrom:Re/(te-$e),total:ye,visible:!0}),le=e.h(Lu,{ref:$,alwaysOn:me,startGap:ne,endGap:oe,class:C.e("vertical"),clientSize:ve,layout:"vertical",onScroll:F,ratio:ve*100/Ee,scrollFrom:xe/(Ee-ve),total:fe,visible:!0});return{horizontalScrollbar:q,verticalScrollbar:le}},Me=()=>{var me;const[ne,oe]=e.unref(A),[fe,ye]=e.unref(L),{data:$e,totalColumn:ve,totalRow:te,useIsScrolling:Ee,itemKey:Re}=h,xe=[];if(te>0&&ve>0)for(let q=fe;q<=ye;q++)for(let le=ne;le<=oe;le++)xe.push((me=w.default)==null?void 0:me.call(w,{columnIndex:le,data:$e,key:Re({columnIndex:le,data:$e,rowIndex:q}),isScrolling:Ee?e.unref(P).isScrolling:void 0,style:W(q,le),rowIndex:q}));return xe},be=()=>{const me=e.resolveDynamicComponent(h.innerElement),ne=Me();return[e.h(me,{style:e.unref(V),ref:B},Fe(me)?ne:{default:()=>ne})]};return()=>{const me=e.resolveDynamicComponent(h.containerElement),{horizontalScrollbar:ne,verticalScrollbar:oe}=we(),fe=be();return e.h("div",{key:0,class:C.e("wrapper")},[e.h(me,{class:h.className,style:e.unref(v),onScroll:x,onWheel:X,ref:S},Fe(me)?fe:{default:()=>fe}),ne,oe])}}}),rS=oS({name:"ElFixedSizeGrid",getColumnPosition:({columnWidth:t},n)=>[t,n*t],getRowPosition:({rowHeight:t},n)=>[t,n*t],getEstimatedTotalHeight:({totalRow:t,rowHeight:n})=>n*t,getEstimatedTotalWidth:({totalColumn:t,columnWidth:n})=>n*t,getColumnOffset:({totalColumn:t,columnWidth:n,width:o},r,l,a,s,i)=>{o=Number(o);const c=Math.max(0,t*n-o),d=Math.min(c,r*n),f=Math.max(0,r*n-o+i+n);switch(l==="smart"&&(a>=f-o&&a<=d+o?l=vn:l=eo),l){case ka:return d;case Sa:return f;case eo:{const u=Math.round(f+(d-f)/2);return uc+Math.floor(o/2)?c:u}case vn:default:return a>=f&&a<=d?a:f>d||a{n=Number(n);const c=Math.max(0,o*t-n),d=Math.min(c,r*t),f=Math.max(0,r*t-n+i+t);switch(l===ui&&(a>=f-n&&a<=d+n?l=vn:l=eo),l){case ka:return d;case Sa:return f;case eo:{const u=Math.round(f+(d-f)/2);return uc+Math.floor(n/2)?c:u}case vn:default:return a>=f&&a<=d?a:f>d||aMath.max(0,Math.min(n-1,Math.floor(o/t))),getColumnStopIndexForStartIndex:({columnWidth:t,totalColumn:n,width:o},r,l)=>{const a=r*t,s=Math.ceil((o+l-a)/t);return Math.max(0,Math.min(n-1,r+s-1))},getRowStartIndexForOffset:({rowHeight:t,totalRow:n},o)=>Math.max(0,Math.min(n-1,Math.floor(o/t))),getRowStopIndexForStartIndex:({rowHeight:t,totalRow:n,height:o},r,l)=>{const a=r*t,s=Math.ceil((o+l-a)/t);return Math.max(0,Math.min(n-1,r+s-1))},initCache:()=>{},clearCache:!0,validateProps:({columnWidth:t,rowHeight:n})=>{}});const{max:gi,min:lS,floor:aS}=Math,Aq={column:"columnWidth",row:"rowHeight"},xu={column:"lastVisitedColumnIndex",row:"lastVisitedRowIndex"},vo=(t,n,o,r)=>{const[l,a,s]=[o[r],t[Aq[r]],o[xu[r]]];if(n>s){let i=0;if(s>=0){const c=l[s];i=c.offset+c.size}for(let c=s+1;c<=n;c++){const d=a(c);l[c]={offset:i,size:d},i+=d}o[xu[r]]=n}return l[n]},sS=(t,n,o,r,l,a)=>{for(;o<=r;){const s=o+aS((r-o)/2),i=vo(t,s,n,a).offset;if(i===l)return s;i{const a=l==="column"?t.totalColumn:t.totalRow;let s=1;for(;o{const[l,a]=[n[r],n[xu[r]]];return(a>0?l[a].offset:0)>=o?sS(t,n,0,a,o,r):Oq(t,n,gi(0,a),o,r)},cS=({totalRow:t},{estimatedRowHeight:n,lastVisitedRowIndex:o,row:r})=>{let l=0;if(o>=t&&(o=t-1),o>=0){const i=r[o];l=i.offset+i.size}const s=(t-o-1)*n;return l+s},dS=({totalColumn:t},{column:n,estimatedColumnWidth:o,lastVisitedColumnIndex:r})=>{let l=0;if(r>t&&(r=t-1),r>=0){const i=n[r];l=i.offset+i.size}const s=(t-r-1)*o;return l+s},zq={column:dS,row:cS},fS=(t,n,o,r,l,a,s)=>{const[i,c]=[a==="row"?t.height:t.width,zq[a]],d=vo(t,n,l,a),f=c(t,l),u=gi(0,lS(f-i,d.offset)),p=gi(0,d.offset-i+s+d.size);switch(o===ui&&(r>=p-i&&r<=u+i?o=vn:o=eo),o){case ka:return u;case Sa:return p;case eo:return Math.round(p+(u-p)/2);case vn:default:return r>=p&&r<=u?r:p>u||r{const r=vo(t,n,o,"column");return[r.size,r.offset]},getRowPosition:(t,n,o)=>{const r=vo(t,n,o,"row");return[r.size,r.offset]},getColumnOffset:(t,n,o,r,l,a)=>fS(t,n,o,r,l,"column",a),getRowOffset:(t,n,o,r,l,a)=>fS(t,n,o,r,l,"row",a),getColumnStartIndexForOffset:(t,n,o)=>iS(t,o,n,"column"),getColumnStopIndexForStartIndex:(t,n,o,r)=>{const l=vo(t,n,r,"column"),a=o+t.width;let s=l.offset+l.size,i=n;for(;iiS(t,o,n,"row"),getRowStopIndexForStartIndex:(t,n,o,r)=>{const{totalRow:l,height:a}=t,s=vo(t,n,r,"row"),i=o+a;let c=s.size+s.offset,d=n;for(;d{const o=({columnIndex:a,rowIndex:s},i)=>{var c,d;i=Rt(i)?!0:i,Ne(a)&&(n.value.lastVisitedColumnIndex=Math.min(n.value.lastVisitedColumnIndex,a-1)),Ne(s)&&(n.value.lastVisitedRowIndex=Math.min(n.value.lastVisitedRowIndex,s-1)),(c=t.exposed)==null||c.getItemStyleCache.value(-1,null,null),i&&((d=t.proxy)==null||d.$forceUpdate())},r=(a,s)=>{o({columnIndex:a},s)},l=(a,s)=>{o({rowIndex:a},s)};Object.assign(t.proxy,{resetAfterColumnIndex:r,resetAfterRowIndex:l,resetAfter:o})},initCache:({estimatedColumnWidth:t=vu,estimatedRowHeight:n=vu})=>({column:{},estimatedColumnWidth:t,estimatedRowHeight:n,lastVisitedColumnIndex:-1,lastVisitedRowIndex:-1,row:{}}),clearCache:!1,validateProps:({columnWidth:t,rowHeight:n})=>{}});const Dq=e.defineComponent({props:{item:{type:Object,required:!0},style:Object,height:Number},setup(){return{ns:Z("select")}}});function Lq(t,n,o,r,l,a){return t.item.isTitle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.ns.be("group","title")),style:e.normalizeStyle([t.style,{lineHeight:`${t.height}px`}])},e.toDisplayString(t.item.label),7)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(t.ns.be("group","split")),style:e.normalizeStyle(t.style)},[e.createElementVNode("span",{class:e.normalizeClass(t.ns.be("group","split-dash")),style:e.normalizeStyle({top:`${t.height/2}px`})},null,6)],6))}var Fq=re(Dq,[["render",Lq],["__file","group-item.vue"]]);function xq(t,{emit:n}){return{hoverItem:()=>{t.disabled||n("hover",t.index)},selectOptionClick:()=>{t.disabled||n("select",t.item,t.index)}}}const Hq={allowCreate:Boolean,autocomplete:{type:String,default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:[String,Object],default:Fo},effect:{type:String,default:"light"},collapseTags:Boolean,collapseTagsTooltip:{type:Boolean,default:!1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:170},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,label:String,modelValue:[Array,String,Number,Boolean,Object],multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:Array,required:!0},placeholder:{type:String},teleported:vt.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:Object,default:()=>({})},remote:Boolean,size:{type:String,validator:hr},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:{type:Boolean,default:!1},validateEvent:{type:Boolean,default:!0}},Kq={data:Array,disabled:Boolean,hovering:Boolean,item:Object,index:Number,style:Object,selected:Boolean,created:Boolean},Wq=e.defineComponent({props:Kq,emits:["select","hover"],setup(t,{emit:n}){const o=Z("select"),{hoverItem:r,selectOptionClick:l}=xq(t,{emit:n});return{ns:o,hoverItem:r,selectOptionClick:l}}}),jq=["aria-selected"];function Uq(t,n,o,r,l,a){return e.openBlock(),e.createElementBlock("li",{"aria-selected":t.selected,style:e.normalizeStyle(t.style),class:e.normalizeClass([t.ns.be("dropdown","option-item"),t.ns.is("selected",t.selected),t.ns.is("disabled",t.disabled),t.ns.is("created",t.created),{hover:t.hovering}]),onMouseenter:n[0]||(n[0]=(...s)=>t.hoverItem&&t.hoverItem(...s)),onClick:n[1]||(n[1]=e.withModifiers((...s)=>t.selectOptionClick&&t.selectOptionClick(...s),["stop"]))},[e.renderSlot(t.$slots,"default",{item:t.item,index:t.index,disabled:t.disabled},()=>[e.createElementVNode("span",null,e.toDisplayString(t.item.label),1)])],46,jq)}var Gq=re(Wq,[["render",Uq],["__file","option-item.vue"]]);const Hu="ElSelectV2Injection";var qq=e.defineComponent({name:"ElSelectDropdown",props:{data:{type:Array,required:!0},hoveringIndex:Number,width:Number},setup(t,{slots:n,expose:o}){const r=e.inject(Hu),l=Z("select"),a=e.ref([]),s=e.ref(),i=e.computed(()=>Rt(r.props.estimatedOptionHeight)),c=e.computed(()=>i.value?{itemSize:r.props.itemHeight}:{estimatedSize:r.props.estimatedOptionHeight,itemSize:N=>a.value[N]}),d=(N=[],$)=>{const{props:{valueKey:B}}=r;return it($)?N&&N.some(P=>et(P,B)===et($,B)):N.includes($)},f=(N,$)=>{if(it($)){const{valueKey:B}=r.props;return et(N,B)===et($,B)}else return N===$},u=(N,$)=>{const{valueKey:B}=r.props;return r.props.multiple?d(N,et($,B)):f(N,et($,B))},p=(N,$)=>{const{disabled:B,multiple:P,multipleLimit:D}=r.props;return B||!$&&(P?D>0&&N.length>=D:!1)},m=N=>t.hoveringIndex===N;o({listRef:s,isSized:i,isItemDisabled:p,isItemHovering:m,isItemSelected:u,scrollToItem:N=>{const $=s.value;$&&$.scrollToItem(N)},resetScrollTop:()=>{const N=s.value;N&&N.resetScrollTop()}});const b=N=>{const{index:$,data:B,style:P}=N,D=e.unref(i),{itemSize:z,estimatedSize:I}=e.unref(c),{modelValue:A}=r.props,{onSelect:L,onHover:R}=r,T=B[$];if(T.type==="Group")return e.createVNode(Fq,{item:T,style:P,height:D?z:I},null);const v=u(A,T),V=p(A,v),H=m($);return e.createVNode(Gq,e.mergeProps(N,{selected:v,disabled:T.disabled||V,created:!!T.created,hovering:H,item:T,onSelect:L,onHover:R}),{default:x=>{var F;return((F=n.default)==null?void 0:F.call(n,x))||e.createVNode("span",null,[T.label])}})},{onKeyboardNavigate:y,onKeyboardSelect:w}=r,C=()=>{y("forward")},k=()=>{y("backward")},E=()=>{r.expanded=!1},S=N=>{const{code:$}=N,{tab:B,esc:P,down:D,up:z,enter:I}=ue;switch($!==B&&(N.preventDefault(),N.stopPropagation()),$){case B:case P:{E();break}case D:{C();break}case z:{k();break}case I:{w();break}}};return()=>{var N;const{data:$,width:B}=t,{height:P,multiple:D,scrollbarAlwaysOn:z}=r.props;if($.length===0)return e.createVNode("div",{class:l.b("dropdown"),style:{width:`${B}px`}},[(N=n.empty)==null?void 0:N.call(n)]);const I=e.unref(i)?Fu:nS;return e.createVNode("div",{class:[l.b("dropdown"),l.is("multiple",D)]},[e.createVNode(I,e.mergeProps({ref:s},e.unref(c),{className:l.be("dropdown","list"),scrollbarAlwaysOn:z,data:$,height:P,width:B,total:$.length,onKeydown:S}),{default:A=>e.createVNode(b,A,null)})])}}});function Yq(t,n){const o=e.ref(0),r=e.ref(null),l=e.computed(()=>t.allowCreate&&t.filterable);function a(f){const u=p=>p.value===f;return t.options&&t.options.some(u)||n.createdOptions.some(u)}function s(f){!l.value||(t.multiple&&f.created?o.value++:r.value=f)}function i(f){if(l.value)if(f&&f.length>0&&!a(f)){const u={value:f,label:f,created:!0,disabled:!1};n.createdOptions.length>=o.value?n.createdOptions[o.value]=u:n.createdOptions.push(u)}else if(t.multiple)n.createdOptions.length=o.value;else{const u=r.value;n.createdOptions.length=0,u&&u.created&&n.createdOptions.push(u)}}function c(f){if(!l.value||!f||!f.created||f.created&&t.reserveKeyword&&n.inputValue===f.label)return;const u=n.createdOptions.findIndex(p=>p.value===f.value);~u&&(n.createdOptions.splice(u,1),o.value--)}function d(){l.value&&(n.createdOptions.length=0,o.value=0)}return{createNewOption:i,removeNewOption:c,selectNewOption:s,clearAllNewOption:d}}const Xq=t=>{const n=[];return t.forEach(o=>{Ae(o.options)?(n.push({label:o.label,isTitle:!0,type:"Group"}),o.options.forEach(r=>{n.push(r)}),n.push({type:"Group"})):n.push(o)}),n};function Zq(t){const n=e.ref(!1);return{handleCompositionStart:()=>{n.value=!0},handleCompositionUpdate:a=>{const s=a.target.value,i=s[s.length-1]||"";n.value=!Cs(i)},handleCompositionEnd:a=>{n.value&&(n.value=!1,ot(t)&&t(a))}}}const pS="",mS=11,Jq={larget:51,default:42,small:33};var Qq=(t,n)=>{const{t:o}=We(),r=Z("select-v2"),l=Z("input"),{form:a,formItem:s}=Co(),i=e.reactive({inputValue:pS,displayInputValue:pS,calculatedWidth:0,cachedPlaceholder:"",cachedOptions:[],createdOptions:[],createdLabel:"",createdSelected:!1,currentPlaceholder:"",hoveringIndex:-1,comboBoxHovering:!1,isOnComposition:!1,isSilentBlur:!1,isComposing:!1,inputLength:20,selectWidth:200,initialInputHeight:0,previousQuery:null,previousValue:"",query:"",selectedLabel:"",softFocus:!1,tagInMultiLine:!1}),c=e.ref(-1),d=e.ref(-1),f=e.ref(null),u=e.ref(null),p=e.ref(null),m=e.ref(null),g=e.ref(null),h=e.ref(null),b=e.ref(null),y=e.ref(!1),w=e.computed(()=>t.disabled||(a==null?void 0:a.disabled)),C=e.computed(()=>{const ae=z.value.length*34;return ae>t.height?t.height:ae}),k=e.computed(()=>t.modelValue!==void 0&&t.modelValue!==null&&t.modelValue!==""),E=e.computed(()=>{const ae=t.multiple?Array.isArray(t.modelValue)&&t.modelValue.length>0:k.value;return t.clearable&&!w.value&&i.comboBoxHovering&&ae}),S=e.computed(()=>t.remote&&t.filterable?"":Kl),N=e.computed(()=>S.value&&r.is("reverse",y.value)),$=e.computed(()=>(s==null?void 0:s.validateState)||""),B=e.computed(()=>A0[$.value]),P=e.computed(()=>t.remote?300:0),D=e.computed(()=>{const ae=z.value;return t.loading?t.loadingText||o("el.select.loading"):t.remote&&i.inputValue===""&&ae.length===0?!1:t.filterable&&i.inputValue&&ae.length>0?t.noMatchText||o("el.select.noMatch"):ae.length===0?t.noDataText||o("el.select.noData"):null}),z=e.computed(()=>{const ae=Se=>{var ze;const rt=i.inputValue;return rt?(ze=Se.label)==null?void 0:ze.includes(rt):!0};return t.loading?[]:Xq(t.options.concat(i.createdOptions).map(Se=>{if(Ae(Se.options)){const ze=Se.options.filter(ae);if(ze.length>0)return{...Se,options:ze}}else if(t.remote||ae(Se))return Se;return null}).filter(Se=>Se!==null))}),I=e.computed(()=>z.value.every(ae=>ae.disabled)),A=yt(),L=e.computed(()=>A.value==="small"?"small":"default"),R=e.computed(()=>{const ae=h.value,Se=L.value||"default",ze=ae?Number.parseInt(getComputedStyle(ae).paddingLeft):0,rt=ae?Number.parseInt(getComputedStyle(ae).paddingRight):0;return i.selectWidth-rt-ze-Jq[Se]}),T=()=>{var ae;d.value=((ae=g.value)==null?void 0:ae.offsetWidth)||200},v=e.computed(()=>({width:`${i.calculatedWidth===0?mS:Math.ceil(i.calculatedWidth)+mS}px`})),V=e.computed(()=>Ae(t.modelValue)?t.modelValue.length===0&&!i.displayInputValue:t.filterable?i.displayInputValue.length===0:!0),H=e.computed(()=>{const ae=t.placeholder||o("el.select.placeholder");return t.multiple?ae:i.selectedLabel||ae}),x=e.computed(()=>{var ae,Se;return(Se=(ae=m.value)==null?void 0:ae.popperRef)==null?void 0:Se.contentRef}),F=e.computed(()=>{if(t.multiple){const ae=t.modelValue.length;if(t.modelValue.length>0)return z.value.findIndex(Se=>Se.value===t.modelValue[ae-1])}else if(t.modelValue)return z.value.findIndex(ae=>ae.value===t.modelValue);return-1}),K=e.computed({get(){return y.value&&D.value!==!1},set(ae){y.value=ae}}),{createNewOption:X,removeNewOption:J,selectNewOption:U,clearAllNewOption:W}=Yq(t,i),{handleCompositionStart:Q,handleCompositionUpdate:Y,handleCompositionEnd:ee}=Zq(ae=>ct(ae)),pe=()=>{var ae,Se,ze;(Se=(ae=u.value).focus)==null||Se.call(ae),(ze=m.value)==null||ze.updatePopper()},he=()=>{if(!t.automaticDropdown&&!w.value)return i.isComposing&&(i.softFocus=!0),e.nextTick(()=>{var ae,Se;y.value=!y.value,(Se=(ae=u.value)==null?void 0:ae.focus)==null||Se.call(ae)})},we=()=>(t.filterable&&i.inputValue!==i.selectedLabel&&(i.query=i.selectedLabel),be(i.inputValue),e.nextTick(()=>{X(i.inputValue)})),Me=Dt(we,P.value),be=ae=>{i.previousQuery!==ae&&(i.previousQuery=ae,t.filterable&&ot(t.filterMethod)?t.filterMethod(ae):t.filterable&&t.remote&&ot(t.remoteMethod)&&t.remoteMethod(ae))},Ke=ae=>{Jt(t.modelValue,ae)||n(at,ae)},me=ae=>{n(Ve,ae),Ke(ae),i.previousValue=ae.toString()},ne=(ae=[],Se)=>{if(!it(Se))return ae.indexOf(Se);const ze=t.valueKey;let rt=-1;return ae.some((oo,ro)=>et(oo,ze)===et(Se,ze)?(rt=ro,!0):!1),rt},oe=ae=>it(ae)?et(ae,t.valueKey):ae,fe=ae=>it(ae)?ae.label:ae,ye=()=>{if(!(t.collapseTags&&!t.filterable))return e.nextTick(()=>{var ae,Se;if(!u.value)return;const ze=h.value;g.value.height=ze.offsetHeight,y.value&&D.value!==!1&&((Se=(ae=m.value)==null?void 0:ae.updatePopper)==null||Se.call(ae))})},$e=()=>{var ae,Se;if(ve(),T(),(Se=(ae=m.value)==null?void 0:ae.updatePopper)==null||Se.call(ae),t.multiple)return ye()},ve=()=>{const ae=h.value;ae&&(i.selectWidth=ae.getBoundingClientRect().width)},te=(ae,Se,ze=!0)=>{var rt,oo;if(t.multiple){let ro=t.modelValue.slice();const Ai=ne(ro,oe(ae));Ai>-1?(ro=[...ro.slice(0,Ai),...ro.slice(Ai+1)],i.cachedOptions.splice(Ai,1),J(ae)):(t.multipleLimit<=0||ro.length{const{valueKey:ze}=t,rt=t.modelValue.indexOf(et(Se,ze));if(rt>-1&&!w.value){const oo=[...t.modelValue.slice(0,rt),...t.modelValue.slice(rt+1)];return i.cachedOptions.splice(rt,1),me(oo),n("remove-tag",et(Se,ze)),i.softFocus=!0,J(Se),e.nextTick(pe)}ae.stopPropagation()},Re=ae=>{const Se=i.isComposing;i.isComposing=!0,i.softFocus?i.softFocus=!1:Se||n("focus",ae)},xe=()=>(i.softFocus=!1,e.nextTick(()=>{var ae,Se;(Se=(ae=u.value)==null?void 0:ae.blur)==null||Se.call(ae),b.value&&(i.calculatedWidth=b.value.getBoundingClientRect().width),i.isSilentBlur?i.isSilentBlur=!1:i.isComposing&&n("blur"),i.isComposing=!1})),q=()=>{i.displayInputValue.length>0?G(""):y.value=!1},le=ae=>{if(i.displayInputValue.length===0){ae.preventDefault();const Se=t.modelValue.slice();Se.pop(),J(i.cachedOptions.pop()),me(Se)}},M=()=>{let ae;return Ae(t.modelValue)?ae=[]:ae="",i.softFocus=!0,t.multiple?i.cachedOptions=[]:i.selectedLabel="",y.value=!1,me(ae),n("clear"),W(),e.nextTick(pe)},G=ae=>{i.displayInputValue=ae,i.inputValue=ae},ie=(ae,Se=void 0)=>{const ze=z.value;if(!["forward","backward"].includes(ae)||w.value||ze.length<=0||I.value)return;if(!y.value)return he();Se===void 0&&(Se=i.hoveringIndex);let rt=-1;ae==="forward"?(rt=Se+1,rt>=ze.length&&(rt=0)):ae==="backward"&&(rt=Se-1,rt<0&&(rt=ze.length-1));const oo=ze[rt];if(oo.disabled||oo.type==="Group")return ie(ae,rt);ce(rt),Pe(rt)},ge=()=>{if(y.value)~i.hoveringIndex&&z.value[i.hoveringIndex]&&te(z.value[i.hoveringIndex],i.hoveringIndex,!1);else return he()},ce=ae=>{i.hoveringIndex=ae},Ce=()=>{i.hoveringIndex=-1},ke=()=>{var ae;const Se=u.value;Se&&((ae=Se.focus)==null||ae.call(Se))},ct=ae=>{const Se=ae.target.value;if(G(Se),i.displayInputValue.length>0&&!y.value&&(y.value=!0),i.calculatedWidth=b.value.getBoundingClientRect().width,t.multiple&&ye(),t.remote)Me();else return we()},pt=()=>(y.value=!1,xe()),Je=()=>(i.inputValue=i.displayInputValue,e.nextTick(()=>{~F.value&&(ce(F.value),Pe(i.hoveringIndex))})),Pe=ae=>{p.value.scrollToItem(ae)},Tt=()=>{if(Ce(),t.multiple)if(t.modelValue.length>0){let ae=!1;i.cachedOptions.length=0,i.previousValue=t.modelValue.toString(),t.modelValue.forEach(Se=>{const ze=z.value.findIndex(rt=>oe(rt)===Se);~ze&&(i.cachedOptions.push(z.value[ze]),ae||ce(ze),ae=!0)})}else i.cachedOptions=[],i.previousValue="";else if(k.value){i.previousValue=t.modelValue;const ae=z.value,Se=ae.findIndex(ze=>oe(ze)===oe(t.modelValue));~Se?(i.selectedLabel=ae[Se].label,ce(Se)):i.selectedLabel=`${t.modelValue}`}else i.selectedLabel="",i.previousValue="";W(),T()};return e.watch(y,ae=>{var Se,ze;n("visible-change",ae),ae?(ze=(Se=m.value).update)==null||ze.call(Se):(i.displayInputValue="",i.previousQuery=null,X(""))}),e.watch(()=>t.modelValue,(ae,Se)=>{var ze;(!ae||ae.toString()!==i.previousValue)&&Tt(),!Jt(ae,Se)&&t.validateEvent&&((ze=s==null?void 0:s.validate)==null||ze.call(s,"change").catch(rt=>void 0))},{deep:!0}),e.watch(()=>t.options,()=>{const ae=u.value;(!ae||ae&&document.activeElement!==ae)&&Tt()},{deep:!0}),e.watch(z,()=>e.nextTick(p.value.resetScrollTop)),e.onMounted(()=>{Tt()}),Wt(g,$e),{collapseTagSize:L,currentPlaceholder:H,expanded:y,emptyText:D,popupHeight:C,debounce:P,filteredOptions:z,iconComponent:S,iconReverse:N,inputWrapperStyle:v,popperSize:d,dropdownMenuVisible:K,hasModelValue:k,shouldShowPlaceholder:V,selectDisabled:w,selectSize:A,showClearBtn:E,states:i,tagMaxWidth:R,nsSelectV2:r,nsInput:l,calculatorRef:b,controlRef:f,inputRef:u,menuRef:p,popper:m,selectRef:g,selectionRef:h,popperRef:x,validateState:$,validateIcon:B,debouncedOnInputChange:Me,deleteTag:Ee,getLabel:fe,getValueKey:oe,handleBlur:xe,handleClear:M,handleClickOutside:pt,handleDel:le,handleEsc:q,handleFocus:Re,handleMenuEnter:Je,handleResize:$e,toggleMenu:he,scrollTo:Pe,onInput:ct,onKeyboardNavigate:ie,onKeyboardSelect:ge,onSelect:te,onHover:ce,onUpdateInputValue:G,handleCompositionStart:Q,handleCompositionEnd:ee,handleCompositionUpdate:Y}};const eY=e.defineComponent({name:"ElSelectV2",components:{ElSelectMenu:qq,ElTag:ia,ElTooltip:Ut,ElIcon:de},directives:{ClickOutside:_o,ModelText:e.vModelText},props:Hq,emits:[Ve,at,"remove-tag","clear","visible-change","focus","blur"],setup(t,{emit:n}){const o=Qq(t,n);return e.provide(Hu,{props:e.reactive({...e.toRefs(t),height:o.popupHeight}),onSelect:o.onSelect,onHover:o.onHover,onKeyboardNavigate:o.onKeyboardNavigate,onKeyboardSelect:o.onKeyboardSelect}),o}}),tY={key:0},nY=["id","autocomplete","aria-expanded","aria-labelledby","disabled","readonly","name","unselectable"],oY=["textContent"],rY=["id","aria-labelledby","aria-expanded","autocomplete","disabled","name","readonly","unselectable"],lY=["textContent"];function aY(t,n,o,r,l,a){const s=e.resolveComponent("el-tag"),i=e.resolveComponent("el-tooltip"),c=e.resolveComponent("el-icon"),d=e.resolveComponent("el-select-menu"),f=e.resolveDirective("model-text"),u=e.resolveDirective("click-outside");return e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref:"selectRef",class:e.normalizeClass([t.nsSelectV2.b(),t.nsSelectV2.m(t.selectSize)]),onClick:n[23]||(n[23]=e.withModifiers((...p)=>t.toggleMenu&&t.toggleMenu(...p),["stop"])),onMouseenter:n[24]||(n[24]=p=>t.states.comboBoxHovering=!0),onMouseleave:n[25]||(n[25]=p=>t.states.comboBoxHovering=!1)},[e.createVNode(i,{ref:"popper",visible:t.dropdownMenuVisible,teleported:t.teleported,"popper-class":[t.nsSelectV2.e("popper"),t.popperClass],"gpu-acceleration":!1,"stop-popper-mouse-event":!1,"popper-options":t.popperOptions,"fallback-placements":["bottom-start","top-start","right","left"],effect:t.effect,placement:"bottom-start",pure:"",transition:`${t.nsSelectV2.namespace.value}-zoom-in-top`,trigger:"click",persistent:t.persistent,onBeforeShow:t.handleMenuEnter,onHide:n[22]||(n[22]=p=>t.states.inputValue=t.states.displayInputValue)},{default:e.withCtx(()=>{var p;return[e.createElementVNode("div",{ref:"selectionRef",class:e.normalizeClass([t.nsSelectV2.e("wrapper"),t.nsSelectV2.is("focused",t.states.isComposing),t.nsSelectV2.is("hovering",t.states.comboBoxHovering),t.nsSelectV2.is("filterable",t.filterable),t.nsSelectV2.is("disabled",t.selectDisabled)])},[t.$slots.prefix?(e.openBlock(),e.createElementBlock("div",tY,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("v-if",!0),t.multiple?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(t.nsSelectV2.e("selection"))},[t.collapseTags&&t.modelValue.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.nsSelectV2.e("selected-item"))},[e.createVNode(s,{closable:!t.selectDisabled&&!((p=t.states.cachedOptions[0])!=null&&p.disable),size:t.collapseTagSize,type:"info","disable-transitions":"",onClose:n[0]||(n[0]=m=>t.deleteTag(m,t.states.cachedOptions[0]))},{default:e.withCtx(()=>{var m;return[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelectV2.e("tags-text")),style:e.normalizeStyle({maxWidth:`${t.tagMaxWidth}px`})},e.toDisplayString((m=t.states.cachedOptions[0])==null?void 0:m.label),7)]}),_:1},8,["closable","size"]),t.modelValue.length>1?(e.openBlock(),e.createBlock(s,{key:0,closable:!1,size:t.collapseTagSize,type:"info","disable-transitions":""},{default:e.withCtx(()=>[t.collapseTagsTooltip?(e.openBlock(),e.createBlock(i,{key:0,disabled:t.dropdownMenuVisible,"fallback-placements":["bottom","top","right","left"],effect:t.effect,placement:"bottom",teleported:!1},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelectV2.e("tags-text")),style:e.normalizeStyle({maxWidth:`${t.tagMaxWidth}px`})},"+ "+e.toDisplayString(t.modelValue.length-1),7)]),content:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(t.nsSelectV2.e("selection"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.states.cachedOptions.slice(1),(m,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:e.normalizeClass(t.nsSelectV2.e("selected-item"))},[(e.openBlock(),e.createBlock(s,{key:t.getValueKey(m),closable:!t.selectDisabled&&!m.disabled,size:t.collapseTagSize,class:"in-tooltip",type:"info","disable-transitions":"",onClose:h=>t.deleteTag(h,m)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelectV2.e("tags-text")),style:e.normalizeStyle({maxWidth:`${t.tagMaxWidth}px`})},e.toDisplayString(t.getLabel(m)),7)]),_:2},1032,["closable","size","onClose"]))],2))),128))],2)]),_:1},8,["disabled","effect"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(t.nsSelectV2.e("tags-text")),style:e.normalizeStyle({maxWidth:`${t.tagMaxWidth}px`})},"+ "+e.toDisplayString(t.modelValue.length-1),7))]),_:1},8,["size"])):e.createCommentVNode("v-if",!0)],2)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(t.states.cachedOptions,(m,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:e.normalizeClass(t.nsSelectV2.e("selected-item"))},[(e.openBlock(),e.createBlock(s,{key:t.getValueKey(m),closable:!t.selectDisabled&&!m.disabled,size:t.collapseTagSize,type:"info","disable-transitions":"",onClose:h=>t.deleteTag(h,m)},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(t.nsSelectV2.e("tags-text")),style:e.normalizeStyle({maxWidth:`${t.tagMaxWidth}px`})},e.toDisplayString(t.getLabel(m)),7)]),_:2},1032,["closable","size","onClose"]))],2))),128)),e.createElementVNode("div",{class:e.normalizeClass([t.nsSelectV2.e("selected-item"),t.nsSelectV2.e("input-wrapper")]),style:e.normalizeStyle(t.inputWrapperStyle)},[e.withDirectives(e.createElementVNode("input",{id:t.id,ref:"inputRef",autocomplete:t.autocomplete,"aria-autocomplete":"list","aria-haspopup":"listbox",autocapitalize:"off","aria-expanded":t.expanded,"aria-labelledby":t.label,class:e.normalizeClass([t.nsSelectV2.is(t.selectSize),t.nsSelectV2.e("combobox-input")]),disabled:t.disabled,role:"combobox",readonly:!t.filterable,spellcheck:"false",type:"text",name:t.name,unselectable:t.expanded?"on":void 0,"onUpdate:modelValue":n[1]||(n[1]=(...m)=>t.onUpdateInputValue&&t.onUpdateInputValue(...m)),onFocus:n[2]||(n[2]=(...m)=>t.handleFocus&&t.handleFocus(...m)),onInput:n[3]||(n[3]=(...m)=>t.onInput&&t.onInput(...m)),onCompositionstart:n[4]||(n[4]=(...m)=>t.handleCompositionStart&&t.handleCompositionStart(...m)),onCompositionupdate:n[5]||(n[5]=(...m)=>t.handleCompositionUpdate&&t.handleCompositionUpdate(...m)),onCompositionend:n[6]||(n[6]=(...m)=>t.handleCompositionEnd&&t.handleCompositionEnd(...m)),onKeydown:[n[7]||(n[7]=e.withKeys(e.withModifiers(m=>t.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),n[8]||(n[8]=e.withKeys(e.withModifiers(m=>t.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),n[9]||(n[9]=e.withKeys(e.withModifiers((...m)=>t.onKeyboardSelect&&t.onKeyboardSelect(...m),["stop","prevent"]),["enter"])),n[10]||(n[10]=e.withKeys(e.withModifiers((...m)=>t.handleEsc&&t.handleEsc(...m),["stop","prevent"]),["esc"])),n[11]||(n[11]=e.withKeys(e.withModifiers((...m)=>t.handleDel&&t.handleDel(...m),["stop"]),["delete"]))]},null,42,nY),[[f,t.states.displayInputValue]]),t.filterable?(e.openBlock(),e.createElementBlock("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:e.normalizeClass(t.nsSelectV2.e("input-calculator")),textContent:e.toDisplayString(t.states.displayInputValue)},null,10,oY)):e.createCommentVNode("v-if",!0)],6)],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",{class:e.normalizeClass([t.nsSelectV2.e("selected-item"),t.nsSelectV2.e("input-wrapper")])},[e.withDirectives(e.createElementVNode("input",{id:t.id,ref:"inputRef","aria-autocomplete":"list","aria-haspopup":"listbox","aria-labelledby":t.label,"aria-expanded":t.expanded,autocapitalize:"off",autocomplete:t.autocomplete,class:e.normalizeClass(t.nsSelectV2.e("combobox-input")),disabled:t.disabled,name:t.name,role:"combobox",readonly:!t.filterable,spellcheck:"false",type:"text",unselectable:t.expanded?"on":void 0,onCompositionstart:n[12]||(n[12]=(...m)=>t.handleCompositionStart&&t.handleCompositionStart(...m)),onCompositionupdate:n[13]||(n[13]=(...m)=>t.handleCompositionUpdate&&t.handleCompositionUpdate(...m)),onCompositionend:n[14]||(n[14]=(...m)=>t.handleCompositionEnd&&t.handleCompositionEnd(...m)),onFocus:n[15]||(n[15]=(...m)=>t.handleFocus&&t.handleFocus(...m)),onInput:n[16]||(n[16]=(...m)=>t.onInput&&t.onInput(...m)),onKeydown:[n[17]||(n[17]=e.withKeys(e.withModifiers(m=>t.onKeyboardNavigate("backward"),["stop","prevent"]),["up"])),n[18]||(n[18]=e.withKeys(e.withModifiers(m=>t.onKeyboardNavigate("forward"),["stop","prevent"]),["down"])),n[19]||(n[19]=e.withKeys(e.withModifiers((...m)=>t.onKeyboardSelect&&t.onKeyboardSelect(...m),["stop","prevent"]),["enter"])),n[20]||(n[20]=e.withKeys(e.withModifiers((...m)=>t.handleEsc&&t.handleEsc(...m),["stop","prevent"]),["esc"]))],"onUpdate:modelValue":n[21]||(n[21]=(...m)=>t.onUpdateInputValue&&t.onUpdateInputValue(...m))},null,42,rY),[[f,t.states.displayInputValue]])],2),t.filterable?(e.openBlock(),e.createElementBlock("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:e.normalizeClass([t.nsSelectV2.e("selected-item"),t.nsSelectV2.e("input-calculator")]),textContent:e.toDisplayString(t.states.displayInputValue)},null,10,lY)):e.createCommentVNode("v-if",!0)],64)),t.shouldShowPlaceholder?(e.openBlock(),e.createElementBlock("span",{key:3,class:e.normalizeClass([t.nsSelectV2.e("placeholder"),t.nsSelectV2.is("transparent",t.states.isComposing||(t.placeholder&&t.multiple?t.modelValue.length===0:!t.hasModelValue))])},e.toDisplayString(t.currentPlaceholder),3)):e.createCommentVNode("v-if",!0),e.createElementVNode("span",{class:e.normalizeClass(t.nsSelectV2.e("suffix"))},[t.iconComponent?e.withDirectives((e.openBlock(),e.createBlock(c,{key:0,class:e.normalizeClass([t.nsSelectV2.e("caret"),t.nsInput.e("icon"),t.iconReverse])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.iconComponent)))]),_:1},8,["class"])),[[e.vShow,!t.showClearBtn]]):e.createCommentVNode("v-if",!0),t.showClearBtn&&t.clearIcon?(e.openBlock(),e.createBlock(c,{key:1,class:e.normalizeClass([t.nsSelectV2.e("caret"),t.nsInput.e("icon")]),onClick:e.withModifiers(t.handleClear,["prevent","stop"])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.clearIcon)))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0),t.validateState&&t.validateIcon?(e.openBlock(),e.createBlock(c,{key:2,class:e.normalizeClass([t.nsInput.e("icon"),t.nsInput.e("validateIcon")])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.validateIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],2)],2)]}),content:e.withCtx(()=>[e.createVNode(d,{ref:"menuRef",data:t.filteredOptions,width:t.popperSize,"hovering-index":t.states.hoveringIndex,"scrollbar-always-on":t.scrollbarAlwaysOn},{default:e.withCtx(p=>[e.renderSlot(t.$slots,"default",e.normalizeProps(e.guardReactiveProps(p)))]),empty:e.withCtx(()=>[e.renderSlot(t.$slots,"empty",{},()=>[e.createElementVNode("p",{class:e.normalizeClass(t.nsSelectV2.e("empty"))},e.toDisplayString(t.emptyText?t.emptyText:""),3)])]),_:3},8,["data","width","hovering-index","scrollbar-always-on"])]),_:3},8,["visible","teleported","popper-class","popper-options","effect","transition","persistent","onBeforeShow"])],34)),[[u,t.handleClickOutside,t.popperRef]])}var yi=re(eY,[["render",aY],["__file","select.vue"]]);yi.install=t=>{t.component(yi.name,yi)};const hS=yi,gS=se({animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:Number}}),yS=se({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),sY={name:"ElSkeletonItem"},iY=e.defineComponent({...sY,props:yS,setup(t){const n=Z("skeleton");return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(n).e("item"),e.unref(n).e(o.variant)])},[o.variant==="image"?(e.openBlock(),e.createBlock(e.unref(dL),{key:0})):e.createCommentVNode("v-if",!0)],2))}});var bi=re(iY,[["__file","skeleton-item.vue"]]);const cY={name:"ElSkeleton"},dY=e.defineComponent({...cY,props:gS,setup(t,{expose:n}){const o=t,r=Z("skeleton"),l=Z0(e.toRef(o,"loading"),o.throttle);return n({uiLoading:l}),(a,s)=>e.unref(l)?(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:0,class:[e.unref(r).b(),e.unref(r).is("animated",a.animated)]},a.$attrs),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.count,i=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i},[a.loading?e.renderSlot(a.$slots,"template",{key:i},()=>[e.createVNode(bi,{class:e.normalizeClass(e.unref(r).is("first")),variant:"p"},null,8,["class"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.rows,c=>(e.openBlock(),e.createBlock(bi,{key:c,class:e.normalizeClass([e.unref(r).e("paragraph"),e.unref(r).is("last",c===a.rows&&a.rows>1)]),variant:"p"},null,8,["class"]))),128))]):e.createCommentVNode("v-if",!0)],64))),128))],16)):e.renderSlot(a.$slots,"default",e.normalizeProps(e.mergeProps({key:1},a.$attrs)))}});var fY=re(dY,[["__file","skeleton.vue"]]);const bS=Te(fY,{SkeletonItem:bi}),CS=ut(bi),wS=se({modelValue:{type:j([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:tn,inputSize:tn,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:j(Function),default:void 0},disabled:Boolean,range:Boolean,vertical:Boolean,height:String,debounce:{type:Number,default:300},label:{type:String,default:void 0},rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:j(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:ea,default:"top"},marks:{type:j(Object)},validateEvent:{type:Boolean,default:!0}}),Ku=t=>Ne(t)||Ae(t)&&t.every(Ne),kS={[Ve]:Ku,[fn]:Ku,[at]:Ku},uY=(t,n,o)=>{const r=e.ref();return e.onMounted(async()=>{t.range?(Array.isArray(t.modelValue)?(n.firstValue=Math.max(t.min,t.modelValue[0]),n.secondValue=Math.min(t.max,t.modelValue[1])):(n.firstValue=t.min,n.secondValue=t.max),n.oldValue=[n.firstValue,n.secondValue]):(typeof t.modelValue!="number"||Number.isNaN(t.modelValue)?n.firstValue=t.min:n.firstValue=Math.min(t.max,Math.max(t.min,t.modelValue)),n.oldValue=n.firstValue),nt(window,"resize",o),await e.nextTick(),o()}),{sliderWrapper:r}},pY=t=>e.computed(()=>t.marks?Object.keys(t.marks).map(parseFloat).sort((o,r)=>o-r).filter(o=>o<=t.max&&o>=t.min).map(o=>({point:o,position:(o-t.min)*100/(t.max-t.min),mark:t.marks[o]})):[]),mY=(t,n,o)=>{const{form:r,formItem:l}=Co(),a=e.shallowRef(),s=e.ref(),i=e.ref(),c={firstButton:s,secondButton:i},d=e.computed(()=>t.disabled||(r==null?void 0:r.disabled)||!1),f=e.computed(()=>Math.min(n.firstValue,n.secondValue)),u=e.computed(()=>Math.max(n.firstValue,n.secondValue)),p=e.computed(()=>t.range?`${100*(u.value-f.value)/(t.max-t.min)}%`:`${100*(n.firstValue-t.min)/(t.max-t.min)}%`),m=e.computed(()=>t.range?`${100*(f.value-t.min)/(t.max-t.min)}%`:"0%"),g=e.computed(()=>t.vertical?{height:t.height}:{}),h=e.computed(()=>t.vertical?{height:p.value,bottom:m.value}:{width:p.value,left:m.value}),b=()=>{a.value&&(n.sliderSize=a.value[`client${t.vertical?"Height":"Width"}`])},y=D=>{const z=t.min+D*(t.max-t.min)/100;if(!t.range)return s;let I;return Math.abs(f.value-z)n.secondValue?"firstButton":"secondButton",c[I]},w=D=>{const z=y(D);return z.value.setPosition(D),z},C=D=>{n.firstValue=D,E(t.range?[f.value,u.value]:D)},k=D=>{n.secondValue=D,t.range&&E([f.value,u.value])},E=D=>{o(Ve,D),o(fn,D)},S=async()=>{await e.nextTick(),o(at,t.range?[f.value,u.value]:t.modelValue)},N=D=>{var z,I,A,L,R,T;if(d.value||n.dragging)return;b();let v=0;if(t.vertical){const V=(A=(I=(z=D.touches)==null?void 0:z.item(0))==null?void 0:I.clientY)!=null?A:D.clientY;v=(a.value.getBoundingClientRect().bottom-V)/n.sliderSize*100}else{const V=(T=(R=(L=D.touches)==null?void 0:L.item(0))==null?void 0:R.clientX)!=null?T:D.clientX,H=a.value.getBoundingClientRect().left;v=(V-H)/n.sliderSize*100}if(!(v<0||v>100))return w(v)};return{elFormItem:l,slider:a,firstButton:s,secondButton:i,sliderDisabled:d,minValue:f,maxValue:u,runwayStyle:g,barStyle:h,resetSize:b,setPosition:w,emitChange:S,onSliderWrapperPrevent:D=>{var z,I;(((z=c.firstButton.value)==null?void 0:z.dragging)||((I=c.secondButton.value)==null?void 0:I.dragging))&&D.preventDefault()},onSliderClick:D=>{N(D)&&S()},onSliderDown:async D=>{const z=N(D);z&&(await e.nextTick(),z.value.onButtonDown(D))},setFirstValue:C,setSecondValue:k}},{left:hY,down:gY,right:yY,up:bY,home:CY,end:wY,pageUp:kY,pageDown:SY}=ue,EY=(t,n,o)=>{const r=e.ref(),l=e.ref(!1),a=e.computed(()=>n.value instanceof Function),s=e.computed(()=>a.value&&n.value(t.modelValue)||t.modelValue),i=Dt(()=>{o.value&&(l.value=!0)},50),c=Dt(()=>{o.value&&(l.value=!1)},50);return{tooltip:r,tooltipVisible:l,formatValue:s,displayTooltip:i,hideTooltip:c}},NY=(t,n,o)=>{const{disabled:r,min:l,max:a,step:s,showTooltip:i,precision:c,sliderSize:d,formatTooltip:f,emitChange:u,resetSize:p,updateDragging:m}=e.inject(_d),{tooltip:g,tooltipVisible:h,formatValue:b,displayTooltip:y,hideTooltip:w}=EY(t,f,i),C=e.ref(),k=e.computed(()=>`${(t.modelValue-l.value)/(a.value-l.value)*100}%`),E=e.computed(()=>t.vertical?{bottom:k.value}:{left:k.value}),S=()=>{n.hovering=!0,y()},N=()=>{n.hovering=!1,n.dragging||w()},$=F=>{r.value||(F.preventDefault(),v(F),window.addEventListener("mousemove",V),window.addEventListener("touchmove",V),window.addEventListener("mouseup",H),window.addEventListener("touchend",H),window.addEventListener("contextmenu",H),C.value.focus())},B=F=>{r.value||(n.newPosition=Number.parseFloat(k.value)+F/(a.value-l.value)*100,x(n.newPosition),u())},P=()=>{B(-s.value)},D=()=>{B(s.value)},z=()=>{B(-s.value*4)},I=()=>{B(s.value*4)},A=()=>{r.value||(x(0),u())},L=()=>{r.value||(x(100),u())},R=F=>{let K=!0;[hY,gY].includes(F.key)?P():[yY,bY].includes(F.key)?D():F.key===CY?A():F.key===wY?L():F.key===SY?z():F.key===kY?I():K=!1,K&&F.preventDefault()},T=F=>{let K,X;return F.type.startsWith("touch")?(X=F.touches[0].clientY,K=F.touches[0].clientX):(X=F.clientY,K=F.clientX),{clientX:K,clientY:X}},v=F=>{n.dragging=!0,n.isClick=!0;const{clientX:K,clientY:X}=T(F);t.vertical?n.startY=X:n.startX=K,n.startPosition=Number.parseFloat(k.value),n.newPosition=n.startPosition},V=F=>{if(n.dragging){n.isClick=!1,y(),p();let K;const{clientX:X,clientY:J}=T(F);t.vertical?(n.currentY=J,K=(n.startY-n.currentY)/d.value*100):(n.currentX=X,K=(n.currentX-n.startX)/d.value*100),n.newPosition=n.startPosition+K,x(n.newPosition)}},H=()=>{n.dragging&&(setTimeout(()=>{n.dragging=!1,n.hovering||w(),n.isClick||(x(n.newPosition),u())},0),window.removeEventListener("mousemove",V),window.removeEventListener("touchmove",V),window.removeEventListener("mouseup",H),window.removeEventListener("touchend",H),window.removeEventListener("contextmenu",H))},x=async F=>{if(F===null||Number.isNaN(+F))return;F<0?F=0:F>100&&(F=100);const K=100/((a.value-l.value)/s.value);let J=Math.round(F/K)*K*(a.value-l.value)*.01+l.value;J=Number.parseFloat(J.toFixed(c.value)),J!==t.modelValue&&o(Ve,J),!n.dragging&&t.modelValue!==n.oldValue&&(n.oldValue=t.modelValue),await e.nextTick(),n.dragging&&y(),g.value.updatePopper()};return e.watch(()=>n.dragging,F=>{m(F)}),{disabled:r,button:C,tooltip:g,tooltipVisible:h,showTooltip:i,wrapperStyle:E,formatValue:b,handleMouseEnter:S,handleMouseLeave:N,onButtonDown:$,onKeyDown:R,setPosition:x}},$Y=(t,n,o,r)=>({stops:e.computed(()=>{if(!t.showStops||t.min>t.max)return[];if(t.step===0)return[];const s=(t.max-t.min)/t.step,i=100*t.step/(t.max-t.min),c=Array.from({length:s-1}).map((d,f)=>(f+1)*i);return t.range?c.filter(d=>d<100*(o.value-t.min)/(t.max-t.min)||d>100*(r.value-t.min)/(t.max-t.min)):c.filter(d=>d>100*(n.firstValue-t.min)/(t.max-t.min))}),getStopStyle:s=>t.vertical?{bottom:`${s}%`}:{left:`${s}%`}}),BY=(t,n,o,r,l,a)=>{const s=d=>{l(Ve,d),l(fn,d)},i=()=>t.range?![o.value,r.value].every((d,f)=>d===n.oldValue[f]):t.modelValue!==n.oldValue,c=()=>{var d,f;if(t.min>t.max){Et("Slider","min should not be greater than max.");return}const u=t.modelValue;t.range&&Array.isArray(u)?u[1]t.max?s([t.max,t.max]):u[0]t.max?s([u[0],t.max]):(n.firstValue=u[0],n.secondValue=u[1],i()&&(t.validateEvent&&((d=a==null?void 0:a.validate)==null||d.call(a,"change").catch(p=>void 0)),n.oldValue=u.slice())):!t.range&&typeof u=="number"&&!Number.isNaN(u)&&(ut.max?s(t.max):(n.firstValue=u,i()&&(t.validateEvent&&((f=a==null?void 0:a.validate)==null||f.call(a,"change").catch(p=>void 0)),n.oldValue=u)))};c(),e.watch(()=>n.dragging,d=>{d||c()}),e.watch(()=>t.modelValue,(d,f)=>{n.dragging||Array.isArray(d)&&Array.isArray(f)&&d.every((u,p)=>u===f[p])&&n.firstValue===d[0]&&n.secondValue===d[1]||c()},{deep:!0}),e.watch(()=>[t.min,t.max],()=>{c()})},_Y=se({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:ea,default:"top"}}),vY={[Ve]:t=>Ne(t)},TY=["tabindex"],VY={name:"ElSliderButton"},MY=e.defineComponent({...VY,props:_Y,emits:vY,setup(t,{expose:n,emit:o}){const r=t,l=Z("slider"),a=e.reactive({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:r.modelValue}),{disabled:s,button:i,tooltip:c,showTooltip:d,tooltipVisible:f,wrapperStyle:u,formatValue:p,handleMouseEnter:m,handleMouseLeave:g,onButtonDown:h,onKeyDown:b,setPosition:y}=NY(r,a,o),{hovering:w,dragging:C}=e.toRefs(a);return n({onButtonDown:h,onKeyDown:b,setPosition:y,hovering:w,dragging:C}),(k,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"button",ref:i,class:e.normalizeClass([e.unref(l).e("button-wrapper"),{hover:e.unref(w),dragging:e.unref(C)}]),style:e.normalizeStyle(e.unref(u)),tabindex:e.unref(s)?-1:0,onMouseenter:E[0]||(E[0]=(...S)=>e.unref(m)&&e.unref(m)(...S)),onMouseleave:E[1]||(E[1]=(...S)=>e.unref(g)&&e.unref(g)(...S)),onMousedown:E[2]||(E[2]=(...S)=>e.unref(h)&&e.unref(h)(...S)),onTouchstart:E[3]||(E[3]=(...S)=>e.unref(h)&&e.unref(h)(...S)),onFocus:E[4]||(E[4]=(...S)=>e.unref(m)&&e.unref(m)(...S)),onBlur:E[5]||(E[5]=(...S)=>e.unref(g)&&e.unref(g)(...S)),onKeydown:E[6]||(E[6]=(...S)=>e.unref(b)&&e.unref(b)(...S))},[e.createVNode(e.unref(Ut),{ref_key:"tooltip",ref:c,visible:e.unref(f),placement:k.placement,"fallback-placements":["top","bottom","right","left"],"stop-popper-mouse-event":!1,"popper-class":k.tooltipClass,disabled:!e.unref(d),persistent:""},{content:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(e.unref(p)),1)]),default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass([e.unref(l).e("button"),{hover:e.unref(w),dragging:e.unref(C)}])},null,2)]),_:1},8,["visible","placement","popper-class","disabled"])],46,TY))}});var SS=re(MY,[["__file","button.vue"]]);const RY=se({mark:{type:j([String,Object]),default:void 0}});var IY=e.defineComponent({name:"ElSliderMarker",props:RY,setup(t){const n=Z("slider"),o=e.computed(()=>Fe(t.mark)?t.mark:t.mark.label),r=e.computed(()=>Fe(t.mark)?void 0:t.mark.style);return()=>e.h("div",{class:n.e("marks-text"),style:r.value},o.value)}});const PY=["id","role","aria-label","aria-labelledby"],AY={key:1},OY={name:"ElSlider"},zY=e.defineComponent({...OY,props:wS,emits:kS,setup(t,{expose:n,emit:o}){const r=t,l=Z("slider"),{t:a}=We(),s=e.reactive({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:i,slider:c,firstButton:d,secondButton:f,sliderDisabled:u,minValue:p,maxValue:m,runwayStyle:g,barStyle:h,resetSize:b,emitChange:y,onSliderWrapperPrevent:w,onSliderClick:C,onSliderDown:k,setFirstValue:E,setSecondValue:S}=mY(r,s,o),{stops:N,getStopStyle:$}=$Y(r,s,p,m),{inputId:B,isLabeledByFormItem:P}=wo(r,{formItemContext:i}),D=yt(),z=e.computed(()=>r.inputSize||D.value),I=e.computed(()=>r.label||a("el.slider.defaultLabel",{min:r.min,max:r.max})),A=e.computed(()=>r.range?r.rangeStartLabel||a("el.slider.defaultRangeStartLabel"):I.value),L=e.computed(()=>r.formatValueText?r.formatValueText(F.value):`${F.value}`),R=e.computed(()=>r.rangeEndLabel||a("el.slider.defaultRangeEndLabel")),T=e.computed(()=>r.formatValueText?r.formatValueText(K.value):`${K.value}`),v=e.computed(()=>[l.b(),l.m(D.value),l.is("vertical",r.vertical),{[l.m("with-input")]:r.showInput}]),V=pY(r);BY(r,s,p,m,o,i);const H=e.computed(()=>{const U=[r.min,r.max,r.step].map(W=>{const Q=`${W}`.split(".")[1];return Q?Q.length:0});return Math.max.apply(null,U)}),{sliderWrapper:x}=uY(r,s,b),{firstValue:F,secondValue:K,sliderSize:X}=e.toRefs(s),J=U=>{s.dragging=U};return e.provide(_d,{...e.toRefs(r),sliderSize:X,disabled:u,precision:H,emitChange:y,resetSize:b,updateDragging:J}),n({onSliderClick:C}),(U,W)=>{var Q,Y;return e.openBlock(),e.createElementBlock("div",{id:U.range?e.unref(B):void 0,ref_key:"sliderWrapper",ref:x,class:e.normalizeClass(e.unref(v)),role:U.range?"group":void 0,"aria-label":U.range&&!e.unref(P)?e.unref(I):void 0,"aria-labelledby":U.range&&e.unref(P)?(Q=e.unref(i))==null?void 0:Q.labelId:void 0,onTouchstart:W[2]||(W[2]=(...ee)=>e.unref(w)&&e.unref(w)(...ee)),onTouchmove:W[3]||(W[3]=(...ee)=>e.unref(w)&&e.unref(w)(...ee))},[e.createElementVNode("div",{ref_key:"slider",ref:c,class:e.normalizeClass([e.unref(l).e("runway"),{"show-input":U.showInput&&!U.range},e.unref(l).is("disabled",e.unref(u))]),style:e.normalizeStyle(e.unref(g)),onMousedown:W[0]||(W[0]=(...ee)=>e.unref(k)&&e.unref(k)(...ee)),onTouchstart:W[1]||(W[1]=(...ee)=>e.unref(k)&&e.unref(k)(...ee))},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("bar")),style:e.normalizeStyle(e.unref(h))},null,6),e.createVNode(SS,{id:U.range?void 0:e.unref(B),ref_key:"firstButton",ref:d,"model-value":e.unref(F),vertical:U.vertical,"tooltip-class":U.tooltipClass,placement:U.placement,role:"slider","aria-label":U.range||!e.unref(P)?e.unref(A):void 0,"aria-labelledby":!U.range&&e.unref(P)?(Y=e.unref(i))==null?void 0:Y.labelId:void 0,"aria-valuemin":U.min,"aria-valuemax":U.range?e.unref(K):U.max,"aria-valuenow":e.unref(F),"aria-valuetext":e.unref(L),"aria-orientation":U.vertical?"vertical":"horizontal","aria-disabled":e.unref(u),"onUpdate:modelValue":e.unref(E)},null,8,["id","model-value","vertical","tooltip-class","placement","aria-label","aria-labelledby","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"]),U.range?(e.openBlock(),e.createBlock(SS,{key:0,ref_key:"secondButton",ref:f,"model-value":e.unref(K),vertical:U.vertical,"tooltip-class":U.tooltipClass,placement:U.placement,role:"slider","aria-label":e.unref(R),"aria-valuemin":e.unref(F),"aria-valuemax":U.max,"aria-valuenow":e.unref(K),"aria-valuetext":e.unref(T),"aria-orientation":U.vertical?"vertical":"horizontal","aria-disabled":e.unref(u),"onUpdate:modelValue":e.unref(S)},null,8,["model-value","vertical","tooltip-class","placement","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","aria-orientation","aria-disabled","onUpdate:modelValue"])):e.createCommentVNode("v-if",!0),U.showStops?(e.openBlock(),e.createElementBlock("div",AY,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(N),(ee,pe)=>(e.openBlock(),e.createElementBlock("div",{key:pe,class:e.normalizeClass(e.unref(l).e("stop")),style:e.normalizeStyle(e.unref($)(ee))},null,6))),128))])):e.createCommentVNode("v-if",!0),e.unref(V).length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(V),(ee,pe)=>(e.openBlock(),e.createElementBlock("div",{key:pe,style:e.normalizeStyle(e.unref($)(ee.position)),class:e.normalizeClass([e.unref(l).e("stop"),e.unref(l).e("marks-stop")])},null,6))),128))]),e.createElementVNode("div",{class:e.normalizeClass(e.unref(l).e("marks"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(V),(ee,pe)=>(e.openBlock(),e.createBlock(e.unref(IY),{key:pe,mark:ee.mark,style:e.normalizeStyle(e.unref($)(ee.position))},null,8,["mark","style"]))),128))],2)],64)):e.createCommentVNode("v-if",!0)],38),U.showInput&&!U.range?(e.openBlock(),e.createBlock(e.unref(yu),{key:0,ref:"input","model-value":e.unref(F),class:e.normalizeClass(e.unref(l).e("input")),step:U.step,disabled:e.unref(u),controls:U.showInputControls,min:U.min,max:U.max,debounce:U.debounce,size:e.unref(z),"onUpdate:modelValue":e.unref(E),onChange:e.unref(y)},null,8,["model-value","class","step","disabled","controls","min","max","debounce","size","onUpdate:modelValue","onChange"])):e.createCommentVNode("v-if",!0)],42,PY)}}});var DY=re(zY,[["__file","slider.vue"]]);const ES=Te(DY),LY=se({prefixCls:{type:String}});var NS=e.defineComponent({name:"ElSpaceItem",props:LY,setup(t,{slots:n}){const o=Z("space"),r=e.computed(()=>`${t.prefixCls||o.b()}__item`);return()=>e.h("div",{class:r.value},e.renderSlot(n,"default"))}});const $S={small:8,default:12,large:16};function BS(t){const n=Z("space"),o=e.computed(()=>[n.b(),n.m(t.direction),t.class]),r=e.ref(0),l=e.ref(0),a=e.computed(()=>{const i=t.wrap||t.fill?{flexWrap:"wrap",marginBottom:`-${l.value}px`}:{},c={alignItems:t.alignment};return[i,c,t.style]}),s=e.computed(()=>{const i={paddingBottom:`${l.value}px`,marginRight:`${r.value}px`},c=t.fill?{flexGrow:1,minWidth:`${t.fillRatio}%`}:{};return[i,c]});return e.watchEffect(()=>{const{size:i="small",wrap:c,direction:d,fill:f}=t;if(Ae(i)){const[u=0,p=0]=i;r.value=u,l.value=p}else{let u;Ne(i)?u=i:u=$S[i||"small"]||$S.small,(c||f)&&d==="horizontal"?r.value=l.value=u:d==="horizontal"?(r.value=u,l.value=0):(l.value=u,r.value=0)}}),{classes:o,containerStyle:a,itemStyle:s}}const _S=se({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},class:{type:j([String,Object,Array]),default:""},style:{type:j([String,Array,Object]),default:""},alignment:{type:j(String),default:"center"},prefixCls:{type:String},spacer:{type:j([Object,String,Number,Array]),default:null,validator:t=>e.isVNode(t)||Ne(t)||Fe(t)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:Ko,validator:t=>Ne(t)||Ae(t)&&t.length===2&&t.every(Ne)}});var FY=e.defineComponent({name:"ElSpace",props:_S,setup(t,{slots:n}){const{classes:o,containerStyle:r,itemStyle:l}=BS(t);function a(s,i="",c=[]){const{prefixCls:d}=t;return s.forEach((f,u)=>{pd(f)?Ae(f.children)&&f.children.forEach((p,m)=>{pd(p)&&Ae(p.children)?a(p.children,`${i+m}-`,c):c.push(e.createVNode(NS,{style:l.value,prefixCls:d,key:`nested-${i+m}`},{default:()=>[p]},En.PROPS|En.STYLE,["style","prefixCls"]))}):G8(f)&&c.push(e.createVNode(NS,{style:l.value,prefixCls:d,key:`LoopKey${i+u}`},{default:()=>[f]},En.PROPS|En.STYLE,["style","prefixCls"]))}),c}return()=>{var s;const{spacer:i,direction:c}=t,d=e.renderSlot(n,"default",{key:0},()=>[]);if(((s=d.children)!=null?s:[]).length===0)return null;if(Ae(d.children)){let f=a(d.children);if(i){const u=f.length-1;f=f.reduce((p,m,g)=>{const h=[...p,m];return g!==u&&h.push(e.createVNode("span",{style:[l.value,c==="vertical"?"width: 100%":null],key:g},[e.isVNode(i)?i:e.createTextVNode(i,En.TEXT)],En.STYLE)),h},[])}return e.createVNode("div",{class:o.value,style:r.value},f,En.STYLE|En.CLASS)}return d.children}}});const vS=Te(FY),TS=se({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),VS={[at]:(t,n)=>[t,n].every(Ne)},xY={name:"ElSteps"},HY=e.defineComponent({...xY,props:TS,emits:VS,setup(t,{emit:n}){const o=t,r=Z("steps"),l=e.ref([]);return e.watch(l,()=>{l.value.forEach((a,s)=>{a.setIndex(s)})}),e.provide("ElSteps",{props:o,steps:l}),e.watch(()=>o.active,(a,s)=>{n(at,a,s)}),(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).m(a.simple?"simple":a.direction)])},[e.renderSlot(a.$slots,"default")],2))}});var KY=re(HY,[["__file","steps.vue"]]);const MS=se({title:{type:String,default:""},icon:{type:$t},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),WY={name:"ElStep"},jY=e.defineComponent({...WY,props:MS,setup(t){const n=t,o=Z("step"),r=e.ref(-1),l=e.ref({}),a=e.ref(""),s=e.inject("ElSteps"),i=e.getCurrentInstance();e.onMounted(()=>{e.watch([()=>s.props.active,()=>s.props.processStatus,()=>s.props.finishStatus],([E])=>{C(E)},{immediate:!0})}),e.onBeforeUnmount(()=>{s.steps.value=s.steps.value.filter(E=>E.uid!==(i==null?void 0:i.uid))});const c=e.computed(()=>n.status||a.value),d=e.computed(()=>{const E=s.steps.value[r.value-1];return E?E.currentStatus:"wait"}),f=e.computed(()=>s.props.alignCenter),u=e.computed(()=>s.props.direction==="vertical"),p=e.computed(()=>s.props.simple),m=e.computed(()=>s.steps.value.length),g=e.computed(()=>{var E;return((E=s.steps.value[m.value-1])==null?void 0:E.uid)===(i==null?void 0:i.uid)}),h=e.computed(()=>p.value?"":s.props.space),b=e.computed(()=>{const E={flexBasis:typeof h.value=="number"?`${h.value}px`:h.value?h.value:`${100/(m.value-(f.value?0:1))}%`};return u.value||g.value&&(E.maxWidth=`${100/m.value}%`),E}),y=E=>{r.value=E},w=E=>{let S=100;const N={};N.transitionDelay=`${150*r.value}ms`,E===s.props.processStatus?S=0:E==="wait"&&(S=0,N.transitionDelay=`${-150*r.value}ms`),N.borderWidth=S&&!p.value?"1px":0,N[s.props.direction==="vertical"?"height":"width"]=`${S}%`,l.value=N},C=E=>{E>r.value?a.value=s.props.finishStatus:E===r.value&&d.value!=="error"?a.value=s.props.processStatus:a.value="wait";const S=s.steps.value[m.value-1];S&&S.calcProgress(a.value)},k=e.reactive({uid:e.computed(()=>i==null?void 0:i.uid),currentStatus:c,setIndex:y,calcProgress:w});return s.steps.value=[...s.steps.value,k],(E,S)=>(e.openBlock(),e.createElementBlock("div",{style:e.normalizeStyle(e.unref(b)),class:e.normalizeClass([e.unref(o).b(),e.unref(o).is(e.unref(p)?"simple":e.unref(s).props.direction),e.unref(o).is("flex",e.unref(g)&&!e.unref(h)&&!e.unref(f)),e.unref(o).is("center",e.unref(f)&&!e.unref(u)&&!e.unref(p))])},[e.createCommentVNode(" icon & line "),e.createElementVNode("div",{class:e.normalizeClass([e.unref(o).e("head"),e.unref(o).is(e.unref(c))])},[e.unref(p)?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).e("line"))},[e.createElementVNode("i",{class:e.normalizeClass(e.unref(o).e("line-inner")),style:e.normalizeStyle(l.value)},null,6)],2)),e.createElementVNode("div",{class:e.normalizeClass([e.unref(o).e("icon"),e.unref(o).is(E.icon||E.$slots.icon?"icon":"text")])},[e.unref(c)!=="success"&&e.unref(c)!=="error"?e.renderSlot(E.$slots,"icon",{key:0},()=>[E.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(o).e("icon-inner"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(E.icon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),!E.icon&&!e.unref(p)?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(o).e("icon-inner"))},e.toDisplayString(r.value+1),3)):e.createCommentVNode("v-if",!0)]):(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass([e.unref(o).e("icon-inner"),e.unref(o).is("status")])},{default:e.withCtx(()=>[e.unref(c)==="success"?(e.openBlock(),e.createBlock(e.unref(Wl),{key:0})):(e.openBlock(),e.createBlock(e.unref(Pn),{key:1}))]),_:1},8,["class"]))],2)],2),e.createCommentVNode(" title & description "),e.createElementVNode("div",{class:e.normalizeClass(e.unref(o).e("main"))},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(o).e("title"),e.unref(o).is(e.unref(c))])},[e.renderSlot(E.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(E.title),1)])],2),e.unref(p)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(o).e("arrow"))},null,2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(o).e("description"),e.unref(o).is(e.unref(c))])},[e.renderSlot(E.$slots,"description",{},()=>[e.createTextVNode(e.toDisplayString(E.description),1)])],2))],2)],6))}});var RS=re(jY,[["__file","item.vue"]]);const IS=Te(KY,{Step:RS}),PS=ut(RS),AS=se({modelValue:{type:[Boolean,String,Number],default:!1},value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:[String,Number],default:""},inlinePrompt:{type:Boolean,default:!1},activeIcon:{type:$t,default:""},inactiveIcon:{type:$t,default:""},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String,loading:{type:Boolean,default:!1},beforeChange:{type:j(Function)},size:{type:String,validator:hr},tabindex:{type:[String,Number]}}),OS={[Ve]:t=>St(t)||Fe(t)||Ne(t),[at]:t=>St(t)||Fe(t)||Ne(t),[fn]:t=>St(t)||Fe(t)||Ne(t)},UY=["onClick"],GY=["id","aria-checked","aria-disabled","name","true-value","false-value","disabled","tabindex","onKeydown"],qY=["aria-hidden"],YY=["aria-hidden"],XY=["aria-hidden"],ZY=["aria-hidden"],JY={name:"ElSwitch"},QY=e.defineComponent({...JY,props:AS,emits:OS,setup(t,{expose:n,emit:o}){const r=t,l="ElSwitch",a=e.getCurrentInstance(),{formItem:s}=Co(),i=yt(),c=Z("switch");Gr({from:'"value"',replacement:'"model-value" or "v-model"',scope:l,version:"2.3.0",ref:"https://element-plus.org/en-US/component/switch.html#attributes",type:"Attribute"},e.computed(()=>{var S;return!!((S=a.vnode.props)!=null&&S.value)}));const{inputId:d}=wo(r,{formItemContext:s}),f=bo(e.computed(()=>r.loading)),u=e.ref(r.modelValue!==!1),p=e.ref(),m=e.ref(),g=e.computed(()=>[c.b(),c.m(i.value),c.is("disabled",f.value),c.is("checked",y.value)]),h=e.computed(()=>({width:Nt(r.width)}));e.watch(()=>r.modelValue,()=>{u.value=!0}),e.watch(()=>r.value,()=>{u.value=!1});const b=e.computed(()=>u.value?r.modelValue:r.value),y=e.computed(()=>b.value===r.activeValue);[r.activeValue,r.inactiveValue].includes(b.value)||(o(Ve,r.inactiveValue),o(at,r.inactiveValue),o(fn,r.inactiveValue)),e.watch(y,S=>{var N;p.value.checked=S,r.validateEvent&&((N=s==null?void 0:s.validate)==null||N.call(s,"change").catch($=>void 0))});const w=()=>{const S=y.value?r.inactiveValue:r.activeValue;o(Ve,S),o(at,S),o(fn,S),e.nextTick(()=>{p.value.checked=y.value})},C=()=>{if(f.value)return;const{beforeChange:S}=r;if(!S){w();return}const N=S();[rd(N),St(N)].includes(!0)||Et(l,"beforeChange must return type `Promise` or `boolean`"),rd(N)?N.then(B=>{B&&w()}).catch(B=>{}):N&&w()},k=e.computed(()=>c.cssVarBlock({...r.activeColor?{"on-color":r.activeColor}:null,...r.inactiveColor?{"off-color":r.inactiveColor}:null,...r.borderColor?{"border-color":r.borderColor}:null})),E=()=>{var S,N;(N=(S=p.value)==null?void 0:S.focus)==null||N.call(S)};return e.onMounted(()=>{p.value.checked=y.value}),n({focus:E}),(S,N)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(g)),style:e.normalizeStyle(e.unref(k)),onClick:e.withModifiers(C,["prevent"])},[e.createElementVNode("input",{id:e.unref(d),ref_key:"input",ref:p,class:e.normalizeClass(e.unref(c).e("input")),type:"checkbox",role:"switch","aria-checked":e.unref(y),"aria-disabled":e.unref(f),name:S.name,"true-value":S.activeValue,"false-value":S.inactiveValue,disabled:e.unref(f),tabindex:S.tabindex,onChange:w,onKeydown:e.withKeys(C,["enter"])},null,42,GY),!S.inlinePrompt&&(S.inactiveIcon||S.inactiveText)?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(c).e("label"),e.unref(c).em("label","left"),e.unref(c).is("active",!e.unref(y))])},[S.inactiveIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.inactiveIcon)))]),_:1})):e.createCommentVNode("v-if",!0),!S.inactiveIcon&&S.inactiveText?(e.openBlock(),e.createElementBlock("span",{key:1,"aria-hidden":e.unref(y)},e.toDisplayString(S.inactiveText),9,qY)):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("span",{ref_key:"core",ref:m,class:e.normalizeClass(e.unref(c).e("core")),style:e.normalizeStyle(e.unref(h))},[S.inlinePrompt?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(c).e("inner"))},[S.activeIcon||S.inactiveIcon?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[S.activeIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass([e.unref(c).is("icon"),e.unref(y)?e.unref(c).is("show"):e.unref(c).is("hide")])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.activeIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),S.inactiveIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass([e.unref(c).is("icon"),e.unref(y)?e.unref(c).is("hide"):e.unref(c).is("show")])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.inactiveIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],64)):S.activeText||S.inactiveIcon?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[S.activeText?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(c).is("text"),e.unref(y)?e.unref(c).is("show"):e.unref(c).is("hide")]),"aria-hidden":!e.unref(y)},e.toDisplayString(S.activeText.substring(0,3)),11,YY)):e.createCommentVNode("v-if",!0),S.inactiveText?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(c).is("text"),e.unref(y)?e.unref(c).is("hide"):e.unref(c).is("show")]),"aria-hidden":e.unref(y)},e.toDisplayString(S.inactiveText.substring(0,3)),11,XY)):e.createCommentVNode("v-if",!0)],64)):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(c).e("action"))},[S.loading?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(c).is("loading"))},{default:e.withCtx(()=>[e.createVNode(e.unref(xo))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],2)],6),!S.inlinePrompt&&(S.activeIcon||S.activeText)?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(c).e("label"),e.unref(c).em("label","right"),e.unref(c).is("active",e.unref(y))])},[S.activeIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(S.activeIcon)))]),_:1})):e.createCommentVNode("v-if",!0),!S.activeIcon&&S.activeText?(e.openBlock(),e.createElementBlock("span",{key:1,"aria-hidden":!e.unref(y)},e.toDisplayString(S.activeText),9,ZY)):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0)],14,UY))}});var eX=re(QY,[["__file","switch.vue"]]);const zS=Te(eX);var tX=/["'&<>]/,nX=oX;function oX(t){var n=""+t,o=tX.exec(n);if(!o)return n;var r,l="",a=0,s=0;for(a=o.index;atypeof d=="string"?et(i,d):d(i,c,t))):(n!=="$key"&&DS(i)&&"$value"in i&&(i=i.$value),[DS(i)?et(i,n):i])},s=function(i,c){if(r)return r(i.value,c.value);for(let d=0,f=i.key.length;dc.key[d])return 1}return 0};return t.map((i,c)=>({value:i,index:c,key:a?a(i,c):null})).sort((i,c)=>{let d=s(i,c);return d||(d=i.index-c.index),d*+o}).map(i=>i.value)},LS=function(t,n){let o=null;return t.columns.forEach(r=>{r.id===n&&(o=r)}),o},lX=function(t,n){let o=null;for(let r=0;r{if(!t)throw new Error("Row is required when get row identity");if(typeof n=="string"){if(!n.includes("."))return`${t[n]}`;const o=n.split(".");let r=t;for(const l of o)r=r[l];return`${r}`}else if(typeof n=="function")return n.call(null,t)},Tr=function(t,n){const o={};return(t||[]).forEach((r,l)=>{o[Ot(r,n)]={row:r,index:l}}),o};function aX(t,n){const o={};let r;for(r in t)o[r]=t[r];for(r in n)if(Mt(n,r)){const l=n[r];typeof l!="undefined"&&(o[r]=l)}return o}function ju(t){return t===""||t!==void 0&&(t=Number.parseInt(t,10),Number.isNaN(t)&&(t="")),t}function xS(t){return t===""||t!==void 0&&(t=ju(t),Number.isNaN(t)&&(t=80)),t}function sX(t){return typeof t=="number"?t:typeof t=="string"?/^\d+(?:px)?$/.test(t)?Number.parseInt(t,10):t:null}function iX(...t){return t.length===0?n=>n:t.length===1?t[0]:t.reduce((n,o)=>(...r)=>n(o(...r)))}function Ci(t,n,o){let r=!1;const l=t.indexOf(n),a=l!==-1,s=()=>{t.push(n),r=!0},i=()=>{t.splice(l,1),r=!0};return typeof o=="boolean"?o&&!a?s():!o&&a&&i():a?i():s(),r}function cX(t,n,o="children",r="hasChildren"){const l=s=>!(Array.isArray(s)&&s.length);function a(s,i,c){n(s,i,c),i.forEach(d=>{if(d[r]){n(d,null,c+1);return}const f=d[o];l(f)||a(d,f,c+1)})}t.forEach(s=>{if(s[r]){n(s,null,0);return}const i=s[o];l(i)||a(s,i,0)})}let er;function dX(t,n,o,r,l){const{nextZIndex:a}=Yn(),s=t==null?void 0:t.dataset.prefix,i=t==null?void 0:t.querySelector(`.${s}-scrollbar__wrap`);function c(){const g=l==="light",h=document.createElement("div");return h.className=`${s}-popper ${g?"is-light":"is-dark"}`,o=nX(o),h.innerHTML=o,h.style.zIndex=String(a()),t==null||t.appendChild(h),h}function d(){const g=document.createElement("div");return g.className=`${s}-popper__arrow`,g}function f(){u&&u.update()}er=()=>{try{u&&u.destroy(),p&&(t==null||t.removeChild(p)),n.removeEventListener("mouseenter",f),n.removeEventListener("mouseleave",er),i==null||i.removeEventListener("scroll",er),er=void 0}catch(g){}};let u=null;const p=c(),m=d();return p.appendChild(m),u=$b(n,p,{strategy:"absolute",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"arrow",options:{element:m,padding:10}}],...r}),n.addEventListener("mouseenter",f),n.addEventListener("mouseleave",er),i==null||i.addEventListener("scroll",er),u}const HS=(t,n,o,r)=>{let l=0,a=t;if(r){if(r[t].colSpan>1)return{};for(let c=0;c=i.value.length-o.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:a=i.value.length-o.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:l,after:a}:{}},Uu=(t,n,o,r,l)=>{const a=[],{direction:s,start:i}=HS(n,o,r,l);if(s){const c=s==="left";a.push(`${t}-fixed-column--${s}`),c&&i===r.states.fixedLeafColumnsLength.value-1?a.push("is-last-column"):!c&&i===r.states.columns.value.length-r.states.rightFixedLeafColumnsLength.value&&a.push("is-first-column")}return a};function KS(t,n){return t+(n.realWidth===null||Number.isNaN(n.realWidth)?Number(n.width):n.realWidth)}const Gu=(t,n,o,r)=>{const{direction:l,start:a=0}=HS(t,n,o,r);if(!l)return;const s={},i=l==="left",c=o.states.columns.value;return i?s.left=c.slice(0,t).reduce(KS,0):s.right=c.slice(a+1).reverse().reduce(KS,0),s},ul=(t,n)=>{!t||Number.isNaN(t[n])||(t[n]=`${t[n]}px`)};function fX(t){const n=e.getCurrentInstance(),o=e.ref(!1),r=e.ref([]);return{updateExpandRows:()=>{const c=t.data.value||[],d=t.rowKey.value;if(o.value)r.value=c.slice();else if(d){const f=Tr(r.value,d);r.value=c.reduce((u,p)=>{const m=Ot(p,d);return f[m]&&u.push(p),u},[])}else r.value=[]},toggleRowExpansion:(c,d)=>{Ci(r.value,c,d)&&n.emit("expand-change",c,r.value.slice())},setExpandRowKeys:c=>{n.store.assertRowKey();const d=t.data.value||[],f=t.rowKey.value,u=Tr(d,f);r.value=c.reduce((p,m)=>{const g=u[m];return g&&p.push(g.row),p},[])},isRowExpanded:c=>{const d=t.rowKey.value;return d?!!Tr(r.value,d)[Ot(c,d)]:r.value.includes(c)},states:{expandRows:r,defaultExpandAll:o}}}function uX(t){const n=e.getCurrentInstance(),o=e.ref(null),r=e.ref(null),l=d=>{n.store.assertRowKey(),o.value=d,s(d)},a=()=>{o.value=null},s=d=>{const{data:f,rowKey:u}=t;let p=null;u.value&&(p=(e.unref(f)||[]).find(m=>Ot(m,u.value)===d)),r.value=p,n.emit("current-change",r.value,null)};return{setCurrentRowKey:l,restoreCurrentRowKey:a,setCurrentRowByKey:s,updateCurrentRow:d=>{const f=r.value;if(d&&d!==f){r.value=d,n.emit("current-change",r.value,f);return}!d&&f&&(r.value=null,n.emit("current-change",null,f))},updateCurrentRowData:()=>{const d=t.rowKey.value,f=t.data.value||[],u=r.value;if(!f.includes(u)&&u){if(d){const p=Ot(u,d);s(p)}else r.value=null;r.value===null&&n.emit("current-change",null,u)}else o.value&&(s(o.value),a())},states:{_currentRowKey:o,currentRow:r}}}function pX(t){const n=e.ref([]),o=e.ref({}),r=e.ref(16),l=e.ref(!1),a=e.ref({}),s=e.ref("hasChildren"),i=e.ref("children"),c=e.getCurrentInstance(),d=e.computed(()=>{if(!t.rowKey.value)return{};const y=t.data.value||[];return u(y)}),f=e.computed(()=>{const y=t.rowKey.value,w=Object.keys(a.value),C={};return w.length&&w.forEach(k=>{if(a.value[k].length){const E={children:[]};a.value[k].forEach(S=>{const N=Ot(S,y);E.children.push(N),S[s.value]&&!C[N]&&(C[N]={children:[]})}),C[k]=E}}),C}),u=y=>{const w=t.rowKey.value,C={};return cX(y,(k,E,S)=>{const N=Ot(k,w);Array.isArray(E)?C[N]={children:E.map($=>Ot($,w)),level:S}:l.value&&(C[N]={children:[],lazy:!0,level:S})},i.value,s.value),C},p=(y=!1,w=(C=>(C=c.store)==null?void 0:C.states.defaultExpandAll.value)())=>{var C;const k=d.value,E=f.value,S=Object.keys(k),N={};if(S.length){const $=e.unref(o),B=[],P=(z,I)=>{if(y)return n.value?w||n.value.includes(I):!!(w||(z==null?void 0:z.expanded));{const A=w||n.value&&n.value.includes(I);return!!((z==null?void 0:z.expanded)||A)}};S.forEach(z=>{const I=$[z],A={...k[z]};if(A.expanded=P(I,z),A.lazy){const{loaded:L=!1,loading:R=!1}=I||{};A.loaded=!!L,A.loading=!!R,B.push(z)}N[z]=A});const D=Object.keys(E);l.value&&D.length&&B.length&&D.forEach(z=>{const I=$[z],A=E[z].children;if(B.includes(z)){if(N[z].children.length!==0)throw new Error("[ElTable]children must be an empty array.");N[z].children=A}else{const{loaded:L=!1,loading:R=!1}=I||{};N[z]={lazy:!0,loaded:!!L,loading:!!R,expanded:P(I,z),children:A,level:""}}})}o.value=N,(C=c.store)==null||C.updateTableScrollY()};e.watch(()=>n.value,()=>{p(!0)}),e.watch(()=>d.value,()=>{p()}),e.watch(()=>f.value,()=>{p()});const m=y=>{n.value=y,p()},g=(y,w)=>{c.store.assertRowKey();const C=t.rowKey.value,k=Ot(y,C),E=k&&o.value[k];if(k&&E&&"expanded"in E){const S=E.expanded;w=typeof w=="undefined"?!E.expanded:w,o.value[k].expanded=w,S!==w&&c.emit("expand-change",y,w),c.store.updateTableScrollY()}},h=y=>{c.store.assertRowKey();const w=t.rowKey.value,C=Ot(y,w),k=o.value[C];l.value&&k&&"loaded"in k&&!k.loaded?b(y,C,k):g(y,void 0)},b=(y,w,C)=>{const{load:k}=c.props;k&&!o.value[w].loaded&&(o.value[w].loading=!0,k(y,C,E=>{if(!Array.isArray(E))throw new TypeError("[ElTable] data must be an array");o.value[w].loading=!1,o.value[w].loaded=!0,o.value[w].expanded=!0,E.length&&(a.value[w]=E),c.emit("expand-change",y,!0)}))};return{loadData:b,loadOrToggle:h,toggleTreeExpansion:g,updateTreeExpandKeys:m,updateTreeData:p,normalize:u,states:{expandRowKeys:n,treeData:o,indent:r,lazy:l,lazyTreeNodeMap:a,lazyColumnIdentifier:s,childrenColumnName:i}}}const mX=(t,n)=>{const o=n.sortingColumn;return!o||typeof o.sortable=="string"?t:rX(t,n.sortProp,n.sortOrder,o.sortMethod,o.sortBy)},wi=t=>{const n=[];return t.forEach(o=>{o.children?n.push.apply(n,wi(o.children)):n.push(o)}),n};function hX(){var t;const n=e.getCurrentInstance(),{size:o}=e.toRefs((t=n.proxy)==null?void 0:t.$props),r=e.ref(null),l=e.ref([]),a=e.ref([]),s=e.ref(!1),i=e.ref([]),c=e.ref([]),d=e.ref([]),f=e.ref([]),u=e.ref([]),p=e.ref([]),m=e.ref([]),g=e.ref([]),h=e.ref(0),b=e.ref(0),y=e.ref(0),w=e.ref(!1),C=e.ref([]),k=e.ref(!1),E=e.ref(!1),S=e.ref(null),N=e.ref({}),$=e.ref(null),B=e.ref(null),P=e.ref(null),D=e.ref(null),z=e.ref(null);e.watch(l,()=>n.state&&L(!1),{deep:!0});const I=()=>{if(!r.value)throw new Error("[ElTable] prop row-key is required")},A=()=>{f.value=i.value.filter(ie=>ie.fixed===!0||ie.fixed==="left"),u.value=i.value.filter(ie=>ie.fixed==="right"),f.value.length>0&&i.value[0]&&i.value[0].type==="selection"&&!i.value[0].fixed&&(i.value[0].fixed=!0,f.value.unshift(i.value[0]));const q=i.value.filter(ie=>!ie.fixed);c.value=[].concat(f.value).concat(q).concat(u.value);const le=wi(q),M=wi(f.value),G=wi(u.value);h.value=le.length,b.value=M.length,y.value=G.length,d.value=[].concat(M).concat(le).concat(G),s.value=f.value.length>0||u.value.length>0},L=(q,le=!1)=>{q&&A(),le?n.state.doLayout():n.state.debouncedUpdateLayout()},R=q=>C.value.includes(q),T=()=>{w.value=!1,C.value.length&&(C.value=[],n.emit("selection-change",[]))},v=()=>{let q;if(r.value){q=[];const le=Tr(C.value,r.value),M=Tr(l.value,r.value);for(const G in le)Mt(le,G)&&!M[G]&&q.push(le[G].row)}else q=C.value.filter(le=>!l.value.includes(le));if(q.length){const le=C.value.filter(M=>!q.includes(M));C.value=le,n.emit("selection-change",le.slice())}},V=()=>(C.value||[]).slice(),H=(q,le=void 0,M=!0)=>{if(Ci(C.value,q,le)){const ie=(C.value||[]).slice();M&&n.emit("select",ie,q),n.emit("selection-change",ie)}},x=()=>{var q,le;const M=E.value?!w.value:!(w.value||C.value.length);w.value=M;let G=!1,ie=0;const ge=(le=(q=n==null?void 0:n.store)==null?void 0:q.states)==null?void 0:le.rowKey.value;l.value.forEach((ce,Ce)=>{const ke=Ce+ie;S.value?S.value.call(null,ce,ke)&&Ci(C.value,ce,M)&&(G=!0):Ci(C.value,ce,M)&&(G=!0),ie+=X(Ot(ce,ge))}),G&&n.emit("selection-change",C.value?C.value.slice():[]),n.emit("select-all",C.value)},F=()=>{const q=Tr(C.value,r.value);l.value.forEach(le=>{const M=Ot(le,r.value),G=q[M];G&&(C.value[G.index]=le)})},K=()=>{var q,le,M;if(((q=l.value)==null?void 0:q.length)===0){w.value=!1;return}let G;r.value&&(G=Tr(C.value,r.value));const ie=function(ke){return G?!!G[Ot(ke,r.value)]:C.value.includes(ke)};let ge=!0,ce=0,Ce=0;for(let ke=0,ct=(l.value||[]).length;ke{var le;if(!n||!n.store)return 0;const{treeData:M}=n.store.states;let G=0;const ie=(le=M.value[q])==null?void 0:le.children;return ie&&(G+=ie.length,ie.forEach(ge=>{G+=X(ge)})),G},J=(q,le)=>{Array.isArray(q)||(q=[q]);const M={};return q.forEach(G=>{N.value[G.id]=le,M[G.columnKey||G.id]=le}),M},U=(q,le,M)=>{B.value&&B.value!==q&&(B.value.order=null),B.value=q,P.value=le,D.value=M},W=()=>{let q=e.unref(a);Object.keys(N.value).forEach(le=>{const M=N.value[le];if(!M||M.length===0)return;const G=LS({columns:d.value},le);G&&G.filterMethod&&(q=q.filter(ie=>M.some(ge=>G.filterMethod.call(null,ge,ie,G))))}),$.value=q},Q=()=>{l.value=mX($.value,{sortingColumn:B.value,sortProp:P.value,sortOrder:D.value})},Y=(q=void 0)=>{q&&q.filter||W(),Q()},ee=q=>{const{tableHeaderRef:le}=n.refs;if(!le)return;const M=Object.assign({},le.filterPanels),G=Object.keys(M);if(!!G.length)if(typeof q=="string"&&(q=[q]),Array.isArray(q)){const ie=q.map(ge=>lX({columns:d.value},ge));G.forEach(ge=>{const ce=ie.find(Ce=>Ce.id===ge);ce&&(ce.filteredValue=[])}),n.store.commit("filterChange",{column:ie,values:[],silent:!0,multi:!0})}else G.forEach(ie=>{const ge=d.value.find(ce=>ce.id===ie);ge&&(ge.filteredValue=[])}),N.value={},n.store.commit("filterChange",{column:{},values:[],silent:!0})},pe=()=>{!B.value||(U(null,null,null),n.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:he,toggleRowExpansion:we,updateExpandRows:Me,states:be,isRowExpanded:Ke}=fX({data:l,rowKey:r}),{updateTreeExpandKeys:me,toggleTreeExpansion:ne,updateTreeData:oe,loadOrToggle:fe,states:ye}=pX({data:l,rowKey:r}),{updateCurrentRowData:$e,updateCurrentRow:ve,setCurrentRowKey:te,states:Ee}=uX({data:l,rowKey:r});return{assertRowKey:I,updateColumns:A,scheduleLayout:L,isSelected:R,clearSelection:T,cleanSelection:v,getSelectionRows:V,toggleRowSelection:H,_toggleAllSelection:x,toggleAllSelection:null,updateSelectionByRowKey:F,updateAllSelected:K,updateFilters:J,updateCurrentRow:ve,updateSort:U,execFilter:W,execSort:Q,execQuery:Y,clearFilter:ee,clearSort:pe,toggleRowExpansion:we,setExpandRowKeysAdapter:q=>{he(q),me(q)},setCurrentRowKey:te,toggleRowExpansionAdapter:(q,le)=>{d.value.some(({type:G})=>G==="expand")?we(q,le):ne(q,le)},isRowExpanded:Ke,updateExpandRows:Me,updateCurrentRowData:$e,loadOrToggle:fe,updateTreeData:oe,states:{tableSize:o,rowKey:r,data:l,_data:a,isComplex:s,_columns:i,originColumns:c,columns:d,fixedColumns:f,rightFixedColumns:u,leafColumns:p,fixedLeafColumns:m,rightFixedLeafColumns:g,leafColumnsLength:h,fixedLeafColumnsLength:b,rightFixedLeafColumnsLength:y,isAllSelected:w,selection:C,reserveSelection:k,selectOnIndeterminate:E,selectable:S,filters:N,filteredData:$,sortingColumn:B,sortProp:P,sortOrder:D,hoverRow:z,...be,...ye,...Ee}}}function qu(t,n){return t.map(o=>{var r;return o.id===n.id?n:((r=o.children)!=null&&r.length&&(o.children=qu(o.children,n)),o)})}function WS(t){t.forEach(n=>{var o,r;n.no=(o=n.getColumnIndex)==null?void 0:o.call(n),(r=n.children)!=null&&r.length&&WS(n.children)}),t.sort((n,o)=>n.no-o.no)}function gX(){const t=e.getCurrentInstance(),n=hX();return{ns:Z("table"),...n,mutations:{setData(s,i){const c=e.unref(s._data)!==i;s.data.value=i,s._data.value=i,t.store.execQuery(),t.store.updateCurrentRowData(),t.store.updateExpandRows(),t.store.updateTreeData(t.store.states.defaultExpandAll.value),e.unref(s.reserveSelection)?(t.store.assertRowKey(),t.store.updateSelectionByRowKey()):c?t.store.clearSelection():t.store.cleanSelection(),t.store.updateAllSelected(),t.$ready&&t.store.scheduleLayout()},insertColumn(s,i,c){const d=e.unref(s._columns);let f=[];c?(c&&!c.children&&(c.children=[]),c.children.push(i),f=qu(d,c)):(d.push(i),f=d),WS(f),s._columns.value=f,i.type==="selection"&&(s.selectable.value=i.selectable,s.reserveSelection.value=i.reserveSelection),t.$ready&&(t.store.updateColumns(),t.store.scheduleLayout())},removeColumn(s,i,c){const d=e.unref(s._columns)||[];if(c)c.children.splice(c.children.findIndex(f=>f.id===i.id),1),c.children.length===0&&delete c.children,s._columns.value=qu(d,c);else{const f=d.indexOf(i);f>-1&&(d.splice(f,1),s._columns.value=d)}t.$ready&&(t.store.updateColumns(),t.store.scheduleLayout())},sort(s,i){const{prop:c,order:d,init:f}=i;if(c){const u=e.unref(s.columns).find(p=>p.property===c);u&&(u.order=d,t.store.updateSort(u,c,d),t.store.commit("changeSortCondition",{init:f}))}},changeSortCondition(s,i){const{sortingColumn:c,sortProp:d,sortOrder:f}=s;e.unref(f)===null&&(s.sortingColumn.value=null,s.sortProp.value=null);const u={filter:!0};t.store.execQuery(u),(!i||!(i.silent||i.init))&&t.emit("sort-change",{column:e.unref(c),prop:e.unref(d),order:e.unref(f)}),t.store.updateTableScrollY()},filterChange(s,i){const{column:c,values:d,silent:f}=i,u=t.store.updateFilters(c,d);t.store.execQuery(),f||t.emit("filter-change",u),t.store.updateTableScrollY()},toggleAllSelection(){t.store.toggleAllSelection()},rowSelectedChanged(s,i){t.store.toggleRowSelection(i),t.store.updateAllSelected()},setHoverRow(s,i){s.hoverRow.value=i},setCurrentRow(s,i){t.store.updateCurrentRow(i)}},commit:function(s,...i){const c=t.store.mutations;if(c[s])c[s].apply(t,[t.store.states].concat(i));else throw new Error(`Action not found: ${s}`)},updateTableScrollY:function(){e.nextTick(()=>t.layout.updateScrollY.apply(t.layout))}}}const Na={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data",["treeProps.hasChildren"]:{key:"lazyColumnIdentifier",default:"hasChildren"},["treeProps.children"]:{key:"childrenColumnName",default:"children"}};function yX(t,n){if(!t)throw new Error("Table is required.");const o=gX();return o.toggleAllSelection=Dt(o._toggleAllSelection,10),Object.keys(Na).forEach(r=>{jS(US(n,r),r,o)}),bX(o,n),o}function bX(t,n){Object.keys(Na).forEach(o=>{e.watch(()=>US(n,o),r=>{jS(r,o,t)})})}function jS(t,n,o){let r=t,l=Na[n];typeof Na[n]=="object"&&(l=l.key,r=r||Na[n].default),o.states[l].value=r}function US(t,n){if(n.includes(".")){const o=n.split(".");let r=t;return o.forEach(l=>{r=r[l]}),r}else return t[n]}class CX{constructor(n){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=e.ref(null),this.scrollX=e.ref(!1),this.scrollY=e.ref(!1),this.bodyWidth=e.ref(null),this.fixedWidth=e.ref(null),this.rightFixedWidth=e.ref(null),this.gutterWidth=0;for(const o in n)Mt(n,o)&&(e.isRef(this[o])?this[o].value=n[o]:this[o]=n[o]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const o=this.table.refs.scrollBarRef;if(this.table.vnode.el&&o){let r=!0;const l=this.scrollY.value;return r=o.wrap$.scrollHeight>o.wrap$.clientHeight,this.scrollY.value=r,l!==r}return!1}setHeight(n,o="height"){if(!Oe)return;const r=this.table.vnode.el;if(n=sX(n),this.height.value=Number(n),!r&&(n||n===0))return e.nextTick(()=>this.setHeight(n,o));typeof n=="number"?(r.style[o]=`${n}px`,this.updateElsHeight()):typeof n=="string"&&(r.style[o]=n,this.updateElsHeight())}setMaxHeight(n){this.setHeight(n,"max-height")}getFlattenColumns(){const n=[];return this.table.store.states.columns.value.forEach(r=>{r.isColumnGroup?n.push.apply(n,r.columns):n.push(r)}),n}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(n){if(!n)return!0;let o=n;for(;o.tagName!=="DIV";){if(getComputedStyle(o).display==="none")return!0;o=o.parentElement}return!1}updateColumnsWidth(){if(!Oe)return;const n=this.fit,o=this.table.vnode.el.clientWidth;let r=0;const l=this.getFlattenColumns(),a=l.filter(c=>typeof c.width!="number");if(l.forEach(c=>{typeof c.width=="number"&&c.realWidth&&(c.realWidth=null)}),a.length>0&&n){if(l.forEach(c=>{r+=Number(c.width||c.minWidth||80)}),r<=o){this.scrollX.value=!1;const c=o-r;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+c;else{const d=a.reduce((p,m)=>p+Number(m.minWidth||80),0),f=c/d;let u=0;a.forEach((p,m)=>{if(m===0)return;const g=Math.floor(Number(p.minWidth||80)*f);u+=g,p.realWidth=Number(p.minWidth||80)+g}),a[0].realWidth=Number(a[0].minWidth||80)+c-u}}else this.scrollX.value=!0,a.forEach(c=>{c.realWidth=Number(c.minWidth)});this.bodyWidth.value=Math.max(r,o),this.table.state.resizeState.value.width=this.bodyWidth.value}else l.forEach(c=>{!c.width&&!c.minWidth?c.realWidth=80:c.realWidth=Number(c.width||c.minWidth),r+=c.realWidth}),this.scrollX.value=r>o,this.bodyWidth.value=r;const s=this.store.states.fixedColumns.value;if(s.length>0){let c=0;s.forEach(d=>{c+=Number(d.realWidth||d.width)}),this.fixedWidth.value=c}const i=this.store.states.rightFixedColumns.value;if(i.length>0){let c=0;i.forEach(d=>{c+=Number(d.realWidth||d.width)}),this.rightFixedWidth.value=c}this.notifyObservers("columns")}addObserver(n){this.observers.push(n)}removeObserver(n){const o=this.observers.indexOf(n);o!==-1&&this.observers.splice(o,1)}notifyObservers(n){this.observers.forEach(r=>{var l,a;switch(n){case"columns":(l=r.state)==null||l.onColumnsChange(this);break;case"scrollable":(a=r.state)==null||a.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${n}.`)}})}}var wX=CX;const{CheckboxGroup:kX}=mn,SX=e.defineComponent({name:"ElTableFilterPanel",components:{ElCheckbox:mn,ElCheckboxGroup:kX,ElScrollbar:Zn,ElTooltip:Ut,ElIcon:de,ArrowDown:mr,ArrowUp:Kl},directives:{ClickOutside:_o},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(t){const n=e.getCurrentInstance(),{t:o}=We(),r=Z("table-filter"),l=n==null?void 0:n.parent;l.filterPanels.value[t.column.id]||(l.filterPanels.value[t.column.id]=n);const a=e.ref(!1),s=e.ref(null),i=e.computed(()=>t.column&&t.column.filters),c=e.computed({get:()=>{var k;return(((k=t.column)==null?void 0:k.filteredValue)||[])[0]},set:k=>{d.value&&(typeof k!="undefined"&&k!==null?d.value.splice(0,1,k):d.value.splice(0,1))}}),d=e.computed({get(){return t.column?t.column.filteredValue||[]:[]},set(k){t.column&&t.upDataColumn("filteredValue",k)}}),f=e.computed(()=>t.column?t.column.filterMultiple:!0),u=k=>k.value===c.value,p=()=>{a.value=!1},m=k=>{k.stopPropagation(),a.value=!a.value},g=()=>{a.value=!1},h=()=>{w(d.value),p()},b=()=>{d.value=[],w(d.value),p()},y=k=>{c.value=k,w(typeof k!="undefined"&&k!==null?d.value:[]),p()},w=k=>{t.store.commit("filterChange",{column:t.column,values:k}),t.store.updateAllSelected()};e.watch(a,k=>{t.column&&t.upDataColumn("filterOpened",k)},{immediate:!0});const C=e.computed(()=>{var k,E;return(E=(k=s.value)==null?void 0:k.popperRef)==null?void 0:E.contentRef});return{tooltipVisible:a,multiple:f,filteredValue:d,filterValue:c,filters:i,handleConfirm:h,handleReset:b,handleSelect:y,isActive:u,t:o,ns:r,showFilterPanel:m,hideFilterPanel:g,popperPaneRef:C,tooltip:s}}}),EX={key:0},NX=["disabled"],$X=["label","onClick"];function BX(t,n,o,r,l,a){const s=e.resolveComponent("el-checkbox"),i=e.resolveComponent("el-checkbox-group"),c=e.resolveComponent("el-scrollbar"),d=e.resolveComponent("arrow-up"),f=e.resolveComponent("arrow-down"),u=e.resolveComponent("el-icon"),p=e.resolveComponent("el-tooltip"),m=e.resolveDirective("click-outside");return e.openBlock(),e.createBlock(p,{ref:"tooltip",visible:t.tooltipVisible,offset:0,placement:t.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":t.ns.b(),persistent:""},{content:e.withCtx(()=>[t.multiple?(e.openBlock(),e.createElementBlock("div",EX,[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("content"))},[e.createVNode(c,{"wrap-class":t.ns.e("wrap")},{default:e.withCtx(()=>[e.createVNode(i,{modelValue:t.filteredValue,"onUpdate:modelValue":n[0]||(n[0]=g=>t.filteredValue=g),class:e.normalizeClass(t.ns.e("checkbox-group"))},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.filters,g=>(e.openBlock(),e.createBlock(s,{key:g.value,label:g.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(g.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("bottom"))},[e.createElementVNode("button",{class:e.normalizeClass({[t.ns.is("disabled")]:t.filteredValue.length===0}),disabled:t.filteredValue.length===0,type:"button",onClick:n[1]||(n[1]=(...g)=>t.handleConfirm&&t.handleConfirm(...g))},e.toDisplayString(t.t("el.table.confirmFilter")),11,NX),e.createElementVNode("button",{type:"button",onClick:n[2]||(n[2]=(...g)=>t.handleReset&&t.handleReset(...g))},e.toDisplayString(t.t("el.table.resetFilter")),1)],2)])):(e.openBlock(),e.createElementBlock("ul",{key:1,class:e.normalizeClass(t.ns.e("list"))},[e.createElementVNode("li",{class:e.normalizeClass([t.ns.e("list-item"),{[t.ns.is("active")]:t.filterValue===void 0||t.filterValue===null}]),onClick:n[3]||(n[3]=g=>t.handleSelect(null))},e.toDisplayString(t.t("el.table.clearFilter")),3),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.filters,g=>(e.openBlock(),e.createElementBlock("li",{key:g.value,class:e.normalizeClass([t.ns.e("list-item"),t.ns.is("active",t.isActive(g))]),label:g.value,onClick:h=>t.handleSelect(g.value)},e.toDisplayString(g.text),11,$X))),128))],2))]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass([`${t.ns.namespace.value}-table__column-filter-trigger`,`${t.ns.namespace.value}-none-outline`]),onClick:n[4]||(n[4]=(...g)=>t.showFilterPanel&&t.showFilterPanel(...g))},[e.createVNode(u,null,{default:e.withCtx(()=>[t.column.filterOpened?(e.openBlock(),e.createBlock(d,{key:0})):(e.openBlock(),e.createBlock(f,{key:1}))]),_:1})],2)),[[m,t.hideFilterPanel,t.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var _X=re(SX,[["render",BX],["__file","filter-panel.vue"]]);function GS(t){const n=e.getCurrentInstance();e.onBeforeMount(()=>{o.value.addObserver(n)}),e.onMounted(()=>{r(o.value),l(o.value)}),e.onUpdated(()=>{r(o.value),l(o.value)}),e.onUnmounted(()=>{o.value.removeObserver(n)});const o=e.computed(()=>{const a=t.layout;if(!a)throw new Error("Can not find table layout.");return a}),r=a=>{var s;const i=((s=t.vnode.el)==null?void 0:s.querySelectorAll("colgroup > col"))||[];if(!i.length)return;const c=a.getFlattenColumns(),d={};c.forEach(f=>{d[f.id]=f});for(let f=0,u=i.length;f{var s,i;const c=((s=t.vnode.el)==null?void 0:s.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let f=0,u=c.length;f{h.stopPropagation()},a=(h,b)=>{!b.filters&&b.sortable?g(h,b,!1):b.filterable&&!b.sortable&&l(h),r==null||r.emit("header-click",b,h)},s=(h,b)=>{r==null||r.emit("header-contextmenu",b,h)},i=e.ref(null),c=e.ref(!1),d=e.ref({}),f=(h,b)=>{if(!!Oe&&!(b.children&&b.children.length>0)&&i.value&&t.border){c.value=!0;const y=r;n("set-drag-visible",!0);const C=(y==null?void 0:y.vnode.el).getBoundingClientRect().left,k=o.vnode.el.querySelector(`th.${b.id}`),E=k.getBoundingClientRect(),S=E.left-C+30;Un(k,"noclick"),d.value={startMouseLeft:h.clientX,startLeft:E.right-C,startColumnLeft:E.left-C,tableLeft:C};const N=y==null?void 0:y.refs.resizeProxy;N.style.left=`${d.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const $=P=>{const D=P.clientX-d.value.startMouseLeft,z=d.value.startLeft+D;N.style.left=`${Math.max(S,z)}px`},B=()=>{if(c.value){const{startColumnLeft:P,startLeft:D}=d.value,I=Number.parseInt(N.style.left,10)-P;b.width=b.realWidth=I,y==null||y.emit("header-dragend",b.width,D-P,b,h),requestAnimationFrame(()=>{t.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",c.value=!1,i.value=null,d.value={},n("set-drag-visible",!1)}document.removeEventListener("mousemove",$),document.removeEventListener("mouseup",B),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{en(k,"noclick")},0)};document.addEventListener("mousemove",$),document.addEventListener("mouseup",B)}},u=(h,b)=>{var y;if(b.children&&b.children.length>0)return;const w=(y=h.target)==null?void 0:y.closest("th");if(!(!b||!b.resizable)&&!c.value&&t.border){const C=w.getBoundingClientRect(),k=document.body.style;C.width>12&&C.right-h.pageX<8?(k.cursor="col-resize",In(w,"is-sortable")&&(w.style.cursor="col-resize"),i.value=b):c.value||(k.cursor="",In(w,"is-sortable")&&(w.style.cursor="pointer"),i.value=null)}},p=()=>{!Oe||(document.body.style.cursor="")},m=({order:h,sortOrders:b})=>{if(h==="")return b[0];const y=b.indexOf(h||null);return b[y>b.length-2?0:y+1]},g=(h,b,y)=>{var w;h.stopPropagation();const C=b.order===y?null:y||m(b),k=(w=h.target)==null?void 0:w.closest("th");if(k&&In(k,"noclick")){en(k,"noclick");return}if(!b.sortable)return;const E=t.store.states;let S=E.sortProp.value,N;const $=E.sortingColumn.value;($!==b||$===b&&$.order===null)&&($&&($.order=null),E.sortingColumn.value=b,S=b.property),C?N=b.order=C:N=b.order=null,E.sortProp.value=S,E.sortOrder.value=N,r==null||r.store.commit("changeSortCondition")};return{handleHeaderClick:a,handleHeaderContextMenu:s,handleMouseDown:f,handleMouseMove:u,handleMouseOut:p,handleSortClick:g,handleFilterClick:l}}function TX(t){const n=e.inject(to),o=Z("table");return{getHeaderRowStyle:i=>{const c=n==null?void 0:n.props.headerRowStyle;return typeof c=="function"?c.call(null,{rowIndex:i}):c},getHeaderRowClass:i=>{const c=[],d=n==null?void 0:n.props.headerRowClassName;return typeof d=="string"?c.push(d):typeof d=="function"&&c.push(d.call(null,{rowIndex:i})),c.join(" ")},getHeaderCellStyle:(i,c,d,f)=>{var u;let p=(u=n==null?void 0:n.props.headerCellStyle)!=null?u:{};typeof p=="function"&&(p=p.call(null,{rowIndex:i,columnIndex:c,row:d,column:f}));const m=f.isSubColumn?null:Gu(c,f.fixed,t.store,d);return ul(m,"left"),ul(m,"right"),Object.assign({},p,m)},getHeaderCellClass:(i,c,d,f)=>{const u=f.isSubColumn?[]:Uu(o.b(),c,f.fixed,t.store,d),p=[f.id,f.order,f.headerAlign,f.className,f.labelClassName,...u];f.children||p.push("is-leaf"),f.sortable&&p.push("is-sortable");const m=n==null?void 0:n.props.headerCellClassName;return typeof m=="string"?p.push(m):typeof m=="function"&&p.push(m.call(null,{rowIndex:i,columnIndex:c,row:d,column:f})),p.push(o.e("cell")),p.filter(g=>Boolean(g)).join(" ")}}}const qS=t=>{const n=[];return t.forEach(o=>{o.children?(n.push(o),n.push.apply(n,qS(o.children))):n.push(o)}),n},VX=t=>{let n=1;const o=(a,s)=>{if(s&&(a.level=s.level+1,n{o(c,a),i+=c.colSpan}),a.colSpan=i}else a.colSpan=1};t.forEach(a=>{a.level=1,o(a,void 0)});const r=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(s=>s.isSubColumn=!0)):a.rowSpan=n-a.level+1,r[a.level-1].push(a)}),r};function MX(t){const n=e.inject(to),o=e.computed(()=>VX(t.store.states.originColumns.value));return{isGroup:e.computed(()=>{const a=o.value.length>1;return a&&n&&(n.state.isGroup.value=!0),a}),toggleAllSelection:a=>{a.stopPropagation(),n==null||n.store.commit("toggleAllSelection")},columnRows:o}}var RX=e.defineComponent({name:"ElTableHeader",components:{ElCheckbox:mn},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(t,{emit:n}){const o=e.getCurrentInstance(),r=e.inject(to),l=Z("table"),a=e.ref({}),{onColumnsChange:s,onScrollableChange:i}=GS(r);e.onMounted(async()=>{await e.nextTick(),await e.nextTick();const{prop:S,order:N}=t.defaultSort;r==null||r.store.commit("sort",{prop:S,order:N,init:!0})});const{handleHeaderClick:c,handleHeaderContextMenu:d,handleMouseDown:f,handleMouseMove:u,handleMouseOut:p,handleSortClick:m,handleFilterClick:g}=vX(t,n),{getHeaderRowStyle:h,getHeaderRowClass:b,getHeaderCellStyle:y,getHeaderCellClass:w}=TX(t),{isGroup:C,toggleAllSelection:k,columnRows:E}=MX(t);return o.state={onColumnsChange:s,onScrollableChange:i},o.filterPanels=a,{ns:l,filterPanels:a,onColumnsChange:s,onScrollableChange:i,columnRows:E,getHeaderRowClass:b,getHeaderRowStyle:h,getHeaderCellClass:w,getHeaderCellStyle:y,handleHeaderClick:c,handleHeaderContextMenu:d,handleMouseDown:f,handleMouseMove:u,handleMouseOut:p,handleSortClick:m,handleFilterClick:g,isGroup:C,toggleAllSelection:k}},render(){const{ns:t,isGroup:n,columnRows:o,getHeaderCellStyle:r,getHeaderCellClass:l,getHeaderRowClass:a,getHeaderRowStyle:s,handleHeaderClick:i,handleHeaderContextMenu:c,handleMouseDown:d,handleMouseMove:f,handleSortClick:u,handleMouseOut:p,store:m,$parent:g}=this;let h=1;return e.h("thead",{class:{[t.is("group")]:n}},o.map((b,y)=>e.h("tr",{class:a(y),key:y,style:s(y)},b.map((w,C)=>(w.rowSpan>h&&(h=w.rowSpan),e.h("th",{class:l(y,C,b,w),colspan:w.colSpan,key:`${w.id}-thead`,rowspan:w.rowSpan,style:r(y,C,b,w),onClick:k=>i(k,w),onContextmenu:k=>c(k,w),onMousedown:k=>d(k,w),onMousemove:k=>f(k,w),onMouseout:p},[e.h("div",{class:["cell",w.filteredValue&&w.filteredValue.length>0?"highlight":"",w.labelClassName]},[w.renderHeader?w.renderHeader({column:w,$index:C,store:m,_self:g}):w.label,w.sortable&&e.h("span",{onClick:k=>u(k,w),class:"caret-wrapper"},[e.h("i",{onClick:k=>u(k,w,"ascending"),class:"sort-caret ascending"}),e.h("i",{onClick:k=>u(k,w,"descending"),class:"sort-caret descending"})]),w.filterable&&e.h(_X,{store:m,placement:w.filterPlacement||"bottom-start",column:w,upDataColumn:(k,E)=>{w[k]=E}})])]))))))}});function IX(t){const n=e.inject(to),o=e.ref(""),r=e.ref(e.h("div")),l=(p,m,g)=>{var h;const b=n,y=Wu(p);let w;const C=(h=b==null?void 0:b.vnode.el)==null?void 0:h.dataset.prefix;y&&(w=FS({columns:t.store.states.columns.value},y,C),w&&(b==null||b.emit(`cell-${g}`,m,w,y,p))),b==null||b.emit(`row-${g}`,m,w,p)},a=(p,m)=>{l(p,m,"dblclick")},s=(p,m)=>{t.store.commit("setCurrentRow",m),l(p,m,"click")},i=(p,m)=>{l(p,m,"contextmenu")},c=Dt(p=>{t.store.commit("setHoverRow",p)},30),d=Dt(()=>{t.store.commit("setHoverRow",null)},30);return{handleDoubleClick:a,handleClick:s,handleContextMenu:i,handleMouseEnter:c,handleMouseLeave:d,handleCellMouseEnter:(p,m)=>{var g;const h=n,b=Wu(p),y=(g=h==null?void 0:h.vnode.el)==null?void 0:g.dataset.prefix;if(b){const S=FS({columns:t.store.states.columns.value},b,y),N=h.hoverState={cell:b,column:S,row:m};h==null||h.emit("cell-mouse-enter",N.row,N.column,N.cell,p)}const w=p.target.querySelector(".cell");if(!(In(w,`${y}-tooltip`)&&w.childNodes.length))return;const C=document.createRange();C.setStart(w,0),C.setEnd(w,w.childNodes.length);const k=C.getBoundingClientRect().width,E=(Number.parseInt(Gn(w,"paddingLeft"),10)||0)+(Number.parseInt(Gn(w,"paddingRight"),10)||0);(k+E>w.offsetWidth||w.scrollWidth>w.offsetWidth)&&dX(n==null?void 0:n.refs.tableWrapper,b,b.innerText||b.textContent,{placement:"top",strategy:"fixed"},m.tooltipEffect)},handleCellMouseLeave:p=>{if(!Wu(p))return;const g=n==null?void 0:n.hoverState;n==null||n.emit("cell-mouse-leave",g==null?void 0:g.row,g==null?void 0:g.column,g==null?void 0:g.cell,p)},tooltipContent:o,tooltipTrigger:r}}function PX(t){const n=e.inject(to),o=Z("table");return{getRowStyle:(d,f)=>{const u=n==null?void 0:n.props.rowStyle;return typeof u=="function"?u.call(null,{row:d,rowIndex:f}):u||null},getRowClass:(d,f)=>{const u=[o.e("row")];(n==null?void 0:n.props.highlightCurrentRow)&&d===t.store.states.currentRow.value&&u.push("current-row"),t.stripe&&f%2===1&&u.push(o.em("row","striped"));const p=n==null?void 0:n.props.rowClassName;return typeof p=="string"?u.push(p):typeof p=="function"&&u.push(p.call(null,{row:d,rowIndex:f})),u},getCellStyle:(d,f,u,p)=>{const m=n==null?void 0:n.props.cellStyle;let g=m!=null?m:{};typeof m=="function"&&(g=m.call(null,{rowIndex:d,columnIndex:f,row:u,column:p}));const h=p.isSubColumn?null:Gu(f,t==null?void 0:t.fixed,t.store);return ul(h,"left"),ul(h,"right"),Object.assign({},g,h)},getCellClass:(d,f,u,p)=>{const m=p.isSubColumn?[]:Uu(o.b(),f,t==null?void 0:t.fixed,t.store),g=[p.id,p.align,p.className,...m],h=n==null?void 0:n.props.cellClassName;return typeof h=="string"?g.push(h):typeof h=="function"&&g.push(h.call(null,{rowIndex:d,columnIndex:f,row:u,column:p})),g.push(o.e("cell")),g.filter(b=>Boolean(b)).join(" ")},getSpan:(d,f,u,p)=>{let m=1,g=1;const h=n==null?void 0:n.props.spanMethod;if(typeof h=="function"){const b=h({row:d,column:f,rowIndex:u,columnIndex:p});Array.isArray(b)?(m=b[0],g=b[1]):typeof b=="object"&&(m=b.rowspan,g=b.colspan)}return{rowspan:m,colspan:g}},getColspanRealWidth:(d,f,u)=>{if(f<1)return d[u].realWidth;const p=d.map(({realWidth:m,width:g})=>m||g).slice(u,u+f);return Number(p.reduce((m,g)=>Number(m)+Number(g),-1))}}}function AX(t){const n=e.inject(to),o=Z("table"),{handleDoubleClick:r,handleClick:l,handleContextMenu:a,handleMouseEnter:s,handleMouseLeave:i,handleCellMouseEnter:c,handleCellMouseLeave:d,tooltipContent:f,tooltipTrigger:u}=IX(t),{getRowStyle:p,getRowClass:m,getCellStyle:g,getCellClass:h,getSpan:b,getColspanRealWidth:y}=PX(t),w=e.computed(()=>t.store.states.columns.value.findIndex(({type:N})=>N==="default")),C=(N,$)=>{const B=n.props.rowKey;return B?Ot(N,B):$},k=(N,$,B,P=!1)=>{const{tooltipEffect:D,store:z}=t,{indent:I,columns:A}=z.states,L=m(N,$);let R=!0;B&&(L.push(o.em("row",`level-${B.level}`)),R=B.display);const T=R?null:{display:"none"};return e.h("tr",{style:[T,p(N,$)],class:L,key:C(N,$),onDblclick:v=>r(v,N),onClick:v=>l(v,N),onContextmenu:v=>a(v,N),onMouseenter:()=>s($),onMouseleave:i},A.value.map((v,V)=>{const{rowspan:H,colspan:x}=b(N,v,$,V);if(!H||!x)return null;const F={...v};F.realWidth=y(A.value,x,V);const K={store:t.store,_self:t.context||n,column:F,row:N,$index:$,cellIndex:V,expanded:P};V===w.value&&B&&(K.treeNode={indent:B.level*I.value,level:B.level},typeof B.expanded=="boolean"&&(K.treeNode.expanded=B.expanded,"loading"in B&&(K.treeNode.loading=B.loading),"noLazyChildren"in B&&(K.treeNode.noLazyChildren=B.noLazyChildren)));const X=`${$},${V}`,J=F.columnKey||F.rawColumnKey||"",U=E(V,v,K);return e.h("td",{style:g($,V,N,v),class:h($,V,N,v),key:`${J}${X}`,rowspan:H,colspan:x,onMouseenter:W=>c(W,{...N,tooltipEffect:D}),onMouseleave:d},[U])}))},E=(N,$,B)=>$.renderCell(B);return{wrappedRowRender:(N,$)=>{const B=t.store,{isRowExpanded:P,assertRowKey:D}=B,{treeData:z,lazyTreeNodeMap:I,childrenColumnName:A,rowKey:L}=B.states,R=B.states.columns.value;if(R.some(({type:v})=>v==="expand")){const v=P(N),V=k(N,$,void 0,v),H=n.renderExpanded;return v?H?[[V,e.h("tr",{key:`expanded-row__${V.key}`},[e.h("td",{colspan:R.length,class:"el-table__cell el-table__expanded-cell"},[H({row:N,$index:$,store:B,expanded:v})])])]]:(console.error("[Element Error]renderExpanded is required."),V):[[V]]}else if(Object.keys(z.value).length){D();const v=Ot(N,L.value);let V=z.value[v],H=null;V&&(H={expanded:V.expanded,level:V.level,display:!0},typeof V.lazy=="boolean"&&(typeof V.loaded=="boolean"&&V.loaded&&(H.noLazyChildren=!(V.children&&V.children.length)),H.loading=V.loading));const x=[k(N,$,H)];if(V){let F=0;const K=(J,U)=>{!(J&&J.length&&U)||J.forEach(W=>{const Q={display:U.display&&U.expanded,level:U.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Y=Ot(W,L.value);if(Y==null)throw new Error("For nested data item, row-key is required.");if(V={...z.value[Y]},V&&(Q.expanded=V.expanded,V.level=V.level||Q.level,V.display=!!(V.expanded&&Q.display),typeof V.lazy=="boolean"&&(typeof V.loaded=="boolean"&&V.loaded&&(Q.noLazyChildren=!(V.children&&V.children.length)),Q.loading=V.loading)),F++,x.push(k(W,$+F,Q)),V){const ee=I.value[Y]||W[A.value];K(ee,V)}})};V.display=!0;const X=I.value[v]||N[A.value];K(X,V)}return x}else return k(N,$,void 0)},tooltipContent:f,tooltipTrigger:u}}var OX={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean},zX=e.defineComponent({name:"ElTableBody",props:OX,setup(t){const n=e.getCurrentInstance(),o=e.inject(to),r=Z("table"),{wrappedRowRender:l,tooltipContent:a,tooltipTrigger:s}=AX(t),{onColumnsChange:i,onScrollableChange:c}=GS(o);return e.watch(t.store.states.hoverRow,(d,f)=>{if(!t.store.states.isComplex.value||!Oe)return;let u=window.requestAnimationFrame;u||(u=p=>window.setTimeout(p,16)),u(()=>{var p;const m=(p=n==null?void 0:n.vnode.el)==null?void 0:p.querySelectorAll(`.${r.e("row")}`),g=m[f],h=m[d];g&&en(g,"hover-row"),h&&Un(h,"hover-row")})}),e.onUnmounted(()=>{var d;(d=er)==null||d()}),e.onUpdated(()=>{var d;(d=er)==null||d()}),{ns:r,onColumnsChange:i,onScrollableChange:c,wrappedRowRender:l,tooltipContent:a,tooltipTrigger:s}},render(){const{wrappedRowRender:t,store:n}=this,o=n.states.data.value||[];return e.h("tbody",{},[o.reduce((r,l)=>r.concat(t(l,r.length)),[])])}});function Yu(t){const n=t.tableLayout==="auto";let o=t.columns||[];n&&o.every(l=>l.width===void 0)&&(o=[]);const r=l=>{const a={key:`${t.tableLayout}_${l.id}`,style:{},name:void 0};return n?a.style={width:`${l.width}px`}:a.name=l.id,a};return e.h("colgroup",{},o.map(l=>e.h("col",r(l))))}Yu.props=["columns","tableLayout"];function DX(){const t=e.inject(to),n=t==null?void 0:t.store,o=e.computed(()=>n.states.fixedLeafColumnsLength.value),r=e.computed(()=>n.states.rightFixedColumns.value.length),l=e.computed(()=>n.states.columns.value.length),a=e.computed(()=>n.states.fixedColumns.value.length),s=e.computed(()=>n.states.rightFixedColumns.value.length);return{leftFixedLeafCount:o,rightFixedLeafCount:r,columnsCount:l,leftFixedCount:a,rightFixedCount:s,columns:n.states.columns}}function LX(t){const{columns:n}=DX(),o=Z("table");return{getCellClasses:(a,s)=>{const i=a[s],c=[o.e("cell"),i.id,i.align,i.labelClassName,...Uu(o.b(),s,i.fixed,t.store)];return i.className&&c.push(i.className),i.children||c.push(o.is("leaf")),c},getCellStyles:(a,s)=>{const i=Gu(s,a.fixed,t.store);return ul(i,"left"),ul(i,"right"),i},columns:n}}var FX=e.defineComponent({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(t){const{getCellClasses:n,getCellStyles:o,columns:r}=LX(t);return{ns:Z("table"),getCellClasses:n,getCellStyles:o,columns:r}},render(){const{columns:t,getCellStyles:n,getCellClasses:o,summaryMethod:r,sumText:l,ns:a}=this,s=this.store.states.data.value;let i=[];return r?i=r({columns:t,data:s}):t.forEach((c,d)=>{if(d===0){i[d]=l;return}const f=s.map(g=>Number(g[c.property])),u=[];let p=!0;f.forEach(g=>{if(!Number.isNaN(+g)){p=!1;const h=`${g}`.split(".")[1];u.push(h?h.length:0)}});const m=Math.max.apply(null,u);p?i[d]="":i[d]=f.reduce((g,h)=>{const b=Number(h);return Number.isNaN(+b)?g:Number.parseFloat((g+h).toFixed(Math.min(m,20)))},0)}),e.h("table",{class:a.e("footer"),cellspacing:"0",cellpadding:"0",border:"0"},[Yu({columns:t}),e.h("tbody",[e.h("tr",{},[...t.map((c,d)=>e.h("td",{key:d,colspan:c.colSpan,rowspan:c.rowSpan,class:o(t,d),style:n(c,d)},[e.h("div",{class:["cell",c.labelClassName]},[i[d]])]))])])])}});function xX(t){return{setCurrentRow:f=>{t.commit("setCurrentRow",f)},getSelectionRows:()=>t.getSelectionRows(),toggleRowSelection:(f,u)=>{t.toggleRowSelection(f,u,!1),t.updateAllSelected()},clearSelection:()=>{t.clearSelection()},clearFilter:f=>{t.clearFilter(f)},toggleAllSelection:()=>{t.commit("toggleAllSelection")},toggleRowExpansion:(f,u)=>{t.toggleRowExpansionAdapter(f,u)},clearSort:()=>{t.clearSort()},sort:(f,u)=>{t.commit("sort",{prop:f,order:u})}}}function HX(t,n,o,r){const l=e.ref(!1),a=e.ref(null),s=e.ref(!1),i=v=>{s.value=v},c=e.ref({width:null,height:null,headerHeight:null}),d=e.ref(!1),f={display:"inline-block",verticalAlign:"middle"},u=e.ref(),p=e.ref(0),m=e.ref(0),g=e.ref(0),h=e.ref(0);e.watchEffect(()=>{n.setHeight(t.height)}),e.watchEffect(()=>{n.setMaxHeight(t.maxHeight)}),e.watch(()=>[t.currentRowKey,o.states.rowKey],([v,V])=>{!e.unref(V)||o.setCurrentRowKey(`${v}`)},{immediate:!0}),e.watch(()=>t.data,v=>{r.store.commit("setData",v)},{immediate:!0,deep:!0}),e.watchEffect(()=>{t.expandRowKeys&&o.setExpandRowKeysAdapter(t.expandRowKeys)});const b=()=>{r.store.commit("setHoverRow",null),r.hoverState&&(r.hoverState=null)},y=(v,V)=>{const{pixelX:H,pixelY:x}=V;Math.abs(H)>=Math.abs(x)&&(r.refs.bodyWrapper.scrollLeft+=V.pixelX/5)},w=e.computed(()=>t.height||t.maxHeight||o.states.fixedColumns.value.length>0||o.states.rightFixedColumns.value.length>0),C=e.computed(()=>({width:n.bodyWidth.value?`${n.bodyWidth.value}px`:""})),k=()=>{w.value&&n.updateElsHeight(),n.updateColumnsWidth(),requestAnimationFrame($)};e.onMounted(async()=>{await e.nextTick(),o.updateColumns(),B(),requestAnimationFrame(k);const v=r.vnode.el,V=r.refs.headerWrapper;t.flexible&&v&&v.parentElement&&(v.parentElement.style.minWidth="0"),c.value={width:u.value=v.offsetWidth,height:v.offsetHeight,headerHeight:t.showHeader&&V?V.offsetHeight:null},o.states.columns.value.forEach(H=>{H.filteredValue&&H.filteredValue.length&&r.store.commit("filterChange",{column:H,values:H.filteredValue,silent:!0})}),r.$ready=!0});const E=(v,V)=>{if(!v)return;const H=Array.from(v.classList).filter(x=>!x.startsWith("is-scrolling-"));H.push(n.scrollX.value?V:"is-scrolling-none"),v.className=H.join(" ")},S=v=>{const{tableWrapper:V}=r.refs;E(V,v)},N=v=>{const{tableWrapper:V}=r.refs;return!!(V&&V.classList.contains(v))},$=function(){if(!r.refs.scrollBarRef)return;if(!n.scrollX.value){const J="is-scrolling-none";N(J)||S(J);return}const v=r.refs.scrollBarRef.wrap$;if(!v)return;const{scrollLeft:V,offsetWidth:H,scrollWidth:x}=v,{headerWrapper:F,footerWrapper:K}=r.refs;F&&(F.scrollLeft=V),K&&(K.scrollLeft=V);const X=x-H-1;V>=X?S("is-scrolling-right"):S(V===0?"is-scrolling-left":"is-scrolling-middle")},B=()=>{!r.refs.scrollBarRef||(r.refs.scrollBarRef.wrap$&&nt(r.refs.scrollBarRef.wrap$,"scroll",$,{passive:!0}),t.fit?Wt(r.vnode.el,P):nt(window,"resize",P))},P=()=>{var v,V,H;const x=r.vnode.el;if(!r.$ready||!x)return;let F=!1;const{width:K,height:X,headerHeight:J}=c.value,U=u.value=x.offsetWidth;K!==U&&(F=!0);const W=x.offsetHeight;(t.height||w.value)&&X!==W&&(F=!0);const Q=t.tableLayout==="fixed"?r.refs.headerWrapper:(v=r.refs.tableHeaderRef)==null?void 0:v.$el;t.showHeader&&(Q==null?void 0:Q.offsetHeight)!==J&&(F=!0),p.value=((V=r.refs.tableWrapper)==null?void 0:V.scrollHeight)||0,g.value=(Q==null?void 0:Q.scrollHeight)||0,h.value=((H=r.refs.footerWrapper)==null?void 0:H.scrollHeight)||0,m.value=p.value-g.value-h.value,F&&(c.value={width:U,height:W,headerHeight:t.showHeader&&(Q==null?void 0:Q.offsetHeight)||0},k())},D=yt(),z=e.computed(()=>{const{bodyWidth:v,scrollY:V,gutterWidth:H}=n;return v.value?`${v.value-(V.value?H:0)}px`:""}),I=e.computed(()=>t.maxHeight?"fixed":t.tableLayout),A=e.computed(()=>{if(t.data&&t.data.length)return null;let v="100%";m.value&&(v=`${m.value}px`);const V=u.value;return{width:V?`${V}px`:"",height:v}}),L=e.computed(()=>t.height?{height:Number.isNaN(Number(t.height))?t.height:`${t.height}px`}:t.maxHeight?{maxHeight:Number.isNaN(Number(t.maxHeight))?t.maxHeight:`${t.maxHeight}px`}:{}),R=e.computed(()=>{var v,V;if(t.height)return{height:"100%"};if(t.maxHeight){if(Number.isNaN(Number(t.maxHeight)))return{maxHeight:`calc(${t.maxHeight} - ${g.value+h.value}px)`};{const H=((v=r.refs.headerWrapper)==null?void 0:v.scrollHeight)||0,x=((V=r.refs.footerWrapper)==null?void 0:V.scrollHeight)||0,F=t.maxHeight;if(p.value>=Number(F))return{maxHeight:`${p.value-H-x}px`}}}return{}});return{isHidden:l,renderExpanded:a,setDragVisible:i,isGroup:d,handleMouseLeave:b,handleHeaderFooterMousewheel:y,tableSize:D,emptyBlockStyle:A,handleFixedMousewheel:(v,V)=>{const H=r.refs.bodyWrapper;if(Math.abs(V.spinY)>0){const x=H.scrollTop;V.pixelY<0&&x!==0&&v.preventDefault(),V.pixelY>0&&H.scrollHeight-H.clientHeight>x&&v.preventDefault(),H.scrollTop+=Math.ceil(V.pixelY/5)}else H.scrollLeft+=Math.ceil(V.pixelX/5)},resizeProxyVisible:s,bodyWidth:z,resizeState:c,doLayout:k,tableBodyStyles:C,tableLayout:I,scrollbarViewStyle:f,tableInnerStyle:L,scrollbarStyle:R}}var KX={data:{type:Array,default:()=>[]},size:String,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1},flexible:Boolean};const WX=()=>{const t=e.ref(),n=(a,s)=>{const i=t.value;i&&i.scrollTo(a,s)},o=(a,s)=>{const i=t.value;i&&Ne(s)&&["Top","Left"].includes(a)&&i[`setScroll${a}`](s)};return{scrollBarRef:t,scrollTo:n,setScrollTop:a=>o("Top",a),setScrollLeft:a=>o("Left",a)}};let jX=1;const UX=e.defineComponent({name:"ElTable",directives:{Mousewheel:PC},components:{TableHeader:RX,TableBody:zX,TableFooter:FX,ElScrollbar:Zn,hColgroup:Yu},props:KX,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(t){const{t:n}=We(),o=Z("table"),r=e.getCurrentInstance();e.provide(to,r);const l=yX(r,t);r.store=l;const a=new wX({store:r.store,table:r,fit:t.fit,showHeader:t.showHeader});r.layout=a;const s=e.computed(()=>(l.states.data.value||[]).length===0),{setCurrentRow:i,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:u,toggleAllSelection:p,toggleRowExpansion:m,clearSort:g,sort:h}=xX(l),{isHidden:b,renderExpanded:y,setDragVisible:w,isGroup:C,handleMouseLeave:k,handleHeaderFooterMousewheel:E,tableSize:S,emptyBlockStyle:N,handleFixedMousewheel:$,resizeProxyVisible:B,bodyWidth:P,resizeState:D,doLayout:z,tableBodyStyles:I,tableLayout:A,scrollbarViewStyle:L,tableInnerStyle:R,scrollbarStyle:T}=HX(t,a,l,r),{scrollBarRef:v,scrollTo:V,setScrollLeft:H,setScrollTop:x}=WX(),F=Dt(z,50),K=`el-table_${jX++}`;r.tableId=K,r.state={isGroup:C,resizeState:D,doLayout:z,debouncedUpdateLayout:F};const X=e.computed(()=>t.sumText||n("el.table.sumText")),J=e.computed(()=>t.emptyText||n("el.table.emptyText"));return{ns:o,layout:a,store:l,handleHeaderFooterMousewheel:E,handleMouseLeave:k,tableId:K,tableSize:S,isHidden:b,isEmpty:s,renderExpanded:y,resizeProxyVisible:B,resizeState:D,isGroup:C,bodyWidth:P,tableBodyStyles:I,emptyBlockStyle:N,debouncedUpdateLayout:F,handleFixedMousewheel:$,setCurrentRow:i,getSelectionRows:c,toggleRowSelection:d,clearSelection:f,clearFilter:u,toggleAllSelection:p,toggleRowExpansion:m,clearSort:g,doLayout:z,sort:h,t:n,setDragVisible:w,context:r,computedSumText:X,computedEmptyText:J,tableLayout:A,scrollbarViewStyle:L,tableInnerStyle:R,scrollbarStyle:T,scrollBarRef:v,scrollTo:V,setScrollLeft:H,setScrollTop:x}}}),GX=["data-prefix"],qX={ref:"hiddenColumns",class:"hidden-columns"};function YX(t,n,o,r,l,a){const s=e.resolveComponent("hColgroup"),i=e.resolveComponent("table-header"),c=e.resolveComponent("table-body"),d=e.resolveComponent("el-scrollbar"),f=e.resolveComponent("table-footer"),u=e.resolveDirective("mousewheel");return e.openBlock(),e.createElementBlock("div",{ref:"tableWrapper",class:e.normalizeClass([{[t.ns.m("fit")]:t.fit,[t.ns.m("striped")]:t.stripe,[t.ns.m("border")]:t.border||t.isGroup,[t.ns.m("hidden")]:t.isHidden,[t.ns.m("group")]:t.isGroup,[t.ns.m("fluid-height")]:t.maxHeight,[t.ns.m("scrollable-x")]:t.layout.scrollX.value,[t.ns.m("scrollable-y")]:t.layout.scrollY.value,[t.ns.m("enable-row-hover")]:!t.store.states.isComplex.value,[t.ns.m("enable-row-transition")]:(t.store.states.data.value||[]).length!==0&&(t.store.states.data.value||[]).length<100,"has-footer":t.showSummary},t.ns.m(t.tableSize),t.className,t.ns.b(),t.ns.m(`layout-${t.tableLayout}`)]),style:e.normalizeStyle(t.style),"data-prefix":t.ns.namespace.value,onMouseleave:n[0]||(n[0]=p=>t.handleMouseLeave())},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("inner-wrapper")),style:e.normalizeStyle(t.tableInnerStyle)},[e.createElementVNode("div",qX,[e.renderSlot(t.$slots,"default")],512),t.showHeader&&t.tableLayout==="fixed"?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:0,ref:"headerWrapper",class:e.normalizeClass(t.ns.e("header-wrapper"))},[e.createElementVNode("table",{ref:"tableHeader",class:e.normalizeClass(t.ns.e("header")),style:e.normalizeStyle(t.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[e.createVNode(s,{columns:t.store.states.columns.value,"table-layout":t.tableLayout},null,8,["columns","table-layout"]),e.createVNode(i,{ref:"tableHeaderRef",border:t.border,"default-sort":t.defaultSort,store:t.store,onSetDragVisible:t.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[u,t.handleHeaderFooterMousewheel]]):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{ref:"bodyWrapper",class:e.normalizeClass(t.ns.e("body-wrapper"))},[e.createVNode(d,{ref:"scrollBarRef","view-style":t.scrollbarViewStyle,"wrap-style":t.scrollbarStyle,always:t.scrollbarAlwaysOn},{default:e.withCtx(()=>[e.createElementVNode("table",{ref:"tableBody",class:e.normalizeClass(t.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:e.normalizeStyle({width:t.bodyWidth,tableLayout:t.tableLayout})},[e.createVNode(s,{columns:t.store.states.columns.value,"table-layout":t.tableLayout},null,8,["columns","table-layout"]),t.showHeader&&t.tableLayout==="auto"?(e.openBlock(),e.createBlock(i,{key:0,ref:"tableHeaderRef",border:t.border,"default-sort":t.defaultSort,store:t.store,onSetDragVisible:t.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])):e.createCommentVNode("v-if",!0),e.createVNode(c,{context:t.context,highlight:t.highlightCurrentRow,"row-class-name":t.rowClassName,"tooltip-effect":t.tooltipEffect,"row-style":t.rowStyle,store:t.store,stripe:t.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","row-style","store","stripe"])],6),t.isEmpty?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"emptyBlock",style:e.normalizeStyle(t.emptyBlockStyle),class:e.normalizeClass(t.ns.e("empty-block"))},[e.createElementVNode("span",{class:e.normalizeClass(t.ns.e("empty-text"))},[e.renderSlot(t.$slots,"empty",{},()=>[e.createTextVNode(e.toDisplayString(t.computedEmptyText),1)])],2)],6)):e.createCommentVNode("v-if",!0),t.$slots.append?(e.openBlock(),e.createElementBlock("div",{key:1,ref:"appendWrapper",class:e.normalizeClass(t.ns.e("append-wrapper"))},[e.renderSlot(t.$slots,"append")],2)):e.createCommentVNode("v-if",!0)]),_:3},8,["view-style","wrap-style","always"])],2),t.showSummary?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:1,ref:"footerWrapper",class:e.normalizeClass(t.ns.e("footer-wrapper"))},[e.createVNode(f,{border:t.border,"default-sort":t.defaultSort,store:t.store,style:e.normalizeStyle(t.tableBodyStyles),"sum-text":t.computedSumText,"summary-method":t.summaryMethod},null,8,["border","default-sort","store","style","sum-text","summary-method"])],2)),[[e.vShow,!t.isEmpty],[u,t.handleHeaderFooterMousewheel]]):e.createCommentVNode("v-if",!0),t.border||t.isGroup?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(t.ns.e("border-left-patch"))},null,2)):e.createCommentVNode("v-if",!0)],6),e.withDirectives(e.createElementVNode("div",{ref:"resizeProxy",class:e.normalizeClass(t.ns.e("column-resize-proxy"))},null,2),[[e.vShow,t.resizeProxyVisible]])],46,GX)}var XX=re(UX,[["render",YX],["__file","table.vue"]]);const ZX={selection:"table-column--selection",expand:"table__expand-column"},JX={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},QX=t=>ZX[t]||"",eZ={selection:{renderHeader({store:t}){function n(){return t.states.data.value&&t.states.data.value.length===0}return e.h(mn,{disabled:n(),size:t.states.tableSize.value,indeterminate:t.states.selection.value.length>0&&!t.states.isAllSelected.value,"onUpdate:modelValue":t.toggleAllSelection,modelValue:t.states.isAllSelected.value})},renderCell({row:t,column:n,store:o,$index:r}){return e.h(mn,{disabled:n.selectable?!n.selectable.call(null,t,r):!1,size:o.states.tableSize.value,onChange:()=>{o.commit("rowSelectedChanged",t)},onClick:l=>l.stopPropagation(),modelValue:o.isSelected(t)})},sortable:!1,resizable:!1},index:{renderHeader({column:t}){return t.label||"#"},renderCell({column:t,$index:n}){let o=n+1;const r=t.index;return typeof r=="number"?o=n+r:typeof r=="function"&&(o=r(n)),e.h("div",{},[o])},sortable:!1},expand:{renderHeader({column:t}){return t.label||""},renderCell({row:t,store:n,expanded:o}){const{ns:r}=n,l=[r.e("expand-icon")];o&&l.push(r.em("expand-icon","expanded"));const a=function(s){s.stopPropagation(),n.toggleRowExpansion(t)};return e.h("div",{class:l,onClick:a},{default:()=>[e.h(de,null,{default:()=>[e.h(jt)]})]})},sortable:!1,resizable:!1}};function tZ({row:t,column:n,$index:o}){var r;const l=n.property,a=l&&us(t,l).value;return n&&n.formatter?n.formatter(t,n,a,o):((r=a==null?void 0:a.toString)==null?void 0:r.call(a))||""}function nZ({row:t,treeNode:n,store:o},r=!1){const{ns:l}=o;if(!n)return r?[e.h("span",{class:l.e("placeholder")})]:null;const a=[],s=function(i){i.stopPropagation(),o.loadOrToggle(t)};if(n.indent&&a.push(e.h("span",{class:l.e("indent"),style:{"padding-left":`${n.indent}px`}})),typeof n.expanded=="boolean"&&!n.noLazyChildren){const i=[l.e("expand-icon"),n.expanded?l.em("expand-icon","expanded"):""];let c=jt;n.loading&&(c=xo),a.push(e.h("div",{class:i,onClick:s},{default:()=>[e.h(de,{class:{[l.is("loading")]:n.loading}},{default:()=>[e.h(c)]})]}))}else a.push(e.h("span",{class:l.e("placeholder")}));return a}function YS(t,n){return t.reduce((o,r)=>(o[r]=r,o),n)}function oZ(t,n){const o=e.getCurrentInstance();return{registerComplexWatchers:()=>{const a=["fixed"],s={realWidth:"width",realMinWidth:"minWidth"},i=YS(a,s);Object.keys(i).forEach(c=>{const d=s[c];Mt(n,d)&&e.watch(()=>n[d],f=>{let u=f;d==="width"&&c==="realWidth"&&(u=ju(f)),d==="minWidth"&&c==="realMinWidth"&&(u=xS(f)),o.columnConfig.value[d]=u,o.columnConfig.value[c]=u;const p=d==="fixed";t.value.store.scheduleLayout(p)})})},registerNormalWatchers:()=>{const a=["label","filters","filterMultiple","sortable","index","formatter","className","labelClassName","showOverflowTooltip"],s={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},i=YS(a,s);Object.keys(i).forEach(c=>{const d=s[c];Mt(n,d)&&e.watch(()=>n[d],f=>{o.columnConfig.value[c]=f})})}}}function rZ(t,n,o){const r=e.getCurrentInstance(),l=e.ref(""),a=e.ref(!1),s=e.ref(),i=e.ref(),c=Z("table");e.watchEffect(()=>{s.value=t.align?`is-${t.align}`:null,s.value}),e.watchEffect(()=>{i.value=t.headerAlign?`is-${t.headerAlign}`:s.value,i.value});const d=e.computed(()=>{let C=r.vnode.vParent||r.parent;for(;C&&!C.tableId&&!C.columnId;)C=C.vnode.vParent||C.parent;return C}),f=e.computed(()=>{const{store:C}=r.parent;if(!C)return!1;const{treeData:k}=C.states,E=k.value;return E&&Object.keys(E).length>0}),u=e.ref(ju(t.width)),p=e.ref(xS(t.minWidth)),m=C=>(u.value&&(C.width=u.value),p.value&&(C.minWidth=p.value),C.minWidth||(C.minWidth=80),C.realWidth=Number(C.width===void 0?C.minWidth:C.width),C),g=C=>{const k=C.type,E=eZ[k]||{};Object.keys(E).forEach(N=>{const $=E[N];N!=="className"&&$!==void 0&&(C[N]=$)});const S=QX(k);if(S){const N=`${e.unref(c.namespace)}-${S}`;C.className=C.className?`${C.className} ${N}`:N}return C},h=C=>{Array.isArray(C)?C.forEach(E=>k(E)):k(C);function k(E){var S;((S=E==null?void 0:E.type)==null?void 0:S.name)==="ElTableColumn"&&(E.vParent=r)}};return{columnId:l,realAlign:s,isSubColumn:a,realHeaderAlign:i,columnOrTableParent:d,setColumnWidth:m,setColumnForcedProps:g,setColumnRenders:C=>{t.renderHeader||C.type!=="selection"&&(C.renderHeader=S=>{r.columnConfig.value.label;const N=n.header;return N?N(S):C.label});let k=C.renderCell;const E=f.value;return C.type==="expand"?(C.renderCell=S=>e.h("div",{class:"cell"},[k(S)]),o.value.renderExpanded=S=>n.default?n.default(S):n.default):(k=k||tZ,C.renderCell=S=>{let N=null;if(n.default){const D=n.default(S);N=D.some(z=>z.type!==e.Comment)?D:k(S)}else N=k(S);const $=E&&S.cellIndex===0,B=nZ(S,$),P={class:"cell",style:{}};return C.showOverflowTooltip&&(P.class=`${P.class} ${e.unref(c.namespace)}-tooltip`,P.style={width:`${(S.column.realWidth||Number(S.column.width))-1}px`}),h(N),e.h("div",P,[B,N])}),C},getPropsData:(...C)=>C.reduce((k,E)=>(Array.isArray(E)&&E.forEach(S=>{k[S]=t[S]}),k),{}),getColumnElIndex:(C,k)=>Array.prototype.indexOf.call(C,k)}}var lZ={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showTooltipWhenOverflow:Boolean,showOverflowTooltip:Boolean,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:t=>t.every(n=>["ascending","descending",null].includes(n))}};let aZ=1;var XS=e.defineComponent({name:"ElTableColumn",components:{ElCheckbox:mn},props:lZ,setup(t,{slots:n}){const o=e.getCurrentInstance(),r=e.ref({}),l=e.computed(()=>{let w=o.parent;for(;w&&!w.tableId;)w=w.parent;return w}),{registerNormalWatchers:a,registerComplexWatchers:s}=oZ(l,t),{columnId:i,isSubColumn:c,realHeaderAlign:d,columnOrTableParent:f,setColumnWidth:u,setColumnForcedProps:p,setColumnRenders:m,getPropsData:g,getColumnElIndex:h,realAlign:b}=rZ(t,n,l),y=f.value;i.value=`${y.tableId||y.columnId}_column_${aZ++}`,e.onBeforeMount(()=>{c.value=l.value!==y;const w=t.type||"default",C=t.sortable===""?!0:t.sortable,k={...JX[w],id:i.value,type:w,property:t.prop||t.property,align:b,headerAlign:d,showOverflowTooltip:t.showOverflowTooltip||t.showTooltipWhenOverflow,filterable:t.filters||t.filterMethod,filteredValue:[],filterPlacement:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:C,index:t.index,rawColumnKey:o.vnode.key};let B=g(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement"]);B=aX(k,B),B=iX(m,u,p)(B),r.value=B,a(),s()}),e.onMounted(()=>{var w;const C=f.value,k=c.value?C.vnode.el.children:(w=C.refs.hiddenColumns)==null?void 0:w.children,E=()=>h(k||[],o.vnode.el);r.value.getColumnIndex=E,E()>-1&&l.value.store.commit("insertColumn",r.value,c.value?C.columnConfig.value:null)}),e.onBeforeUnmount(()=>{l.value.store.commit("removeColumn",r.value,c.value?y.columnConfig.value:null)}),o.columnId=i.value,o.columnConfig=r},render(){var t,n,o;try{const r=(n=(t=this.$slots).default)==null?void 0:n.call(t,{row:{},column:{},$index:-1}),l=[];if(Array.isArray(r))for(const s of r)((o=s.type)==null?void 0:o.name)==="ElTableColumn"||s.shapeFlag&2?l.push(s):s.type===e.Fragment&&Array.isArray(s.children)&&s.children.forEach(i=>{(i==null?void 0:i.patchFlag)!==1024&&!Fe(i==null?void 0:i.children)&&l.push(i)});return e.h("div",l)}catch(r){return e.h("div",[])}}});const ZS=Te(XX,{TableColumn:XS}),JS=ut(XS);var pl=(t=>(t.ASC="asc",t.DESC="desc",t))(pl||{}),ml=(t=>(t.CENTER="center",t.RIGHT="right",t))(ml||{}),Xu=(t=>(t.LEFT="left",t.RIGHT="right",t))(Xu||{});const Zu={asc:"desc",desc:"asc"},hl=Symbol("placeholder"),sZ=(t,n,o)=>{var r;const l={flexGrow:0,flexShrink:0,...o?{}:{flexGrow:t.flexGrow||0,flexShrink:t.flexShrink||1}};o||(l.flexShrink=1);const a={...(r=t.style)!=null?r:{},...l,flexBasis:"auto",width:t.width};return n||(t.maxWidth&&(a.maxWidth=t.maxWidth),t.minWidth&&(a.minWidth=t.minWidth)),a};function iZ(t,n,o){const r=e.computed(()=>e.unref(n).filter(h=>!h.hidden)),l=e.computed(()=>e.unref(r).filter(h=>h.fixed==="left"||h.fixed===!0)),a=e.computed(()=>e.unref(r).filter(h=>h.fixed==="right")),s=e.computed(()=>e.unref(r).filter(h=>!h.fixed)),i=e.computed(()=>{const h=[];return e.unref(l).forEach(b=>{h.push({...b,placeholderSign:hl})}),e.unref(s).forEach(b=>{h.push(b)}),e.unref(a).forEach(b=>{h.push({...b,placeholderSign:hl})}),h}),c=e.computed(()=>e.unref(l).length||e.unref(a).length),d=e.computed(()=>e.unref(n).reduce((b,y)=>(b[y.key]=sZ(y,e.unref(o),t.fixed),b),{})),f=e.computed(()=>e.unref(r).reduce((h,b)=>h+b.width,0)),u=h=>e.unref(n).find(b=>b.key===h),p=h=>e.unref(d)[h],m=(h,b)=>{h.width=b};function g(h){var b;const{key:y}=h.currentTarget.dataset;if(!y)return;const{sortState:w,sortBy:C}=t;let k=pl.ASC;it(w)?k=Zu[w[y]]:k=Zu[C.order],(b=t.onColumnSort)==null||b.call(t,{column:u(y),key:y,order:k})}return{columns:n,columnsStyles:d,columnsTotalWidth:f,fixedColumnsOnLeft:l,fixedColumnsOnRight:a,hasFixedColumns:c,mainColumns:i,normalColumns:s,visibleColumns:r,getColumn:u,getColumnStyle:p,updateColumnWidth:m,onColumnSorted:g}}const cZ=(t,{mainTableRef:n,leftTableRef:o,rightTableRef:r,onMaybeEndReached:l})=>{const a=e.ref({scrollLeft:0,scrollTop:0});function s(m){var g,h,b;const{scrollTop:y}=m;(g=n.value)==null||g.scrollTo(m),(h=o.value)==null||h.scrollToTop(y),(b=r.value)==null||b.scrollToTop(y)}function i(m){a.value=m,s(m)}function c(m){a.value.scrollTop=m,s(e.unref(a))}function d(m){var g,h;a.value.scrollLeft=m,(h=(g=n.value)==null?void 0:g.scrollTo)==null||h.call(g,e.unref(a))}function f(m){var g;i(m),(g=t.onScroll)==null||g.call(t,m)}function u({scrollTop:m}){const{scrollTop:g}=e.unref(a);m!==g&&c(m)}function p(m,g="auto"){var h;(h=n.value)==null||h.scrollToRow(m,g)}return e.watch(()=>e.unref(a).scrollTop,(m,g)=>{m>g&&l()}),{scrollPos:a,scrollTo:i,scrollToLeft:d,scrollToTop:c,scrollToRow:p,onScroll:f,onVerticalScroll:u}},dZ=(t,{mainTableRef:n,leftTableRef:o,rightTableRef:r,onMaybeEndReached:l})=>{const a=e.getCurrentInstance(),{emit:s}=a,i=e.shallowRef(!1),c=e.shallowRef(null),d=e.ref(t.defaultExpandedRowKeys||[]),f=e.ref(-1),u=e.shallowRef(null),p=e.ref({}),m=e.ref({}),g=e.shallowRef({}),h=e.shallowRef({}),b=e.shallowRef({}),y=e.computed(()=>Ne(t.estimatedRowHeight));function w(B){var P;(P=t.onRowsRendered)==null||P.call(t,B),B.rowCacheEnd>e.unref(f)&&(f.value=B.rowCacheEnd)}function C({hovered:B,rowKey:P}){c.value=B?P:null}function k({expanded:B,rowData:P,rowIndex:D,rowKey:z}){var I,A;const L=[...e.unref(d)],R=L.indexOf(z);B?R===-1&&L.push(z):R>-1&&L.splice(R,1),d.value=L,s("update:expandedRowKeys",L),(I=t.onRowExpand)==null||I.call(t,{expanded:B,rowData:P,rowIndex:D,rowKey:z}),(A=t.onExpandedRowsChange)==null||A.call(t,L)}const E=Dt(()=>{var B,P,D,z;i.value=!0,p.value={...e.unref(p),...e.unref(m)},S(e.unref(u),!1),m.value={},u.value=null,(B=n.value)==null||B.forceUpdate(),(P=o.value)==null||P.forceUpdate(),(D=r.value)==null||D.forceUpdate(),(z=a.proxy)==null||z.$forceUpdate(),i.value=!1},0);function S(B,P=!1){!e.unref(y)||[n,o,r].forEach(D=>{const z=e.unref(D);z&&z.resetAfterRowIndex(B,P)})}function N(B,P,D){const z=e.unref(u);(z===null||z>D)&&(u.value=D),m.value[B]=P}function $({rowKey:B,height:P,rowIndex:D},z){z?z===Xu.RIGHT?b.value[B]=P:g.value[B]=P:h.value[B]=P;const I=Math.max(...[g,b,h].map(A=>A.value[B]||0));e.unref(p)[B]!==I&&(N(B,I,D),E())}return e.watch(f,()=>l()),{hoveringRowKey:c,expandedRowKeys:d,lastRenderedRowIndex:f,isDynamic:y,isResetting:i,rowHeights:p,resetAfterIndex:S,onRowExpanded:k,onRowHovered:C,onRowsRendered:w,onRowHeightChange:$}},fZ=(t,{expandedRowKeys:n,lastRenderedRowIndex:o,resetAfterIndex:r})=>{const l=e.ref({}),a=e.computed(()=>{const i={},{data:c,rowKey:d}=t,f=e.unref(n);if(!f||!f.length)return c;const u=[],p=new Set;f.forEach(g=>p.add(g));let m=c.slice();for(m.forEach(g=>i[g[d]]=0);m.length>0;){const g=m.shift();u.push(g),p.has(g[d])&&Array.isArray(g.children)&&g.children.length>0&&(m=[...g.children,...m],g.children.forEach(h=>i[h[d]]=i[g[d]]+1))}return l.value=i,u}),s=e.computed(()=>{const{data:i,expandColumnKey:c}=t;return c?e.unref(a):i});return e.watch(s,(i,c)=>{i!==c&&(o.value=-1,r(0,!0))}),{data:s,depthMap:l}},uZ=(t,n)=>t+n,ki=t=>Ae(t)?t.reduce(uZ,0):t,Vr=(t,n,o={})=>ot(t)?t(n):t!=null?t:o,tr=t=>(["width","maxWidth","minWidth","height"].forEach(n=>{t[n]=Nt(t[n])}),t),QS=t=>e.isVNode(t)?n=>e.h(t,n):t,pZ=(t,{columnsTotalWidth:n,data:o,fixedColumnsOnLeft:r,fixedColumnsOnRight:l})=>{const a=e.computed(()=>{const{fixed:C,width:k,vScrollbarSize:E}=t,S=k-E;return C?Math.max(Math.round(e.unref(n)),S):S}),s=e.computed(()=>e.unref(a)+(t.fixed?t.vScrollbarSize:0)),i=e.computed(()=>{const{height:C=0,maxHeight:k=0,footerHeight:E,hScrollbarSize:S}=t;if(k>0){const N=e.unref(g),$=e.unref(c),P=e.unref(m)+N+$+S;return Math.min(P,k-E)}return C-E}),c=e.computed(()=>{const{rowHeight:C,estimatedRowHeight:k}=t,E=e.unref(o);return Ne(k)?E.length*k:E.length*C}),d=e.computed(()=>{const{maxHeight:C}=t,k=e.unref(i);if(Ne(C)&&C>0)return k;const E=e.unref(c)+e.unref(m)+e.unref(g);return Math.min(k,E)}),f=C=>C.width,u=e.computed(()=>ki(e.unref(r).map(f))),p=e.computed(()=>ki(e.unref(l).map(f))),m=e.computed(()=>ki(t.headerHeight)),g=e.computed(()=>{var C;return(((C=t.fixedData)==null?void 0:C.length)||0)*t.rowHeight}),h=e.computed(()=>e.unref(i)-e.unref(m)-e.unref(g)),b=e.computed(()=>{const{style:C={},height:k,width:E}=t;return tr({...C,height:k,width:E})}),y=e.computed(()=>tr({height:t.footerHeight})),w=e.computed(()=>({top:Nt(e.unref(m)),bottom:Nt(t.footerHeight),width:Nt(t.width)}));return{bodyWidth:a,fixedTableHeight:d,mainTableHeight:i,leftTableWidth:u,rightTableWidth:p,headerWidth:s,rowsHeight:c,windowHeight:h,footerHeight:y,emptyStyle:w,rootStyle:b}},mZ=t=>{const n=e.ref(),o=e.ref(0),r=e.ref(0);let l;return e.onMounted(()=>{l=Wt(n,([a])=>{const{width:s,height:i}=a.contentRect,{paddingLeft:c,paddingRight:d,paddingTop:f,paddingBottom:u}=getComputedStyle(a.target),p=Number.parseInt(c)||0,m=Number.parseInt(d)||0,g=Number.parseInt(f)||0,h=Number.parseInt(u)||0;o.value=s-p-m,r.value=i-g-h}).stop}),e.onBeforeUnmount(()=>{l==null||l()}),e.watch([o,r],([a,s])=>{var i;(i=t.onResize)==null||i.call(t,{width:a,height:s})}),{sizer:n,width:o,height:r}};function hZ(t){const n=e.ref(),o=e.ref(),r=e.ref(),{columns:l,columnsStyles:a,columnsTotalWidth:s,fixedColumnsOnLeft:i,fixedColumnsOnRight:c,hasFixedColumns:d,mainColumns:f,onColumnSorted:u}=iZ(t,e.toRef(t,"columns"),e.toRef(t,"fixed")),{scrollTo:p,scrollToLeft:m,scrollToTop:g,scrollToRow:h,onScroll:b,onVerticalScroll:y,scrollPos:w}=cZ(t,{mainTableRef:n,leftTableRef:o,rightTableRef:r,onMaybeEndReached:pe}),{expandedRowKeys:C,hoveringRowKey:k,lastRenderedRowIndex:E,isDynamic:S,isResetting:N,rowHeights:$,resetAfterIndex:B,onRowExpanded:P,onRowHeightChange:D,onRowHovered:z,onRowsRendered:I}=dZ(t,{mainTableRef:n,leftTableRef:o,rightTableRef:r,onMaybeEndReached:pe}),{data:A,depthMap:L}=fZ(t,{expandedRowKeys:C,lastRenderedRowIndex:E,resetAfterIndex:B}),{bodyWidth:R,fixedTableHeight:T,mainTableHeight:v,leftTableWidth:V,rightTableWidth:H,headerWidth:x,rowsHeight:F,windowHeight:K,footerHeight:X,emptyStyle:J,rootStyle:U}=pZ(t,{columnsTotalWidth:s,data:A,fixedColumnsOnLeft:i,fixedColumnsOnRight:c}),W=e.shallowRef(!1),Q=e.ref(),Y=e.computed(()=>{const he=e.unref(A).length===0;return Ae(t.fixedData)?t.fixedData.length===0&&he:he});function ee(he){const{estimatedRowHeight:we,rowHeight:Me,rowKey:be}=t;return we?e.unref($)[e.unref(A)[he][be]]||we:Me}function pe(){const{onEndReached:he}=t;if(!he)return;const{scrollTop:we}=e.unref(w),Me=e.unref(F),be=e.unref(K),Ke=Me-(we+be)+t.hScrollbarSize;e.unref(E)>=0&&Me!==e.unref(F)&&he(Ke)}return e.watch(()=>t.expandedRowKeys,he=>C.value=he,{deep:!0}),{columns:l,containerRef:Q,mainTableRef:n,leftTableRef:o,rightTableRef:r,isDynamic:S,isResetting:N,isScrolling:W,hoveringRowKey:k,hasFixedColumns:d,columnsStyles:a,columnsTotalWidth:s,data:A,expandedRowKeys:C,depthMap:L,fixedColumnsOnLeft:i,fixedColumnsOnRight:c,mainColumns:f,bodyWidth:R,emptyStyle:J,rootStyle:U,headerWidth:x,footerHeight:X,mainTableHeight:v,fixedTableHeight:T,leftTableWidth:V,rightTableWidth:H,showEmpty:Y,getRowHeight:ee,onColumnSorted:u,onRowHovered:z,onRowExpanded:P,onRowsRendered:I,onRowHeightChange:D,scrollTo:p,scrollToLeft:m,scrollToTop:g,scrollToRow:h,onScroll:b,onVerticalScroll:y}}const Ju=Symbol("tableV2"),eE=String,$a={type:j(Array),required:!0},Qu={type:j(Array)},tE={...Qu,required:!0},gZ=String,nE={type:j(Array),default:()=>st([])},Mr={type:Number,required:!0},oE={type:j([String,Number,Symbol]),default:"id"},rE={type:j(Object)},nr=se({class:String,columns:$a,columnsStyles:{type:j(Object),required:!0},depth:Number,expandColumnKey:gZ,estimatedRowHeight:{...Qo.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:j(Function)},onRowHover:{type:j(Function)},onRowHeightChange:{type:j(Function)},rowData:{type:j(Object),required:!0},rowEventHandlers:{type:j(Object)},rowIndex:{type:Number,required:!0},rowKey:oE,style:{type:j(Object)}}),ep={type:Number,required:!0},tp=se({class:String,columns:$a,fixedHeaderData:{type:j(Array)},headerData:{type:j(Array),required:!0},headerHeight:{type:j([Number,Array]),default:50},rowWidth:ep,rowHeight:{type:Number,default:50},height:ep,width:ep}),Si=se({columns:$a,data:tE,fixedData:Qu,estimatedRowHeight:nr.estimatedRowHeight,width:Mr,height:Mr,headerWidth:Mr,headerHeight:tp.headerHeight,bodyWidth:Mr,rowHeight:Mr,cache:Ou.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:Qo.scrollbarAlwaysOn,scrollbarStartGap:Qo.scrollbarStartGap,scrollbarEndGap:Qo.scrollbarEndGap,class:eE,style:rE,containerStyle:rE,getRowHeight:{type:j(Function),required:!0},rowKey:nr.rowKey,onRowsRendered:{type:j(Function)},onScroll:{type:j(Function)}}),lE=se({cache:Si.cache,estimatedRowHeight:nr.estimatedRowHeight,rowKey:oE,headerClass:{type:j([String,Function])},headerProps:{type:j([Object,Function])},headerCellProps:{type:j([Object,Function])},headerHeight:tp.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:j([String,Function])},rowProps:{type:j([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:j([Object,Function])},columns:$a,data:tE,dataGetter:{type:j(Function)},fixedData:Qu,expandColumnKey:nr.expandColumnKey,expandedRowKeys:nE,defaultExpandedRowKeys:nE,class:eE,fixed:Boolean,style:{type:j(Object)},width:Mr,height:Mr,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:Qo.hScrollbarSize,vScrollbarSize:Qo.vScrollbarSize,scrollbarAlwaysOn:Du.alwaysOn,sortBy:{type:j(Object),default:()=>({})},sortState:{type:j(Object),default:void 0},onColumnSort:{type:j(Function)},onExpandedRowsChange:{type:j(Function)},onEndReached:{type:j(Function)},onRowExpand:nr.onRowExpand,onScroll:Si.onScroll,onRowsRendered:Si.onRowsRendered,rowEventHandlers:nr.rowEventHandlers}),np=(t,{slots:n})=>{var o;const{cellData:r,style:l}=t,a=((o=r==null?void 0:r.toString)==null?void 0:o.call(r))||"";return e.createVNode("div",{class:t.class,title:a,style:l},[n.default?n.default(t):a])};np.displayName="ElTableV2Cell",np.inheritAttrs=!1;var yZ=np;const op=(t,{slots:n})=>{var o,r;return n.default?n.default(t):e.createVNode("div",{class:t.class,title:(o=t.column)==null?void 0:o.title},[(r=t.column)==null?void 0:r.title])};op.displayName="ElTableV2HeaderCell",op.inheritAttrs=!1;var bZ=op;const CZ=se({class:String,columns:$a,columnsStyles:{type:j(Object),required:!0},headerIndex:Number,style:{type:j(Object)}});var wZ=e.defineComponent({name:"ElTableV2HeaderRow",props:CZ,setup(t,{slots:n}){return()=>{const{columns:o,columnsStyles:r,headerIndex:l,style:a}=t;let s=o.map((i,c)=>n.cell({columns:o,column:i,columnIndex:c,headerIndex:l,style:r[i.key]}));return n.header&&(s=n.header({cells:s.map(i=>Ae(i)&&i.length===1?i[0]:i),columns:o,headerIndex:l})),e.createVNode("div",{class:t.class,style:a},[s])}}});const kZ="ElTableV2Header";var SZ=e.defineComponent({name:kZ,props:tp,setup(t,{slots:n,expose:o}){const r=Z("table-v2"),l=e.ref(),a=e.computed(()=>tr({width:t.width,height:t.height})),s=e.computed(()=>tr({width:t.rowWidth,height:t.height})),i=e.computed(()=>cr(e.unref(t.headerHeight))),c=u=>{const p=e.unref(l);e.nextTick(()=>{p==null||p.scroll({left:u})})},d=()=>{const u=r.e("fixed-header-row"),{columns:p,fixedHeaderData:m,rowHeight:g}=t;return m==null?void 0:m.map((h,b)=>{var y;const w=tr({height:g,width:"100%"});return(y=n.fixed)==null?void 0:y.call(n,{class:u,columns:p,rowData:h,rowIndex:-(b+1),style:w})})},f=()=>{const u=r.e("dynamic-header-row"),{columns:p}=t;return e.unref(i).map((m,g)=>{var h;const b=tr({width:"100%",height:m});return(h=n.dynamic)==null?void 0:h.call(n,{class:u,columns:p,headerIndex:g,style:b})})};return o({scrollToLeft:c}),()=>{if(!(t.height<=0))return e.createVNode("div",{ref:l,class:t.class,style:e.unref(a)},[e.createVNode("div",{style:e.unref(s),class:r.e("header")},[f(),d()])])}}});const EZ=t=>{const{isScrolling:n}=e.inject(Ju),o=e.ref(!1),r=e.ref(),l=e.computed(()=>Ne(t.estimatedRowHeight)&&t.rowIndex>=0),a=(c=!1)=>{const d=e.unref(r);if(!d)return;const{columns:f,onRowHeightChange:u,rowKey:p,rowIndex:m,style:g}=t,{height:h}=d.getBoundingClientRect();o.value=!0,e.nextTick(()=>{if(c||h!==Number.parseInt(g.height)){const b=f[0],y=(b==null?void 0:b.placeholderSign)===hl;u==null||u({rowKey:p,height:h,rowIndex:m},b&&!y&&b.fixed)}})},s=e.computed(()=>{const{rowData:c,rowIndex:d,rowKey:f,onRowHover:u}=t,p=t.rowEventHandlers||{},m={};return Object.entries(p).forEach(([g,h])=>{ot(h)&&(m[g]=b=>{h({event:b,rowData:c,rowIndex:d,rowKey:f})})}),u&&[{name:"onMouseleave",hovered:!1},{name:"onMouseenter",hovered:!0}].forEach(({name:g,hovered:h})=>{const b=m[g];m[g]=y=>{u({event:y,hovered:h,rowData:c,rowIndex:d,rowKey:f}),b==null||b(y)}}),m}),i=c=>{const{onRowExpand:d,rowData:f,rowIndex:u,rowKey:p}=t;d==null||d({expanded:c,rowData:f,rowIndex:u,rowKey:p})};return e.onMounted(()=>{e.unref(l)&&a(!0)}),{isScrolling:n,measurable:l,measured:o,rowRef:r,eventHandlers:s,onExpand:i}},NZ="ElTableV2TableRow";var $Z=e.defineComponent({name:NZ,props:nr,setup(t,{expose:n,slots:o,attrs:r}){const{eventHandlers:l,isScrolling:a,measurable:s,measured:i,rowRef:c,onExpand:d}=EZ(t);return n({onExpand:d}),()=>{const{columns:f,columnsStyles:u,expandColumnKey:p,depth:m,rowData:g,rowIndex:h,style:b}=t;let y=f.map((w,C)=>{const k=Ae(g.children)&&g.children.length>0&&w.key===p;return o.cell({column:w,columns:f,columnIndex:C,depth:m,style:u[w.key],rowData:g,rowIndex:h,isScrolling:e.unref(a),expandIconProps:k?{rowData:g,rowIndex:h,onExpand:d}:void 0})});if(o.row&&(y=o.row({cells:y.map(w=>Ae(w)&&w.length===1?w[0]:w),style:b,columns:f,depth:m,rowData:g,rowIndex:h,isScrolling:e.unref(a)})),e.unref(s)){const{height:w,...C}=b||{},k=e.unref(i);return e.createVNode("div",e.mergeProps({ref:c,class:t.class,style:k?b:C},r,e.unref(l)),[y])}return e.createVNode("div",e.mergeProps(r,{ref:c,class:t.class,style:b},e.unref(l)),[y])}}}),BZ=t=>{const{sortOrder:n}=t;return e.createVNode(de,{size:14,class:t.class},{default:()=>[n===pl.ASC?e.createVNode(o8,null,null):e.createVNode(ZL,null,null)]})},_Z=t=>{const{expanded:n,expandable:o,onExpand:r,style:l,size:a}=t,s={onClick:o?()=>r(!n):void 0,class:t.class};return e.createVNode(de,e.mergeProps(s,{size:a,style:l}),{default:()=>[e.createVNode(jt,null,null)]})};const vZ="ElTableV2Grid",TZ=t=>{const n=e.ref(),o=e.ref(),r=e.computed(()=>{const{data:h,rowHeight:b,estimatedRowHeight:y}=t;if(!y)return h.length*b}),l=e.computed(()=>{const{fixedData:h,rowHeight:b}=t;return((h==null?void 0:h.length)||0)*b}),a=e.computed(()=>ki(t.headerHeight)),s=e.computed(()=>{const{height:h}=t;return Math.max(0,h-e.unref(a)-e.unref(l))}),i=e.computed(()=>e.unref(a)+e.unref(l)>0),c=({data:h,rowIndex:b})=>h[b][t.rowKey];function d({rowCacheStart:h,rowCacheEnd:b,rowVisibleStart:y,rowVisibleEnd:w}){var C;(C=t.onRowsRendered)==null||C.call(t,{rowCacheStart:h,rowCacheEnd:b,rowVisibleStart:y,rowVisibleEnd:w})}function f(h,b){var y;(y=o.value)==null||y.resetAfterRowIndex(h,b)}function u(h,b){const y=e.unref(n),w=e.unref(o);!y||!w||(it(h)?(y.scrollToLeft(h.scrollLeft),w.scrollTo(h)):(y.scrollToLeft(h),w.scrollTo({scrollLeft:h,scrollTop:b})))}function p(h){var b;(b=e.unref(o))==null||b.scrollTo({scrollTop:h})}function m(h,b){var y;(y=e.unref(o))==null||y.scrollToItem(h,1,b)}function g(){var h,b;(h=e.unref(o))==null||h.$forceUpdate(),(b=e.unref(n))==null||b.$forceUpdate()}return{bodyRef:o,forceUpdate:g,fixedRowHeight:l,gridHeight:s,hasHeader:i,headerHeight:a,headerRef:n,totalHeight:r,itemKey:c,onItemRendered:d,resetAfterRowIndex:f,scrollTo:u,scrollToTop:p,scrollToRow:m}},rp=e.defineComponent({name:vZ,props:Si,setup(t,{slots:n,expose:o}){const{ns:r}=e.inject(Ju),{bodyRef:l,fixedRowHeight:a,gridHeight:s,hasHeader:i,headerRef:c,headerHeight:d,totalHeight:f,forceUpdate:u,itemKey:p,onItemRendered:m,resetAfterRowIndex:g,scrollTo:h,scrollToTop:b,scrollToRow:y}=TZ(t);o({forceUpdate:u,totalHeight:f,scrollTo:h,scrollToTop:b,scrollToRow:y,resetAfterRowIndex:g});const w=()=>t.bodyWidth;return()=>{const{cache:C,columns:k,data:E,fixedData:S,useIsScrolling:N,scrollbarAlwaysOn:$,scrollbarEndGap:B,scrollbarStartGap:P,style:D,rowHeight:z,bodyWidth:I,estimatedRowHeight:A,headerWidth:L,height:R,width:T,getRowHeight:v,onScroll:V}=t,H=Ne(A),x=H?uS:rS,F=e.unref(d);return e.createVNode("div",{role:"table",class:[r.e("table"),t.class],style:D},[e.createVNode(x,{ref:l,data:E,useIsScrolling:N,itemKey:p,columnCache:0,columnWidth:H?w:I,totalColumn:1,totalRow:E.length,rowCache:C,rowHeight:H?v:z,width:T,height:e.unref(s),class:r.e("body"),scrollbarStartGap:P,scrollbarEndGap:B,scrollbarAlwaysOn:$,onScroll:V,onItemRendered:m,perfMode:!1},{default:K=>{var X;const J=E[K.rowIndex];return(X=n.row)==null?void 0:X.call(n,{...K,columns:k,rowData:J})}}),e.unref(i)&&e.createVNode(SZ,{ref:c,class:r.e("header-wrapper"),columns:k,headerData:E,headerHeight:t.headerHeight,fixedHeaderData:S,rowWidth:L,rowHeight:z,width:T,height:Math.min(F+e.unref(a),R)},{dynamic:n.header,fixed:n.row})])}}});function VZ(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const MZ=(t,{slots:n})=>{const{mainTableRef:o,...r}=t;return e.createVNode(rp,e.mergeProps({ref:o},r),VZ(n)?n:{default:()=>[n]})};function RZ(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const IZ=(t,{slots:n})=>{if(!t.columns.length)return;const{leftTableRef:o,...r}=t;return e.createVNode(rp,e.mergeProps({ref:o},r),RZ(n)?n:{default:()=>[n]})};function PZ(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const AZ=(t,{slots:n})=>{if(!t.columns.length)return;const{rightTableRef:o,...r}=t;return e.createVNode(rp,e.mergeProps({ref:o},r),PZ(n)?n:{default:()=>[n]})};function OZ(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const zZ=(t,{slots:n})=>{const{columns:o,columnsStyles:r,depthMap:l,expandColumnKey:a,expandedRowKeys:s,estimatedRowHeight:i,hasFixedColumns:c,hoveringRowKey:d,rowData:f,rowIndex:u,style:p,isScrolling:m,rowProps:g,rowClass:h,rowKey:b,rowEventHandlers:y,ns:w,onRowHovered:C,onRowExpanded:k}=t,E=Vr(h,{columns:o,rowData:f,rowIndex:u},""),S=Vr(g,{columns:o,rowData:f,rowIndex:u}),N=f[b],$=l[N]||0,B=Boolean(a),P=u<0,D=[w.e("row"),E,{[w.e(`row-depth-${$}`)]:B&&u>=0,[w.is("expanded")]:B&&s.includes(N),[w.is("hovered")]:!m&&N===d,[w.is("fixed")]:!$&&P,[w.is("customized")]:Boolean(n.row)}],z=c?C:void 0,I={...S,columns:o,columnsStyles:r,class:D,depth:$,expandColumnKey:a,estimatedRowHeight:P?void 0:i,isScrolling:m,rowIndex:u,rowData:f,rowKey:N,rowEventHandlers:y,style:p};return e.createVNode($Z,e.mergeProps(I,{onRowHover:z,onRowExpand:k}),OZ(n)?n:{default:()=>[n]})},lp=({columns:t,column:n,columnIndex:o,depth:r,expandIconProps:l,isScrolling:a,rowData:s,rowIndex:i,style:c,expandedRowKeys:d,ns:f,cellProps:u,expandColumnKey:p,indentSize:m,iconSize:g,rowKey:h},{slots:b})=>{const y=tr(c);if(n.placeholderSign===hl)return e.createVNode("div",{class:f.em("row-cell","placeholder"),style:y},null);const{cellRenderer:w,dataKey:C,dataGetter:k}=n,S=QS(w)||b.default||(R=>e.createVNode(yZ,R,null)),N=ot(k)?k({columns:t,column:n,columnIndex:o,rowData:s,rowIndex:i}):et(s,C!=null?C:""),$=Vr(u,{cellData:N,columns:t,column:n,columnIndex:o,rowIndex:i,rowData:s}),B={class:f.e("cell-text"),columns:t,column:n,columnIndex:o,cellData:N,isScrolling:a,rowData:s,rowIndex:i},P=S(B),D=[f.e("row-cell"),n.align===ml.CENTER&&f.is("align-center"),n.align===ml.RIGHT&&f.is("align-right")],z=i>=0&&n.key===p,I=i>=0&&d.includes(s[h]);let A;const L=`margin-inline-start: ${r*m}px;`;return z&&(it(l)?A=e.createVNode(_Z,e.mergeProps(l,{class:[f.e("expand-icon"),f.is("expanded",I)],size:g,expanded:I,style:L,expandable:!0}),null):A=e.createVNode("div",{style:[L,`width: ${g}px; height: ${g}px;`].join(" ")},null)),e.createVNode("div",e.mergeProps({class:D,style:y},$),[A,P])};lp.inheritAttrs=!1;function DZ(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const LZ=({columns:t,columnsStyles:n,headerIndex:o,style:r,headerClass:l,headerProps:a,ns:s},{slots:i})=>{const c={columns:t,headerIndex:o},d=[s.e("header-row"),Vr(l,c,""),{[s.is("customized")]:Boolean(i.header)}],f={...Vr(a,c),columnsStyles:n,class:d,columns:t,headerIndex:o,style:r};return e.createVNode(wZ,f,DZ(i)?i:{default:()=>[i]})},aE=(t,{slots:n})=>{const{column:o,ns:r,style:l,onColumnSorted:a}=t,s=tr(l);if(o.placeholderSign===hl)return e.createVNode("div",{class:r.em("header-row-cell","placeholder"),style:s},null);const{headerCellRenderer:i,headerClass:c,sortable:d}=o,f={...t,class:r.e("header-cell-text")},p=(QS(i)||n.default||(k=>e.createVNode(bZ,k,null)))(f),{sortBy:m,sortState:g,headerCellProps:h}=t;let b,y;if(g){const k=g[o.key];b=Boolean(Zu[k]),y=b?k:pl.ASC}else b=o.key===m.key,y=b?m.order:pl.ASC;const w=[r.e("header-cell"),Vr(c,t,""),o.align===ml.CENTER&&r.is("align-center"),o.align===ml.RIGHT&&r.is("align-right"),d&&r.is("sortable")],C={...Vr(h,t),onClick:o.sortable?a:void 0,class:w,style:s,["data-key"]:o.key};return e.createVNode("div",C,[p,d&&e.createVNode(BZ,{class:[r.e("sort-icon"),b&&r.is("sorting")],sortOrder:y},null)])},sE=(t,{slots:n})=>{var o;return e.createVNode("div",{class:t.class,style:t.style},[(o=n.default)==null?void 0:o.call(n)])};sE.displayName="ElTableV2Footer";const iE=(t,{slots:n})=>e.createVNode("div",{class:t.class,style:t.style},[n.default?n.default():e.createVNode(cu,null,null)]);iE.displayName="ElTableV2Empty";const cE=(t,{slots:n})=>{var o;return e.createVNode("div",{class:t.class,style:t.style},[(o=n.default)==null?void 0:o.call(n)])};cE.displayName="ElTableV2Overlay";function ap(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const FZ="ElTableV2";var dE=e.defineComponent({name:FZ,props:lE,setup(t,{slots:n,expose:o}){const r=Z("table-v2"),{columnsStyles:l,fixedColumnsOnLeft:a,fixedColumnsOnRight:s,mainColumns:i,mainTableHeight:c,fixedTableHeight:d,leftTableWidth:f,rightTableWidth:u,data:p,depthMap:m,expandedRowKeys:g,hasFixedColumns:h,hoveringRowKey:b,mainTableRef:y,leftTableRef:w,rightTableRef:C,isDynamic:k,isResetting:E,isScrolling:S,bodyWidth:N,emptyStyle:$,rootStyle:B,headerWidth:P,footerHeight:D,showEmpty:z,scrollTo:I,scrollToLeft:A,scrollToTop:L,scrollToRow:R,getRowHeight:T,onColumnSorted:v,onRowHeightChange:V,onRowHovered:H,onRowExpanded:x,onRowsRendered:F,onScroll:K,onVerticalScroll:X}=hZ(t);return o({scrollTo:I,scrollToLeft:A,scrollToTop:L,scrollToRow:R}),e.provide(Ju,{ns:r,isResetting:E,hoveringRowKey:b,isScrolling:S}),()=>{const{cache:J,cellProps:U,estimatedRowHeight:W,expandColumnKey:Q,fixedData:Y,headerHeight:ee,headerClass:pe,headerProps:he,headerCellProps:we,sortBy:Me,sortState:be,rowHeight:Ke,rowClass:me,rowEventHandlers:ne,rowKey:oe,rowProps:fe,scrollbarAlwaysOn:ye,indentSize:$e,iconSize:ve,useIsScrolling:te,vScrollbarSize:Ee,width:Re}=t,xe=e.unref(p),q={cache:J,class:r.e("main"),columns:e.unref(i),data:xe,fixedData:Y,estimatedRowHeight:W,bodyWidth:e.unref(N),headerHeight:ee,headerWidth:e.unref(P),height:e.unref(c),mainTableRef:y,rowKey:oe,rowHeight:Ke,scrollbarAlwaysOn:ye,scrollbarStartGap:2,scrollbarEndGap:Ee,useIsScrolling:te,width:Re,getRowHeight:T,onRowsRendered:F,onScroll:K},le=e.unref(f),M=e.unref(d),G={cache:J,class:r.e("left"),columns:e.unref(a),data:xe,estimatedRowHeight:W,leftTableRef:w,rowHeight:Ke,bodyWidth:le,headerWidth:le,headerHeight:ee,height:M,rowKey:oe,scrollbarAlwaysOn:ye,scrollbarStartGap:2,scrollbarEndGap:Ee,useIsScrolling:te,width:le,getRowHeight:T,onScroll:X},ge=e.unref(u)+Ee,ce={cache:J,class:r.e("right"),columns:e.unref(s),data:xe,estimatedRowHeight:W,rightTableRef:C,rowHeight:Ke,bodyWidth:ge,headerWidth:ge,headerHeight:ee,height:M,rowKey:oe,scrollbarAlwaysOn:ye,scrollbarStartGap:2,scrollbarEndGap:Ee,width:ge,style:`--${e.unref(r.namespace)}-table-scrollbar-size: ${Ee}px`,useIsScrolling:te,getRowHeight:T,onScroll:X},Ce=e.unref(l),ke={ns:r,depthMap:e.unref(m),columnsStyles:Ce,expandColumnKey:Q,expandedRowKeys:e.unref(g),estimatedRowHeight:W,hasFixedColumns:e.unref(h),hoveringRowKey:e.unref(b),rowProps:fe,rowClass:me,rowKey:oe,rowEventHandlers:ne,onRowHovered:H,onRowExpanded:x,onRowHeightChange:V},ct={cellProps:U,expandColumnKey:Q,indentSize:$e,iconSize:ve,rowKey:oe,expandedRowKeys:e.unref(g),ns:r},pt={ns:r,headerClass:pe,headerProps:he,columnsStyles:Ce},Je={ns:r,sortBy:Me,sortState:be,headerCellProps:we,onColumnSorted:v},Pe={row:Se=>e.createVNode(zZ,e.mergeProps(Se,ke),{row:n.row,cell:ze=>n.cell?e.createVNode(lp,e.mergeProps(ze,ct,{style:Ce[ze.column.key]}),{default:()=>[n.cell]}):e.createVNode(lp,e.mergeProps(ze,ct,{style:Ce[ze.column.key]}),null)}),header:Se=>e.createVNode(LZ,e.mergeProps(Se,pt),{header:n.header,cell:ze=>n["header-cell"]?e.createVNode(aE,e.mergeProps(ze,Je,{style:Ce[ze.column.key]}),{default:()=>[n["header-cell"]]}):e.createVNode(aE,e.mergeProps(ze,Je,{style:Ce[ze.column.key]}),null)})},Tt=[t.class,r.b(),r.e("root"),{[r.is("dynamic")]:e.unref(k)}],ae={class:r.e("footer"),style:e.unref(D)};return e.createVNode("div",{class:Tt,style:e.unref(B)},[e.createVNode(MZ,q,ap(Pe)?Pe:{default:()=>[Pe]}),e.createVNode(IZ,G,ap(Pe)?Pe:{default:()=>[Pe]}),e.createVNode(AZ,ce,ap(Pe)?Pe:{default:()=>[Pe]}),n.footer&&e.createVNode(sE,ae,{default:n.footer}),e.unref(z)&&e.createVNode(iE,{class:r.e("empty"),style:e.unref($)},{default:n.empty}),n.overlay&&e.createVNode(cE,{class:r.e("overlay")},{default:n.overlay})])}}});const fE=se({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:j(Function)}}),xZ=e.defineComponent({name:"ElAutoResizer",props:fE,setup(t,{slots:n}){const o=Z("auto-resizer"),{height:r,width:l,sizer:a}=mZ(t),s={width:"100%",height:"100%"};return()=>{var i;return e.createVNode("div",{ref:a,class:o.b(),style:s},[(i=n.default)==null?void 0:i.call(n,{height:r.value,width:l.value})])}}}),uE=Te(dE),pE=Te(xZ),mE=se({tabs:{type:j(Array),default:()=>st([])}}),HZ={name:"ElTabBar"},KZ=e.defineComponent({...HZ,props:mE,setup(t,{expose:n}){const o=t,r="ElTabBar",l=e.getCurrentInstance(),a=e.inject(Ul);a||Et(r,"");const s=Z("tabs"),i=e.ref(),c=e.ref(),d=()=>{let u=0,p=0;const m=["top","bottom"].includes(a.props.tabPosition)?"width":"height",g=m==="width"?"x":"y";return o.tabs.every(h=>{var b,y,w,C;const k=(y=(b=l.parent)==null?void 0:b.refs)==null?void 0:y[`tab-${h.paneName}`];if(!k)return!1;if(!h.active)return!0;p=k[`client${ho(m)}`];const E=g==="x"?"left":"top";u=k.getBoundingClientRect()[E]-((C=(w=k.parentElement)==null?void 0:w.getBoundingClientRect()[E])!=null?C:0);const S=window.getComputedStyle(k);return m==="width"&&(o.tabs.length>1&&(p-=Number.parseFloat(S.paddingLeft)+Number.parseFloat(S.paddingRight)),u+=Number.parseFloat(S.paddingLeft)),!1}),{[m]:`${p}px`,transform:`translate${ho(g)}(${u}px)`}},f=()=>c.value=d();return e.watch(()=>o.tabs,async()=>{await e.nextTick(),f()},{immediate:!0}),Wt(i,()=>f()),n({ref:i,update:f}),(u,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"barRef",ref:i,class:e.normalizeClass([e.unref(s).e("active-bar"),e.unref(s).is(e.unref(a).props.tabPosition)]),style:e.normalizeStyle(c.value)},null,6))}});var WZ=re(KZ,[["__file","tab-bar.vue"]]);const hE=se({panes:{type:j(Array),default:()=>st([])},currentName:{type:[String,Number],default:""},editable:Boolean,onTabClick:{type:j(Function),default:Xe},onTabRemove:{type:j(Function),default:Xe},type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),gE="ElTabNav",jZ=e.defineComponent({name:gE,props:hE,setup(t,{expose:n}){const o=e.getCurrentInstance(),r=e.inject(Ul);r||Et(gE,"");const l=Z("tabs"),a=QA(),s=rO(),i=e.ref(),c=e.ref(),d=e.ref(),f=e.ref(!1),u=e.ref(0),p=e.ref(!1),m=e.ref(!0),g=e.computed(()=>["top","bottom"].includes(r.props.tabPosition)?"width":"height"),h=e.computed(()=>({transform:`translate${g.value==="width"?"X":"Y"}(-${u.value}px)`})),b=()=>{if(!i.value)return;const N=i.value[`offset${ho(g.value)}`],$=u.value;if(!$)return;const B=$>N?$-N:0;u.value=B},y=()=>{if(!i.value||!c.value)return;const N=c.value[`offset${ho(g.value)}`],$=i.value[`offset${ho(g.value)}`],B=u.value;if(N-B<=$)return;const P=N-B>$*2?B+$:N-$;u.value=P},w=async()=>{const N=c.value;if(!f.value||!d.value||!i.value||!N)return;await e.nextTick();const $=d.value.querySelector(".is-active");if(!$)return;const B=i.value,P=["top","bottom"].includes(r.props.tabPosition),D=$.getBoundingClientRect(),z=B.getBoundingClientRect(),I=P?N.offsetWidth-z.width:N.offsetHeight-z.height,A=u.value;let L=A;P?(D.leftz.right&&(L=A+D.right-z.right)):(D.topz.bottom&&(L=A+(D.bottom-z.bottom))),L=Math.max(L,0),u.value=Math.min(L,I)},C=()=>{if(!c.value||!i.value)return;const N=c.value[`offset${ho(g.value)}`],$=i.value[`offset${ho(g.value)}`],B=u.value;if($0&&(u.value=0)},k=N=>{const $=N.code,{up:B,down:P,left:D,right:z}=ue;if(![B,P,D,z].includes($))return;const I=Array.from(N.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),A=I.indexOf(N.target);let L;$===D||$===B?A===0?L=I.length-1:L=A-1:A{m.value&&(p.value=!0)},S=()=>p.value=!1;return e.watch(a,N=>{N==="hidden"?m.value=!1:N==="visible"&&setTimeout(()=>m.value=!0,50)}),e.watch(s,N=>{N?setTimeout(()=>m.value=!0,50):m.value=!1}),Wt(d,C),e.onMounted(()=>setTimeout(()=>w(),0)),e.onUpdated(()=>C()),n({scrollToActiveTab:w,removeFocus:S}),e.watch(()=>t.panes,()=>o.update(),{flush:"post"}),()=>{const N=f.value?[e.createVNode("span",{class:[l.e("nav-prev"),l.is("disabled",!f.value.prev)],onClick:b},[e.createVNode(de,null,{default:()=>[e.createVNode(Lo,null,null)]})]),e.createVNode("span",{class:[l.e("nav-next"),l.is("disabled",!f.value.next)],onClick:y},[e.createVNode(de,null,{default:()=>[e.createVNode(jt,null,null)]})])]:null,$=t.panes.map((B,P)=>{var D,z,I,A;const L=B.props.disabled,R=(z=(D=B.props.name)!=null?D:B.index)!=null?z:`${P}`,T=!L&&(B.isClosable||t.editable);B.index=`${P}`;const v=T?e.createVNode(de,{class:"is-icon-close",onClick:x=>t.onTabRemove(B,x)},{default:()=>[e.createVNode(Pn,null,null)]}):null,V=((A=(I=B.slots).label)==null?void 0:A.call(I))||B.props.label,H=!L&&B.active?0:-1;return e.createVNode("div",{ref:`tab-${R}`,class:[l.e("item"),l.is(r.props.tabPosition),l.is("active",B.active),l.is("disabled",L),l.is("closable",T),l.is("focus",p.value)],id:`tab-${R}`,key:`tab-${R}`,"aria-controls":`pane-${R}`,role:"tab","aria-selected":B.active,tabindex:H,onFocus:()=>E(),onBlur:()=>S(),onClick:x=>{S(),t.onTabClick(B,R,x)},onKeydown:x=>{T&&(x.code===ue.delete||x.code===ue.backspace)&&t.onTabRemove(B,x)}},[V,v])});return e.createVNode("div",{ref:d,class:[l.e("nav-wrap"),l.is("scrollable",!!f.value),l.is(r.props.tabPosition)]},[N,e.createVNode("div",{class:l.e("nav-scroll"),ref:i},[e.createVNode("div",{class:[l.e("nav"),l.is(r.props.tabPosition),l.is("stretch",t.stretch&&["top","bottom"].includes(r.props.tabPosition))],ref:c,style:h.value,role:"tablist",onKeydown:k},[t.type?null:e.createVNode(WZ,{tabs:[...t.panes]},null),$])])])}}}),yE=se({type:{type:String,values:["card","border-card",""],default:""},activeName:{type:[String,Number]},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:j(Function),default:()=>!0},stretch:Boolean}),sp=t=>Fe(t)||Ne(t),bE={[Ve]:t=>sp(t),"tab-click":(t,n)=>n instanceof Event,"tab-change":t=>sp(t),edit:(t,n)=>["remove","add"].includes(n),"tab-remove":t=>sp(t),"tab-add":()=>!0};var UZ=e.defineComponent({name:"ElTabs",props:yE,emits:bE,setup(t,{emit:n,slots:o,expose:r}){var l,a;const s=Z("tabs"),i=e.ref(),c=e.reactive({}),d=e.ref((a=(l=t.modelValue)!=null?l:t.activeName)!=null?a:"0"),f=h=>{d.value=h,n(Ve,h),n("tab-change",h)},u=async h=>{var b,y,w;if(!(d.value===h||Rt(h)))try{await((b=t.beforeLeave)==null?void 0:b.call(t,h,d.value))!==!1&&(f(h),(w=(y=i.value)==null?void 0:y.removeFocus)==null||w.call(y))}catch(C){}},p=(h,b,y)=>{h.props.disabled||(u(b),n("tab-click",h,y))},m=(h,b)=>{h.props.disabled||Rt(h.props.name)||(b.stopPropagation(),n("edit",h.props.name,"remove"),n("tab-remove",h.props.name))},g=()=>{n("edit",void 0,"add"),n("tab-add")};Gr({from:'"activeName"',replacement:'"model-value" or "v-model"',scope:"ElTabs",version:"2.3.0",ref:"https://element-plus.org/en-US/component/tabs.html#attributes",type:"Attribute"},e.computed(()=>!!t.activeName)),e.watch(()=>t.activeName,h=>u(h)),e.watch(()=>t.modelValue,h=>u(h)),e.watch(d,async()=>{var h;await e.nextTick(),(h=i.value)==null||h.scrollToActiveTab()});{const h=y=>c[y.uid]=y,b=y=>delete c[y];e.provide(Ul,{props:t,currentName:d,registerPane:h,unregisterPane:b})}return r({currentName:d}),()=>{const h=t.editable||t.addable?e.createVNode("span",{class:s.e("new-tab"),tabindex:"0",onClick:g,onKeydown:w=>{w.code===ue.enter&&g()}},[e.createVNode(de,{class:s.is("icon-plus")},{default:()=>[e.createVNode(M0,null,null)]})]):null,b=e.createVNode("div",{class:[s.e("header"),s.is(t.tabPosition)]},[h,e.createVNode(jZ,{ref:i,currentName:d.value,editable:t.editable,type:t.type,panes:Object.values(c),stretch:t.stretch,onTabClick:p,onTabRemove:m},null)]),y=e.createVNode("div",{class:s.e("content")},[e.renderSlot(o,"default")]);return e.createVNode("div",{class:[s.b(),s.m(t.tabPosition),{[s.m("card")]:t.type==="card",[s.m("border-card")]:t.type==="border-card"}]},[...t.tabPosition!=="bottom"?[b,y]:[y,b]])}}});const CE=se({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),GZ=["id","aria-hidden","aria-labelledby"],qZ={name:"ElTabPane"},YZ=e.defineComponent({...qZ,props:CE,setup(t){const n=t,o="ElTabPane",r=e.getCurrentInstance(),l=e.useSlots(),a=e.inject(Ul);a||Et(o,"usage: ");const s=Z("tab-pane"),i=e.ref(),c=e.computed(()=>n.closable||a.props.closable),d=h0(()=>{var g;return a.currentName.value===((g=n.name)!=null?g:i.value)}),f=e.ref(d.value),u=e.computed(()=>{var g;return(g=n.name)!=null?g:i.value}),p=h0(()=>!n.lazy||f.value||d.value);e.watch(d,g=>{g&&(f.value=!0)});const m=e.reactive({uid:r.uid,slots:l,props:n,paneName:u,active:d,index:i,isClosable:c});return e.onMounted(()=>{a.registerPane(m)}),e.onUnmounted(()=>{a.unregisterPane(m.uid)}),(g,h)=>e.unref(p)?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:0,id:`pane-${e.unref(u)}`,class:e.normalizeClass(e.unref(s).b()),role:"tabpanel","aria-hidden":!e.unref(d),"aria-labelledby":`tab-${e.unref(u)}`},[e.renderSlot(g.$slots,"default")],10,GZ)),[[e.vShow,e.unref(d)]]):e.createCommentVNode("v-if",!0)}});var wE=re(YZ,[["__file","tab-pane.vue"]]);const kE=Te(UZ,{TabPane:wE}),SE=ut(wE),XZ=se({format:{type:String,default:"HH:mm"},modelValue:String,disabled:Boolean,editable:{type:Boolean,default:!0},effect:{type:String,default:"light"},clearable:{type:Boolean,default:!0},size:tn,placeholder:String,start:{type:String,default:"09:00"},end:{type:String,default:"18:00"},step:{type:String,default:"00:30"},minTime:String,maxTime:String,name:String,prefixIcon:{type:j([String,Object]),default:()=>T0},clearIcon:{type:j([String,Object]),default:()=>Fo}}),To=t=>{const n=(t||"").split(":");if(n.length>=2){let o=Number.parseInt(n[0],10);const r=Number.parseInt(n[1],10),l=t.toUpperCase();return l.includes("AM")&&o===12?o=0:l.includes("PM")&&o!==12&&(o+=12),{hours:o,minutes:r}}return null},ip=(t,n)=>{const o=To(t);if(!o)return-1;const r=To(n);if(!r)return-1;const l=o.minutes+o.hours*60,a=r.minutes+r.hours*60;return l===a?0:l>a?1:-1},EE=t=>`${t}`.padStart(2,"0"),gl=t=>`${EE(t.hours)}:${EE(t.minutes)}`,ZZ=(t,n)=>{const o=To(t);if(!o)return"";const r=To(n);if(!r)return"";const l={hours:o.hours,minutes:o.minutes};return l.minutes+=r.minutes,l.hours+=r.hours,l.hours+=Math.floor(l.minutes/60),l.minutes=l.minutes%60,gl(l)},JZ={name:"ElTimeSelect"},QZ=e.defineComponent({...JZ,props:XZ,emits:["change","blur","focus","update:modelValue"],setup(t,{expose:n}){const o=t;_e.extend(yf);const{Option:r}=Jo,l=Z("input"),a=e.ref(),s=e.computed(()=>o.modelValue),i=e.computed(()=>{const h=To(o.start);return h?gl(h):null}),c=e.computed(()=>{const h=To(o.end);return h?gl(h):null}),d=e.computed(()=>{const h=To(o.step);return h?gl(h):null}),f=e.computed(()=>{const h=To(o.minTime||"");return h?gl(h):null}),u=e.computed(()=>{const h=To(o.maxTime||"");return h?gl(h):null}),p=e.computed(()=>{const h=[];if(o.start&&o.end&&o.step){let b=i.value,y;for(;b&&c.value&&ip(b,c.value)<=0;)y=_e(b,"HH:mm").format(o.format),h.push({value:y,disabled:ip(b,f.value||"-1:-1")<=0||ip(b,u.value||"100:100")>=0}),b=ZZ(b,d.value)}return h});return n({blur:()=>{var h,b;(b=(h=a.value)==null?void 0:h.blur)==null||b.call(h)},focus:()=>{var h,b;(b=(h=a.value)==null?void 0:h.focus)==null||b.call(h)}}),(h,b)=>(e.openBlock(),e.createBlock(e.unref(Jo),{ref_key:"select",ref:a,"model-value":e.unref(s),disabled:h.disabled,clearable:h.clearable,"clear-icon":h.clearIcon,size:h.size,effect:h.effect,placeholder:h.placeholder,"default-first-option":"",filterable:h.editable,"onUpdate:modelValue":b[0]||(b[0]=y=>h.$emit("update:modelValue",y)),onChange:b[1]||(b[1]=y=>h.$emit("change",y)),onBlur:b[2]||(b[2]=y=>h.$emit("blur",y)),onFocus:b[3]||(b[3]=y=>h.$emit("focus",y))},{prefix:e.withCtx(()=>[h.prefixIcon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(l).e("prefix-icon"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(h.prefixIcon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),y=>(e.openBlock(),e.createBlock(e.unref(r),{key:y.value,label:y.value,value:y.value,disabled:y.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["model-value","disabled","clearable","clear-icon","size","effect","placeholder","filterable"]))}});var Ei=re(QZ,[["__file","time-select.vue"]]);Ei.install=t=>{t.component(Ei.name,Ei)};const NE=Ei;var eJ=e.defineComponent({name:"ElTimeline",setup(t,{slots:n}){const o=Z("timeline");return e.provide("timeline",n),()=>e.h("ul",{class:[o.b()]},[e.renderSlot(n,"default")])}});const $E=se({timestamp:{type:String,default:""},hideTimestamp:{type:Boolean,default:!1},center:{type:Boolean,default:!1},placement:{type:String,values:["top","bottom"],default:"bottom"},type:{type:String,values:["primary","success","warning","danger","info"],default:""},color:{type:String,default:""},size:{type:String,values:["normal","large"],default:"normal"},icon:{type:$t,default:""},hollow:{type:Boolean,default:!1}}),tJ={name:"ElTimelineItem"},nJ=e.defineComponent({...tJ,props:$E,setup(t){const n=Z("timeline-item");return(o,r)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass([e.unref(n).b(),{[e.unref(n).e("center")]:o.center}])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(n).e("tail"))},null,2),o.$slots.dot?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(n).e("node"),e.unref(n).em("node",o.size||""),e.unref(n).em("node",o.type||""),e.unref(n).is("hollow",o.hollow)]),style:e.normalizeStyle({backgroundColor:o.color})},[o.icon?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass(e.unref(n).e("icon"))},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.icon)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],6)),o.$slots.dot?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(n).e("dot"))},[e.renderSlot(o.$slots,"dot")],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(n).e("wrapper"))},[!o.hideTimestamp&&o.placement==="top"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(n).e("timestamp"),e.unref(n).is("top")])},e.toDisplayString(o.timestamp),3)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(e.unref(n).e("content"))},[e.renderSlot(o.$slots,"default")],2),!o.hideTimestamp&&o.placement==="bottom"?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(n).e("timestamp"),e.unref(n).is("bottom")])},e.toDisplayString(o.timestamp),3)):e.createCommentVNode("v-if",!0)],2)],2))}});var BE=re(nJ,[["__file","timeline-item.vue"]]);const _E=Te(eJ,{TimelineItem:BE}),vE=ut(BE),TE=se({nowrap:Boolean});var VE=(t=>(t.top="top",t.bottom="bottom",t.left="left",t.right="right",t))(VE||{});const oJ=Object.values(VE),cp=se({width:{type:Number,default:10},height:{type:Number,default:10},style:{type:j(Object),default:null}}),rJ=se({side:{type:j(String),values:oJ,required:!0}}),lJ=["absolute","fixed"],aJ=["top-start","top-end","top","bottom-start","bottom-end","bottom","left-start","left-end","left","right-start","right-end","right"],dp=se({ariaLabel:String,arrowPadding:{type:j(Number),default:5},effect:{type:String,default:""},contentClass:String,placement:{type:j(String),values:aJ,default:"bottom"},reference:{type:j(Object),default:null},offset:{type:Number,default:8},strategy:{type:j(String),values:lJ,default:"absolute"},showArrow:{type:Boolean,default:!1}}),fp=se({delayDuration:{type:Number,default:300},defaultOpen:Boolean,open:{type:Boolean,default:void 0},onOpenChange:{type:j(Function)},"onUpdate:open":{type:j(Function)}}),yl={type:j(Function)},up=se({onBlur:yl,onClick:yl,onFocus:yl,onMouseDown:yl,onMouseEnter:yl,onMouseLeave:yl}),sJ=se({...fp,...cp,...up,...dp,alwaysOn:Boolean,fullTransition:Boolean,transitionProps:{type:j(Object),default:null},teleported:Boolean,to:{type:j(String),default:"body"}}),iJ={name:"ElTooltipV2Root"},cJ=e.defineComponent({...iJ,props:fp,setup(t,{expose:n}){const o=t,r=e.ref(o.defaultOpen),l=e.ref(null),a=e.computed({get:()=>pO(o.open)?r.value:o.open,set:b=>{var y;r.value=b,(y=o["onUpdate:open"])==null||y.call(o,b)}}),s=e.computed(()=>Ne(o.delayDuration)&&o.delayDuration>0),{start:i,stop:c}=pr(()=>{a.value=!0},e.computed(()=>o.delayDuration),{immediate:!1}),d=Z("tooltip-v2"),f=Nn(),u=()=>{c(),a.value=!0},p=()=>{e.unref(s)?i():u()},m=u,g=()=>{c(),a.value=!1},h=b=>{var y;b&&(document.dispatchEvent(new CustomEvent(Ss)),m()),(y=o.onOpenChange)==null||y.call(o,b)};return e.watch(a,h),e.onMounted(()=>{document.addEventListener(Ss,g)}),e.onBeforeUnmount(()=>{c(),document.removeEventListener(Ss,g)}),e.provide(Gl,{contentId:f,triggerRef:l,ns:d,onClose:g,onDelayOpen:p,onOpen:m}),n({onOpen:m,onClose:g}),(b,y)=>e.renderSlot(b.$slots,"default",{open:e.unref(a)})}});var dJ=re(cJ,[["__file","root.vue"]]);const fJ={name:"ElTooltipV2Arrow"},uJ=e.defineComponent({...fJ,props:{...cp,...rJ},setup(t){const n=t,{ns:o}=e.inject(Gl),{arrowRef:r}=e.inject(Vd),l=e.computed(()=>{const{style:a,width:s,height:i}=n,c=o.namespace.value;return{[`--${c}-tooltip-v2-arrow-width`]:`${s}px`,[`--${c}-tooltip-v2-arrow-height`]:`${i}px`,[`--${c}-tooltip-v2-arrow-border-width`]:`${s/2}px`,[`--${c}-tooltip-v2-arrow-cover-width`]:s/2-1,...a||{}}});return(a,s)=>(e.openBlock(),e.createElementBlock("span",{ref_key:"arrowRef",ref:r,style:e.normalizeStyle(e.unref(l)),class:e.normalizeClass(e.unref(o).e("arrow"))},null,6))}});var ME=re(uJ,[["__file","arrow.vue"]]);const pJ=se({style:{type:j([String,Object,Array]),default:()=>({})}}),mJ={name:"ElVisuallyHidden"},hJ=e.defineComponent({...mJ,props:pJ,setup(t){const n=t,o=e.computed(()=>[n.style,{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}]);return(r,l)=>(e.openBlock(),e.createElementBlock("span",e.mergeProps(r.$attrs,{style:e.unref(o)}),[e.renderSlot(r.$slots,"default")],16))}});var gJ=re(hJ,[["__file","visual-hidden.vue"]]);const yJ=["data-side"],bJ={name:"ElTooltipV2Content"},CJ=e.defineComponent({...bJ,props:{...dp,...TE},setup(t){const n=t,{triggerRef:o,contentId:r}=e.inject(Gl),l=e.ref(n.placement),a=e.ref(n.strategy),s=e.ref(null),{referenceRef:i,contentRef:c,middlewareData:d,x:f,y:u,update:p}=Iy({placement:l,strategy:a,middleware:e.computed(()=>{const C=[z6(n.offset)];return n.showArrow&&C.push(Py({arrowRef:s})),C})}),m=Yn().nextZIndex(),g=Z("tooltip-v2"),h=e.computed(()=>l.value.split("-")[0]),b=e.computed(()=>({position:e.unref(a),top:`${e.unref(u)||0}px`,left:`${e.unref(f)||0}px`,zIndex:m})),y=e.computed(()=>{if(!n.showArrow)return{};const{arrow:C}=e.unref(d);return{[`--${g.namespace.value}-tooltip-v2-arrow-x`]:`${C==null?void 0:C.x}px`||"",[`--${g.namespace.value}-tooltip-v2-arrow-y`]:`${C==null?void 0:C.y}px`||""}}),w=e.computed(()=>[g.e("content"),g.is("dark",n.effect==="dark"),g.is(e.unref(a)),n.contentClass]);return e.watch(s,()=>p()),e.watch(()=>n.placement,C=>l.value=C),e.onMounted(()=>{e.watch(()=>n.reference||o.value,C=>{i.value=C||void 0},{immediate:!0})}),e.provide(Vd,{arrowRef:s}),(C,k)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"contentRef",ref:c,style:e.normalizeStyle(e.unref(b)),"data-tooltip-v2-root":""},[C.nowrap?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",{key:0,"data-side":e.unref(h),class:e.normalizeClass(e.unref(w))},[e.renderSlot(C.$slots,"default",{contentStyle:e.unref(b),contentClass:e.unref(w)}),e.createVNode(e.unref(gJ),{id:e.unref(r),role:"tooltip"},{default:e.withCtx(()=>[C.ariaLabel?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(C.ariaLabel),1)],64)):e.renderSlot(C.$slots,"default",{key:1})]),_:3},8,["id"]),e.renderSlot(C.$slots,"arrow",{style:e.normalizeStyle(e.unref(y)),side:e.unref(h)})],10,yJ))],4))}});var RE=re(CJ,[["__file","content.vue"]]);const wJ=se({setRef:{type:j(Function),required:!0},onlyChild:Boolean});var kJ=e.defineComponent({props:wJ,setup(t,{slots:n}){const o=e.ref(),r=ys(o,l=>{l?t.setRef(l.nextElementSibling):t.setRef(null)});return()=>{var l;const[a]=((l=n.default)==null?void 0:l.call(n))||[],s=t.onlyChild?Y8(a.children):a.children;return e.createVNode(e.Fragment,{ref:r},[s])}}});const SJ={name:"ElTooltipV2Trigger"},EJ=e.defineComponent({...SJ,props:{...TE,...up},setup(t){const n=t,{onClose:o,onOpen:r,onDelayOpen:l,triggerRef:a,contentId:s}=e.inject(Gl);let i=!1;const c=w=>{a.value=w},d=()=>{i=!1},f=ft(n.onMouseEnter,l),u=ft(n.onMouseLeave,o),p=ft(n.onMouseDown,()=>{o(),i=!0,document.addEventListener("mouseup",d,{once:!0})}),m=ft(n.onFocus,()=>{i||r()}),g=ft(n.onBlur,o),h=ft(n.onClick,w=>{w.detail===0&&o()}),b={blur:g,click:h,focus:m,mousedown:p,mouseenter:f,mouseleave:u},y=(w,C,k)=>{w&&Object.entries(C).forEach(([E,S])=>{w[k](E,S)})};return e.watch(a,(w,C)=>{y(w,b,"addEventListener"),y(C,b,"removeEventListener"),w&&w.setAttribute("aria-describedby",s.value)}),e.onBeforeUnmount(()=>{y(a.value,b,"removeEventListener"),document.removeEventListener("mouseup",d)}),(w,C)=>w.nowrap?(e.openBlock(),e.createBlock(e.unref(kJ),{key:0,"set-ref":c,"only-child":""},{default:e.withCtx(()=>[e.renderSlot(w.$slots,"default")]),_:3})):(e.openBlock(),e.createElementBlock("button",e.mergeProps({key:1,ref_key:"triggerRef",ref:a},w.$attrs),[e.renderSlot(w.$slots,"default")],16))}});var NJ=re(EJ,[["__file","trigger.vue"]]);const $J={name:"ElTooltipV2"},BJ=e.defineComponent({...$J,props:sJ,setup(t){const n=t,o=e.toRefs(n),r=e.reactive(mo(o,Object.keys(cp))),l=e.reactive(mo(o,Object.keys(dp))),a=e.reactive(mo(o,Object.keys(fp))),s=e.reactive(mo(o,Object.keys(up)));return(i,c)=>(e.openBlock(),e.createBlock(dJ,e.normalizeProps(e.guardReactiveProps(a)),{default:e.withCtx(({open:d})=>[e.createVNode(NJ,e.mergeProps(s,{nowrap:""}),{default:e.withCtx(()=>[e.renderSlot(i.$slots,"trigger")]),_:3},16),(e.openBlock(),e.createBlock(e.Teleport,{to:i.to,disabled:!i.teleported},[i.fullTransition?(e.openBlock(),e.createBlock(e.Transition,e.normalizeProps(e.mergeProps({key:0},i.transitionProps)),{default:e.withCtx(()=>[i.alwaysOn||d?(e.openBlock(),e.createBlock(RE,e.normalizeProps(e.mergeProps({key:0},l)),{arrow:e.withCtx(({style:f,side:u})=>[i.showArrow?(e.openBlock(),e.createBlock(ME,e.mergeProps({key:0},r,{style:f,side:u}),null,16,["style","side"])):e.createCommentVNode("v-if",!0)]),default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},16)):e.createCommentVNode("v-if",!0)]),_:2},1040)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[i.alwaysOn||d?(e.openBlock(),e.createBlock(RE,e.normalizeProps(e.mergeProps({key:0},l)),{arrow:e.withCtx(({style:f,side:u})=>[i.showArrow?(e.openBlock(),e.createBlock(ME,e.mergeProps({key:0},r,{style:f,side:u}),null,16,["style","side"])):e.createCommentVNode("v-if",!0)]),default:e.withCtx(()=>[e.renderSlot(i.$slots,"default")]),_:3},16)):e.createCommentVNode("v-if",!0)],64))],8,["to","disabled"]))]),_:3},16))}});var _J=re(BJ,[["__file","tooltip.vue"]]);const vJ=Te(_J),pp="left-check-change",mp="right-check-change",Rr=se({data:{type:j(Array),default:()=>[]},titles:{type:j(Array),default:()=>[]},buttonTexts:{type:j(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:j(Function)},leftDefaultChecked:{type:j(Array),default:()=>[]},rightDefaultChecked:{type:j(Array),default:()=>[]},renderContent:{type:j(Function)},modelValue:{type:j(Array),default:()=>[]},format:{type:j(Object),default:()=>({})},filterable:Boolean,props:{type:j(Object),default:()=>st({label:"label",key:"key",disabled:"disabled"})},targetOrder:{type:String,values:["original","push","unshift"],default:"original"},validateEvent:{type:Boolean,default:!0}}),Ni=(t,n)=>[t,n].every(Ae)||Ae(t)&&Qt(n),IE={[at]:(t,n,o)=>[t,o].every(Ae)&&["left","right"].includes(n),[Ve]:t=>Ae(t),[pp]:Ni,[mp]:Ni},hp="checked-change",TJ=se({data:Rr.data,optionRender:{type:j(Function)},placeholder:String,title:String,filterable:Boolean,format:Rr.format,filterMethod:Rr.filterMethod,defaultChecked:Rr.leftDefaultChecked,props:Rr.props}),VJ={[hp]:Ni},Ba=t=>{const n={label:"label",key:"key",disabled:"disabled"};return e.computed(()=>({...n,...t.props}))},MJ=(t,n,o)=>{const r=Ba(t),l=e.computed(()=>t.data.filter(f=>ot(t.filterMethod)?t.filterMethod(n.query,f):String(f[r.value.label]||f[r.value.key]).toLowerCase().includes(n.query.toLowerCase()))),a=e.computed(()=>l.value.filter(f=>!f[r.value.disabled])),s=e.computed(()=>{const f=n.checked.length,u=t.data.length,{noChecked:p,hasChecked:m}=t.format;return p&&m?f>0?m.replace(/\${checked}/g,f.toString()).replace(/\${total}/g,u.toString()):p.replace(/\${total}/g,u.toString()):`${f}/${u}`}),i=e.computed(()=>{const f=n.checked.length;return f>0&&f{const f=a.value.map(u=>u[r.value.key]);n.allChecked=f.length>0&&f.every(u=>n.checked.includes(u))},d=f=>{n.checked=f?a.value.map(u=>u[r.value.key]):[]};return e.watch(()=>n.checked,(f,u)=>{if(c(),n.checkChangeByUser){const p=f.concat(u).filter(m=>!f.includes(m)||!u.includes(m));o(hp,f,p)}else o(hp,f),n.checkChangeByUser=!0}),e.watch(a,()=>{c()}),e.watch(()=>t.data,()=>{const f=[],u=l.value.map(p=>p[r.value.key]);n.checked.forEach(p=>{u.includes(p)&&f.push(p)}),n.checkChangeByUser=!1,n.checked=f}),e.watch(()=>t.defaultChecked,(f,u)=>{if(u&&f.length===u.length&&f.every(g=>u.includes(g)))return;const p=[],m=a.value.map(g=>g[r.value.key]);f.forEach(g=>{m.includes(g)&&p.push(g)}),n.checkChangeByUser=!1,n.checked=p},{immediate:!0}),{filteredData:l,checkableData:a,checkedSummary:s,isIndeterminate:i,updateAllChecked:c,handleAllCheckedChange:d}},RJ=(t,n)=>({onSourceCheckedChange:(l,a)=>{t.leftChecked=l,a&&n(pp,l,a)},onTargetCheckedChange:(l,a)=>{t.rightChecked=l,a&&n(mp,l,a)}}),IJ=t=>{const n=Ba(t),o=e.computed(()=>t.data.reduce((a,s)=>(a[s[n.value.key]]=s)&&a,{})),r=e.computed(()=>t.data.filter(a=>!t.modelValue.includes(a[n.value.key]))),l=e.computed(()=>t.targetOrder==="original"?t.data.filter(a=>t.modelValue.includes(a[n.value.key])):t.modelValue.reduce((a,s)=>{const i=o.value[s];return i&&a.push(i),a},[]));return{sourceData:r,targetData:l}},PJ=(t,n,o)=>{const r=Ba(t),l=(i,c,d)=>{o(Ve,i),o(at,i,c,d)};return{addToLeft:()=>{const i=t.modelValue.slice();n.rightChecked.forEach(c=>{const d=i.indexOf(c);d>-1&&i.splice(d,1)}),l(i,"left",n.rightChecked)},addToRight:()=>{let i=t.modelValue.slice();const c=t.data.filter(d=>{const f=d[r.value.key];return n.leftChecked.includes(f)&&!t.modelValue.includes(f)}).map(d=>d[r.value.key]);i=t.targetOrder==="unshift"?c.concat(i):i.concat(c),t.targetOrder==="original"&&(i=t.data.filter(d=>i.includes(d[r.value.key])).map(d=>d[r.value.key])),l(i,"right",n.leftChecked)}}},AJ={name:"ElTransferPanel"},OJ=e.defineComponent({...AJ,props:TJ,emits:VJ,setup(t,{expose:n,emit:o}){const r=t,l=e.useSlots(),a=({option:k})=>k,{t:s}=We(),i=Z("transfer"),c=e.reactive({checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}),d=Ba(r),{filteredData:f,checkedSummary:u,isIndeterminate:p,handleAllCheckedChange:m}=MJ(r,c,o),g=e.computed(()=>!Sn(c.query)&&Sn(f.value)),h=e.computed(()=>!Sn(l.default()[0].children)),{checked:b,allChecked:y,query:w,inputHover:C}=e.toRefs(c);return n({query:w}),(k,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(i).b("panel"))},[e.createElementVNode("p",{class:e.normalizeClass(e.unref(i).be("panel","header"))},[e.createVNode(e.unref(mn),{modelValue:e.unref(y),"onUpdate:modelValue":E[0]||(E[0]=S=>e.isRef(y)?y.value=S:null),indeterminate:e.unref(p),onChange:e.unref(m)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.title)+" ",1),e.createElementVNode("span",null,e.toDisplayString(e.unref(u)),1)]),_:1},8,["modelValue","indeterminate","onChange"])],2),e.createElementVNode("div",{class:e.normalizeClass([e.unref(i).be("panel","body"),e.unref(i).is("with-footer",e.unref(h))])},[k.filterable?(e.openBlock(),e.createBlock(e.unref(It),{key:0,modelValue:e.unref(w),"onUpdate:modelValue":E[1]||(E[1]=S=>e.isRef(w)?w.value=S:null),class:e.normalizeClass(e.unref(i).be("panel","filter")),size:"default",placeholder:k.placeholder,"prefix-icon":e.unref(jL),clearable:"",onMouseenter:E[2]||(E[2]=S=>C.value=!0),onMouseleave:E[3]||(E[3]=S=>C.value=!1)},null,8,["modelValue","class","placeholder","prefix-icon"])):e.createCommentVNode("v-if",!0),e.withDirectives(e.createVNode(e.unref(Ff),{modelValue:e.unref(b),"onUpdate:modelValue":E[4]||(E[4]=S=>e.isRef(b)?b.value=S:null),class:e.normalizeClass([e.unref(i).is("filterable",k.filterable),e.unref(i).be("panel","list")])},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f),S=>(e.openBlock(),e.createBlock(e.unref(mn),{key:S[e.unref(d).key],class:e.normalizeClass(e.unref(i).be("panel","item")),label:S[e.unref(d).key],disabled:S[e.unref(d).disabled]},{default:e.withCtx(()=>{var N;return[e.createVNode(a,{option:(N=k.optionRender)==null?void 0:N.call(k,S)},null,8,["option"])]}),_:2},1032,["class","label","disabled"]))),128))]),_:1},8,["modelValue","class"]),[[e.vShow,!e.unref(g)&&!e.unref(Sn)(k.data)]]),e.withDirectives(e.createElementVNode("p",{class:e.normalizeClass(e.unref(i).be("panel","empty"))},e.toDisplayString(e.unref(g)?e.unref(s)("el.transfer.noMatch"):e.unref(s)("el.transfer.noData")),3),[[e.vShow,e.unref(g)||e.unref(Sn)(k.data)]])],2),e.unref(h)?(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(e.unref(i).be("panel","footer"))},[e.renderSlot(k.$slots,"default")],2)):e.createCommentVNode("v-if",!0)],2))}});var PE=re(OJ,[["__file","transfer-panel.vue"]]);const zJ={key:0},DJ={key:0},LJ={name:"ElTransfer"},FJ=e.defineComponent({...LJ,props:Rr,emits:IE,setup(t,{expose:n,emit:o}){const r=t,l=e.useSlots(),{t:a}=We(),s=Z("transfer"),{formItem:i}=Co(),c=e.reactive({leftChecked:[],rightChecked:[]}),d=Ba(r),{sourceData:f,targetData:u}=IJ(r),{onSourceCheckedChange:p,onTargetCheckedChange:m}=RJ(c,o),{addToLeft:g,addToRight:h}=PJ(r,c,o),b=e.ref(),y=e.ref(),w=$=>{switch($){case"left":b.value.query="";break;case"right":y.value.query="";break}},C=e.computed(()=>r.buttonTexts.length===2),k=e.computed(()=>r.titles[0]||a("el.transfer.titles.0")),E=e.computed(()=>r.titles[1]||a("el.transfer.titles.1")),S=e.computed(()=>r.filterPlaceholder||a("el.transfer.filterPlaceholder"));e.watch(()=>r.modelValue,()=>{var $;r.validateEvent&&(($=i==null?void 0:i.validate)==null||$.call(i,"change").catch(B=>void 0))});const N=e.computed(()=>$=>r.renderContent?r.renderContent(e.h,$):l.default?l.default({option:$}):e.h("span",$[d.value.label]||$[d.value.key]));return n({clearQuery:w,leftPanel:b,rightPanel:y}),($,B)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(s).b())},[e.createVNode(PE,{ref_key:"leftPanel",ref:b,data:e.unref(f),"option-render":e.unref(N),placeholder:e.unref(S),title:e.unref(k),filterable:$.filterable,format:$.format,"filter-method":$.filterMethod,"default-checked":$.leftDefaultChecked,props:r.props,onCheckedChange:e.unref(p)},{default:e.withCtx(()=>[e.renderSlot($.$slots,"left-footer")]),_:3},8,["data","option-render","placeholder","title","filterable","format","filter-method","default-checked","props","onCheckedChange"]),e.createElementVNode("div",{class:e.normalizeClass(e.unref(s).e("buttons"))},[e.createVNode(e.unref(At),{type:"primary",class:e.normalizeClass([e.unref(s).e("button"),e.unref(s).is("with-texts",e.unref(C))]),disabled:e.unref(Sn)(c.rightChecked),onClick:e.unref(g)},{default:e.withCtx(()=>[e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(Lo))]),_:1}),e.unref(Rt)($.buttonTexts[0])?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("span",zJ,e.toDisplayString($.buttonTexts[0]),1))]),_:1},8,["class","disabled","onClick"]),e.createVNode(e.unref(At),{type:"primary",class:e.normalizeClass([e.unref(s).e("button"),e.unref(s).is("with-texts",e.unref(C))]),disabled:e.unref(Sn)(c.leftChecked),onClick:e.unref(h)},{default:e.withCtx(()=>[e.unref(Rt)($.buttonTexts[1])?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("span",DJ,e.toDisplayString($.buttonTexts[1]),1)),e.createVNode(e.unref(de),null,{default:e.withCtx(()=>[e.createVNode(e.unref(jt))]),_:1})]),_:1},8,["class","disabled","onClick"])],2),e.createVNode(PE,{ref_key:"rightPanel",ref:y,data:e.unref(u),"option-render":e.unref(N),placeholder:e.unref(S),filterable:$.filterable,format:$.format,"filter-method":$.filterMethod,title:e.unref(E),"default-checked":$.rightDefaultChecked,props:r.props,onCheckedChange:e.unref(m)},{default:e.withCtx(()=>[e.renderSlot($.$slots,"right-footer")]),_:3},8,["data","option-render","placeholder","filterable","format","filter-method","title","default-checked","props","onCheckedChange"])],2))}});var xJ=re(FJ,[["__file","transfer.vue"]]);const AE=Te(xJ),bl="$treeNodeId",OE=function(t,n){!n||n[bl]||Object.defineProperty(n,bl,{value:t.id,enumerable:!1,configurable:!1,writable:!1})},gp=function(t,n){return t?n[t]:n[bl]},yp=t=>{let n=!0,o=!0,r=!0;for(let l=0,a=t.length;l0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||OE(this,this.data),!this.data)return;const r=n.defaultExpandedKeys,l=n.key;l&&r&&r.includes(this.key)&&this.expand(null,n.autoExpandParent),l&&n.currentNodeKey!==void 0&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState(),this.parent&&(this.level===1||this.parent.expanded===!0)&&(this.canFocus=!0)}setData(n){Array.isArray(n)||OE(this,n),this.data=n,this.childNodes=[];let o;this.level===0&&Array.isArray(this.data)?o=this.data:o=Bi(this,"children")||[];for(let r=0,l=o.length;r-1)return n.childNodes[o+1]}return null}get previousSibling(){const n=this.parent;if(n){const o=n.childNodes.indexOf(this);if(o>-1)return o>0?n.childNodes[o-1]:null}return null}contains(n,o=!0){return(this.childNodes||[]).some(r=>r===n||o&&r.contains(n))}remove(){const n=this.parent;n&&n.removeChild(this)}insertChild(n,o,r){if(!n)throw new Error("InsertChild error: child is required.");if(!(n instanceof _a)){if(!r){const l=this.getChildren(!0);l.includes(n.data)||(typeof o=="undefined"||o<0?l.push(n.data):l.splice(o,0,n.data))}Object.assign(n,{parent:this,store:this.store}),n=e.reactive(new _a(n)),n instanceof _a&&n.initialize()}n.level=this.level+1,typeof o=="undefined"||o<0?this.childNodes.push(n):this.childNodes.splice(o,0,n),this.updateLeafState()}insertBefore(n,o){let r;o&&(r=this.childNodes.indexOf(o)),this.insertChild(n,r)}insertAfter(n,o){let r;o&&(r=this.childNodes.indexOf(o),r!==-1&&(r+=1)),this.insertChild(n,r)}removeChild(n){const o=this.getChildren()||[],r=o.indexOf(n.data);r>-1&&o.splice(r,1);const l=this.childNodes.indexOf(n);l>-1&&(this.store&&this.store.deregisterNode(n),n.parent=null,this.childNodes.splice(l,1)),this.updateLeafState()}removeChildByData(n){let o=null;for(let r=0;r{if(o){let l=this.parent;for(;l.level>0;)l.expanded=!0,l=l.parent}this.expanded=!0,n&&n(),this.childNodes.forEach(l=>{l.canFocus=!0})};this.shouldLoadData()?this.loadData(l=>{Array.isArray(l)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||$i(this),r())}):r()}doCreateChildren(n,o={}){n.forEach(r=>{this.insertChild(Object.assign({data:r},o),void 0,!0)})}collapse(){this.expanded=!1,this.childNodes.forEach(n=>{n.canFocus=!1})}shouldLoadData(){return this.store.lazy===!0&&this.store.load&&!this.loaded}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser!="undefined"){this.isLeaf=this.isLeafByUser;return}const n=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!n||n.length===0;return}this.isLeaf=!1}setChecked(n,o,r,l){if(this.indeterminate=n==="half",this.checked=n===!0,this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const{all:s,allWithoutDisable:i}=yp(this.childNodes);!this.isLeaf&&!s&&i&&(this.checked=!1,n=!1);const c=()=>{if(o){const d=this.childNodes;for(let p=0,m=d.length;p{c(),$i(this)},{checked:n!==!1});return}else c()}const a=this.parent;!a||a.level===0||r||$i(a)}getChildren(n=!1){if(this.level===0)return this.data;const o=this.data;if(!o)return null;const r=this.store.props;let l="children";return r&&(l=r.children||"children"),o[l]===void 0&&(o[l]=null),n&&!o[l]&&(o[l]=[]),o[l]}updateChildren(){const n=this.getChildren()||[],o=this.childNodes.map(a=>a.data),r={},l=[];n.forEach((a,s)=>{const i=a[bl];!!i&&o.findIndex(d=>d[bl]===i)>=0?r[i]={index:s,data:a}:l.push({index:s,data:a})}),this.store.lazy||o.forEach(a=>{r[a[bl]]||this.removeChildByData(a)}),l.forEach(({index:a,data:s})=>{this.insertChild({data:s},a)}),this.updateLeafState()}loadData(n,o={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(o).length)){this.loading=!0;const r=l=>{this.loaded=!0,this.loading=!1,this.childNodes=[],this.doCreateChildren(l,o),this.updateLeafState(),n&&n.call(this,l)};this.store.load(this,r)}else n&&n.call(this)}}var bp=_a;class KJ{constructor(n){this.currentNode=null,this.currentNodeKey=null;for(const o in n)Mt(n,o)&&(this[o]=n[o]);this.nodesMap={}}initialize(){if(this.root=new bp({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){const n=this.load;n(this.root,o=>{this.root.doCreateChildren(o),this._initDefaultCheckedNodes()})}else this._initDefaultCheckedNodes()}filter(n){const o=this.filterNodeMethod,r=this.lazy,l=function(a){const s=a.root?a.root.childNodes:a.childNodes;if(s.forEach(i=>{i.visible=o.call(i,n,i.data,i),l(i)}),!a.visible&&s.length){let i=!0;i=!s.some(c=>c.visible),a.root?a.root.visible=i===!1:a.visible=i===!1}!n||a.visible&&!a.isLeaf&&!r&&a.expand()};l(this)}setData(n){n!==this.root.data?(this.root.setData(n),this._initDefaultCheckedNodes()):this.root.updateChildren()}getNode(n){if(n instanceof bp)return n;const o=typeof n!="object"?n:gp(this.key,n);return this.nodesMap[o]||null}insertBefore(n,o){const r=this.getNode(o);r.parent.insertBefore({data:n},r)}insertAfter(n,o){const r=this.getNode(o);r.parent.insertAfter({data:n},r)}remove(n){const o=this.getNode(n);o&&o.parent&&(o===this.currentNode&&(this.currentNode=null),o.parent.removeChild(o))}append(n,o){const r=o?this.getNode(o):this.root;r&&r.insertChild({data:n})}_initDefaultCheckedNodes(){const n=this.defaultCheckedKeys||[],o=this.nodesMap;n.forEach(r=>{const l=o[r];l&&l.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(n){(this.defaultCheckedKeys||[]).includes(n.key)&&n.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(n){n!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=n,this._initDefaultCheckedNodes())}registerNode(n){const o=this.key;!n||!n.data||(o?n.key!==void 0&&(this.nodesMap[n.key]=n):this.nodesMap[n.id]=n)}deregisterNode(n){!this.key||!n||!n.data||(n.childNodes.forEach(r=>{this.deregisterNode(r)}),delete this.nodesMap[n.key])}getCheckedNodes(n=!1,o=!1){const r=[],l=function(a){(a.root?a.root.childNodes:a.childNodes).forEach(i=>{(i.checked||o&&i.indeterminate)&&(!n||n&&i.isLeaf)&&r.push(i.data),l(i)})};return l(this),r}getCheckedKeys(n=!1){return this.getCheckedNodes(n).map(o=>(o||{})[this.key])}getHalfCheckedNodes(){const n=[],o=function(r){(r.root?r.root.childNodes:r.childNodes).forEach(a=>{a.indeterminate&&n.push(a.data),o(a)})};return o(this),n}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(n=>(n||{})[this.key])}_getAllNodes(){const n=[],o=this.nodesMap;for(const r in o)Mt(o,r)&&n.push(o[r]);return n}updateChildren(n,o){const r=this.nodesMap[n];if(!r)return;const l=r.childNodes;for(let a=l.length-1;a>=0;a--){const s=l[a];this.remove(s.data)}for(let a=0,s=o.length;ac.level-i.level),a=Object.create(null),s=Object.keys(r);l.forEach(i=>i.setChecked(!1,!1));for(let i=0,c=l.length;i0;)a[p.data[n]]=!0,p=p.parent;if(d.isLeaf||this.checkStrictly){d.setChecked(!0,!1);continue}if(d.setChecked(!0,!0),o){d.setChecked(!1,!1);const m=function(g){g.childNodes.forEach(b=>{b.isLeaf||b.setChecked(!1,!1),m(b)})};m(d)}}}setCheckedNodes(n,o=!1){const r=this.key,l={};n.forEach(a=>{l[(a||{})[r]]=!0}),this._setCheckedKeys(r,o,l)}setCheckedKeys(n,o=!1){this.defaultCheckedKeys=n;const r=this.key,l={};n.forEach(a=>{l[a]=!0}),this._setCheckedKeys(r,o,l)}setDefaultExpandedKeys(n){n=n||[],this.defaultExpandedKeys=n,n.forEach(o=>{const r=this.getNode(o);r&&r.expand(null,this.autoExpandParent)})}setChecked(n,o,r){const l=this.getNode(n);l&&l.setChecked(!!o,r)}getCurrentNode(){return this.currentNode}setCurrentNode(n){const o=this.currentNode;o&&(o.isCurrent=!1),this.currentNode=n,this.currentNode.isCurrent=!0}setUserCurrentNode(n,o=!0){const r=n[this.key],l=this.nodesMap[r];this.setCurrentNode(l),o&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(n,o=!0){if(n==null){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const r=this.getNode(n);r&&(this.setCurrentNode(r),o&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}const WJ=e.defineComponent({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(t){const n=Z("tree"),o=e.inject("NodeInstance"),r=e.inject("RootTree");return()=>{const l=t.node,{data:a,store:s}=l;return t.renderContent?t.renderContent(e.h,{_self:o,node:l,data:a,store:s}):r.ctx.slots.default?r.ctx.slots.default({node:l,data:a}):e.h("span",{class:n.be("node","label")},[l.label])}}});var jJ=re(WJ,[["__file","tree-node-content.vue"]]);function zE(t){const n=e.inject("TreeNodeMap",null),o={treeNodeExpand:r=>{t.node!==r&&t.node.collapse()},children:[]};return n&&n.children.push(o),e.provide("TreeNodeMap",o),{broadcastExpanded:r=>{if(!!t.accordion)for(const l of o.children)l.treeNodeExpand(r)}}}const DE=Symbol("dragEvents");function UJ({props:t,ctx:n,el$:o,dropIndicator$:r,store:l}){const a=Z("tree"),s=e.ref({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null}),i=({event:f,treeNode:u})=>{if(typeof t.allowDrag=="function"&&!t.allowDrag(u.node))return f.preventDefault(),!1;f.dataTransfer.effectAllowed="move";try{f.dataTransfer.setData("text/plain","")}catch(p){}s.value.draggingNode=u,n.emit("node-drag-start",u.node,f)},c=({event:f,treeNode:u})=>{const p=u,m=s.value.dropNode;m&&m!==p&&en(m.$el,a.is("drop-inner"));const g=s.value.draggingNode;if(!g||!p)return;let h=!0,b=!0,y=!0,w=!0;typeof t.allowDrop=="function"&&(h=t.allowDrop(g.node,p.node,"prev"),w=b=t.allowDrop(g.node,p.node,"inner"),y=t.allowDrop(g.node,p.node,"next")),f.dataTransfer.dropEffect=b||h||y?"move":"none",(h||b||y)&&m!==p&&(m&&n.emit("node-drag-leave",g.node,m.node,f),n.emit("node-drag-enter",g.node,p.node,f)),(h||b||y)&&(s.value.dropNode=p),p.node.nextSibling===g.node&&(y=!1),p.node.previousSibling===g.node&&(h=!1),p.node.contains(g.node,!1)&&(b=!1),(g.node===p.node||g.node.contains(p.node))&&(h=!1,b=!1,y=!1);const C=p.$el.getBoundingClientRect(),k=o.value.getBoundingClientRect();let E;const S=h?b?.25:y?.45:1:-1,N=y?b?.75:h?.55:0:1;let $=-9999;const B=f.clientY-C.top;BC.height*N?E="after":b?E="inner":E="none";const P=p.$el.querySelector(`.${a.be("node","expand-icon")}`).getBoundingClientRect(),D=r.value;E==="before"?$=P.top-k.top:E==="after"&&($=P.bottom-k.top),D.style.top=`${$}px`,D.style.left=`${P.right-k.left}px`,E==="inner"?Un(p.$el,a.is("drop-inner")):en(p.$el,a.is("drop-inner")),s.value.showDropIndicator=E==="before"||E==="after",s.value.allowDrop=s.value.showDropIndicator||w,s.value.dropType=E,n.emit("node-drag-over",g.node,p.node,f)},d=f=>{const{draggingNode:u,dropType:p,dropNode:m}=s.value;if(f.preventDefault(),f.dataTransfer.dropEffect="move",u&&m){const g={data:u.node.data};p!=="none"&&u.node.remove(),p==="before"?m.node.parent.insertBefore(g,m.node):p==="after"?m.node.parent.insertAfter(g,m.node):p==="inner"&&m.node.insertChild(g),p!=="none"&&l.value.registerNode(g),en(m.$el,a.is("drop-inner")),n.emit("node-drag-end",u.node,m.node,p,f),p!=="none"&&n.emit("node-drop",u.node,m.node,p,f)}u&&!m&&n.emit("node-drag-end",u.node,null,p,f),s.value.showDropIndicator=!1,s.value.draggingNode=null,s.value.dropNode=null,s.value.allowDrop=!0};return e.provide(DE,{treeNodeDragStart:i,treeNodeDragOver:c,treeNodeDragEnd:d}),{dragState:s}}const GJ=e.defineComponent({name:"ElTreeNode",components:{ElCollapseTransition:ei,ElCheckbox:mn,NodeContent:jJ,ElIcon:de,Loading:xo},props:{node:{type:bp,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(t,n){const o=Z("tree"),{broadcastExpanded:r}=zE(t),l=e.inject("RootTree"),a=e.ref(!1),s=e.ref(!1),i=e.ref(null),c=e.ref(null),d=e.ref(null),f=e.inject(DE),u=e.getCurrentInstance();e.provide("NodeInstance",u),t.node.expanded&&(a.value=!0,s.value=!0);const p=l.props.children||"children";e.watch(()=>{const B=t.node.data[p];return B&&[...B]},()=>{t.node.updateChildren()}),e.watch(()=>t.node.indeterminate,B=>{h(t.node.checked,B)}),e.watch(()=>t.node.checked,B=>{h(B,t.node.indeterminate)}),e.watch(()=>t.node.expanded,B=>{e.nextTick(()=>a.value=B),B&&(s.value=!0)});const m=B=>gp(l.props.nodeKey,B.data),g=B=>{const P=t.props.class;if(!P)return{};let D;if(ot(P)){const{data:z}=B;D=P(z,B)}else D=P;return Fe(D)?{[D]:!0}:D},h=(B,P)=>{(i.value!==B||c.value!==P)&&l.ctx.emit("check-change",t.node.data,B,P),i.value=B,c.value=P},b=B=>{const P=l.store.value;P.setCurrentNode(t.node),l.ctx.emit("current-change",P.currentNode?P.currentNode.data:null,P.currentNode),l.currentNode.value=t.node,l.props.expandOnClickNode&&w(),l.props.checkOnClickNode&&!t.node.disabled&&C(null,{target:{checked:!t.node.checked}}),l.ctx.emit("node-click",t.node.data,t.node,u,B)},y=B=>{l.instance.vnode.props.onNodeContextmenu&&(B.stopPropagation(),B.preventDefault()),l.ctx.emit("node-contextmenu",B,t.node.data,t.node,u)},w=()=>{t.node.isLeaf||(a.value?(l.ctx.emit("node-collapse",t.node.data,t.node,u),t.node.collapse()):(t.node.expand(),n.emit("node-expand",t.node.data,t.node,u)))},C=(B,P)=>{t.node.setChecked(P.target.checked,!l.props.checkStrictly),e.nextTick(()=>{const D=l.store.value;l.ctx.emit("check",t.node.data,{checkedNodes:D.getCheckedNodes(),checkedKeys:D.getCheckedKeys(),halfCheckedNodes:D.getHalfCheckedNodes(),halfCheckedKeys:D.getHalfCheckedKeys()})})};return{ns:o,node$:d,tree:l,expanded:a,childNodeRendered:s,oldChecked:i,oldIndeterminate:c,getNodeKey:m,getNodeClass:g,handleSelectChange:h,handleClick:b,handleContextMenu:y,handleExpandIconClick:w,handleCheckChange:C,handleChildNodeExpand:(B,P,D)=>{r(P),l.ctx.emit("node-expand",B,P,D)},handleDragStart:B=>{!l.props.draggable||f.treeNodeDragStart({event:B,treeNode:t})},handleDragOver:B=>{B.preventDefault(),l.props.draggable&&f.treeNodeDragOver({event:B,treeNode:{$el:d.value,node:t.node}})},handleDrop:B=>{B.preventDefault()},handleDragEnd:B=>{!l.props.draggable||f.treeNodeDragEnd(B)},CaretRight:v0}}}),qJ=["aria-expanded","aria-disabled","aria-checked","draggable","data-key"],YJ=["aria-expanded"];function XJ(t,n,o,r,l,a){const s=e.resolveComponent("el-icon"),i=e.resolveComponent("el-checkbox"),c=e.resolveComponent("loading"),d=e.resolveComponent("node-content"),f=e.resolveComponent("el-tree-node"),u=e.resolveComponent("el-collapse-transition");return e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref:"node$",class:e.normalizeClass([t.ns.b("node"),t.ns.is("expanded",t.expanded),t.ns.is("current",t.node.isCurrent),t.ns.is("hidden",!t.node.visible),t.ns.is("focusable",!t.node.disabled),t.ns.is("checked",!t.node.disabled&&t.node.checked),t.getNodeClass(t.node)]),role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.props.draggable,"data-key":t.getNodeKey(t.node),onClick:n[1]||(n[1]=e.withModifiers((...p)=>t.handleClick&&t.handleClick(...p),["stop"])),onContextmenu:n[2]||(n[2]=(...p)=>t.handleContextMenu&&t.handleContextMenu(...p)),onDragstart:n[3]||(n[3]=e.withModifiers((...p)=>t.handleDragStart&&t.handleDragStart(...p),["stop"])),onDragover:n[4]||(n[4]=e.withModifiers((...p)=>t.handleDragOver&&t.handleDragOver(...p),["stop"])),onDragend:n[5]||(n[5]=e.withModifiers((...p)=>t.handleDragEnd&&t.handleDragEnd(...p),["stop"])),onDrop:n[6]||(n[6]=e.withModifiers((...p)=>t.handleDrop&&t.handleDrop(...p),["stop"]))},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.be("node","content")),style:e.normalizeStyle({paddingLeft:(t.node.level-1)*t.tree.props.indent+"px"})},[t.tree.props.icon||t.CaretRight?(e.openBlock(),e.createBlock(s,{key:0,class:e.normalizeClass([t.ns.be("node","expand-icon"),t.ns.is("leaf",t.node.isLeaf),{expanded:!t.node.isLeaf&&t.expanded}]),onClick:e.withModifiers(t.handleExpandIconClick,["stop"])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tree.props.icon||t.CaretRight)))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0),t.showCheckbox?(e.openBlock(),e.createBlock(i,{key:1,"model-value":t.node.checked,indeterminate:t.node.indeterminate,disabled:!!t.node.disabled,onClick:n[0]||(n[0]=e.withModifiers(()=>{},["stop"])),onChange:t.handleCheckChange},null,8,["model-value","indeterminate","disabled","onChange"])):e.createCommentVNode("v-if",!0),t.node.loading?(e.openBlock(),e.createBlock(s,{key:2,class:e.normalizeClass([t.ns.be("node","loading-icon"),t.ns.is("loading")])},{default:e.withCtx(()=>[e.createVNode(c)]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.createVNode(d,{node:t.node,"render-content":t.renderContent},null,8,["node","render-content"])],6),e.createVNode(u,null,{default:e.withCtx(()=>[!t.renderAfterExpand||t.childNodeRendered?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.ns.be("node","children")),role:"group","aria-expanded":t.expanded},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.node.childNodes,p=>(e.openBlock(),e.createBlock(f,{key:t.getNodeKey(p),"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:p,accordion:t.accordion,props:t.props,onNodeExpand:t.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"]))),128))],10,YJ)),[[e.vShow,t.expanded]]):e.createCommentVNode("v-if",!0)]),_:1})],42,qJ)),[[e.vShow,t.node.visible]])}var ZJ=re(GJ,[["render",XJ],["__file","tree-node.vue"]]);function JJ({el$:t},n){const o=Z("tree"),r=e.shallowRef([]),l=e.shallowRef([]);e.onMounted(()=>{s()}),e.onUpdated(()=>{r.value=Array.from(t.value.querySelectorAll("[role=treeitem]")),l.value=Array.from(t.value.querySelectorAll("input[type=checkbox]"))}),e.watch(l,i=>{i.forEach(c=>{c.setAttribute("tabindex","-1")})}),nt(t,"keydown",i=>{const c=i.target;if(!c.className.includes(o.b("node")))return;const d=i.code;r.value=Array.from(t.value.querySelectorAll(`.${o.is("focusable")}[role=treeitem]`));const f=r.value.indexOf(c);let u;if([ue.up,ue.down].includes(d)){if(i.preventDefault(),d===ue.up){u=f===-1?0:f!==0?f-1:r.value.length-1;const m=u;for(;!n.value.getNode(r.value[u].dataset.key).canFocus;){if(u--,u===m){u=-1;break}u<0&&(u=r.value.length-1)}}else{u=f===-1?0:f=r.value.length&&(u=0)}}u!==-1&&r.value[u].focus()}[ue.left,ue.right].includes(d)&&(i.preventDefault(),c.click());const p=c.querySelector('[type="checkbox"]');[ue.enter,ue.space].includes(d)&&p&&(i.preventDefault(),p.click())});const s=()=>{var i;r.value=Array.from(t.value.querySelectorAll(`.${o.is("focusable")}[role=treeitem]`)),l.value=Array.from(t.value.querySelectorAll("input[type=checkbox]"));const c=t.value.querySelectorAll(`.${o.is("checked")}[role=treeitem]`);if(c.length){c[0].setAttribute("tabindex","0");return}(i=r.value[0])==null||i.setAttribute("tabindex","0")}}const QJ=e.defineComponent({name:"ElTree",components:{ElTreeNode:ZJ},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:[String,Object]},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(t,n){const{t:o}=We(),r=Z("tree"),l=e.ref(new KJ({key:t.nodeKey,data:t.data,lazy:t.lazy,props:t.props,load:t.load,currentNodeKey:t.currentNodeKey,checkStrictly:t.checkStrictly,checkDescendants:t.checkDescendants,defaultCheckedKeys:t.defaultCheckedKeys,defaultExpandedKeys:t.defaultExpandedKeys,autoExpandParent:t.autoExpandParent,defaultExpandAll:t.defaultExpandAll,filterNodeMethod:t.filterNodeMethod}));l.value.initialize();const a=e.ref(l.value.root),s=e.ref(null),i=e.ref(null),c=e.ref(null),{broadcastExpanded:d}=zE(t),{dragState:f}=UJ({props:t,ctx:n,el$:i,dropIndicator$:c,store:l});JJ({el$:i},l);const u=e.computed(()=>{const{childNodes:T}=a.value;return!T||T.length===0||T.every(({visible:v})=>!v)});e.watch(()=>t.defaultCheckedKeys,T=>{l.value.setDefaultCheckedKey(T)}),e.watch(()=>t.defaultExpandedKeys,T=>{l.value.setDefaultExpandedKeys(T)}),e.watch(()=>t.data,T=>{l.value.setData(T)},{deep:!0}),e.watch(()=>t.checkStrictly,T=>{l.value.checkStrictly=T});const p=T=>{if(!t.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");l.value.filter(T)},m=T=>gp(t.nodeKey,T.data),g=T=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");const v=l.value.getNode(T);if(!v)return[];const V=[v.data];let H=v.parent;for(;H&&H!==a.value;)V.push(H.data),H=H.parent;return V.reverse()},h=(T,v)=>l.value.getCheckedNodes(T,v),b=T=>l.value.getCheckedKeys(T),y=()=>{const T=l.value.getCurrentNode();return T?T.data:null},w=()=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");const T=y();return T?T[t.nodeKey]:null},C=(T,v)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");l.value.setCheckedNodes(T,v)},k=(T,v)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");l.value.setCheckedKeys(T,v)},E=(T,v,V)=>{l.value.setChecked(T,v,V)},S=()=>l.value.getHalfCheckedNodes(),N=()=>l.value.getHalfCheckedKeys(),$=(T,v=!0)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");l.value.setUserCurrentNode(T,v)},B=(T,v=!0)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");l.value.setCurrentNodeKey(T,v)},P=T=>l.value.getNode(T),D=T=>{l.value.remove(T)},z=(T,v)=>{l.value.append(T,v)},I=(T,v)=>{l.value.insertBefore(T,v)},A=(T,v)=>{l.value.insertAfter(T,v)},L=(T,v,V)=>{d(v),n.emit("node-expand",T,v,V)},R=(T,v)=>{if(!t.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");l.value.updateChildren(T,v)};return e.provide("RootTree",{ctx:n,props:t,store:l,root:a,currentNode:s,instance:e.getCurrentInstance()}),e.provide(Lt,void 0),{ns:r,store:l,root:a,currentNode:s,dragState:f,el$:i,dropIndicator$:c,isEmpty:u,filter:p,getNodeKey:m,getNodePath:g,getCheckedNodes:h,getCheckedKeys:b,getCurrentNode:y,getCurrentKey:w,setCheckedNodes:C,setCheckedKeys:k,setChecked:E,getHalfCheckedNodes:S,getHalfCheckedKeys:N,setCurrentNode:$,setCurrentKey:B,t:o,getNode:P,remove:D,append:z,insertBefore:I,insertAfter:A,handleNodeExpand:L,updateKeyChildren:R}}});function eQ(t,n,o,r,l,a){var s;const i=e.resolveComponent("el-tree-node");return e.openBlock(),e.createElementBlock("div",{ref:"el$",class:e.normalizeClass([t.ns.b(),t.ns.is("dragging",!!t.dragState.draggingNode),t.ns.is("drop-not-allow",!t.dragState.allowDrop),t.ns.is("drop-inner",t.dragState.dropType==="inner"),{[t.ns.m("highlight-current")]:t.highlightCurrent}]),role:"tree"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.root.childNodes,c=>(e.openBlock(),e.createBlock(i,{key:t.getNodeKey(c),node:c,props:t.props,accordion:t.accordion,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,"render-content":t.renderContent,onNodeExpand:t.handleNodeExpand},null,8,["node","props","accordion","render-after-expand","show-checkbox","render-content","onNodeExpand"]))),128)),t.isEmpty?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.ns.e("empty-block"))},[e.createElementVNode("span",{class:e.normalizeClass(t.ns.e("empty-text"))},e.toDisplayString((s=t.emptyText)!=null?s:t.t("el.tree.emptyText")),3)],2)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("div",{ref:"dropIndicator$",class:e.normalizeClass(t.ns.e("drop-indicator"))},null,2),[[e.vShow,t.dragState.showDropIndicator]])],2)}var _i=re(QJ,[["render",eQ],["__file","tree.vue"]]);_i.install=t=>{t.component(_i.name,_i)};const vi=_i,LE=vi,tQ=(t,{attrs:n},{tree:o,key:r})=>{const l=Z("tree-select"),a={...mo(e.toRefs(t),Object.keys(Jo.props)),...n,valueKey:r,popperClass:e.computed(()=>{const s=[l.e("popper")];return t.popperClass&&s.push(t.popperClass),s.join(" ")}),filterMethod:(s="")=>{t.filterMethod&&t.filterMethod(s),e.nextTick(()=>{var i;(i=o.value)==null||i.filter(s)})},onVisibleChange:s=>{var i;(i=n.onVisibleChange)==null||i.call(n,s),t.filterable&&s&&a.filterMethod()}};return a};var nQ=e.defineComponent({extends:wa,setup(t,n){const o=wa.setup(t,n);delete o.selectOptionClick;const r=e.getCurrentInstance().proxy;return e.nextTick(()=>{o.select.cachedOptions.get(r.value)||o.select.onOptionCreate(r)}),o},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function Cp(t){return t||t===0}function FE(t){return Array.isArray(t)&&t.length}function wp(t){return Array.isArray(t)?t:Cp(t)?[t]:[]}function Ti(t,n,o,r,l){for(let a=0;a{e.watch(()=>t.modelValue,()=>{t.showCheckbox&&e.nextTick(()=>{const f=a.value;f&&!Jt(f.getCheckedKeys(),wp(t.modelValue))&&f.setCheckedKeys(wp(t.modelValue))})},{immediate:!0,deep:!0});const i=e.computed(()=>({value:s.value,...t.props})),c=(f,u)=>{var p;const m=i.value[f];return ot(m)?m(u,(p=a.value)==null?void 0:p.getNode(c("value",u))):u[m]},d=wp(t.modelValue).map(f=>Ti(t.data||[],u=>c("value",u)===f,u=>c("children",u),(u,p,m,g)=>g&&c("value",g))).filter(f=>Cp(f));return{...mo(e.toRefs(t),Object.keys(vi.props)),...n,nodeKey:s,expandOnClickNode:e.computed(()=>!t.checkStrictly),defaultExpandedKeys:e.computed(()=>t.defaultExpandedKeys?t.defaultExpandedKeys.concat(d):d),renderContent:(f,{node:u,data:p,store:m})=>f(nQ,{value:c("value",p),label:c("label",p),disabled:c("disabled",p)},t.renderContent?()=>t.renderContent(f,{node:u,data:p,store:m}):o.default?()=>o.default({node:u,data:p,store:m}):void 0),filterNodeMethod:(f,u,p)=>{var m;return t.filterNodeMethod?t.filterNodeMethod(f,u,p):f?(m=c("label",u))==null?void 0:m.includes(f):!0},onNodeClick:(f,u,p)=>{var m,g,h;if((m=n.onNodeClick)==null||m.call(n,f,u,p),!(t.showCheckbox&&t.checkOnClickNode))if(!t.showCheckbox&&(t.checkStrictly||u.isLeaf)){if(!c("disabled",f)){const b=(g=l.value)==null?void 0:g.options.get(c("value",f));(h=l.value)==null||h.handleOptionSelect(b,!0)}}else p.proxy.handleExpandIconClick()},onCheck:(f,u)=>{var p;(p=n.onCheck)==null||p.call(n,f,u);const m=c("value",f);if(t.checkStrictly)r(Ve,t.multiple?u.checkedKeys:u.checkedKeys.includes(m)?m:void 0);else if(t.multiple)r(Ve,a.value.getCheckedKeys(!0));else{const g=Ti([f],y=>!FE(c("children",y))&&!c("disabled",y),y=>c("children",y)),h=g?c("value",g):void 0,b=Cp(t.modelValue)&&!!Ti([f],y=>c("value",y)===t.modelValue,y=>c("children",y));r(Ve,h===t.modelValue||b?void 0:h)}}}},rQ=e.defineComponent({name:"ElTreeSelect",inheritAttrs:!1,props:{...Jo.props,...vi.props},setup(t,n){const{slots:o,expose:r}=n,l=e.ref(),a=e.ref(),s=e.computed(()=>t.nodeKey||t.valueKey||"value"),i=tQ(t,n,{select:l,tree:a,key:s}),c=oQ(t,n,{select:l,tree:a,key:s}),d=e.reactive({});return r(d),e.onMounted(()=>{Object.assign(d,{...mo(a.value,["filter","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentKey","getCurrentNode","setCurrentKey","setCurrentNode","getNode","remove","append","insertBefore","insertAfter"]),...mo(l.value,["focus","blur"])})}),()=>e.h(Jo,e.reactive({...i,ref:f=>l.value=f}),{...o,default:()=>e.h(vi,e.reactive({...c,ref:f=>a.value=f}))})}});var Vi=re(rQ,[["__file","tree-select.vue"]]);Vi.install=t=>{t.component(Vi.name,Vi)};const xE=Vi,kp=Symbol(),lQ={key:-1,level:-1,data:{}};var va=(t=>(t.KEY="id",t.LABEL="label",t.CHILDREN="children",t.DISABLED="disabled",t))(va||{}),Sp=(t=>(t.ADD="add",t.DELETE="delete",t))(Sp||{});const aQ=se({data:{type:j(Array),default:()=>st([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:j(Object),default:()=>st({children:"children",label:"label",disabled:"disabled",value:"id"})},highlightCurrent:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},defaultCheckedKeys:{type:j(Array),default:()=>st([])},checkStrictly:{type:Boolean,default:!1},defaultExpandedKeys:{type:j(Array),default:()=>st([])},indent:{type:Number,default:16},icon:{type:$t},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!1},currentNodeKey:{type:j([String,Number])},accordion:{type:Boolean,default:!1},filterMethod:{type:j(Function)},perfMode:{type:Boolean,default:!0}}),sQ=se({node:{type:j(Object),default:()=>st(lQ)},expanded:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},current:{type:Boolean,default:!1},hiddenExpandIcon:{type:Boolean,default:!1}}),iQ=se({node:{type:j(Object),required:!0}}),HE="node-click",KE="node-expand",WE="node-collapse",jE="current-change",UE="check",GE="check-change",qE="node-contextmenu",cQ={[HE]:(t,n,o)=>t&&n&&o,[KE]:(t,n)=>t&&n,[WE]:(t,n)=>t&&n,[jE]:(t,n)=>t&&n,[UE]:(t,n)=>t&&n,[GE]:(t,n)=>t&&typeof n=="boolean",[qE]:(t,n,o)=>t&&n&&o},dQ={click:(t,n)=>!!(t&&n),toggle:t=>!!t,check:(t,n)=>t&&typeof n=="boolean"};function fQ(t,n){const o=e.ref(new Set),r=e.ref(new Set),{emit:l}=e.getCurrentInstance();e.watch(()=>n.value,()=>e.nextTick(()=>{w(t.defaultCheckedKeys)}),{immediate:!0});const a=()=>{if(!n.value||!t.showCheckbox||t.checkStrictly)return;const{levelTreeNodeMap:C,maxLevel:k}=n.value,E=o.value,S=new Set;for(let N=k-1;N>=1;--N){const $=C.get(N);!$||$.forEach(B=>{const P=B.children;if(P){let D=!0,z=!1;for(const I of P){const A=I.key;if(E.has(A))z=!0;else if(S.has(A)){D=!1,z=!0;break}else D=!1}D?E.add(B.key):z?(S.add(B.key),E.delete(B.key)):(E.delete(B.key),S.delete(B.key))}})}r.value=S},s=C=>o.value.has(C.key),i=C=>r.value.has(C.key),c=(C,k,E=!0)=>{const S=o.value,N=($,B)=>{S[B?Sp.ADD:Sp.DELETE]($.key);const P=$.children;!t.checkStrictly&&P&&P.forEach(D=>{D.disabled||N(D,B)})};N(C,k),a(),E&&d(C,k)},d=(C,k)=>{const{checkedNodes:E,checkedKeys:S}=g(),{halfCheckedNodes:N,halfCheckedKeys:$}=h();l(UE,C.data,{checkedKeys:S,checkedNodes:E,halfCheckedKeys:$,halfCheckedNodes:N}),l(GE,C.data,k)};function f(C=!1){return g(C).checkedKeys}function u(C=!1){return g(C).checkedNodes}function p(){return h().halfCheckedKeys}function m(){return h().halfCheckedNodes}function g(C=!1){const k=[],E=[];if((n==null?void 0:n.value)&&t.showCheckbox){const{treeNodeMap:S}=n.value;o.value.forEach(N=>{const $=S.get(N);$&&(!C||C&&$.isLeaf)&&(E.push(N),k.push($.data))})}return{checkedKeys:E,checkedNodes:k}}function h(){const C=[],k=[];if((n==null?void 0:n.value)&&t.showCheckbox){const{treeNodeMap:E}=n.value;r.value.forEach(S=>{const N=E.get(S);N&&(k.push(S),C.push(N.data))})}return{halfCheckedNodes:C,halfCheckedKeys:k}}function b(C){o.value.clear(),r.value.clear(),w(C)}function y(C,k){if((n==null?void 0:n.value)&&t.showCheckbox){const E=n.value.treeNodeMap.get(C);E&&c(E,k,!1)}}function w(C){if(n!=null&&n.value){const{treeNodeMap:k}=n.value;if(t.showCheckbox&&k&&C)for(const E of C){const S=k.get(E);S&&!s(S)&&c(S,!0,!1)}}}return{updateCheckedKeys:a,toggleCheckbox:c,isChecked:s,isIndeterminate:i,getCheckedKeys:f,getCheckedNodes:u,getHalfCheckedKeys:p,getHalfCheckedNodes:m,setChecked:y,setCheckedKeys:b}}function uQ(t,n){const o=e.ref(new Set([])),r=e.ref(new Set([])),l=e.computed(()=>ot(t.filterMethod));function a(i){var c;if(!l.value)return;const d=new Set,f=r.value,u=o.value,p=[],m=((c=n.value)==null?void 0:c.treeNodes)||[],g=t.filterMethod;u.clear();function h(b){b.forEach(y=>{p.push(y),g!=null&&g(i,y.data)?p.forEach(C=>{d.add(C.key)}):y.isLeaf&&u.add(y.key);const w=y.children;if(w&&h(w),!y.isLeaf){if(!d.has(y.key))u.add(y.key);else if(w){let C=!0;for(const k of w)if(!u.has(k.key)){C=!1;break}C?f.add(y.key):f.delete(y.key)}}p.pop()})}return h(m),d}function s(i){return r.value.has(i.key)}return{hiddenExpandIconKeySet:r,hiddenNodeKeySet:o,doFilter:a,isForceHiddenExpandIcon:s}}function pQ(t,n){const o=e.ref(new Set(t.defaultExpandedKeys)),r=e.ref(),l=e.shallowRef();e.watch(()=>t.currentNodeKey,U=>{r.value=U},{immediate:!0}),e.watch(()=>t.data,U=>{J(U)},{immediate:!0});const{isIndeterminate:a,isChecked:s,toggleCheckbox:i,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:u,setChecked:p,setCheckedKeys:m}=fQ(t,l),{doFilter:g,hiddenNodeKeySet:h,isForceHiddenExpandIcon:b}=uQ(t,l),y=e.computed(()=>{var U;return((U=t.props)==null?void 0:U.value)||va.KEY}),w=e.computed(()=>{var U;return((U=t.props)==null?void 0:U.children)||va.CHILDREN}),C=e.computed(()=>{var U;return((U=t.props)==null?void 0:U.disabled)||va.DISABLED}),k=e.computed(()=>{var U;return((U=t.props)==null?void 0:U.label)||va.LABEL}),E=e.computed(()=>{const U=o.value,W=h.value,Q=[],Y=l.value&&l.value.treeNodes||[];function ee(){const pe=[];for(let he=Y.length-1;he>=0;--he)pe.push(Y[he]);for(;pe.length;){const he=pe.pop();if(!!he&&(W.has(he.key)||Q.push(he),U.has(he.key))){const we=he.children;if(we){const Me=we.length;for(let be=Me-1;be>=0;--be)pe.push(we[be])}}}}return ee(),Q}),S=e.computed(()=>E.value.length>0);function N(U){const W=new Map,Q=new Map;let Y=1;function ee(he,we=1,Me=void 0){var be;const Ke=[];for(const me of he){const ne=P(me),oe={level:we,key:ne,data:me};oe.label=z(me),oe.parent=Me;const fe=B(me);oe.disabled=D(me),oe.isLeaf=!fe||fe.length===0,fe&&fe.length&&(oe.children=ee(fe,we+1,oe)),Ke.push(oe),W.set(ne,oe),Q.has(we)||Q.set(we,[]),(be=Q.get(we))==null||be.push(oe)}return we>Y&&(Y=we),Ke}const pe=ee(U);return{treeNodeMap:W,levelTreeNodeMap:Q,maxLevel:Y,treeNodes:pe}}function $(U){const W=g(U);W&&(o.value=W)}function B(U){return U[w.value]}function P(U){return U?U[y.value]:""}function D(U){return U[C.value]}function z(U){return U[k.value]}function I(U){o.value.has(U.key)?v(U):T(U)}function A(U,W){n(HE,U.data,U,W),L(U),t.expandOnClickNode&&I(U),t.showCheckbox&&t.checkOnClickNode&&!U.disabled&&i(U,!s(U),!0)}function L(U){x(U)||(r.value=U.key,n(jE,U.data,U))}function R(U,W){i(U,W)}function T(U){const W=o.value;if((l==null?void 0:l.value)&&t.accordion){const{treeNodeMap:Q}=l.value;W.forEach(Y=>{const ee=Q.get(Y);ee&&ee.level===ee.level&&W.delete(Y)})}W.add(U.key),n(KE,U.data,U)}function v(U){o.value.delete(U.key),n(WE,U.data,U)}function V(U){return o.value.has(U.key)}function H(U){return!!U.disabled}function x(U){const W=r.value;return!!W&&W===U.key}function F(){var U,W;if(!!r.value)return(W=(U=l==null?void 0:l.value)==null?void 0:U.treeNodeMap.get(r.value))==null?void 0:W.data}function K(){return r.value}function X(U){r.value=U}function J(U){e.nextTick(()=>l.value=N(U))}return{tree:l,flattenTree:E,isNotEmpty:S,getKey:P,getChildren:B,toggleExpand:I,toggleCheckbox:i,isExpanded:V,isChecked:s,isIndeterminate:a,isDisabled:H,isCurrent:x,isForceHiddenExpandIcon:b,handleNodeClick:A,handleNodeCheck:R,getCurrentNode:F,getCurrentKey:K,setCurrentKey:X,getCheckedKeys:c,getCheckedNodes:d,getHalfCheckedKeys:f,getHalfCheckedNodes:u,setChecked:p,setCheckedKeys:m,filter:$,setData:J}}var mQ=e.defineComponent({name:"ElTreeNodeContent",props:iQ,setup(t){const n=e.inject(kp),o=Z("tree");return()=>{const r=t.node,{data:l}=r;return n!=null&&n.ctx.slots.default?n.ctx.slots.default({node:r,data:l}):e.h("span",{class:o.be("node","label")},[r==null?void 0:r.label])}}});const hQ="caret-right",gQ=e.defineComponent({name:"ElTreeNode",components:{ElIcon:de,CaretRight:v0,ElCheckbox:mn,ElNodeContent:mQ},props:sQ,emits:dQ,setup(t,{emit:n}){const o=e.inject(kp),r=Z("tree"),l=e.computed(()=>{var f;return(f=o==null?void 0:o.props.indent)!=null?f:16}),a=e.computed(()=>{var f;return(f=o==null?void 0:o.props.icon)!=null?f:hQ});return{ns:r,indent:l,icon:a,handleClick:f=>{n("click",t.node,f)},handleExpandIconClick:()=>{n("toggle",t.node)},handleCheckChange:f=>{n("check",t.node,f)},handleContextMenu:f=>{var u,p,m,g;(m=(p=(u=o==null?void 0:o.instance)==null?void 0:u.vnode)==null?void 0:p.props)!=null&&m.onNodeContextmenu&&(f.stopPropagation(),f.preventDefault()),o==null||o.ctx.emit(qE,f,(g=t.node)==null?void 0:g.data,t.node)}}}}),yQ=["aria-expanded","aria-disabled","aria-checked","data-key"];function bQ(t,n,o,r,l,a){var s,i,c;const d=e.resolveComponent("el-icon"),f=e.resolveComponent("el-checkbox"),u=e.resolveComponent("el-node-content");return e.openBlock(),e.createElementBlock("div",{ref:"node$",class:e.normalizeClass([t.ns.b("node"),t.ns.is("expanded",t.expanded),t.ns.is("current",t.current),t.ns.is("focusable",!t.disabled),t.ns.is("checked",!t.disabled&&t.checked)]),role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.disabled,"aria-checked":t.checked,"data-key":(s=t.node)==null?void 0:s.key,onClick:n[1]||(n[1]=e.withModifiers((...p)=>t.handleClick&&t.handleClick(...p),["stop"])),onContextmenu:n[2]||(n[2]=(...p)=>t.handleContextMenu&&t.handleContextMenu(...p))},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.be("node","content")),style:e.normalizeStyle({paddingLeft:`${(t.node.level-1)*t.indent}px`})},[t.icon?(e.openBlock(),e.createBlock(d,{key:0,class:e.normalizeClass([t.ns.is("leaf",!!((i=t.node)!=null&&i.isLeaf)),t.ns.is("hidden",t.hiddenExpandIcon),{expanded:!((c=t.node)!=null&&c.isLeaf)&&t.expanded},t.ns.be("node","expand-icon")]),onClick:e.withModifiers(t.handleExpandIconClick,["stop"])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0),t.showCheckbox?(e.openBlock(),e.createBlock(f,{key:1,"model-value":t.checked,indeterminate:t.indeterminate,disabled:t.disabled,onChange:t.handleCheckChange,onClick:n[0]||(n[0]=e.withModifiers(()=>{},["stop"]))},null,8,["model-value","indeterminate","disabled","onChange"])):e.createCommentVNode("v-if",!0),e.createVNode(u,{node:t.node},null,8,["node"])],6)],42,yQ)}var CQ=re(gQ,[["render",bQ],["__file","tree-node.vue"]]);const wQ=e.defineComponent({name:"ElTreeV2",components:{ElTreeNode:CQ,FixedSizeList:Fu},props:aQ,emits:cQ,setup(t,n){e.provide(kp,{ctx:n,props:t,instance:e.getCurrentInstance()}),e.provide(Lt,void 0);const{t:o}=We(),r=Z("tree"),{flattenTree:l,isNotEmpty:a,toggleExpand:s,isExpanded:i,isIndeterminate:c,isChecked:d,isDisabled:f,isCurrent:u,isForceHiddenExpandIcon:p,toggleCheckbox:m,handleNodeClick:g,handleNodeCheck:h,getCurrentNode:b,getCurrentKey:y,setCurrentKey:w,getCheckedKeys:C,getCheckedNodes:k,getHalfCheckedKeys:E,getHalfCheckedNodes:S,setChecked:N,setCheckedKeys:$,filter:B,setData:P}=pQ(t,n.emit);return n.expose({getCurrentNode:b,getCurrentKey:y,setCurrentKey:w,getCheckedKeys:C,getCheckedNodes:k,getHalfCheckedKeys:E,getHalfCheckedNodes:S,setChecked:N,setCheckedKeys:$,filter:B,setData:P}),{t:o,ns:r,flattenTree:l,itemSize:26,isNotEmpty:a,toggleExpand:s,toggleCheckbox:m,isExpanded:i,isIndeterminate:c,isChecked:d,isDisabled:f,isCurrent:u,isForceHiddenExpandIcon:p,handleNodeClick:g,handleNodeCheck:h}}});function kQ(t,n,o,r,l,a){var s;const i=e.resolveComponent("el-tree-node"),c=e.resolveComponent("fixed-size-list");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([t.ns.b(),{[t.ns.m("highlight-current")]:t.highlightCurrent}]),role:"tree"},[t.isNotEmpty?(e.openBlock(),e.createBlock(c,{key:0,"class-name":t.ns.b("virtual-list"),data:t.flattenTree,total:t.flattenTree.length,height:t.height,"item-size":t.itemSize,"perf-mode":t.perfMode},{default:e.withCtx(({data:d,index:f,style:u})=>[(e.openBlock(),e.createBlock(i,{key:d[f].key,style:e.normalizeStyle(u),node:d[f],expanded:t.isExpanded(d[f]),"show-checkbox":t.showCheckbox,checked:t.isChecked(d[f]),indeterminate:t.isIndeterminate(d[f]),disabled:t.isDisabled(d[f]),current:t.isCurrent(d[f]),"hidden-expand-icon":t.isForceHiddenExpandIcon(d[f]),onClick:t.handleNodeClick,onToggle:t.toggleExpand,onCheck:t.handleNodeCheck},null,8,["style","node","expanded","show-checkbox","checked","indeterminate","disabled","current","hidden-expand-icon","onClick","onToggle","onCheck"]))]),_:1},8,["class-name","data","total","height","item-size","perf-mode"])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(t.ns.e("empty-block"))},[e.createElementVNode("span",{class:e.normalizeClass(t.ns.e("empty-text"))},e.toDisplayString((s=t.emptyText)!=null?s:t.t("el.tree.emptyText")),3)],2))],2)}var SQ=re(wQ,[["render",kQ],["__file","tree.vue"]]);const YE=Te(SQ),EQ="ElUpload";class NQ extends Error{constructor(n,o,r,l){super(n),this.name="UploadAjaxError",this.status=o,this.method=r,this.url=l}}function XE(t,n,o){let r;return o.response?r=`${o.response.error||o.response}`:o.responseText?r=`${o.responseText}`:r=`fail to ${n.method} ${t} ${o.status}`,new NQ(r,o.status,n.method,t)}function $Q(t){const n=t.responseText||t.response;if(!n)return n;try{return JSON.parse(n)}catch(o){return n}}const BQ=t=>{typeof XMLHttpRequest=="undefined"&&Et(EQ,"XMLHttpRequest is undefined");const n=new XMLHttpRequest,o=t.action;n.upload&&n.upload.addEventListener("progress",a=>{const s=a;s.percent=a.total>0?a.loaded/a.total*100:0,t.onProgress(s)});const r=new FormData;if(t.data)for(const[a,s]of Object.entries(t.data))Array.isArray(s)?r.append(a,...s):r.append(a,s);r.append(t.filename,t.file,t.file.name),n.addEventListener("error",()=>{t.onError(XE(o,t,n))}),n.addEventListener("load",()=>{if(n.status<200||n.status>=300)return t.onError(XE(o,t,n));t.onSuccess($Q(n))}),n.open(t.method,o,!0),t.withCredentials&&"withCredentials"in n&&(n.withCredentials=!0);const l=t.headers||{};if(l instanceof Headers)l.forEach((a,s)=>n.setRequestHeader(s,a));else for(const[a,s]of Object.entries(l))Qt(s)||n.setRequestHeader(a,String(s));return n.send(r),n},Ep=["text","picture","picture-card"];let _Q=1;const Np=()=>Date.now()+_Q++,$p=se({action:{type:String,default:"#"},headers:{type:j(Object)},method:{type:String,default:"post"},data:{type:Object,default:()=>st({})},multiple:{type:Boolean,default:!1},name:{type:String,default:"file"},drag:{type:Boolean,default:!1},withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:""},type:{type:String,default:"select"},fileList:{type:j(Array),default:()=>st([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:Ep,default:"text"},httpRequest:{type:j(Function),default:BQ},disabled:Boolean,limit:Number}),ZE=se({...$p,beforeUpload:{type:j(Function),default:Xe},beforeRemove:{type:j(Function)},onRemove:{type:j(Function),default:Xe},onChange:{type:j(Function),default:Xe},onPreview:{type:j(Function),default:Xe},onSuccess:{type:j(Function),default:Xe},onProgress:{type:j(Function),default:Xe},onError:{type:j(Function),default:Xe},onExceed:{type:j(Function),default:Xe}}),JE=se({files:{type:j(Array),default:()=>st([])},disabled:{type:Boolean,default:!1},handlePreview:{type:j(Function),default:Xe},listType:{type:String,values:Ep,default:"text"}}),QE={remove:t=>!!t},vQ=["onKeydown"],TQ=["src"],VQ=["onClick"],MQ=["onClick"],RQ=["onClick"],IQ={name:"ElUploadList"},PQ=e.defineComponent({...IQ,props:JE,emits:QE,setup(t,{emit:n}){const o=t,{t:r}=We(),l=Z("upload"),a=Z("icon"),s=Z("list"),i=e.ref(!1),c=f=>{o.handlePreview(f)},d=f=>{n("remove",f)};return(f,u)=>(e.openBlock(),e.createBlock(e.TransitionGroup,{tag:"ul",class:e.normalizeClass([e.unref(l).b("list"),e.unref(l).bm("list",f.listType),e.unref(l).is("disabled",f.disabled)]),name:e.unref(s).b()},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.files,p=>(e.openBlock(),e.createElementBlock("li",{key:p.uid||p.name,class:e.normalizeClass([e.unref(l).be("list","item"),e.unref(l).is(p.status),{focusing:i.value}]),tabindex:"0",onKeydown:e.withKeys(m=>!f.disabled&&d(p),["delete"]),onFocus:u[0]||(u[0]=m=>i.value=!0),onBlur:u[1]||(u[1]=m=>i.value=!1),onClick:u[2]||(u[2]=m=>i.value=!1)},[e.renderSlot(f.$slots,"default",{file:p},()=>[f.listType==="picture"||p.status!=="uploading"&&f.listType==="picture-card"?(e.openBlock(),e.createElementBlock("img",{key:0,class:e.normalizeClass(e.unref(l).be("list","item-thumbnail")),src:p.url,alt:""},null,10,TQ)):e.createCommentVNode("v-if",!0),f.listType!=="picture"&&(p.status==="uploading"||f.listType!=="picture-card")?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l).be("list","item-info"))},[e.createElementVNode("a",{class:e.normalizeClass(e.unref(l).be("list","item-name")),onClick:e.withModifiers(m=>c(p),["prevent"])},[e.createVNode(e.unref(de),{class:e.normalizeClass(e.unref(a).m("document"))},{default:e.withCtx(()=>[e.createVNode(e.unref(bD))]),_:1},8,["class"]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(l).be("list","item-file-name"))},e.toDisplayString(p.name),3)],10,VQ),p.status==="uploading"?(e.openBlock(),e.createBlock(e.unref(Bu),{key:0,type:f.listType==="picture-card"?"circle":"line","stroke-width":f.listType==="picture-card"?6:2,percentage:Number(p.percentage),style:e.normalizeStyle(f.listType==="picture-card"?"":"margin-top: 0.5rem")},null,8,["type","stroke-width","percentage","style"])):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("label",{class:e.normalizeClass(e.unref(l).be("list","item-status-label"))},[f.listType==="text"?(e.openBlock(),e.createBlock(e.unref(de),{key:0,class:e.normalizeClass([e.unref(a).m("upload-success"),e.unref(a).m("circle-check")])},{default:e.withCtx(()=>[e.createVNode(e.unref(cd))]),_:1},8,["class"])):["picture-card","picture"].includes(f.listType)?(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass([e.unref(a).m("upload-success"),e.unref(a).m("check")])},{default:e.withCtx(()=>[e.createVNode(e.unref(Wl))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0)],2),f.disabled?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(e.unref(de),{key:2,class:e.normalizeClass(e.unref(a).m("close")),onClick:m=>d(p)},{default:e.withCtx(()=>[e.createVNode(e.unref(Pn))]),_:2},1032,["class","onClick"])),e.createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),e.createCommentVNode(" This is a bug which needs to be fixed "),e.createCommentVNode(" TODO: Fix the incorrect navigation interaction "),f.disabled?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("i",{key:3,class:e.normalizeClass(e.unref(a).m("close-tip"))},e.toDisplayString(e.unref(r)("el.upload.deleteTip")),3)),f.listType==="picture-card"?(e.openBlock(),e.createElementBlock("span",{key:4,class:e.normalizeClass(e.unref(l).be("list","item-actions"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(l).be("list","item-preview")),onClick:m=>f.handlePreview(p)},[e.createVNode(e.unref(de),{class:e.normalizeClass(e.unref(a).m("zoom-in"))},{default:e.withCtx(()=>[e.createVNode(e.unref(I0))]),_:1},8,["class"])],10,MQ),f.disabled?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(l).be("list","item-delete")),onClick:m=>d(p)},[e.createVNode(e.unref(de),{class:e.normalizeClass(e.unref(a).m("delete"))},{default:e.withCtx(()=>[e.createVNode(e.unref(uD))]),_:1},8,["class"])],10,RQ))],2)):e.createCommentVNode("v-if",!0)])],42,vQ))),128)),e.renderSlot(f.$slots,"append")]),_:3},8,["class","name"]))}});var e2=re(PQ,[["__file","upload-list.vue"]]);const t2=se({disabled:{type:Boolean,default:!1}}),n2={file:t=>Ae(t)},AQ=["onDrop","onDragover"],OQ={name:"ElUploadDrag"},zQ=e.defineComponent({...OQ,props:t2,emits:n2,setup(t,{emit:n}){const o=t,r="ElUploadDrag",l=e.inject(vd);l||Et(r,"usage: ");const a=Z("upload"),s=e.ref(!1),i=d=>{if(o.disabled)return;s.value=!1;const f=Array.from(d.dataTransfer.files),u=l.accept.value;if(!u){n("file",f);return}const p=f.filter(m=>{const{type:g,name:h}=m,b=h.includes(".")?`.${h.split(".").pop()}`:"",y=g.replace(/\/.*$/,"");return u.split(",").map(w=>w.trim()).filter(w=>w).some(w=>w.startsWith(".")?b===w:/\/\*$/.test(w)?y===w.replace(/\/\*$/,""):/^[^/]+\/[^/]+$/.test(w)?g===w:!1)});n("file",p)},c=()=>{o.disabled||(s.value=!0)};return(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(a).b("dragger"),e.unref(a).is("dragover",s.value)]),onDrop:e.withModifiers(i,["prevent"]),onDragover:e.withModifiers(c,["prevent"]),onDragleave:f[0]||(f[0]=e.withModifiers(u=>s.value=!1,["prevent"]))},[e.renderSlot(d.$slots,"default")],42,AQ))}});var DQ=re(zQ,[["__file","upload-dragger.vue"]]);const o2=se({...$p,beforeUpload:{type:j(Function),default:Xe},onRemove:{type:j(Function),default:Xe},onStart:{type:j(Function),default:Xe},onSuccess:{type:j(Function),default:Xe},onProgress:{type:j(Function),default:Xe},onError:{type:j(Function),default:Xe},onExceed:{type:j(Function),default:Xe}}),LQ=["onKeydown"],FQ=["name","multiple","accept"],xQ={name:"ElUploadContent",inheritAttrs:!1},HQ=e.defineComponent({...xQ,props:o2,setup(t,{expose:n}){const o=t,r=Z("upload"),l=e.shallowRef({}),a=e.shallowRef(),s=m=>{if(m.length===0)return;const{autoUpload:g,limit:h,fileList:b,multiple:y,onStart:w,onExceed:C}=o;if(h&&b.length+m.length>h){C(m,b);return}y||(m=m.slice(0,1));for(const k of m){const E=k;E.uid=Np(),w(E),g&&i(E)}},i=async m=>{if(a.value.value="",!o.beforeUpload)return c(m);let g;try{g=await o.beforeUpload(m)}catch(b){g=!1}if(g===!1){o.onRemove(m);return}let h=m;g instanceof Blob&&(g instanceof File?h=g:h=new File([g],m.name,{type:m.type})),c(Object.assign(h,{uid:m.uid}))},c=m=>{const{headers:g,data:h,method:b,withCredentials:y,name:w,action:C,onProgress:k,onSuccess:E,onError:S,httpRequest:N}=o,{uid:$}=m,B={headers:g||{},withCredentials:y,file:m,data:h,method:b,filename:w,action:C,onProgress:D=>{k(D,m)},onSuccess:D=>{E(D,m),delete l.value[$]},onError:D=>{S(D,m),delete l.value[$]}},P=N(B);l.value[$]=P,P instanceof Promise&&P.then(B.onSuccess,B.onError)},d=m=>{const g=m.target.files;!g||s(Array.from(g))},f=()=>{o.disabled||(a.value.value="",a.value.click())},u=()=>{f()};return n({abort:m=>{hO(l.value).filter(m?([h])=>String(m.uid)===h:()=>!0).forEach(([h,b])=>{b instanceof XMLHttpRequest&&b.abort(),delete l.value[h]})},upload:i}),(m,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(r).b(),e.unref(r).m(m.listType),e.unref(r).is("drag",m.drag)]),tabindex:"0",onClick:f,onKeydown:e.withKeys(e.withModifiers(u,["self"]),["enter","space"])},[m.drag?(e.openBlock(),e.createBlock(DQ,{key:0,disabled:m.disabled,onFile:s},{default:e.withCtx(()=>[e.renderSlot(m.$slots,"default")]),_:3},8,["disabled"])):e.renderSlot(m.$slots,"default",{key:1}),e.createElementVNode("input",{ref_key:"inputRef",ref:a,class:e.normalizeClass(e.unref(r).e("input")),name:m.name,multiple:m.multiple,accept:m.accept,type:"file",onChange:d,onClick:g[0]||(g[0]=e.withModifiers(()=>{},["stop"]))},null,42,FQ)],42,LQ))}});var r2=re(HQ,[["__file","upload-content.vue"]]);const l2="ElUpload",KQ=t=>{var n;(n=t.url)!=null&&n.startsWith("blob:")&&URL.revokeObjectURL(t.url)},WQ=(t,n)=>{const o=oO(t,"fileList",void 0,{passive:!0}),r=p=>o.value.find(m=>m.uid===p.uid);function l(p){var m;(m=n.value)==null||m.abort(p)}function a(p=["ready","uploading","success","fail"]){o.value=o.value.filter(m=>!p.includes(m.status))}const s=(p,m)=>{const g=r(m);!g||(console.error(p),g.status="fail",o.value.splice(o.value.indexOf(g),1),t.onError(p,g,o.value),t.onChange(g,o.value))},i=(p,m)=>{const g=r(m);!g||(t.onProgress(p,g,o.value),g.status="uploading",g.percentage=Math.round(p.percent))},c=(p,m)=>{const g=r(m);!g||(g.status="success",g.response=p,t.onSuccess(p,g,o.value),t.onChange(g,o.value))},d=p=>{const m={name:p.name,percentage:0,status:"ready",size:p.size,raw:p,uid:p.uid};if(t.listType==="picture-card"||t.listType==="picture")try{m.url=URL.createObjectURL(p)}catch(g){g.message,t.onError(g,m,o.value)}o.value=[...o.value,m],t.onChange(m,o.value)},f=async p=>{const m=p instanceof File?r(p):p;m||Et(l2,"file to be removed not found");const g=h=>{l(h);const b=o.value;b.splice(b.indexOf(h),1),t.onRemove(h,b),KQ(h)};t.beforeRemove?await t.beforeRemove(m,o.value)!==!1&&g(m):g(m)};function u(){o.value.filter(({status:p})=>p==="ready").forEach(({raw:p})=>{var m;return p&&((m=n.value)==null?void 0:m.upload(p))})}return e.watch(()=>t.listType,p=>{p!=="picture-card"&&p!=="picture"||(o.value=o.value.map(m=>{const{raw:g,url:h}=m;if(!h&&g)try{m.url=URL.createObjectURL(g)}catch(b){t.onError(b,m,o.value)}return m}))}),e.watch(o,p=>{for(const m of p)m.uid||(m.uid=Np()),m.status||(m.status="success")},{immediate:!0,deep:!0}),{uploadFiles:o,abort:l,clearFiles:a,handleError:s,handleProgress:i,handleStart:d,handleSuccess:c,handleRemove:f,submit:u}},jQ={name:"ElUpload"},UQ=e.defineComponent({...jQ,props:ZE,setup(t,{expose:n}){const o=t,r=e.useSlots(),l=bo(),a=e.shallowRef(),{abort:s,submit:i,clearFiles:c,uploadFiles:d,handleStart:f,handleError:u,handleRemove:p,handleSuccess:m,handleProgress:g}=WQ(o,a),h=e.computed(()=>o.listType==="picture-card"),b=e.computed(()=>({...o,onStart:f,onProgress:g,onSuccess:m,onError:u,onRemove:p}));return e.onBeforeUnmount(()=>{d.value.forEach(({url:y})=>{y!=null&&y.startsWith("blob:")&&URL.revokeObjectURL(y)})}),e.provide(vd,{accept:e.toRef(o,"accept")}),n({abort:s,submit:i,clearFiles:c,handleStart:f,handleRemove:p}),(y,w)=>(e.openBlock(),e.createElementBlock("div",null,[e.unref(h)&&y.showFileList?(e.openBlock(),e.createBlock(e2,{key:0,disabled:e.unref(l),"list-type":y.listType,files:e.unref(d),"handle-preview":y.onPreview,onRemove:e.unref(p)},e.createSlots({append:e.withCtx(()=>[y.listType==="picture-card"?(e.openBlock(),e.createBlock(r2,e.mergeProps({key:0,ref_key:"uploadRef",ref:a},e.unref(b)),{default:e.withCtx(()=>[e.unref(r).trigger?e.renderSlot(y.$slots,"trigger",{key:0}):e.createCommentVNode("v-if",!0),!e.unref(r).trigger&&e.unref(r).default?e.renderSlot(y.$slots,"default",{key:1}):e.createCommentVNode("v-if",!0)]),_:3},16)):e.createCommentVNode("v-if",!0)]),_:2},[y.$slots.file?{name:"default",fn:e.withCtx(({file:C})=>[e.renderSlot(y.$slots,"file",{file:C})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):e.createCommentVNode("v-if",!0),y.listType!=="picture-card"?(e.openBlock(),e.createBlock(r2,e.mergeProps({key:1,ref_key:"uploadRef",ref:a},e.unref(b)),{default:e.withCtx(()=>[e.unref(r).trigger?e.renderSlot(y.$slots,"trigger",{key:0}):e.createCommentVNode("v-if",!0),!e.unref(r).trigger&&e.unref(r).default?e.renderSlot(y.$slots,"default",{key:1}):e.createCommentVNode("v-if",!0)]),_:3},16)):e.createCommentVNode("v-if",!0),y.$slots.trigger?e.renderSlot(y.$slots,"default",{key:2}):e.createCommentVNode("v-if",!0),e.renderSlot(y.$slots,"tip"),!e.unref(h)&&y.showFileList?(e.openBlock(),e.createBlock(e2,{key:3,disabled:e.unref(l),"list-type":y.listType,files:e.unref(d),"handle-preview":y.onPreview,onRemove:e.unref(p)},e.createSlots({_:2},[y.$slots.file?{name:"default",fn:e.withCtx(({file:C})=>[e.renderSlot(y.$slots,"file",{file:C})])}:void 0]),1032,["disabled","list-type","files","handle-preview","onRemove"])):e.createCommentVNode("v-if",!0)]))}});var GQ=re(UQ,[["__file","upload.vue"]]);const a2=Te(GQ);var qQ=[Ly,Wy,Fb,pE,Kb,Ub,ff,Zb,Jb,At,gf,LC,xC,UC,GC,y1,h1,w1,mn,QC,Ff,S1,v1,T1,$1,A1,z1,H1,K1,W1,j1,U1,rw,sw,iw,uw,mw,yw,Iw,Pw,Aw,cu,Yw,Xw,de,tk,gu,It,yu,ak,yk,bk,Ck,Sk,Tk,Mk,Ak,df,Bu,Kf,i1,s1,Lk,xk,jk,Zn,Jo,wa,$k,hS,bS,CS,ES,vS,IS,PS,zS,ZS,JS,uE,kE,SE,ia,AC,NE,_E,vE,Ut,vJ,AE,LE,xE,YE,a2];const Ln="ElInfiniteScroll",YQ=50,XQ={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Bp=(t,n)=>Object.entries(XQ).reduce((o,[r,l])=>{var a,s;const{type:i,default:c}=l,d=t.getAttribute(`infinite-scroll-${r}`);let f=(s=(a=n[d])!=null?a:d)!=null?s:c;return f=f==="false"?!1:f,f=i(f),o[r]=Number.isNaN(f)?c:f,o},{}),s2=t=>{const{observer:n}=t[Ln];n&&(n.disconnect(),delete t[Ln].observer)},ZQ=(t,n)=>{const{container:o,containerEl:r,instance:l,observer:a,lastScrollTop:s}=t[Ln],{disabled:i,distance:c}=Bp(t,l),{clientHeight:d,scrollHeight:f,scrollTop:u}=r,p=u-s;if(t[Ln].lastScrollTop=u,a||i||p<0)return;let m=!1;if(o===t)m=f-(d+u)<=c;else{const{clientTop:g,scrollHeight:h}=t,b=sO(t,r);m=u+d>=b+g+h-c}m&&n.call(l)};function _p(t,n){const{containerEl:o,instance:r}=t[Ln],{disabled:l}=Bp(t,r);l||o.clientHeight===0||(o.scrollHeight<=o.clientHeight?n.call(r):s2(t))}var JQ={async mounted(t,n){const{instance:o,value:r}=n;ot(r)||Et(Ln,"'v-infinite-scroll' binding value must be a function"),await e.nextTick();const{delay:l,immediate:a}=Bp(t,o),s=id(t,!0),i=s===window?document.documentElement:s,c=zo(ZQ.bind(null,t,r),l);if(!!s){if(t[Ln]={instance:o,container:s,containerEl:i,delay:l,cb:r,onScroll:c,lastScrollTop:i.scrollTop},a){const d=new MutationObserver(zo(_p.bind(null,t,r),YQ));t[Ln].observer=d,d.observe(t,{childList:!0,subtree:!0}),_p(t,r)}s.addEventListener("scroll",c)}},unmounted(t){const{container:n,onScroll:o}=t[Ln];n==null||n.removeEventListener("scroll",o),s2(t)},async updated(t){t[Ln]||await e.nextTick();const{containerEl:n,cb:o,observer:r}=t[Ln];n.clientHeight&&r&&_p(t,o)}};const vp=JQ;vp.install=t=>{t.directive("InfiniteScroll",vp)};const i2=vp;function QQ(t){let n;const o=Z("loading"),r=e.ref(!1),l=e.reactive({...t,originalPosition:"",originalOverflow:"",visible:!1});function a(m){l.text=m}function s(){const m=l.parent;if(!m.vLoadingAddClassList){let g=m.getAttribute("loading-number");g=Number.parseInt(g)-1,g?m.setAttribute("loading-number",g.toString()):(en(m,o.bm("parent","relative")),m.removeAttribute("loading-number")),en(m,o.bm("parent","hidden"))}i(),u.unmount()}function i(){var m,g;(g=(m=p.$el)==null?void 0:m.parentNode)==null||g.removeChild(p.$el)}function c(){var m;if(t.beforeClose&&!t.beforeClose())return;const g=l.parent;g.vLoadingAddClassList=void 0,r.value=!0,clearTimeout(n),n=window.setTimeout(()=>{r.value&&(r.value=!1,s())},400),l.visible=!1,(m=t.closed)==null||m.call(t)}function d(){!r.value||(r.value=!1,s())}const f={name:"ElLoading",setup(){return()=>{const m=l.spinner||l.svg,g=e.h("svg",{class:"circular",viewBox:l.svgViewBox?l.svgViewBox:"25 25 50 50",...m?{innerHTML:m}:{}},[e.h("circle",{class:"path",cx:"50",cy:"50",r:"20",fill:"none"})]),h=l.text?e.h("p",{class:o.b("text")},[l.text]):void 0;return e.h(e.Transition,{name:o.b("fade"),onAfterLeave:d},{default:e.withCtx(()=>[e.withDirectives(e.createVNode("div",{style:{backgroundColor:l.background||""},class:[o.b("mask"),l.customClass,l.fullscreen?"is-fullscreen":""]},[e.h("div",{class:o.b("spinner")},[g,h])]),[[e.vShow,l.visible]])])})}}},u=e.createApp(f),p=u.mount(document.createElement("div"));return{...e.toRefs(l),setText:a,removeElLoadingChild:i,close:c,handleAfterLeave:d,vm:p,get $el(){return p.$el}}}let Mi;const Ri=function(t={}){if(!Oe)return;const n=eee(t);if(n.fullscreen&&Mi)return Mi;const o=QQ({...n,closed:()=>{var l;(l=n.closed)==null||l.call(n),n.fullscreen&&(Mi=void 0)}});tee(n,n.parent,o),c2(n,n.parent,o),n.parent.vLoadingAddClassList=()=>c2(n,n.parent,o);let r=n.parent.getAttribute("loading-number");return r?r=`${Number.parseInt(r)+1}`:r="1",n.parent.setAttribute("loading-number",r),n.parent.appendChild(o.$el),e.nextTick(()=>o.visible.value=n.visible),n.fullscreen&&(Mi=o),o},eee=t=>{var n,o,r,l;let a;return Fe(t.target)?a=(n=document.querySelector(t.target))!=null?n:document.body:a=t.target||document.body,{parent:a===document.body||t.body?document.body:a,background:t.background||"",svg:t.svg||"",svgViewBox:t.svgViewBox||"",spinner:t.spinner||!1,text:t.text||"",fullscreen:a===document.body&&((o=t.fullscreen)!=null?o:!0),lock:(r=t.lock)!=null?r:!1,customClass:t.customClass||"",visible:(l=t.visible)!=null?l:!0,target:a}},tee=async(t,n,o)=>{const{nextZIndex:r}=Yn(),l={};if(t.fullscreen)o.originalPosition.value=Gn(document.body,"position"),o.originalOverflow.value=Gn(document.body,"overflow"),l.zIndex=r();else if(t.parent===document.body){o.originalPosition.value=Gn(document.body,"position"),await e.nextTick();for(const a of["top","left"]){const s=a==="top"?"scrollTop":"scrollLeft";l[a]=`${t.target.getBoundingClientRect()[a]+document.body[s]+document.documentElement[s]-Number.parseInt(Gn(document.body,`margin-${a}`),10)}px`}for(const a of["height","width"])l[a]=`${t.target.getBoundingClientRect()[a]}px`}else o.originalPosition.value=Gn(n,"position");for(const[a,s]of Object.entries(l))o.$el.style[a]=s},c2=(t,n,o)=>{const r=Z("loading");o.originalPosition.value!=="absolute"&&o.originalPosition.value!=="fixed"?Un(n,r.bm("parent","relative")):en(n,r.bm("parent","relative")),t.fullscreen&&t.lock?Un(n,r.bm("parent","hidden")):en(n,r.bm("parent","hidden"))},Tp=Symbol("ElLoading"),d2=(t,n)=>{var o,r,l,a;const s=n.instance,i=p=>it(n.value)?n.value[p]:void 0,c=p=>{const m=Fe(p)&&(s==null?void 0:s[p])||p;return m&&e.ref(m)},d=p=>c(i(p)||t.getAttribute(`element-loading-${uO(p)}`)),f=(o=i("fullscreen"))!=null?o:n.modifiers.fullscreen,u={text:d("text"),svg:d("svg"),svgViewBox:d("svgViewBox"),spinner:d("spinner"),background:d("background"),customClass:d("customClass"),fullscreen:f,target:(r=i("target"))!=null?r:f?void 0:t,body:(l=i("body"))!=null?l:n.modifiers.body,lock:(a=i("lock"))!=null?a:n.modifiers.lock};t[Tp]={options:u,instance:Ri(u)}},nee=(t,n)=>{for(const o of Object.keys(n))e.isRef(n[o])&&(n[o].value=t[o])},Ii={mounted(t,n){n.value&&d2(t,n)},updated(t,n){const o=t[Tp];n.oldValue!==n.value&&(n.value&&!n.oldValue?d2(t,n):n.value&&n.oldValue?it(n.value)&&nee(n.value,o.options):o==null||o.instance.close())},unmounted(t){var n;(n=t[Tp])==null||n.instance.close()}},f2={install(t){t.directive("loading",Ii),t.config.globalProperties.$loading=Ri},directive:Ii,service:Ri},Vp=["success","info","warning","error"],qt=st({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:"",id:"",message:"",onClose:void 0,showClose:!1,type:"info",offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:Oe?document.body:void 0}),u2=se({customClass:{type:String,default:qt.customClass},center:{type:Boolean,default:qt.center},dangerouslyUseHTMLString:{type:Boolean,default:qt.dangerouslyUseHTMLString},duration:{type:Number,default:qt.duration},icon:{type:$t,default:qt.icon},id:{type:String,default:qt.id},message:{type:j([String,Object,Function]),default:qt.message},onClose:{type:j(Function),required:!1},showClose:{type:Boolean,default:qt.showClose},type:{type:String,values:Vp,default:qt.type},offset:{type:Number,default:qt.offset},zIndex:{type:Number,default:qt.zIndex},grouping:{type:Boolean,default:qt.grouping},repeatNum:{type:Number,default:qt.repeatNum}}),p2={destroy:()=>!0},no=e.shallowReactive([]),oee=t=>{const n=no.findIndex(l=>l.id===t),o=no[n];let r;return n>0&&(r=no[n-1]),{current:o,prev:r}},ree=t=>{const{prev:n}=oee(t);return n?n.vm.exposeProxy.bottom:0},lee=["id"],aee=["innerHTML"],see={name:"ElMessage"},iee=e.defineComponent({...see,props:u2,emits:p2,setup(t,{expose:n}){const o=t,{Close:r}=gs,l=Z("message"),a=e.ref(),s=e.ref(!1),i=e.ref(0);let c;const d=e.computed(()=>o.type?o.type==="error"?"danger":o.type:"info"),f=e.computed(()=>{const k=o.type;return{[l.bm("icon",k)]:k&&Ho[k]}}),u=e.computed(()=>o.icon||Ho[o.type]||""),p=e.computed(()=>ree(o.id)),m=e.computed(()=>o.offset+p.value),g=e.computed(()=>i.value+m.value),h=e.computed(()=>({top:`${m.value}px`,zIndex:o.zIndex}));function b(){o.duration!==0&&({stop:c}=pr(()=>{w()},o.duration))}function y(){c==null||c()}function w(){s.value=!1}function C({code:k}){k===ue.esc&&w()}return e.onMounted(()=>{b(),s.value=!0}),e.watch(()=>o.repeatNum,()=>{y(),b()}),nt(document,"keydown",C),Wt(a,()=>{i.value=a.value.getBoundingClientRect().height}),n({visible:s,bottom:g,close:w}),(k,E)=>(e.openBlock(),e.createBlock(e.Transition,{name:e.unref(l).b("fade"),onBeforeLeave:k.onClose,onAfterLeave:E[0]||(E[0]=S=>k.$emit("destroy")),persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{id:k.id,ref_key:"messageRef",ref:a,class:e.normalizeClass([e.unref(l).b(),{[e.unref(l).m(k.type)]:k.type&&!k.icon},e.unref(l).is("center",k.center),e.unref(l).is("closable",k.showClose),k.customClass]),style:e.normalizeStyle(e.unref(h)),role:"alert",onMouseenter:y,onMouseleave:b},[k.repeatNum>1?(e.openBlock(),e.createBlock(e.unref(ff),{key:0,value:k.repeatNum,type:e.unref(d),class:e.normalizeClass(e.unref(l).e("badge"))},null,8,["value","type","class"])):e.createCommentVNode("v-if",!0),e.unref(u)?(e.openBlock(),e.createBlock(e.unref(de),{key:1,class:e.normalizeClass([e.unref(l).e("icon"),e.unref(f)])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(u))))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.renderSlot(k.$slots,"default",{},()=>[k.dangerouslyUseHTMLString?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createCommentVNode(" Caution here, message could've been compromised, never use user's input as message "),e.createElementVNode("p",{class:e.normalizeClass(e.unref(l).e("content")),innerHTML:k.message},null,10,aee)],2112)):(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(e.unref(l).e("content"))},e.toDisplayString(k.message),3))]),k.showClose?(e.openBlock(),e.createBlock(e.unref(de),{key:2,class:e.normalizeClass(e.unref(l).e("closeBtn")),onClick:e.withModifiers(w,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(r))]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0)],46,lee),[[e.vShow,s.value]])]),_:3},8,["name","onBeforeLeave"]))}});var cee=re(iee,[["__file","message.vue"]]);let dee=1;const m2=t=>{const n=!t||Fe(t)||e.isVNode(t)||ot(t)?{message:t}:t,o={...qt,...n};if(!o.appendTo)o.appendTo=document.body;else if(Fe(o.appendTo)){let r=document.querySelector(o.appendTo);go(r)||(r=document.body),o.appendTo=r}return o},fee=t=>{const n=no.indexOf(t);if(n===-1)return;no.splice(n,1);const{handler:o}=t;o.close()},uee=({appendTo:t,...n},o)=>{const{nextZIndex:r}=Yn(),l=`message_${dee++}`,a=n.onClose,s=document.createElement("div"),i={...n,zIndex:r()+n.zIndex,id:l,onClose:()=>{a==null||a(),fee(u)},onDestroy:()=>{e.render(null,s)}},c=e.createVNode(cee,i,ot(i.message)||e.isVNode(i.message)?{default:i.message}:null);c.appContext=o||Cl._context,e.render(c,s),t.appendChild(s.firstElementChild);const d=c.component,u={id:l,vnode:c,vm:d,handler:{close:()=>{d.exposeProxy.visible=!1}},props:c.component.props};return u},Cl=(t={},n)=>{if(!Oe)return{close:()=>{}};if(Ne(oi.max)&&no.length>=oi.max)return{close:()=>{}};const o=m2(t);if(o.grouping&&no.length){const l=no.find(({vnode:a})=>{var s;return((s=a.props)==null?void 0:s.message)===o.message});if(l)return l.props.repeatNum+=1,l.props.type=o.type,l.handler}const r=uee(o,n);return no.push(r),r.handler};Vp.forEach(t=>{Cl[t]=(n={},o)=>{const r=m2(n);return Cl({...r,type:t},o)}});function pee(t){for(const n of no)(!t||t===n.props.type)&&n.handler.close()}Cl.closeAll=pee,Cl._context=null;var mee=Cl;const h2=O0(mee,"$message"),hee=e.defineComponent({name:"ElMessageBox",directives:{TrapFocus:SC},components:{ElButton:At,ElFocusTrap:As,ElInput:It,ElOverlay:li,ElIcon:de,...gs},inheritAttrs:!1,props:{buttonSize:{type:String,validator:hr},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(t,{emit:n}){const{t:o}=We(),r=Z("message-box"),l=e.ref(!1),{nextZIndex:a}=Yn(),s=e.reactive({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:null,inputValidator:null,inputErrorMessage:"",message:null,modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:a()}),i=e.computed(()=>{const I=s.type;return{[r.bm("icon",I)]:I&&Ho[I]}}),c=Nn(),d=Nn(),f=yt(e.computed(()=>t.buttonSize),{prop:!0,form:!0,formItem:!0}),u=e.computed(()=>s.icon||Ho[s.type]||""),p=e.computed(()=>!!s.message),m=e.ref(),g=e.ref(),h=e.ref(),b=e.ref(),y=e.ref(),w=e.computed(()=>s.confirmButtonClass);e.watch(()=>s.inputValue,async I=>{await e.nextTick(),t.boxType==="prompt"&&I!==null&&B()},{immediate:!0}),e.watch(()=>l.value,I=>{var A,L;I&&(t.boxType!=="prompt"&&(s.autofocus?h.value=(L=(A=y.value)==null?void 0:A.$el)!=null?L:m.value:h.value=m.value),s.zIndex=a()),t.boxType==="prompt"&&(I?e.nextTick().then(()=>{var R;b.value&&b.value.$el&&(s.autofocus?h.value=(R=P())!=null?R:m.value:h.value=m.value)}):(s.editorErrorMessage="",s.validateError=!1))});const C=e.computed(()=>t.draggable);Id(m,g,C),e.onMounted(async()=>{await e.nextTick(),t.closeOnHashChange&&window.addEventListener("hashchange",k)}),e.onBeforeUnmount(()=>{t.closeOnHashChange&&window.removeEventListener("hashchange",k)});function k(){!l.value||(l.value=!1,e.nextTick(()=>{s.action&&n("action",s.action)}))}const E=()=>{t.closeOnClickModal&&$(s.distinguishCancelAndClose?"close":"cancel")},S=_s(E),N=I=>{if(s.inputType!=="textarea")return I.preventDefault(),$("confirm")},$=I=>{var A;t.boxType==="prompt"&&I==="confirm"&&!B()||(s.action=I,s.beforeClose?(A=s.beforeClose)==null||A.call(s,I,s,k):k())},B=()=>{if(t.boxType==="prompt"){const I=s.inputPattern;if(I&&!I.test(s.inputValue||""))return s.editorErrorMessage=s.inputErrorMessage||o("el.messagebox.error"),s.validateError=!0,!1;const A=s.inputValidator;if(typeof A=="function"){const L=A(s.inputValue);if(L===!1)return s.editorErrorMessage=s.inputErrorMessage||o("el.messagebox.error"),s.validateError=!0,!1;if(typeof L=="string")return s.editorErrorMessage=L,s.validateError=!0,!1}}return s.editorErrorMessage="",s.validateError=!1,!0},P=()=>{const I=b.value.$refs;return I.input||I.textarea},D=()=>{$("close")},z=()=>{t.closeOnPressEscape&&D()};return t.lockScroll&&Od(l),X0(l),{...e.toRefs(s),ns:r,overlayEvent:S,visible:l,hasMessage:p,typeClass:i,contentId:c,inputId:d,btnSize:f,iconComponent:u,confirmButtonClasses:w,rootRef:m,focusStartRef:h,headerRef:g,inputRef:b,confirmRef:y,doClose:k,handleClose:D,onCloseRequested:z,handleWrapperClick:E,handleInputEnter:N,handleAction:$,t:o}}}),gee=["aria-label","aria-describedby"],yee=["aria-label"],bee=["id"];function Cee(t,n,o,r,l,a){const s=e.resolveComponent("el-icon"),i=e.resolveComponent("close"),c=e.resolveComponent("el-input"),d=e.resolveComponent("el-button"),f=e.resolveComponent("el-focus-trap"),u=e.resolveComponent("el-overlay");return e.openBlock(),e.createBlock(e.Transition,{name:"fade-in-linear",onAfterLeave:n[11]||(n[11]=p=>t.$emit("vanish")),persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(u,{"z-index":t.zIndex,"overlay-class":[t.ns.is("message-box"),t.modalClass],mask:t.modal},{default:e.withCtx(()=>[e.createElementVNode("div",{role:"dialog","aria-label":t.title,"aria-modal":"true","aria-describedby":t.showInput?void 0:t.contentId,class:e.normalizeClass(`${t.ns.namespace.value}-overlay-message-box`),onClick:n[8]||(n[8]=(...p)=>t.overlayEvent.onClick&&t.overlayEvent.onClick(...p)),onMousedown:n[9]||(n[9]=(...p)=>t.overlayEvent.onMousedown&&t.overlayEvent.onMousedown(...p)),onMouseup:n[10]||(n[10]=(...p)=>t.overlayEvent.onMouseup&&t.overlayEvent.onMouseup(...p))},[e.createVNode(f,{loop:"",trapped:t.visible,"focus-trap-el":t.rootRef,"focus-start-el":t.focusStartRef,onReleaseRequested:t.onCloseRequested},{default:e.withCtx(()=>[e.createElementVNode("div",{ref:"rootRef",class:e.normalizeClass([t.ns.b(),t.customClass,t.ns.is("draggable",t.draggable),{[t.ns.m("center")]:t.center}]),style:e.normalizeStyle(t.customStyle),tabindex:"-1",onClick:n[7]||(n[7]=e.withModifiers(()=>{},["stop"]))},[t.title!==null&&t.title!==void 0?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"headerRef",class:e.normalizeClass(t.ns.e("header"))},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("title"))},[t.iconComponent&&t.center?(e.openBlock(),e.createBlock(s,{key:0,class:e.normalizeClass([t.ns.e("status"),t.typeClass])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.iconComponent)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.createElementVNode("span",null,e.toDisplayString(t.title),1)],2),t.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:e.normalizeClass(t.ns.e("headerbtn")),"aria-label":t.t("el.messagebox.close"),onClick:n[0]||(n[0]=p=>t.handleAction(t.distinguishCancelAndClose?"close":"cancel")),onKeydown:n[1]||(n[1]=e.withKeys(e.withModifiers(p=>t.handleAction(t.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[e.createVNode(s,{class:e.normalizeClass(t.ns.e("close"))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1},8,["class"])],42,yee)):e.createCommentVNode("v-if",!0)],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{id:t.contentId,class:e.normalizeClass(t.ns.e("content"))},[e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("container"))},[t.iconComponent&&!t.center&&t.hasMessage?(e.openBlock(),e.createBlock(s,{key:0,class:e.normalizeClass([t.ns.e("status"),t.typeClass])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.iconComponent)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),t.hasMessage?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(t.ns.e("message"))},[e.renderSlot(t.$slots,"default",{},()=>[t.dangerouslyUseHTMLString?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.showInput?"label":"p"),{key:1,for:t.showInput?t.inputId:void 0,innerHTML:t.message},null,8,["for","innerHTML"])):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.showInput?"label":"p"),{key:0,for:t.showInput?t.inputId:void 0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.dangerouslyUseHTMLString?"":t.message),1)]),_:1},8,["for"]))])],2)):e.createCommentVNode("v-if",!0)],2),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("input"))},[e.createVNode(c,{id:t.inputId,ref:"inputRef",modelValue:t.inputValue,"onUpdate:modelValue":n[2]||(n[2]=p=>t.inputValue=p),type:t.inputType,placeholder:t.inputPlaceholder,"aria-invalid":t.validateError,class:e.normalizeClass({invalid:t.validateError}),onKeydown:e.withKeys(t.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("errormsg")),style:e.normalizeStyle({visibility:t.editorErrorMessage?"visible":"hidden"})},e.toDisplayString(t.editorErrorMessage),7)],2),[[e.vShow,t.showInput]])],10,bee),e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("btns"))},[t.showCancelButton?(e.openBlock(),e.createBlock(d,{key:0,loading:t.cancelButtonLoading,class:e.normalizeClass([t.cancelButtonClass]),round:t.roundButton,size:t.btnSize,onClick:n[3]||(n[3]=p=>t.handleAction("cancel")),onKeydown:n[4]||(n[4]=e.withKeys(e.withModifiers(p=>t.handleAction("cancel"),["prevent"]),["enter"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.cancelButtonText||t.t("el.messagebox.cancel")),1)]),_:1},8,["loading","class","round","size"])):e.createCommentVNode("v-if",!0),e.withDirectives(e.createVNode(d,{ref:"confirmRef",type:"primary",loading:t.confirmButtonLoading,class:e.normalizeClass([t.confirmButtonClasses]),round:t.roundButton,disabled:t.confirmButtonDisabled,size:t.btnSize,onClick:n[5]||(n[5]=p=>t.handleAction("confirm")),onKeydown:n[6]||(n[6]=e.withKeys(e.withModifiers(p=>t.handleAction("confirm"),["prevent"]),["enter"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.confirmButtonText||t.t("el.messagebox.confirm")),1)]),_:1},8,["loading","class","round","disabled","size"]),[[e.vShow,t.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,gee)]),_:3},8,["z-index","overlay-class","mask"]),[[e.vShow,t.visible]])]),_:3})}var wee=re(hee,[["render",Cee],["__file","index.vue"]]);const Ta=new Map,kee=(t,n,o=null)=>{const r=e.h(wee,t);return r.appContext=o,e.render(r,n),document.body.appendChild(n.firstElementChild),r.component},See=()=>document.createElement("div"),Eee=(t,n)=>{const o=See();t.onVanish=()=>{e.render(null,o),Ta.delete(l)},t.onAction=a=>{const s=Ta.get(l);let i;t.showInput?i={value:l.inputValue,action:a}:i=a,t.callback?t.callback(i,r.proxy):a==="cancel"||a==="close"?t.distinguishCancelAndClose&&a!=="cancel"?s.reject("close"):s.reject("cancel"):s.resolve(i)};const r=kee(t,o,n),l=r.proxy;for(const a in t)Mt(t,a)&&!Mt(l.$props,a)&&(l[a]=t[a]);return e.watch(()=>l.message,(a,s)=>{e.isVNode(a)?r.slots.default=()=>[a]:e.isVNode(s)&&!e.isVNode(a)&&delete r.slots.default},{immediate:!0}),l.visible=!0,l};function wl(t,n=null){if(!Oe)return Promise.reject();let o;return Fe(t)||e.isVNode(t)?t={message:t}:o=t.callback,new Promise((r,l)=>{const a=Eee(t,n!=null?n:wl._context);Ta.set(a,{options:t,callback:o,resolve:r,reject:l})})}const Nee=["alert","confirm","prompt"],$ee={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};Nee.forEach(t=>{wl[t]=Bee(t)});function Bee(t){return(n,o,r,l)=>{let a;return it(o)?(r=o,a=""):Rt(o)?a="":a=o,wl(Object.assign({title:a,message:n,type:"",...$ee[t]},r,{boxType:t}),l)}}wl.close=()=>{Ta.forEach((t,n)=>{n.doClose()}),Ta.clear()},wl._context=null;const or=wl;or.install=t=>{or._context=t._context,t.config.globalProperties.$msgbox=or,t.config.globalProperties.$messageBox=or,t.config.globalProperties.$alert=or.alert,t.config.globalProperties.$confirm=or.confirm,t.config.globalProperties.$prompt=or.prompt};const g2=or,Mp=["success","info","warning","error"],y2=se({customClass:{type:String,default:""},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:4500},icon:{type:j([String,Object]),default:""},id:{type:String,default:""},message:{type:j([String,Object]),default:""},offset:{type:Number,default:0},onClick:{type:j(Function),default:()=>{}},onClose:{type:j(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...Mp,""],default:""},zIndex:{type:Number,default:0}}),b2={destroy:()=>!0},_ee=e.defineComponent({name:"ElNotification",components:{ElIcon:de,...gs},props:y2,emits:b2,setup(t){const n=Z("notification"),o=e.ref(!1);let r;const l=e.computed(()=>{const m=t.type;return m&&Ho[t.type]?n.m(m):""}),a=e.computed(()=>Ho[t.type]||t.icon||""),s=e.computed(()=>t.position.endsWith("right")?"right":"left"),i=e.computed(()=>t.position.startsWith("top")?"top":"bottom"),c=e.computed(()=>({[i.value]:`${t.offset}px`,zIndex:t.zIndex}));function d(){t.duration>0&&({stop:r}=pr(()=>{o.value&&u()},t.duration))}function f(){r==null||r()}function u(){o.value=!1}function p({code:m}){m===ue.delete||m===ue.backspace?f():m===ue.esc?o.value&&u():d()}return e.onMounted(()=>{d(),o.value=!0}),nt(document,"keydown",p),{ns:n,horizontalClass:s,typeClass:l,iconComponent:a,positionStyle:c,visible:o,close:u,clearTimer:f,startTimer:d}}}),vee=["id"],Tee=["textContent"],Vee={key:0},Mee=["innerHTML"];function Ree(t,n,o,r,l,a){const s=e.resolveComponent("el-icon"),i=e.resolveComponent("close");return e.openBlock(),e.createBlock(e.Transition,{name:t.ns.b("fade"),onBeforeLeave:t.onClose,onAfterLeave:n[3]||(n[3]=c=>t.$emit("destroy")),persisted:""},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{id:t.id,class:e.normalizeClass([t.ns.b(),t.customClass,t.horizontalClass]),style:e.normalizeStyle(t.positionStyle),role:"alert",onMouseenter:n[0]||(n[0]=(...c)=>t.clearTimer&&t.clearTimer(...c)),onMouseleave:n[1]||(n[1]=(...c)=>t.startTimer&&t.startTimer(...c)),onClick:n[2]||(n[2]=(...c)=>t.onClick&&t.onClick(...c))},[t.iconComponent?(e.openBlock(),e.createBlock(s,{key:0,class:e.normalizeClass([t.ns.e("icon"),t.typeClass])},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.iconComponent)))]),_:1},8,["class"])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("group"))},[e.createElementVNode("h2",{class:e.normalizeClass(t.ns.e("title")),textContent:e.toDisplayString(t.title)},null,10,Tee),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(t.ns.e("content")),style:e.normalizeStyle(t.title?void 0:{margin:0})},[e.renderSlot(t.$slots,"default",{},()=>[t.dangerouslyUseHTMLString?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createCommentVNode(" Caution here, message could've been compromized, nerver use user's input as message "),e.createCommentVNode(" eslint-disable-next-line "),e.createElementVNode("p",{innerHTML:t.message},null,8,Mee)],2112)):(e.openBlock(),e.createElementBlock("p",Vee,e.toDisplayString(t.message),1))])],6),[[e.vShow,t.message]]),t.showClose?(e.openBlock(),e.createBlock(s,{key:0,class:e.normalizeClass(t.ns.e("closeBtn")),onClick:e.withModifiers(t.close,["stop"])},{default:e.withCtx(()=>[e.createVNode(i)]),_:1},8,["class","onClick"])):e.createCommentVNode("v-if",!0)],2)],46,vee),[[e.vShow,t.visible]])]),_:3},8,["name","onBeforeLeave"])}var Iee=re(_ee,[["render",Ree],["__file","notification.vue"]]);const Pi={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},Rp=16;let Pee=1;const kl=function(t={},n=null){if(!Oe)return{close:()=>{}};(typeof t=="string"||e.isVNode(t))&&(t={message:t});const o=t.position||"top-right";let r=t.offset||0;Pi[o].forEach(({vm:u})=>{var p;r+=(((p=u.el)==null?void 0:p.offsetHeight)||0)+Rp}),r+=Rp;const{nextZIndex:l}=Yn(),a=`notification_${Pee++}`,s=t.onClose,i={...t,zIndex:l(),offset:r,id:a,onClose:()=>{Aee(a,o,s)}};let c=document.body;go(t.appendTo)?c=t.appendTo:Fe(t.appendTo)&&(c=document.querySelector(t.appendTo)),go(c)||(c=document.body);const d=document.createElement("div"),f=e.createVNode(Iee,i,e.isVNode(i.message)?{default:()=>i.message}:null);return f.appContext=n!=null?n:kl._context,f.props.onDestroy=()=>{e.render(null,d)},e.render(f,d),Pi[o].push({vm:f}),c.appendChild(d.firstElementChild),{close:()=>{f.component.proxy.visible=!1}}};Mp.forEach(t=>{kl[t]=(n={})=>((typeof n=="string"||e.isVNode(n))&&(n={message:n}),kl({...n,type:t}))});function Aee(t,n,o){const r=Pi[n],l=r.findIndex(({vm:d})=>{var f;return((f=d.component)==null?void 0:f.props.id)===t});if(l===-1)return;const{vm:a}=r[l];if(!a)return;o==null||o(a);const s=a.el.offsetHeight,i=n.split("-")[0];r.splice(l,1);const c=r.length;if(!(c<1))for(let d=l;d{n.component.proxy.visible=!1})}kl.closeAll=Oee,kl._context=null;var zee=kl;const C2=O0(zee,"$notify");var Dee=[i2,f2,h2,g2,C2,$u],Ip=Oy([...qQ,...Dee]);const Lee=Ip.install,Fee=Ip.version;_.BAR_MAP=Ud,_.CASCADER_PANEL_INJECTION_KEY=Ys,_.CHANGE_EVENT=at,_.ClickOutside=_o,_.CommonPicker=$f,_.CommonProps=Uf,_.DEFAULT_FORMATS_DATE=kr,_.DEFAULT_FORMATS_DATEPICKER=uC,_.DEFAULT_FORMATS_TIME=Fs,_.DROPDOWN_COLLECTION_INJECTION_KEY=vw,_.DROPDOWN_COLLECTION_ITEM_INJECTION_KEY=Tw,_.DROPDOWN_INJECTION_KEY=ma,_.DefaultProps=f1,_.DynamicSizeGrid=uS,_.DynamicSizeList=nS,_.EVENT_CODE=ue,_.Effect=Qy,_.ElAffix=Ly,_.ElAlert=Wy,_.ElAside=K1,_.ElAutoResizer=pE,_.ElAutocomplete=Fb,_.ElAvatar=Kb,_.ElBacktop=Ub,_.ElBadge=ff,_.ElBreadcrumb=Zb,_.ElBreadcrumbItem=Jb,_.ElButton=At,_.ElButtonGroup=gf,_.ElCalendar=LC,_.ElCard=xC,_.ElCarousel=UC,_.ElCarouselItem=GC,_.ElCascader=y1,_.ElCascaderPanel=h1,_.ElCheckTag=w1,_.ElCheckbox=mn,_.ElCheckboxButton=QC,_.ElCheckboxGroup=Ff,_.ElCol=S1,_.ElCollapse=v1,_.ElCollapseItem=T1,_.ElCollapseTransition=$1,_.ElCollection=Bw,_.ElCollectionItem=_w,_.ElColorPicker=A1,_.ElConfigProvider=z1,_.ElContainer=H1,_.ElDatePicker=rw,_.ElDescriptions=sw,_.ElDescriptionsItem=iw,_.ElDialog=uw,_.ElDivider=mw,_.ElDrawer=yw,_.ElDropdown=Iw,_.ElDropdownItem=Pw,_.ElDropdownMenu=Aw,_.ElEmpty=cu,_.ElFooter=W1,_.ElForm=Yw,_.ElFormItem=Xw,_.ElHeader=j1,_.ElIcon=de,_.ElImage=tk,_.ElImageViewer=gu,_.ElInfiniteScroll=i2,_.ElInput=It,_.ElInputNumber=yu,_.ElLink=ak,_.ElLoading=f2,_.ElLoadingDirective=Ii,_.ElLoadingService=Ri,_.ElMain=U1,_.ElMenu=yk,_.ElMenuItem=bk,_.ElMenuItemGroup=Ck,_.ElMessage=h2,_.ElMessageBox=g2,_.ElNotification=C2,_.ElOption=wa,_.ElOptionGroup=$k,_.ElOverlay=li,_.ElPageHeader=Sk,_.ElPagination=Tk,_.ElPopconfirm=Mk,_.ElPopover=Ak,_.ElPopoverDirective=$u,_.ElPopper=df,_.ElPopperArrow=eb,_.ElPopperContent=Ob,_.ElPopperTrigger=rb,_.ElProgress=Bu,_.ElRadio=Kf,_.ElRadioButton=i1,_.ElRadioGroup=s1,_.ElRate=Lk,_.ElResult=xk,_.ElRow=jk,_.ElScrollbar=Zn,_.ElSelect=Jo,_.ElSelectV2=hS,_.ElSkeleton=bS,_.ElSkeletonItem=CS,_.ElSlider=ES,_.ElSpace=vS,_.ElStep=PS,_.ElSteps=IS,_.ElSubMenu=GU,_.ElSwitch=zS,_.ElTabPane=SE,_.ElTable=ZS,_.ElTableColumn=JS,_.ElTableV2=uE,_.ElTabs=kE,_.ElTag=ia,_.ElTimePicker=AC,_.ElTimeSelect=NE,_.ElTimeline=_E,_.ElTimelineItem=vE,_.ElTooltip=Ut,_.ElTransfer=AE,_.ElTree=LE,_.ElTreeSelect=xE,_.ElTreeV2=YE,_.ElUpload=a2,_.ExpandTrigger=c1,_.FIRST_KEYS=Nw,_.FIRST_LAST_KEYS=$w,_.FORWARD_REF_INJECTION_KEY=Fd,_.FixedSizeGrid=rS,_.FixedSizeList=Fu,_.GAP=br,_.ID_INJECTION_KEY=H0,_.INPUT_EVENT=fn,_.INSTALLED_KEY=ud,_.IconComponentMap=_u,_.IconMap=_r,_.LAST_KEYS=iu,_.LEFT_CHECK_CHANGE_EVENT=pp,_.Mousewheel=PC,_.POPPER_CONTAINER_ID=Dd,_.POPPER_CONTAINER_SELECTOR=Ld,_.POPPER_CONTENT_INJECTION_KEY=Td,_.POPPER_INJECTION_KEY=ks,_.RIGHT_CHECK_CHANGE_EVENT=mp,_.ROOT_PICKER_INJECTION_KEY=Es,_.RepeatClick=aa,_.RowAlign=Kk,_.RowJustify=Hk,_.TOOLTIP_INJECTION_KEY=la,_.TOOLTIP_V2_OPEN=Ss,_.TableV2=dE,_.TableV2Alignment=ml,_.TableV2FixedDir=Xu,_.TableV2Placeholder=hl,_.TableV2SortOrder=pl,_.TimePickPanel=sa,_.TrapFocus=SC,_.UPDATE_MODEL_EVENT=Ve,_.WEEK_DAYS=bs,_.affixEmits=Dy,_.affixProps=zy,_.alertEffects=xy,_.alertEmits=Ky,_.alertProps=Hy,_.arrowMiddleware=Py,_.autoResizerProps=fE,_.autocompleteEmits=Lb,_.autocompleteProps=Db,_.avatarEmits=Hb,_.avatarProps=xb,_.backtopEmits=jb,_.backtopProps=Wb,_.badgeProps=Gb,_.breadcrumbItemProps=Yb,_.breadcrumbKey=yd,_.breadcrumbProps=qb,_.buildLocaleContext=j0,_.buildTimeList=xs,_.buildTranslator=K0,_.buttonEmits=eC,_.buttonGroupContextKey=bd,_.buttonNativeTypes=Qb,_.buttonProps=zs,_.buttonTypes=Os,_.calendarEmits=DC,_.calendarProps=zC,_.cardProps=FC,_.carouselContextKey=Cd,_.carouselEmits=KC,_.carouselItemProps=WC,_.carouselProps=HC,_.checkTagEmits=C1,_.checkTagProps=b1,_.checkboxEmits=Df,_.checkboxGroupEmits=XC,_.checkboxProps=zf,_.colProps=k1,_.collapseContextKey=wd,_.collapseEmits=N1,_.collapseItemProps=B1,_.collapseProps=E1,_.componentSizeMap=D0,_.componentSizes=Ko,_.configProviderContextKey=kd,_.configProviderProps=O1,_.createModelToggleComposable=zd,_.dateEquals=kf,_.datePickTypes=z0,_.dayjs=_e,_.default=Ip,_.defaultNamespace=Ad,_.descriptionProps=lw,_.dialogEmits=nu,_.dialogInjectionKey=Sd,_.dialogProps=tu,_.dividerProps=pw,_.drawerEmits=gw,_.drawerProps=hw,_.dropdownItemProps=su,_.dropdownMenuProps=Ew,_.dropdownProps=pa,_.elPaginationKey=Ed,_.emitChangeFn=Gf,_.emptyProps=Ow,_.extractDateFormat=Cf,_.extractTimeFormat=wf,_.formContextKey=un,_.formEmits=Dw,_.formItemContextKey=Lt,_.formItemProps=Uw,_.formItemValidateStates=jw,_.formProps=zw,_.formatter=Nf,_.genFileId=Np,_.getPositionDataWithUnit=eF,_.iconProps=Fy,_.imageEmits=ek,_.imageProps=Qw,_.imageViewerEmits=Jw,_.imageViewerProps=Zw,_.inputEmits=Gy,_.inputNumberEmits=ok,_.inputNumberProps=nk,_.inputProps=Uy,_.install=Lee,_.linkEmits=lk,_.linkProps=rk,_.makeInstaller=Oy,_.makeList=Hs,_.menuEmits=fk,_.menuItemEmits=pk,_.menuItemGroupProps=hk,_.menuItemProps=uk,_.menuProps=dk,_.messageConfig=oi,_.messageDefaults=qt,_.messageEmits=p2,_.messageProps=u2,_.messageTypes=Vp,_.notificationEmits=b2,_.notificationProps=y2,_.notificationTypes=Mp,_.overlayEmits=dw,_.overlayProps=cw,_.pageHeaderEmits=kk,_.pageHeaderProps=wk,_.paginationEmits=_k,_.paginationProps=Bk,_.parseDate=Ef,_.popconfirmProps=Vk,_.popoverEmits=Ik,_.popoverProps=Rk,_.progressProps=Ok,_.provideGlobalConfig=Rd,_.radioButtonProps=n1,_.radioEmits=Hf,_.radioGroupEmits=l1,_.radioGroupKey=Nd,_.radioGroupProps=r1,_.radioProps=e1,_.radioPropsBase=xf,_.rangeArr=Bo,_.rateEmits=Dk,_.rateProps=zk,_.renderThumbStyle=qy,_.resultProps=Fk,_.rowContextKey=$d,_.rowProps=Wk,_.scrollbarContextKey=Bd,_.scrollbarEmits=Jy,_.scrollbarProps=Zy,_.selectGroupKey=Su,_.selectKey=Ca,_.selectV2InjectionKey=Hu,_.skeletonItemProps=yS,_.skeletonProps=gS,_.sliderContextKey=_d,_.sliderEmits=kS,_.sliderProps=wS,_.spaceProps=_S,_.stepProps=MS,_.stepsEmits=VS,_.stepsProps=TS,_.subMenuProps=ck,_.switchEmits=OS,_.switchProps=AS,_.tabBarProps=mE,_.tabNavProps=hE,_.tabPaneProps=CE,_.tableV2Props=lE,_.tableV2RowProps=nr,_.tabsEmits=bE,_.tabsProps=yE,_.tabsRootContextKey=Ul,_.tagEmits=g1,_.tagProps=Zs,_.thumbProps=Yy,_.timePickerDefaultProps=Ks,_.timeUnits=bf,_.timelineItemProps=$E,_.tooltipV2ContentKey=Vd,_.tooltipV2RootKey=Gl,_.transferCheckedChangeFn=Ni,_.transferEmits=IE,_.transferProps=Rr,_.translate=W0,_.uploadBaseProps=$p,_.uploadContentProps=o2,_.uploadContextKey=vd,_.uploadDraggerEmits=n2,_.uploadDraggerProps=t2,_.uploadListEmits=QE,_.uploadListProps=JE,_.uploadListTypes=Ep,_.uploadProps=ZE,_.useAttrs=ws,_.useCascaderConfig=u1,_.useCheckbox=Lf,_.useCheckboxGroup=Nr,_.useCheckboxGroupId=YC,_.useCheckboxGroupProps=qC,_.useCursor=Ay,_.useDelayedRender=v6,_.useDelayedToggle=my,_.useDelayedToggleProps=py,_.useDeprecated=Gr,_.useDialog=ou,_.useDisabled=bo,_.useDraggable=Id,_.useEscapeKeydown=dy,_.useFloating=Iy,_.useFloatingProps=J6,_.useFocus=x0,_.useFormItem=Co,_.useFormItemInputId=wo,_.useForwardRef=hy,_.useForwardRefDirective=gy,_.useGlobalConfig=Wo,_.useId=Nn,_.useLocale=We,_.useLockscreen=Od,_.useModal=g6,_.useModelToggle=C6,_.useModelToggleEmits=k6,_.useModelToggleProps=w6,_.useNamespace=Z,_.usePopperArrowProps=qd,_.usePopperContainer=uy,_.usePopperContentEmits=Pb,_.usePopperContentProps=cf,_.usePopperCoreConfigProps=Ib,_.usePopperProps=Gd,_.usePopperTriggerProps=Yd,_.usePreventGlobal=S6,_.useProp=Md,_.useRestoreActive=X0,_.useSameTarget=_s,_.useSize=yt,_.useSizeProp=tn,_.useSpace=BS,_.useTeleport=E6,_.useThrottleRender=Z0,_.useTimeout=J0,_.useTooltipContentProps=vt,_.useTooltipProps=zb,_.useTooltipTriggerProps=nl,_.useTransitionFallthrough=B6,_.useTransitionFallthroughEmits=$6,_.useZIndex=Yn,_.vLoading=Ii,_.valueEquals=Sf,_.version=Fee,_.virtualizedGridProps=Qo,_.virtualizedListProps=Ou,_.virtualizedProps=Au,_.virtualizedScrollbarProps=Du,Object.defineProperty(_,"__esModule",{value:!0})}); +//# sourceMappingURL=index.full.min.js.map diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/js/moment.js b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/moment.js new file mode 100644 index 000000000..770f8bc54 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/moment.js @@ -0,0 +1,7 @@ +//! moment.js +//! version : 2.18.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return sd.apply(null,arguments)}function b(a){sd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c0)for(c=0;c0?"future":"past"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Hd[c]=Hd[c+"s"]=Hd[b]=a}function K(a){return"string"==typeof a?Hd[a]||Hd[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){Id[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:Id[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Md[a]=e),b&&(Md[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Md[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function W(a){var b,c,d=a.match(Jd);for(b=0,c=d.length;b=0&&Kd.test(a);)a=a.replace(Kd,c),Kd.lastIndex=0,d-=1;return a}function Z(a,b,c){ce[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return j(ce,a)?ce[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ba(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Da(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=ne.call(this._weekdaysParse,g),e!==-1?e:null):"ddd"===b?(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null):"dddd"===b?(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null))):"ddd"===b?(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=ne.call(this._minWeekdaysParse,g),e!==-1?e:(e=ne.call(this._weekdaysParse,g),e!==-1?e:(e=ne.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,"d")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,"_weekdaysRegex")||(this._weekdaysRegex=ye),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ze),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ae),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return"p"===(a+"").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Xa(a){return a?a.toLowerCase().replace("_","-"):a}function Ya(a){for(var b,c,d,e,f=0;f0;){if(d=Za(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Fe[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Be._abbr,require("./locale/"+a),$a(b)}catch(a){}return Fe[a]}function $a(a,b){var c;return a&&(c=f(b)?bb(a):_a(a,b),c&&(Be=c)),Be._abbr}function _a(a,b){if(null!==b){var c=Ee;if(b.abbr=a,null!=Fe[a])y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=Fe[a]._config;else if(null!=b.parentLocale){if(null==Fe[b.parentLocale])return Ge[b.parentLocale]||(Ge[b.parentLocale]=[]),Ge[b.parentLocale].push({name:a,config:b}),null;c=Fe[b.parentLocale]._config}return Fe[a]=new C(B(c,b)),Ge[a]&&Ge[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Fe[a]}return delete Fe[a],null}function ab(a,b){if(null!=b){var c,d=Ee;null!=Fe[a]&&(d=Fe[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Fe[a],Fe[a]=c,$a(a)}else null!=Fe[a]&&(null!=Fe[a].parentLocale?Fe[a]=Fe[a].parentLocale:null!=Fe[a]&&delete Fe[a]);return Fe[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Be;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return Ad(Fe)}function db(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[fe]<0||c[fe]>11?fe:c[ge]<1||c[ge]>ea(c[ee],c[fe])?ge:c[he]<0||c[he]>24||24===c[he]&&(0!==c[ie]||0!==c[je]||0!==c[ke])?he:c[ie]<0||c[ie]>59?ie:c[je]<0||c[je]>59?je:c[ke]<0||c[ke]>999?ke:-1,n(a)._overflowDayOfYear&&(bge)&&(b=ge),n(a)._overflowWeeks&&b===-1&&(b=le),n(a)._overflowWeekday&&b===-1&&(b=me),n(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=He.exec(h)||Ie.exec(h);if(i){for(n(a).iso=!0,b=0,c=Ke.length;b10?"YYYY ":"YY "),f="HH:mm"+(c[4]?":ss":""),c[1]){var l=new Date(c[2]),m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][l.getDay()];if(c[1].substr(0,3)!==m)return n(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=" +0000":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?" -":" +")+(""+i).replace(/^-?/,"0").match(/..$/)[0]+"00");break;case 4:h=j[c[5]];break;default:h=j[" GMT"]}c[5]=h,a._i=c.splice(1).join(""),g=" ZZ",a._f=d+e+f+g,lb(a),n(a).rfc2822=!0}else a._isValid=!1}function gb(b){var c=Me.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,fb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function hb(a,b,c){return null!=a?a:null!=b?b:c}function ib(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function jb(a){var b,c,d,e,f=[];if(!a._d){for(d=ib(a),a._w&&null==a._a[ge]&&null==a._a[fe]&&kb(a),null!=a._dayOfYear&&(e=hb(a._a[ee],d[ee]),(a._dayOfYear>pa(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[fe]=c.getUTCMonth(),a._a[ge]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[he]&&0===a._a[ie]&&0===a._a[je]&&0===a._a[ke]&&(a._nextDay=!0,a._a[he]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[he]=24)}}function kb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=hb(b.GG,a._a[ee],wa(tb(),1,4).year),d=hb(b.W,1),e=hb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(tb(),f,g);c=hb(b.gg,a._a[ee],j.year),d=hb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>xa(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[ee]=h.year,a._dayOfYear=h.dayOfYear)}function lb(b){if(b._f===a.ISO_8601)return void eb(b);if(b._f===a.RFC_2822)return void fb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Jd)||[],c=0;c0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Md[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[he]<=12&&n(b).bigHour===!0&&b._a[he]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[he]=mb(b._locale,b._a[he],b._meridiem),jb(b),db(b)}function mb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function nb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ob(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=qb(a),a._a){var b=a._isUTC?l(a._a):tb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Pb(){return!!this.isValid()&&!this._isUTC}function Qb(){return!!this.isValid()&&this._isUTC}function Rb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Sb(a,b){var c,d,e,f=a,h=null;return Bb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Te.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:u(h[ge])*c,h:u(h[he])*c,m:u(h[ie])*c,s:u(h[je])*c,ms:u(Cb(1e3*h[ke]))*c}):(h=Ue.exec(a))?(c="-"===h[1]?-1:1,f={y:Tb(h[2],c),M:Tb(h[3],c),w:Tb(h[4],c),d:Tb(h[5],c),h:Tb(h[6],c),m:Tb(h[7],c),s:Tb(h[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Vb(tb(f.from),tb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Ab(f),Bb(a)&&j(a,"_locale")&&(d._locale=a._locale),d}function Tb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Ub(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Vb(a,b){var c;return a.isValid()&&b.isValid()?(b=Fb(b,a),a.isBefore(b)?c=Ub(a,b):(c=Ub(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Wb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Sb(c,d),Xb(this,e,a),this}}function Xb(b,c,d,e){var f=c._milliseconds,g=Cb(c._days),h=Cb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,"Date",P(b,"Date")+g*d),h&&ja(b,P(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Yb(a,b){var c=a.diff(b,"days",!0);return c<-6?"sameElse":c<-1?"lastWeek":c<0?"lastDay":c<1?"sameDay":c<2?"nextDay":c<7?"nextWeek":"sameElse"}function Zb(b,c){var d=b||tb(),e=Fb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,tb(d)))}function $b(){return new r(this)}function _b(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()9999?X(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function jc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function kc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function lc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mc(a){return this.from(tb(),a)}function nc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.to(tb(),a)}function pc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function qc(){return this._locale}function rc(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function sc(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function tc(){return this._d.valueOf()-6e4*(this._offset||0)}function uc(){return Math.floor(this.valueOf()/1e3)}function vc(){return new Date(this.valueOf())}function wc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function yc(){return this.isValid()?this.toISOString():null}function zc(){return o(this)}function Ac(){ +return k({},n(this))}function Bc(){return n(this).overflow}function Cc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dc(a,b){U(0,[a,a.length],0,b)}function Ec(a){return Ic.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Fc(a){return Ic.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Gc(){return xa(this.year(),1,4)}function Hc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ic(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Jc.call(this,a,b,c,d,e))}function Jc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Kc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Lc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Mc(a,b){b[ke]=u(1e3*("0."+a))}function Nc(){return this._isUTC?"UTC":""}function Oc(){return this._isUTC?"Coordinated Universal Time":""}function Pc(a){return tb(1e3*a)}function Qc(){return tb.apply(null,arguments).parseZone()}function Rc(a){return a}function Sc(a,b,c,d){var e=bb(),f=l().set(d,b);return e[c](f,a)}function Tc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||"",null!=b)return Sc(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=Sc(a,d,c,"month");return e}function Uc(a,b,c,d){"boolean"==typeof a?(g(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||"");var e=bb(),f=a?e._week.dow:0;if(null!=c)return Sc(b,(c+f)%7,d,"day");var h,i=[];for(h=0;h<7;h++)i[h]=Sc(b,(h+f)%7,d,"day");return i}function Vc(a,b){return Tc(a,b,"months")}function Wc(a,b){return Tc(a,b,"monthsShort")}function Xc(a,b,c){return Uc(a,b,c,"weekdays")}function Yc(a,b,c){return Uc(a,b,c,"weekdaysShort")}function Zc(a,b,c){return Uc(a,b,c,"weekdaysMin")}function $c(){var a=this._data;return this._milliseconds=df(this._milliseconds),this._days=df(this._days),this._months=df(this._months),a.milliseconds=df(a.milliseconds),a.seconds=df(a.seconds),a.minutes=df(a.minutes),a.hours=df(a.hours),a.months=df(a.months),a.years=df(a.years),this}function _c(a,b,c,d){var e=Sb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function ad(a,b){return _c(this,a,b,1)}function bd(a,b){return _c(this,a,b,-1)}function cd(a){return a<0?Math.floor(a):Math.ceil(a)}function dd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*cd(fd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ed(g)),h+=e,g-=cd(fd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ed(a){return 4800*a/146097}function fd(a){return 146097*a/4800}function gd(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+ed(b),"month"===a?c:c/12;switch(b=this._days+Math.round(fd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function hd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function id(a){return function(){return this.as(a)}}function jd(a){return a=K(a),this.isValid()?this[a+"s"]():NaN}function kd(a){return function(){return this.isValid()?this._data[a]:NaN}}function ld(){return t(this.days()/7)}function md(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function nd(a,b,c){var d=Sb(a).abs(),e=uf(d.as("s")),f=uf(d.as("m")),g=uf(d.as("h")),h=uf(d.as("d")),i=uf(d.as("M")),j=uf(d.as("y")),k=e<=vf.ss&&["s",e]||e0,k[4]=c,md.apply(null,k)}function od(a){return void 0===a?uf:"function"==typeof a&&(uf=a,!0)}function pd(a,b){return void 0!==vf[a]&&(void 0===b?vf[a]:(vf[a]=b,"s"===a&&(vf.ss=b-1),!0))}function qd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=nd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function rd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=wf(this._milliseconds)/1e3,e=wf(this._days),f=wf(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var sd,td;td=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d68?1900:2e3)};var te=O("FullYear",!0);U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),M("week",5),M("isoWeek",5),Z("w",Sd),Z("ww",Sd,Od),Z("W",Sd),Z("WW",Sd,Od),ca(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var ue={dow:0,doy:6};U("d",0,"do","day"),U("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),M("day",11),M("weekday",11),M("isoWeekday",11),Z("d",Sd),Z("e",Sd),Z("E",Sd),Z("dd",function(a,b){return b.weekdaysMinRegex(a)}),Z("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Z("dddd",function(a,b){return b.weekdaysRegex(a)}),ca(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),ca(["d","e","E"],function(a,b,c,d){b[d]=u(a)});var ve="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),we="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ye=be,ze=be,Ae=be;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Ra),U("k",["kk",2],0,Sa),U("hmm",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ta("a",!0),Ta("A",!1),J("hour","h"),M("hour",13),Z("a",Ua),Z("A",Ua),Z("H",Sd),Z("h",Sd),Z("k",Sd),Z("HH",Sd,Od),Z("hh",Sd,Od),Z("kk",Sd,Od),Z("hmm",Td),Z("hmmss",Ud),Z("Hmm",Td),Z("Hmmss",Ud),ba(["H","HH"],he),ba(["k","kk"],function(a,b,c){var d=u(a);b[he]=24===d?0:d}),ba(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba(["h","hh"],function(a,b,c){b[he]=u(a),n(c).bigHour=!0}),ba("hmm",function(a,b,c){var d=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d)),n(c).bigHour=!0}),ba("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d,2)),b[je]=u(a.substr(e)),n(c).bigHour=!0}),ba("Hmm",function(a,b,c){var d=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d))}),ba("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[he]=u(a.substr(0,d)),b[ie]=u(a.substr(d,2)),b[je]=u(a.substr(e))});var Be,Ce=/[ap]\.?m?\.?/i,De=O("Hours",!0),Ee={calendar:Bd,longDateFormat:Cd,invalidDate:Dd,ordinal:Ed,dayOfMonthOrdinalParse:Fd,relativeTime:Gd,months:pe,monthsShort:qe,week:ue,weekdays:ve,weekdaysMin:xe,weekdaysShort:we,meridiemParse:Ce},Fe={},Ge={},He=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ie=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Je=/Z|[+-]\d\d(?::?\d\d)?/,Ke=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Le=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Me=/^\/?Date\((\-?\d+)/i,Ne=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;a.createFromInputFallback=x("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Oe=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?athis?this:a:p()}),Qe=function(){return Date.now?Date.now():+new Date},Re=["year","quarter","month","week","day","hour","minute","second","millisecond"];Db("Z",":"),Db("ZZ",""),Z("Z",_d),Z("ZZ",_d),ba(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Eb(_d,a)});var Se=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var Te=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ue=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Sb.fn=Ab.prototype,Sb.invalid=zb;var Ve=Wb(1,"add"),We=Wb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xe=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Dc("gggg","weekYear"),Dc("ggggg","weekYear"),Dc("GGGG","isoWeekYear"),Dc("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),M("weekYear",1),M("isoWeekYear",1),Z("G",Zd),Z("g",Zd),Z("GG",Sd,Od),Z("gg",Sd,Od),Z("GGGG",Wd,Qd),Z("gggg",Wd,Qd),Z("GGGGG",Xd,Rd),Z("ggggg",Xd,Rd),ca(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),U("Q",0,"Qo","quarter"),J("quarter","Q"),M("quarter",7),Z("Q",Nd),ba("Q",function(a,b){b[fe]=3*(u(a)-1)}),U("D",["DD",2],"Do","date"),J("date","D"),M("date",9),Z("D",Sd),Z("DD",Sd,Od),Z("Do",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),ba(["D","DD"],ge),ba("Do",function(a,b){b[ge]=u(a.match(Sd)[0],10)});var Ye=O("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),M("dayOfYear",4),Z("DDD",Vd),Z("DDDD",Pd),ba(["DDD","DDDD"],function(a,b,c){c._dayOfYear=u(a)}),U("m",["mm",2],0,"minute"),J("minute","m"),M("minute",14),Z("m",Sd),Z("mm",Sd,Od),ba(["m","mm"],ie);var Ze=O("Minutes",!1);U("s",["ss",2],0,"second"),J("second","s"),M("second",15),Z("s",Sd),Z("ss",Sd,Od),ba(["s","ss"],je);var $e=O("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),M("millisecond",16),Z("S",Vd,Nd),Z("SS",Vd,Od),Z("SSS",Vd,Pd);var _e;for(_e="SSSS";_e.length<=9;_e+="S")Z(_e,Yd);for(_e="S";_e.length<=9;_e+="S")ba(_e,Mc);var af=O("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var bf=r.prototype;bf.add=Ve,bf.calendar=Zb,bf.clone=$b,bf.diff=fc,bf.endOf=sc,bf.format=kc,bf.from=lc,bf.fromNow=mc,bf.to=nc,bf.toNow=oc,bf.get=R,bf.invalidAt=Bc,bf.isAfter=_b,bf.isBefore=ac,bf.isBetween=bc,bf.isSame=cc,bf.isSameOrAfter=dc,bf.isSameOrBefore=ec,bf.isValid=zc,bf.lang=Xe,bf.locale=pc,bf.localeData=qc,bf.max=Pe,bf.min=Oe,bf.parsingFlags=Ac,bf.set=S,bf.startOf=rc,bf.subtract=We,bf.toArray=wc,bf.toObject=xc,bf.toDate=vc,bf.toISOString=ic,bf.inspect=jc,bf.toJSON=yc,bf.toString=hc,bf.unix=uc,bf.valueOf=tc,bf.creationData=Cc,bf.year=te,bf.isLeapYear=ra,bf.weekYear=Ec,bf.isoWeekYear=Fc,bf.quarter=bf.quarters=Kc,bf.month=ka,bf.daysInMonth=la,bf.week=bf.weeks=Ba,bf.isoWeek=bf.isoWeeks=Ca,bf.weeksInYear=Hc,bf.isoWeeksInYear=Gc,bf.date=Ye,bf.day=bf.days=Ka,bf.weekday=La,bf.isoWeekday=Ma,bf.dayOfYear=Lc,bf.hour=bf.hours=De,bf.minute=bf.minutes=Ze,bf.second=bf.seconds=$e,bf.millisecond=bf.milliseconds=af,bf.utcOffset=Hb,bf.utc=Jb,bf.local=Kb,bf.parseZone=Lb,bf.hasAlignedHourOffset=Mb,bf.isDST=Nb,bf.isLocal=Pb,bf.isUtcOffset=Qb,bf.isUtc=Rb,bf.isUTC=Rb,bf.zoneAbbr=Nc,bf.zoneName=Oc,bf.dates=x("dates accessor is deprecated. Use date instead.",Ye),bf.months=x("months accessor is deprecated. Use month instead",ka),bf.years=x("years accessor is deprecated. Use year instead",te),bf.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Ib),bf.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ob);var cf=C.prototype;cf.calendar=D,cf.longDateFormat=E,cf.invalidDate=F,cf.ordinal=G,cf.preparse=Rc,cf.postformat=Rc,cf.relativeTime=H,cf.pastFuture=I,cf.set=A,cf.months=fa,cf.monthsShort=ga,cf.monthsParse=ia,cf.monthsRegex=na,cf.monthsShortRegex=ma,cf.week=ya,cf.firstDayOfYear=Aa,cf.firstDayOfWeek=za,cf.weekdays=Fa,cf.weekdaysMin=Ha,cf.weekdaysShort=Ga,cf.weekdaysParse=Ja,cf.weekdaysRegex=Na,cf.weekdaysShortRegex=Oa,cf.weekdaysMinRegex=Pa,cf.isPM=Va,cf.meridiem=Wa,$a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=x("moment.lang is deprecated. Use moment.locale instead.",$a),a.langData=x("moment.langData is deprecated. Use moment.localeData instead.",bb);var df=Math.abs,ef=id("ms"),ff=id("s"),gf=id("m"),hf=id("h"),jf=id("d"),kf=id("w"),lf=id("M"),mf=id("y"),nf=kd("milliseconds"),of=kd("seconds"),pf=kd("minutes"),qf=kd("hours"),rf=kd("days"),sf=kd("months"),tf=kd("years"),uf=Math.round,vf={ss:44,s:45,m:45,h:22,d:26,M:11},wf=Math.abs,xf=Ab.prototype;return xf.isValid=yb,xf.abs=$c,xf.add=ad,xf.subtract=bd,xf.as=gd,xf.asMilliseconds=ef,xf.asSeconds=ff,xf.asMinutes=gf,xf.asHours=hf,xf.asDays=jf,xf.asWeeks=kf,xf.asMonths=lf,xf.asYears=mf,xf.valueOf=hd,xf._bubble=dd,xf.get=jd,xf.milliseconds=nf,xf.seconds=of,xf.minutes=pf,xf.hours=qf,xf.days=rf,xf.weeks=ld,xf.months=sf,xf.years=tf,xf.humanize=qd,xf.toISOString=rd,xf.toString=rd,xf.toJSON=rd,xf.locale=pc,xf.localeData=qc,xf.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",rd),xf.lang=Xe,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Z("x",Zd),Z("X",ae),ba("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba("x",function(a,b,c){c._d=new Date(u(a))}),a.version="2.18.1",b(tb),a.fn=bf,a.min=vb,a.max=wb,a.now=Qe,a.utc=l,a.unix=Pc,a.months=Vc,a.isDate=h,a.locale=$a,a.invalid=p,a.duration=Sb,a.isMoment=s,a.weekdays=Xc,a.parseZone=Qc,a.localeData=bb,a.isDuration=Bb,a.monthsShort=Wc,a.weekdaysMin=Zc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Yc,a.normalizeUnits=K,a.relativeTimeRounding=od,a.relativeTimeThreshold=pd,a.calendarFormat=Yb,a.prototype=bf,a}); \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/js/utils.js b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/utils.js new file mode 100644 index 000000000..a02b10591 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/utils.js @@ -0,0 +1,14 @@ +window.utils = {} +window.utils.getQuery = (key, url) => { + url = url || window.location.href + '' + if (url.indexOf('#') !== -1) url = url.substring(url.indexOf('#')) + let rts = [] + let rt + const queryReg = new RegExp('(^|\\?|&)' + key + '=([^&]*)(?=&|#|$)', 'g') + while ((rt = queryReg.exec(url)) !== null) { + rts.push(decodeURIComponent(rt[2])) + } + if (rts.length === 0) return null + if (rts.length === 1) return rts[0] + return rts +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/static/js/vue.js b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/vue.js new file mode 100644 index 000000000..ad9b0b150 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/static/js/vue.js @@ -0,0 +1,18 @@ +/** + * Minified by jsDelivr using Terser v5.19.2. + * Original file: /npm/vue@3.4.21/dist/vue.global.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +/** +* vue v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +var Vue=function(e){"use strict";function t(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const n=Object.freeze({}),o=Object.freeze([]),s=()=>{},r=()=>!1,i=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),a=e=>e.startsWith("onUpdate:"),c=Object.assign,l=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},u=Object.prototype.hasOwnProperty,d=(e,t)=>u.call(e,t),p=Array.isArray,f=e=>"[object Map]"===S(e),h=e=>"[object Set]"===S(e),m=e=>"[object Date]"===S(e),g=e=>"function"==typeof e,y=e=>"string"==typeof e,v=e=>"symbol"==typeof e,b=e=>null!==e&&"object"==typeof e,_=e=>(b(e)||g(e))&&g(e.then)&&g(e.catch),x=Object.prototype.toString,S=e=>x.call(e),w=e=>S(e).slice(8,-1),C=e=>"[object Object]"===S(e),k=e=>y(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,T=t(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),E=t("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),A=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},N=/-(\w)/g,I=A((e=>e.replace(N,((e,t)=>t?t.toUpperCase():"")))),$=/\B([A-Z])/g,O=A((e=>e.replace($,"-$1").toLowerCase())),R=A((e=>e.charAt(0).toUpperCase()+e.slice(1))),M=A((e=>e?`on${R(e)}`:"")),P=(e,t)=>!Object.is(e,t),F=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},V=e=>{const t=parseFloat(e);return isNaN(t)?e:t},D=e=>{const t=y(e)?Number(e):NaN;return isNaN(t)?e:t};let j;const B=()=>j||(j="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}),U={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"NEED_HYDRATION",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},H={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},q=t("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"),z=2;function W(e){if(p(e)){const t={};for(let n=0;n{if(e){const n=e.split(G);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function X(e){let t="";if(y(e))t=e;else if(p(e))for(let n=0;nce(e,t)))}const ue=(e,t)=>t&&t.__v_isRef?ue(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],o)=>(e[de(t,o)+" =>"]=n,e)),{})}:h(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>de(e)))}:v(t)?de(t):!b(t)||p(t)||C(t)?t:String(t),de=(e,t="")=>{var n;return v(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};function pe(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let fe,he;class me{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=fe,!e&&fe&&(this.index=(fe.scopes||(fe.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=fe;try{return fe=this,e()}finally{fe=t}}else pe("cannot run an inactive effect scope.")}on(){fe=this}off(){fe=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),Ee()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=we,t=he;try{return we=!0,he=this,this._runnings++,_e(this),this.fn()}finally{xe(this),this._runnings--,he=t,we=e}}stop(){var e;this.active&&(_e(this),xe(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function be(e){return e.value}function _e(e){e._trackId++,e._depsLength=0}function xe(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Me=new WeakMap,Pe=Symbol("iterate"),Fe=Symbol("Map key iterate");function Le(e,t,n){if(we&&he){let o=Me.get(e);o||Me.set(e,o=new Map);let s=o.get(n);s||o.set(n,s=Re((()=>o.delete(n)))),Ie(he,s,{target:e,type:t,key:n})}}function Ve(e,t,n,o,s,r){const i=Me.get(e);if(!i)return;let a=[];if("clear"===t)a=[...i.values()];else if("length"===n&&p(e)){const e=Number(o);i.forEach(((t,n)=>{("length"===n||!v(n)&&n>=e)&&a.push(t)}))}else switch(void 0!==n&&a.push(i.get(n)),t){case"add":p(e)?k(n)&&a.push(i.get("length")):(a.push(i.get(Pe)),f(e)&&a.push(i.get(Fe)));break;case"delete":p(e)||(a.push(i.get(Pe)),f(e)&&a.push(i.get(Fe)));break;case"set":f(e)&&a.push(i.get(Pe))}Ae();for(const i of a)i&&Oe(i,4,{target:e,type:t,key:n,newValue:o,oldValue:s,oldTarget:r});Ne()}const De=t("__proto__,__v_isRef,__isVue"),je=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(v)),Be=Ue();function Ue(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Rt(this);for(let e=0,t=this.length;e{e[t]=function(...e){Te(),Ae();const n=Rt(this)[t].apply(this,e);return Ne(),Ee(),n}})),e}function He(e){const t=Rt(this);return Le(t,"has",e),t.hasOwnProperty(e)}class qe{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){const o=this._isReadonly,s=this._isShallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return s;if("__v_raw"===t)return n===(o?s?wt:St:s?xt:_t).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const r=p(e);if(!o){if(r&&d(Be,t))return Reflect.get(Be,t,n);if("hasOwnProperty"===t)return He}const i=Reflect.get(e,t,n);return(v(t)?je.has(t):De(t))?i:(o||Le(e,"get",t),s?i:jt(i)?r&&k(t)?i:i.value:b(i)?o?Tt(i):Ct(i):i)}}class ze extends qe{constructor(e=!1){super(!1,e)}set(e,t,n,o){let s=e[t];if(!this._isShallow){const t=It(s);if($t(n)||It(n)||(s=Rt(s),n=Rt(n)),!p(e)&&jt(s)&&!jt(n))return!t&&(s.value=n,!0)}const r=p(e)&&k(t)?Number(t)e,Qe=e=>Reflect.getPrototypeOf(e);function Ze(e,t,n=!1,o=!1){const s=Rt(e=e.__v_raw),r=Rt(t);n||(P(t,r)&&Le(s,"get",t),Le(s,"get",r));const{has:i}=Qe(s),a=o?Xe:n?Ft:Pt;return i.call(s,t)?a(e.get(t)):i.call(s,r)?a(e.get(r)):void(e!==s&&e.get(t))}function et(e,t=!1){const n=this.__v_raw,o=Rt(n),s=Rt(e);return t||(P(e,s)&&Le(o,"has",e),Le(o,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function tt(e,t=!1){return e=e.__v_raw,!t&&Le(Rt(e),"iterate",Pe),Reflect.get(e,"size",e)}function nt(e){e=Rt(e);const t=Rt(this);return Qe(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function ot(e,t){t=Rt(t);const n=Rt(this),{has:o,get:s}=Qe(n);let r=o.call(n,e);r?bt(n,o,e):(e=Rt(e),r=o.call(n,e));const i=s.call(n,e);return n.set(e,t),r?P(t,i)&&Ve(n,"set",e,t,i):Ve(n,"add",e,t),this}function st(e){const t=Rt(this),{has:n,get:o}=Qe(t);let s=n.call(t,e);s?bt(t,n,e):(e=Rt(e),s=n.call(t,e));const r=o?o.call(t,e):void 0,i=t.delete(e);return s&&Ve(t,"delete",e,void 0,r),i}function rt(){const e=Rt(this),t=0!==e.size,n=f(e)?new Map(e):new Set(e),o=e.clear();return t&&Ve(e,"clear",void 0,void 0,n),o}function it(e,t){return function(n,o){const s=this,r=s.__v_raw,i=Rt(r),a=t?Xe:e?Ft:Pt;return!e&&Le(i,"iterate",Pe),r.forEach(((e,t)=>n.call(o,a(e),a(t),s)))}}function at(e,t,n){return function(...o){const s=this.__v_raw,r=Rt(s),i=f(r),a="entries"===e||e===Symbol.iterator&&i,c="keys"===e&&i,l=s[e](...o),u=n?Xe:t?Ft:Pt;return!t&&Le(r,"iterate",c?Fe:Pe),{next(){const{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function ct(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";pe(`${R(e)} operation ${n}failed: target is readonly.`,Rt(this))}return"delete"!==e&&("clear"===e?void 0:this)}}function lt(){const e={get(e){return Ze(this,e)},get size(){return tt(this)},has:et,add:nt,set:ot,delete:st,clear:rt,forEach:it(!1,!1)},t={get(e){return Ze(this,e,!1,!0)},get size(){return tt(this)},has:et,add:nt,set:ot,delete:st,clear:rt,forEach:it(!1,!0)},n={get(e){return Ze(this,e,!0)},get size(){return tt(this,!0)},has(e){return et.call(this,e,!0)},add:ct("add"),set:ct("set"),delete:ct("delete"),clear:ct("clear"),forEach:it(!0,!1)},o={get(e){return Ze(this,e,!0,!0)},get size(){return tt(this,!0)},has(e){return et.call(this,e,!0)},add:ct("add"),set:ct("set"),delete:ct("delete"),clear:ct("clear"),forEach:it(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((s=>{e[s]=at(s,!1,!1),n[s]=at(s,!0,!1),t[s]=at(s,!1,!0),o[s]=at(s,!0,!0)})),[e,n,t,o]}const[ut,dt,pt,ft]=lt();function ht(e,t){const n=t?e?ft:pt:e?dt:ut;return(t,o,s)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(d(n,o)&&o in t?n:t,o,s)}const mt={get:ht(!1,!1)},gt={get:ht(!1,!0)},yt={get:ht(!0,!1)},vt={get:ht(!0,!0)};function bt(e,t,n){const o=Rt(n);if(o!==n&&t.call(e,o)){const t=w(e);pe(`Reactive ${t} contains both the raw and reactive versions of the same object${"Map"===t?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const _t=new WeakMap,xt=new WeakMap,St=new WeakMap,wt=new WeakMap;function Ct(e){return It(e)?e:At(e,!1,Ke,mt,_t)}function kt(e){return At(e,!1,Je,gt,xt)}function Tt(e){return At(e,!0,Ge,yt,St)}function Et(e){return At(e,!0,Ye,vt,wt)}function At(e,t,n,o,s){if(!b(e))return pe(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const r=s.get(e);if(r)return r;const i=(a=e).__v_skip||!Object.isExtensible(a)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(w(a));var a;if(0===i)return e;const c=new Proxy(e,2===i?o:n);return s.set(e,c),c}function Nt(e){return It(e)?Nt(e.__v_raw):!(!e||!e.__v_isReactive)}function It(e){return!(!e||!e.__v_isReadonly)}function $t(e){return!(!e||!e.__v_isShallow)}function Ot(e){return Nt(e)||It(e)}function Rt(e){const t=e&&e.__v_raw;return t?Rt(t):e}function Mt(e){return Object.isExtensible(e)&&L(e,"__v_skip",!0),e}const Pt=e=>b(e)?Ct(e):e,Ft=e=>b(e)?Tt(e):e;class Lt{constructor(e,t,n,o){this.getter=e,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ve((()=>e(this._value)),(()=>Dt(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const e=Rt(this);return e._cacheable&&!e.effect.dirty||!P(e._value,e._value=e.effect.run())||Dt(e,4),Vt(e),e.effect._dirtyLevel>=2&&(this._warnRecursive&&pe("Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free","\n\ngetter: ",this.getter),Dt(e,2)),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function Vt(e){var t;we&&he&&(e=Rt(e),Ie(he,null!=(t=e.dep)?t:e.dep=Re((()=>e.dep=void 0),e instanceof Lt?e:void 0),{target:e,type:"get",key:"value"}))}function Dt(e,t=4,n){const o=(e=Rt(e)).dep;o&&Oe(o,t,{target:e,type:"set",key:"value",newValue:n})}function jt(e){return!(!e||!0!==e.__v_isRef)}function Bt(e){return Ut(e,!1)}function Ut(e,t){return jt(e)?e:new Ht(e,t)}class Ht{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Rt(e),this._value=t?e:Pt(e)}get value(){return Vt(this),this._value}set value(e){const t=this.__v_isShallow||$t(e)||It(e);e=t?e:Rt(e),P(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Pt(e),Dt(this,4,e))}}function qt(e){return jt(e)?e.value:e}const zt={get:(e,t,n)=>qt(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const s=e[t];return jt(s)&&!jt(n)?(s.value=n,!0):Reflect.set(e,t,n,o)}};function Wt(e){return Nt(e)?e:new Proxy(e,zt)}class Kt{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Vt(this)),(()=>Dt(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Gt(e){return new Kt(e)}class Jt{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return e=Rt(this._object),t=this._key,null==(n=Me.get(e))?void 0:n.get(t);var e,t,n}}class Yt{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Xt(e,t,n){const o=e[t];return jt(o)?o:new Jt(e,t,n)}const Qt=[];function Zt(e){Qt.push(e)}function en(){Qt.pop()}function tn(e,...t){Te();const n=Qt.length?Qt[Qt.length-1].component:null,o=n&&n.appContext.config.warnHandler,s=function(){let e=Qt[Qt.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}();if(o)an(o,n,11,[e+t.map((e=>{var t,n;return null!=(n=null==(t=e.toString)?void 0:t.call(e))?n:JSON.stringify(e)})).join(""),n&&n.proxy,s.map((({vnode:e})=>`at <${Bi(n,e.type)}>`)).join("\n"),s]);else{const n=[`[Vue warn]: ${e}`,...t];s.length&&n.push("\n",...function(e){const t=[];return e.forEach(((e,n)=>{t.push(...0===n?[]:["\n"],...function({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=!!e.component&&null==e.component.parent,s=` at <${Bi(e.component,e.type,o)}`,r=">"+n;return e.props?[s,...nn(e.props),r]:[s+r]}(e))})),t}(s)),console.warn(...n)}Ee()}function nn(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach((n=>{t.push(...on(n,e[n]))})),n.length>3&&t.push(" ..."),t}function on(e,t,n){return y(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):"number"==typeof t||"boolean"==typeof t||null==t?n?t:[`${e}=${t}`]:jt(t)?(t=on(e,Rt(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):g(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Rt(t),n?t:[`${e}=`,t])}function sn(e,t){void 0!==e&&("number"!=typeof e?tn(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&tn(`${t} is NaN - the duration expression might be incorrect.`))}const rn={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."};function an(e,t,n,o){try{return o?e(...o):e()}catch(e){ln(e,t,n)}}function cn(e,t,n,o){if(g(e)){const s=an(e,t,n,o);return s&&_(s)&&s.catch((e=>{ln(e,t,n)})),s}const s=[];for(let r=0;r>>1,s=pn[o],r=Tn(s);rTn(e)-Tn(t)));if(hn.length=0,mn)return void mn.push(...t);for(mn=t,e=e||new Map,gn=0;gnnull==e.id?1/0:e.id,En=(e,t)=>{const n=Tn(e)-Tn(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function An(e){dn=!1,un=!0,e=e||new Map,pn.sort(En);const t=t=>Nn(e,t);try{for(fn=0;fnbn){const e=t.ownerInstance,n=e&&ji(e.type);return ln(`Maximum recursive updates exceeded${n?` in component <${n}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}e.set(t,n+1)}else e.set(t,1)}let In=!1;const $n=new Set;B().__VUE_HMR_RUNTIME__={createRecord:Fn(Rn),rerender:Fn((function(e,t){const n=On.get(e);if(!n)return;n.initialDef.render=t,[...n.instances].forEach((e=>{t&&(e.render=t,Mn(e.type).render=t),e.renderCache=[],In=!0,e.effect.dirty=!0,e.update(),In=!1}))})),reload:Fn((function(e,t){const n=On.get(e);if(!n)return;t=Mn(t),Pn(n.initialDef,t);const o=[...n.instances];for(const e of o){const o=Mn(e.type);$n.has(o)||(o!==n.initialDef&&Pn(o,t),$n.add(o)),e.appContext.propsCache.delete(e.type),e.appContext.emitsCache.delete(e.type),e.appContext.optionsCache.delete(e.type),e.ceReload?($n.add(o),e.ceReload(t.styles),$n.delete(o)):e.parent?(e.parent.effect.dirty=!0,xn(e.parent.update)):e.appContext.reload?e.appContext.reload():"undefined"!=typeof window?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}wn((()=>{for(const e of o)$n.delete(Mn(e.type))}))}))};const On=new Map;function Rn(e,t){return!On.has(e)&&(On.set(e,{initialDef:Mn(t),instances:new Set}),!0)}function Mn(e){return Ui(e)?e.__vccOpts:e}function Pn(e,t){c(e,t);for(const n in e)"__file"===n||n in t||delete e[n]}function Fn(e){return(t,n)=>{try{return e(t,n)}catch(e){console.error(e),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Ln,Vn=[],Dn=!1;function jn(e,...t){Ln?Ln.emit(e,...t):Dn||Vn.push({event:e,args:t})}function Bn(e,t){var n,o;if(Ln=e,Ln)Ln.enabled=!0,Vn.forEach((({event:e,args:t})=>Ln.emit(e,...t))),Vn=[];else if("undefined"!=typeof window&&window.HTMLElement&&!(null==(o=null==(n=window.navigator)?void 0:n.userAgent)?void 0:o.includes("jsdom"))){(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{Bn(e,t)})),setTimeout((()=>{Ln||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Dn=!0,Vn=[])}),3e3)}else Dn=!0,Vn=[]}const Un=Wn("component:added"),Hn=Wn("component:updated"),qn=Wn("component:removed"),zn=e=>{Ln&&"function"==typeof Ln.cleanupBuffer&&!Ln.cleanupBuffer(e)&&qn(e)};function Wn(e){return t=>{jn(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const Kn=Jn("perf:start"),Gn=Jn("perf:end");function Jn(e){return(t,n,o)=>{jn(e,t.appContext.app,t.uid,t,n,o)}}function Yn(e,t,...o){if(e.isUnmounted)return;const s=e.vnode.props||n;{const{emitsOptions:n,propsOptions:[s]}=e;if(n)if(t in n){const e=n[t];if(g(e)){e(...o)||tn(`Invalid event arguments: event validation failed for event "${t}".`)}}else s&&M(t)in s||tn(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${M(t)}" prop.`)}let r=o;const i=t.startsWith("update:"),a=i&&t.slice(7);if(a&&a in s){const e=`${"modelValue"===a?"model":a}Modifiers`,{number:t,trim:i}=s[e]||n;i&&(r=o.map((e=>y(e)?e.trim():e))),t&&(r=o.map(V))}!function(e,t,n){jn("component:emit",e.appContext.app,e,t,n)}(e,t,r);{const n=t.toLowerCase();n!==t&&s[M(n)]&&tn(`Event "${n}" is emitted in component ${Bi(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${O(t)}" instead of "${t}".`)}let c,l=s[c=M(t)]||s[c=M(I(t))];!l&&i&&(l=s[c=M(O(t))]),l&&cn(l,e,6,r);const u=s[c+"Once"];if(u){if(e.emitted){if(e.emitted[c])return}else e.emitted={};e.emitted[c]=!0,cn(u,e,6,r)}}function Xn(e,t,n=!1){const o=t.emitsCache,s=o.get(e);if(void 0!==s)return s;const r=e.emits;let i={},a=!1;if(!g(e)){const o=e=>{const n=Xn(e,t,!0);n&&(a=!0,c(i,n))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return r||a?(p(r)?r.forEach((e=>i[e]=null)):c(i,r),b(e)&&o.set(e,i),i):(b(e)&&o.set(e,null),null)}function Qn(e,t){return!(!e||!i(t))&&(t=t.slice(2).replace(/Once$/,""),d(e,t[0].toLowerCase()+t.slice(1))||d(e,O(t))||d(e,t))}let Zn=null,eo=null;function to(e){const t=Zn;return Zn=e,eo=e&&e.type.__scopeId||null,t}function no(e,t=Zn,n){if(!t)return e;if(e._n)return e;const o=(...n)=>{o._d&&Zr(-1);const s=to(t);let r;try{r=e(...n)}finally{to(s),o._d&&Zr(1)}return Hn(t),r};return o._n=!0,o._c=!0,o._d=!0,o}let oo=!1;function so(){oo=!0}function ro(e){const{type:t,vnode:n,proxy:o,withProxy:s,props:r,propsOptions:[c],slots:l,attrs:u,emit:d,render:p,renderCache:f,data:h,setupState:m,ctx:g,inheritAttrs:y}=e;let v,b;const _=to(e);oo=!1;try{if(4&n.shapeFlag){const e=s||o,t=m.__isScriptSetup?new Proxy(e,{get:(e,t,n)=>(tn(`Property '${String(t)}' was accessed via 'this'. Avoid using 'this' in templates.`),Reflect.get(e,t,n))}):e;v=fi(p.call(t,e,f,r,m,h,g)),b=u}else{const e=t;u===r&&so(),v=fi(e.length>1?e(r,{get attrs(){return so(),u},slots:l,emit:d}):e(r,null)),b=t.props?u:co(u)}}catch(t){Kr.length=0,ln(t,e,1),v=ci(zr)}let x,S=v;if(v.patchFlag>0&&2048&v.patchFlag&&([S,x]=io(v)),b&&!1!==y){const e=Object.keys(b),{shapeFlag:t}=S;if(e.length)if(7&t)c&&e.some(a)&&(b=lo(b,c)),S=ui(S,b);else if(!oo&&S.type!==zr){const e=Object.keys(u),t=[],n=[];for(let o=0,s=e.length;o renders non-element root node that cannot be animated."),S.transition=n.transition),x?x(S):v=S,to(_),v}const io=e=>{const t=e.children,n=e.dynamicChildren,o=ao(t,!1);if(!o)return[e,void 0];if(o.patchFlag>0&&2048&o.patchFlag)return io(o);const s=t.indexOf(o),r=n?n.indexOf(o):-1;return[fi(o),o=>{t[s]=o,n&&(r>-1?n[r]=o:o.patchFlag>0&&(e.dynamicChildren=[...n,o]))}]};function ao(e,t=!0){let n;for(let o=0;o0&&2048&n.patchFlag)return ao(n.children)}}return n}const co=e=>{let t;for(const n in e)("class"===n||"style"===n||i(n))&&((t||(t={}))[n]=e[n]);return t},lo=(e,t)=>{const n={};for(const o in e)a(o)&&o.slice(9)in t||(n[o]=e[o]);return n},uo=e=>7&e.shapeFlag||e.type===zr;function po(e,t,n){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let s=0;se.__isSuspense;let bo=0;const _o={name:"Suspense",__isSuspense:!0,process(e,t,n,o,s,r,i,a,c,l){if(null==e)!function(e,t,n,o,s,r,i,a,c){const{p:l,o:{createElement:u}}=c,d=u("div"),p=e.suspense=wo(e,s,o,t,d,n,r,i,a,c);l(null,p.pendingBranch=e.ssContent,d,null,o,p,r,i),p.deps>0?(xo(e,"onPending"),xo(e,"onFallback"),l(null,e.ssFallback,t,n,o,null,r,i),To(p,e.ssFallback)):p.resolve(!1,!0)}(t,n,o,s,r,i,a,c,l);else{if(r&&r.deps>0&&!e.suspense.isInFallback)return t.suspense=e.suspense,t.suspense.vnode=t,void(t.el=e.el);!function(e,t,n,o,s,r,i,a,{p:c,um:l,o:{createElement:u}}){const d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;const p=t.ssContent,f=t.ssFallback,{activeBranch:h,pendingBranch:m,isInFallback:g,isHydrating:y}=d;if(m)d.pendingBranch=p,oi(p,m)?(c(m,p,d.hiddenContainer,null,s,d,r,i,a),d.deps<=0?d.resolve():g&&(y||(c(h,f,n,o,s,null,r,i,a),To(d,f)))):(d.pendingId=bo++,y?(d.isHydrating=!1,d.activeBranch=m):l(m,s,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u("div"),g?(c(null,p,d.hiddenContainer,null,s,d,r,i,a),d.deps<=0?d.resolve():(c(h,f,n,o,s,null,r,i,a),To(d,f))):h&&oi(p,h)?(c(h,p,n,o,s,d,r,i,a),d.resolve(!0)):(c(null,p,d.hiddenContainer,null,s,d,r,i,a),d.deps<=0&&d.resolve()));else if(h&&oi(p,h))c(h,p,n,o,s,d,r,i,a),To(d,p);else if(xo(t,"onPending"),d.pendingBranch=p,512&p.shapeFlag?d.pendingId=p.component.suspenseId:d.pendingId=bo++,c(null,p,d.hiddenContainer,null,s,d,r,i,a),d.deps<=0)d.resolve();else{const{timeout:e,pendingId:t}=d;e>0?setTimeout((()=>{d.pendingId===t&&d.fallback(f)}),e):0===e&&d.fallback(f)}}(e,t,n,o,s,i,a,c,l)}},hydrate:function(e,t,n,o,s,r,i,a,c){const l=t.suspense=wo(t,o,n,e.parentNode,document.createElement("div"),null,s,r,i,a,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,r,i);0===l.deps&&l.resolve(!1,!0);return u},create:wo,normalize:function(e){const{shapeFlag:t,children:n}=e,o=32&t;e.ssContent=Co(o?n.default:n),e.ssFallback=o?Co(n.fallback):ci(zr)}};function xo(e,t){const n=e.props&&e.props[t];g(n)&&n()}let So=!1;function wo(e,t,n,o,s,r,i,a,c,l,u=!1){So||(So=!0,console[console.info?"info":"log"](" is an experimental feature and its API will likely change."));const{p:d,m:p,um:f,n:h,o:{parentNode:m,remove:g}}=l;let y;const v=function(e){var t;return null!=(null==(t=e.props)?void 0:t.suspensible)&&!1!==e.props.suspensible}(e);v&&(null==t?void 0:t.pendingBranch)&&(y=t.pendingId,t.deps++);const b=e.props?D(e.props.timeout):void 0;sn(b,"Suspense timeout");const _=r,x={vnode:e,parent:t,parentComponent:n,namespace:i,container:o,hiddenContainer:s,deps:0,pendingId:bo++,timeout:"number"==typeof b?b:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){if(!e&&!x.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(x.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.");const{vnode:o,activeBranch:s,pendingBranch:i,pendingId:a,effects:c,parentComponent:l,container:u}=x;let d=!1;x.isHydrating?x.isHydrating=!1:e||(d=s&&i.transition&&"out-in"===i.transition.mode,d&&(s.transition.afterLeave=()=>{a===x.pendingId&&(p(i,u,r===_?h(s):r,0),wn(c))}),s&&(m(s.el)!==x.hiddenContainer&&(r=h(s)),f(s,l,x,!0)),d||p(i,u,r,0)),To(x,i),x.pendingBranch=null,x.isInFallback=!1;let g=x.parent,b=!1;for(;g;){if(g.pendingBranch){g.effects.push(...c),b=!0;break}g=g.parent}b||d||wn(c),x.effects=[],v&&t&&t.pendingBranch&&y===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),xo(o,"onResolve")},fallback(e){if(!x.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:o,container:s,namespace:r}=x;xo(t,"onFallback");const i=h(n),l=()=>{x.isInFallback&&(d(null,e,s,i,o,null,r,a,c),To(x,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=l),x.isInFallback=!0,f(n,o,null,!0),u||l()},move(e,t,n){x.activeBranch&&p(x.activeBranch,e,t,n),x.container=e},next:()=>x.activeBranch&&h(x.activeBranch),registerDep(e,t){const n=!!x.pendingBranch;n&&x.deps++;const o=e.vnode.el;e.asyncDep.catch((t=>{ln(t,e,0)})).then((s=>{if(e.isUnmounted||x.isUnmounted||x.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:r}=e;Zt(r),Oi(e,s,!1),o&&(r.el=o);const a=!o&&e.subTree.el;t(e,r,m(o||e.subTree.el),o?null:h(e.subTree),x,i,c),a&&g(a),fo(e,r.el),en(),n&&0==--x.deps&&x.resolve()}))},unmount(e,t){x.isUnmounted=!0,x.activeBranch&&f(x.activeBranch,n,e,t),x.pendingBranch&&f(x.pendingBranch,n,e,t)}};return x}function Co(e){let t;if(g(e)){const n=Qr&&e._c;n&&(e._d=!1,Jr()),e=e(),n&&(e._d=!0,t=Gr,Yr())}if(p(e)){const t=ao(e);!t&&e.filter((e=>e!==mo)).length>0&&tn(" slots expect a single root node."),e=t}return e=fi(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter((t=>t!==e))),e}function ko(e,t){t&&t.pendingBranch?p(e)?t.effects.push(...e):t.effects.push(e):wn(e)}function To(e,t){e.activeBranch=t;const{vnode:n,parentComponent:o}=e;let s=t.el;for(;!s&&t.component;)s=(t=t.component.subTree).el;n.el=s,o&&o.subTree===n&&(o.vnode.el=s,fo(o,s))}const Eo=Symbol.for("v-scx");function Ao(e,t){return Oo(e,null,c({},t,{flush:"post"}))}function No(e,t){return Oo(e,null,c({},t,{flush:"sync"}))}const Io={};function $o(e,t,n){return g(t)||tn("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),Oo(e,t,n)}function Oo(e,t,{immediate:o,deep:r,flush:i,once:a,onTrack:c,onTrigger:u}=n){if(t&&a){const e=t;t=(...t)=>{e(...t),T()}}void 0!==r&&"number"==typeof r&&tn('watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.'),t||(void 0!==o&&tn('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==r&&tn('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==a&&tn('watch() "once" option is only respected when using the watch(source, callback, options?) signature.'));const d=e=>{tn("Invalid watch source: ",e,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},f=_i,h=e=>!0===r?e:Po(e,!1===r?1:void 0);let m,y,v=!1,b=!1;if(jt(e)?(m=()=>e.value,v=$t(e)):Nt(e)?(m=()=>h(e),v=!0):p(e)?(b=!0,v=e.some((e=>Nt(e)||$t(e))),m=()=>e.map((e=>jt(e)?e.value:Nt(e)?h(e):g(e)?an(e,f,2):void d(e)))):g(e)?m=t?()=>an(e,f,2):()=>(y&&y(),cn(e,f,3,[_])):(m=s,d(e)),t&&r){const e=m;m=()=>Po(e())}let _=e=>{y=C.onStop=()=>{an(e,f,4),y=C.onStop=void 0}},x=b?new Array(e.length).fill(Io):Io;const S=()=>{if(C.active&&C.dirty)if(t){const e=C.run();(r||v||(b?e.some(((e,t)=>P(e,x[t]))):P(e,x)))&&(y&&y(),cn(t,f,3,[e,x===Io?void 0:b&&x[0]===Io?[]:x,_]),x=e)}else C.run()};let w;S.allowRecurse=!!t,"sync"===i?w=S:"post"===i?w=()=>Er(S,f&&f.suspense):(S.pre=!0,f&&(S.id=f.uid),w=()=>xn(S));const C=new ve(m,s,w),k=ye(),T=()=>{C.stop(),k&&l(k.effects,C)};return C.onTrack=c,C.onTrigger=u,t?o?S():x=C.run():"post"===i?Er(C.run.bind(C),f&&f.suspense):C.run(),T}function Ro(e,t,n){const o=this.proxy,s=y(e)?e.includes(".")?Mo(o,e):()=>o[e]:e.bind(o,o);let r;g(t)?r=t:(r=t.handler,n=t);const i=Ci(this),a=Oo(s,r.bind(o),n);return i(),a}function Mo(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e0){if(n>=t)return e;n++}if((o=o||new Set).has(e))return e;if(o.add(e),jt(e))Po(e.value,t,n,o);else if(p(e))for(let s=0;s{Po(e,t,n,o)}));else if(C(e))for(const s in e)Po(e[s],t,n,o);return e}function Fo(e){E(e)&&tn("Do not use built-in directive ids as custom directive id: "+e)}function Lo(e,t,n,o){const s=e.dirs,r=t&&t.dirs;for(let i=0;i{e.isMounted=!0})),hs((()=>{e.isUnmounting=!0})),e}const Bo=[Function,Array],Uo={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Bo,onEnter:Bo,onAfterEnter:Bo,onEnterCancelled:Bo,onBeforeLeave:Bo,onLeave:Bo,onAfterLeave:Bo,onLeaveCancelled:Bo,onBeforeAppear:Bo,onAppear:Bo,onAfterAppear:Bo,onAppearCancelled:Bo},Ho={name:"BaseTransition",props:Uo,setup(e,{slots:t}){const n=xi(),o=jo();return()=>{const s=t.default&&Jo(t.default(),!0);if(!s||!s.length)return;let r=s[0];if(s.length>1){let e=!1;for(const t of s)if(t.type!==zr){if(e){tn(" can only be used on a single element or component. Use for lists.");break}r=t,e=!0}}const i=Rt(e),{mode:a}=i;if(a&&"in-out"!==a&&"out-in"!==a&&"default"!==a&&tn(`invalid mode: ${a}`),o.isLeaving)return Wo(r);const c=Ko(r);if(!c)return Wo(r);const l=zo(c,i,o,n);Go(c,l);const u=n.subTree,d=u&&Ko(u);if(d&&d.type!==zr&&!oi(c,d)){const e=zo(d,i,o,n);if(Go(d,e),"out-in"===a)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&(n.effect.dirty=!0,n.update())},Wo(r);"in-out"===a&&c.type!==zr&&(e.delayLeave=(e,t,n)=>{qo(o,d)[String(d.key)]=d,e[Vo]=()=>{t(),e[Vo]=void 0,delete l.delayedLeave},l.delayedLeave=n})}return r}}};function qo(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function zo(e,t,n,o){const{appear:s,mode:r,persisted:i=!1,onBeforeEnter:a,onEnter:c,onAfterEnter:l,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:h,onLeaveCancelled:m,onBeforeAppear:g,onAppear:y,onAfterAppear:v,onAppearCancelled:b}=t,_=String(e.key),x=qo(n,e),S=(e,t)=>{e&&cn(e,o,9,t)},w=(e,t)=>{const n=t[1];S(e,t),p(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},C={mode:r,persisted:i,beforeEnter(t){let o=a;if(!n.isMounted){if(!s)return;o=g||a}t[Vo]&&t[Vo](!0);const r=x[_];r&&oi(e,r)&&r.el[Vo]&&r.el[Vo](),S(o,[t])},enter(e){let t=c,o=l,r=u;if(!n.isMounted){if(!s)return;t=y||c,o=v||l,r=b||u}let i=!1;const a=e[Do]=t=>{i||(i=!0,S(t?r:o,[e]),C.delayedLeave&&C.delayedLeave(),e[Do]=void 0)};t?w(t,[e,a]):a()},leave(t,o){const s=String(e.key);if(t[Do]&&t[Do](!0),n.isUnmounting)return o();S(d,[t]);let r=!1;const i=t[Vo]=n=>{r||(r=!0,o(),S(n?m:h,[t]),t[Vo]=void 0,x[s]===e&&delete x[s])};x[s]=e,f?w(f,[t,i]):i()},clone:e=>zo(e,t,n,o)};return C}function Wo(e){if(Zo(e))return(e=ui(e)).children=null,e}function Ko(e){return Zo(e)?e.component?e.component.subTree:e.children?e.children[0]:void 0:e}function Go(e,t){6&e.shapeFlag&&e.component?Go(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Jo(e,t=!1,n){let o=[],s=0;for(let r=0;r1)for(let e=0;ec({name:e.name},t,{setup:e}))():e}const Xo=e=>!!e.type.__asyncLoader +/*! #__NO_SIDE_EFFECTS__ */;function Qo(e,t){const{ref:n,props:o,children:s,ce:r}=t.vnode,i=ci(e,o,s);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const Zo=e=>e.type.__isKeepAlive,es={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=xi(),o=n.ctx,s=new Map,r=new Set;let i=null;n.__v_cache=s;const a=n.suspense,{renderer:{p:c,m:l,um:u,o:{createElement:d}}}=o,p=d("div");function f(e){is(e),u(e,n,a,!0)}function h(e){s.forEach(((t,n)=>{const o=ji(t.type);!o||e&&e(o)||m(n)}))}function m(e){const t=s.get(e);i&&oi(t,i)?i&&is(i):f(t),s.delete(e),r.delete(e)}o.activate=(e,t,n,o,s)=>{const r=e.component;l(e,t,n,0,a),c(r.vnode,e,t,n,r,a,o,e.slotScopeIds,s),Er((()=>{r.isDeactivated=!1,r.a&&F(r.a);const t=e.props&&e.props.onVnodeMounted;t&&yi(t,r.parent,e)}),a),Un(r)},o.deactivate=e=>{const t=e.component;l(e,p,null,1,a),Er((()=>{t.da&&F(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&yi(n,t.parent,e),t.isDeactivated=!0}),a),Un(t)},$o((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>ts(e,t))),t&&h((e=>!ts(t,e)))}),{flush:"post",deep:!0});let g=null;const y=()=>{null!=g&&s.set(g,as(n.subTree))};return ds(y),fs(y),hs((()=>{s.forEach((e=>{const{subTree:t,suspense:o}=n,s=as(t);if(e.type!==s.type||e.key!==s.key)f(e);else{is(s);const e=s.component.da;e&&Er(e,o)}}))})),()=>{if(g=null,!t.default)return null;const n=t.default(),o=n[0];if(n.length>1)return tn("KeepAlive should contain exactly one component child."),i=null,n;if(!(ni(o)&&(4&o.shapeFlag||128&o.shapeFlag)))return i=null,o;let a=as(o);const c=a.type,l=ji(Xo(a)?a.type.__asyncResolved||{}:c),{include:u,exclude:d,max:p}=e;if(u&&(!l||!ts(u,l))||d&&l&&ts(d,l))return i=a,o;const f=null==a.key?c:a.key,h=s.get(f);return a.el&&(a=ui(a),128&o.shapeFlag&&(o.ssContent=a)),g=f,h?(a.el=h.el,a.component=h.component,a.transition&&Go(a,a.transition),a.shapeFlag|=512,r.delete(f),r.add(f)):(r.add(f),p&&r.size>parseInt(p,10)&&m(r.values().next().value)),a.shapeFlag|=256,i=a,vo(o.type)?o:a}}};function ts(e,t){return p(e)?e.some((e=>ts(e,t))):y(e)?e.split(",").includes(t):"[object RegExp]"===S(e)&&e.test(t)}function ns(e,t){ss(e,"a",t)}function os(e,t){ss(e,"da",t)}function ss(e,t,n=_i){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(cs(t,o,n),n){let e=n.parent;for(;e&&e.parent;)Zo(e.parent.vnode)&&rs(o,t,n,e),e=e.parent}}function rs(e,t,n,o){const s=cs(t,e,o,!0);ms((()=>{l(o[t],s)}),n)}function is(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function as(e){return 128&e.shapeFlag?e.ssContent:e}function cs(e,t,n=_i,o=!1){if(n){const s=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Te();const s=Ci(n),r=cn(t,n,e,o);return s(),Ee(),r});return o?s.unshift(r):s.push(r),r}tn(`${M(rn[e].replace(/ hook$/,""))} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}const ls=e=>(t,n=_i)=>(!$i||"sp"===e)&&cs(e,((...e)=>t(...e)),n),us=ls("bm"),ds=ls("m"),ps=ls("bu"),fs=ls("u"),hs=ls("bum"),ms=ls("um"),gs=ls("sp"),ys=ls("rtg"),vs=ls("rtc");function bs(e,t=_i){cs("ec",e,t)}function _s(e){return e.some((e=>!ni(e)||e.type!==zr&&!(e.type===Hr&&!_s(e.children))))?e:null}const xs=e=>e?Ai(e)?Li(e)||e.proxy:xs(e.parent):null,Ss=c(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Et(e.props),$attrs:e=>Et(e.attrs),$slots:e=>Et(e.slots),$refs:e=>Et(e.refs),$parent:e=>xs(e.parent),$root:e=>xs(e.root),$emit:e=>e.emit,$options:e=>Ms(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,xn(e.update)}),$nextTick:e=>e.n||(e.n=_n.bind(e.proxy)),$watch:e=>Ro.bind(e)}),ws=e=>"_"===e||"$"===e,Cs=(e,t)=>e!==n&&!e.__isScriptSetup&&d(e,t),ks={get({_:e},t){const{ctx:o,setupState:s,data:r,props:i,accessCache:a,type:c,appContext:l}=e;if("__isVue"===t)return!0;let u;if("$"!==t[0]){const c=a[t];if(void 0!==c)switch(c){case 1:return s[t];case 2:return r[t];case 4:return o[t];case 3:return i[t]}else{if(Cs(s,t))return a[t]=1,s[t];if(r!==n&&d(r,t))return a[t]=2,r[t];if((u=e.propsOptions[0])&&d(u,t))return a[t]=3,i[t];if(o!==n&&d(o,t))return a[t]=4,o[t];Is&&(a[t]=0)}}const p=Ss[t];let f,h;return p?("$attrs"===t?(Le(e,"get",t),so()):"$slots"===t&&Le(e,"get",t),p(e)):(f=c.__cssModules)&&(f=f[t])?f:o!==n&&d(o,t)?(a[t]=4,o[t]):(h=l.config.globalProperties,d(h,t)?h[t]:void(!Zn||y(t)&&0===t.indexOf("__v")||(r!==n&&ws(t[0])&&d(r,t)?tn(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Zn&&tn(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))))},set({_:e},t,o){const{data:s,setupState:r,ctx:i}=e;return Cs(r,t)?(r[t]=o,!0):r.__isScriptSetup&&d(r,t)?(tn(`Cannot mutate + + +
+
+
+

个人信息

+ + + + + + + + {{ formInline.user }} + + + + + 编辑 + + +
+
+

+ 任务列表 + 创建任务 +

+ + + + + +
+
+ +
+
+

互动信息

+ + +
+
+

文件列表

+ + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/templates/knowledge.html b/m78-all/Tianye/Tianye-server/src/main/resources/templates/knowledge.html new file mode 100644 index 000000000..7db196b38 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/templates/knowledge.html @@ -0,0 +1,136 @@ + + + + + Agent + + + + +
+
+
+

个人信息

+ + + + + + + + {{ formInline.user }} + + + + xxxx + + + + 编辑 + + +
+
+

任务列表

+
    +
  • {{ i }}
  • +
+
+
+ +
+
+

互动信息

+
    +
  • {{ i }}
  • +
+
+
+

创建任务

+ + + + + + + + + + + +
+ 提交 +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/tools/downloadUrl.txt b/m78-all/Tianye/Tianye-server/src/main/resources/tools/downloadUrl.txt new file mode 100644 index 000000000..ee4c9cd10 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/tools/downloadUrl.txt @@ -0,0 +1,35604 @@ +{ + "timestamp": "2024-03-12T22:08:45.014Z", + "versions": + [ + { + "version": "113.0.5672.0", + "revision": "1121455", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "113.0.5672.35", + "revision": "1121455", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.35/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.35/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.35/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.35/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.35/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "113.0.5672.63", + "revision": "1121455", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.63/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.63/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.63/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.63/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.63/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5696.0", + "revision": "1126269", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5696.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5696.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5696.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5696.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5696.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5708.0", + "revision": "1128351", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5708.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5708.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5708.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5708.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5708.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5709.0", + "revision": "1128544", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5709.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5709.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5709.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5709.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5709.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5710.0", + "revision": "1128838", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5710.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5710.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5710.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5710.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5710.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5711.3", + "revision": "1129160", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5711.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5711.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5711.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5711.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5711.3/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5713.0", + "revision": "1129764", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5713.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5713.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5713.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5713.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5713.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5715.0", + "revision": "1130383", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5715.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5715.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5715.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5715.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5715.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5718.0", + "revision": "1131255", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5718.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5718.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5718.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5718.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5718.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5720.4", + "revision": "1131806", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5720.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5720.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5720.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5720.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5720.4/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5722.0", + "revision": "1132406", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5722.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5722.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5722.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5722.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5722.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5724.0", + "revision": "1133010", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5724.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5724.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5724.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5724.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5724.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5728.0", + "revision": "1134211", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5728.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5728.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5728.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5728.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5728.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5732.0", + "revision": "1134492", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5732.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5732.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5732.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5732.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5732.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5733.0", + "revision": "1134875", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5733.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5733.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5733.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5733.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5733.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5734.0", + "revision": "1135105", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5734.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5734.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5734.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5734.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5734.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.0", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.2", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.2/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.3", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.3/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.6", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.6/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.6/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.6/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.6/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.6/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.16", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.16/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.16/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.16/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.16/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.16/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.26", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.26/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.26/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.26/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.26/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.26/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.35", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.35/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.35/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.35/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.35/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.35/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.45", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.45/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.45/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.45/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.45/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.45/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.90", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.90/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.90/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.90/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.90/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.90/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "114.0.5735.133", + "revision": "1135570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.133/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.133/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.133/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.133/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/114.0.5735.133/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5739.0", + "revision": "1137062", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5739.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5739.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5739.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5739.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5739.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5740.0", + "revision": "1137381", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5740.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5740.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5740.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5740.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5740.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5741.0", + "revision": "1137540", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5741.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5741.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5741.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5741.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5741.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5742.0", + "revision": "1137597", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5742.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5742.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5742.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5742.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5742.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5743.0", + "revision": "1137649", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5743.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5743.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5743.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5743.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5743.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5744.0", + "revision": "1137693", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5744.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5744.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5744.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5744.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5744.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5747.0", + "revision": "1138227", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5747.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5747.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5747.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5747.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5747.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5749.0", + "revision": "1138853", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5749.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5749.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5749.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5749.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5749.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5750.0", + "revision": "1139213", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5750.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5750.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5750.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5750.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5750.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5751.0", + "revision": "1139420", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5751.2", + "revision": "1139420", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5751.2/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5752.2", + "revision": "1139747", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5752.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5752.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5752.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5752.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5752.2/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5753.0", + "revision": "1140026", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5753.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5753.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5753.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5753.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5753.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5755.0", + "revision": "1140505", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5755.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5755.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5755.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5755.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5755.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5756.0", + "revision": "1140562", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5756.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5756.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5756.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5756.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5756.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5757.0", + "revision": "1140605", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5757.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5757.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5757.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5757.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5757.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5758.0", + "revision": "1140660", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5758.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5758.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5758.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5758.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5758.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5759.0", + "revision": "1140771", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5759.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5759.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5759.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5759.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5759.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5761.0", + "revision": "1141255", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5761.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5761.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5761.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5761.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5761.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5762.0", + "revision": "1141636", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.0/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5762.4", + "revision": "1141636", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5762.4/win64/chrome-win64.zip" + } + ] + } + }, + { + "version": "115.0.5763.0", + "revision": "1141961", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5765.0", + "revision": "1142638", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5765.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5767.0", + "revision": "1143188", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5767.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5768.0", + "revision": "1143535", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5768.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5769.0", + "revision": "1143659", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5769.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5770.0", + "revision": "1143717", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5770.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5771.0", + "revision": "1143768", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5771.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5772.0", + "revision": "1143816", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5772.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5773.0", + "revision": "1143970", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5773.4", + "revision": "1143970", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5773.4/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5776.0", + "revision": "1144913", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5776.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5777.0", + "revision": "1145253", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5777.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5781.0", + "revision": "1146449", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5781.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5785.0", + "revision": "1146924", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5785.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5789.0", + "revision": "1147785", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5789.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.3", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.3/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.13", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.13/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.24", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.24/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.56", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.56/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.75", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.75/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.90", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.90/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.98", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.98/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.102", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.102/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "115.0.5790.170", + "revision": "1148114", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/115.0.5790.170/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5791.0", + "revision": "1148734", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5791.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5793.0", + "revision": "1149362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5793.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5794.0", + "revision": "1149650", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5794.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5795.0", + "revision": "1149910", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5795.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5796.0", + "revision": "1150060", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5796.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5797.0", + "revision": "1150092", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5797.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5798.0", + "revision": "1150119", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5798.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5799.0", + "revision": "1150153", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5799.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5800.0", + "revision": "1150233", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5800.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5801.0", + "revision": "1150339", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5801.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5802.0", + "revision": "1150467", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5802.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5803.2", + "revision": "1150927", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5803.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5804.0", + "revision": "1151137", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5804.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5805.0", + "revision": "1151458", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5805.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5806.0", + "revision": "1151747", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5806.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5807.0", + "revision": "1152177", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5807.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5808.0", + "revision": "1152408", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5808.2", + "revision": "1152408", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5808.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5809.0", + "revision": "1152779", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5809.2", + "revision": "1152779", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5809.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5810.0", + "revision": "1152911", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5810.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5812.0", + "revision": "1152982", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5812.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5815.0", + "revision": "1153505", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5815.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5816.0", + "revision": "1153781", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5816.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5817.0", + "revision": "1154142", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5817.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5818.0", + "revision": "1154341", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5818.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5825.0", + "revision": "1155940", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5825.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5827.0", + "revision": "1156019", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5827.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5828.0", + "revision": "1156133", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5828.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5829.0", + "revision": "1156474", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5829.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5832.0", + "revision": "1157454", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5832.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5835.0", + "revision": "1158473", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5835.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5839.0", + "revision": "1159338", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5839.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5840.0", + "revision": "1159381", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5840.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5841.0", + "revision": "1159417", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5841.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5842.0", + "revision": "1159539", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5842.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5843.0", + "revision": "1159742", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5843.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5844.0", + "revision": "1159949", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5844.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.0", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.2", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.3", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.3/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.4", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.4/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.14", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.14/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.32", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.32/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.42", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.42/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.49", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.49/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.62", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.62/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.82", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.82/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "116.0.5845.96", + "revision": "1160321", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/116.0.5845.96/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5846.0", + "revision": "1160924", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5846.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5847.0", + "revision": "1161139", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5847.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5848.2", + "revision": "1161428", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5848.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5849.2", + "revision": "1161677", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5849.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5851.0", + "revision": "1162091", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5851.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5853.0", + "revision": "1162169", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5853.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5854.0", + "revision": "1162203", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5854.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5855.0", + "revision": "1162309", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5855.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5857.0", + "revision": "1162865", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5857.2", + "revision": "1162865", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5857.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5858.0", + "revision": "1163273", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5858.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5859.0", + "revision": "1163472", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5859.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5860.2", + "revision": "1163728", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5860.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5863.0", + "revision": "1164572", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5863.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5864.0", + "revision": "1164922", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5864.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5865.0", + "revision": "1165036", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5865.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5866.0", + "revision": "1165081", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5866.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5867.0", + "revision": "1165107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5867.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5869.0", + "revision": "1165256", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5869.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5870.0", + "revision": "1165409", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5870.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5871.0", + "revision": "1165533", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5871.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5872.0", + "revision": "1165701", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5872.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5873.0", + "revision": "1165863", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5873.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5874.0", + "revision": "1166240", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5874.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5875.0", + "revision": "1166388", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5875.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5876.0", + "revision": "1166757", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5876.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5877.0", + "revision": "1167357", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5877.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5878.0", + "revision": "1167646", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5878.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5879.0", + "revision": "1167750", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5879.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5880.4", + "revision": "1167801", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5880.4/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5881.0", + "revision": "1167951", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5881.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5882.0", + "revision": "1168285", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5882.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5883.0", + "revision": "1168599", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5883.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5884.0", + "revision": "1168943", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5884.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5885.0", + "revision": "1169218", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5885.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5886.0", + "revision": "1169450", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5886.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5887.0", + "revision": "1169837", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5887.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5888.0", + "revision": "1170061", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5888.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5889.0", + "revision": "1170385", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5889.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5890.0", + "revision": "1170663", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5890.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5892.0", + "revision": "1170923", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5892.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5893.0", + "revision": "1170988", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5893.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5894.0", + "revision": "1171104", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5894.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5895.0", + "revision": "1171312", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5895.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5896.0", + "revision": "1171644", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5896.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5897.0", + "revision": "1171982", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5897.3", + "revision": "1171982", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5897.3/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5898.0", + "revision": "1172250", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5898.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5899.0", + "revision": "1172545", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5899.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5900.0", + "revision": "1172838", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5900.2", + "revision": "1172838", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5900.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5901.0", + "revision": "1173181", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5901.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5902.0", + "revision": "1173377", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5902.2", + "revision": "1173377", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5902.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5903.2", + "revision": "1173693", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5903.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5904.0", + "revision": "1173838", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5904.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5905.0", + "revision": "1173897", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5905.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5906.0", + "revision": "1173942", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5906.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5907.0", + "revision": "1174000", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5907.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5908.0", + "revision": "1174124", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5908.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5910.0", + "revision": "1174744", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5910.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5911.0", + "revision": "1175078", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5911.2", + "revision": "1175078", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5911.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5912.0", + "revision": "1175363", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5912.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5914.0", + "revision": "1175970", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5914.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5915.0", + "revision": "1176304", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5915.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5916.0", + "revision": "1176526", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5916.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5917.0", + "revision": "1176764", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5917.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5918.0", + "revision": "1176938", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5918.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5920.0", + "revision": "1177020", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5920.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5922.0", + "revision": "1177152", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5922.2", + "revision": "1177152", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5922.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5923.0", + "revision": "1177453", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5923.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5924.2", + "revision": "1177682", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5924.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5925.0", + "revision": "1178065", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5925.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5926.0", + "revision": "1178349", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5926.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5927.0", + "revision": "1178629", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5927.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5928.0", + "revision": "1178942", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5928.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5929.0", + "revision": "1179256", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5929.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5930.0", + "revision": "1179484", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5930.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5931.0", + "revision": "1179742", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5931.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5932.0", + "revision": "1180021", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5932.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5933.0", + "revision": "1180042", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5933.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5934.0", + "revision": "1180080", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5934.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5935.0", + "revision": "1180206", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5935.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5936.0", + "revision": "1180530", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5936.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5937.0", + "revision": "1180811", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5937.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.0", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.2", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.4", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.4/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.11", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.11/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.22", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.22/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.35", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.35/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.48", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.48/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.62", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.62/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.88", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.88/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.92", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.92/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "117.0.5938.149", + "revision": "1181205", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/117.0.5938.149/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5939.0", + "revision": "1181699", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5939.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5940.0", + "revision": "1181990", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5940.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5941.0", + "revision": "1182340", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5941.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5942.0", + "revision": "1182511", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5942.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5943.0", + "revision": "1182793", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5943.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5950.0", + "revision": "1183546", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5951.0", + "revision": "1183763", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5951.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5952.2", + "revision": "1184085", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5952.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5953.0", + "revision": "1184296", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5953.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5954.0", + "revision": "1184603", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5954.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5955.0", + "revision": "1184863", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5955.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5956.4", + "revision": "1185115", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5956.4/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5957.0", + "revision": "1185407", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5957.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5958.0", + "revision": "1185524", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5958.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5959.0", + "revision": "1185562", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5959.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5960.0", + "revision": "1185618", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5960.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5961.0", + "revision": "1185653", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5961.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5962.0", + "revision": "1185769", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5962.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5964.0", + "revision": "1186366", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5964.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5966.0", + "revision": "1187151", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5966.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5968.0", + "revision": "1187707", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5968.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5969.0", + "revision": "1188068", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5969.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5970.0", + "revision": "1188244", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5970.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5971.0", + "revision": "1188545", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5971.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5972.0", + "revision": "1188679", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5972.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5973.0", + "revision": "1188723", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5973.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5974.0", + "revision": "1188764", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5974.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5975.0", + "revision": "1188799", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5975.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5976.0", + "revision": "1188905", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5976.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5977.0", + "revision": "1189217", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5977.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5978.0", + "revision": "1189418", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5978.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5979.0", + "revision": "1189757", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5979.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5980.0", + "revision": "1189999", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5980.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5981.0", + "revision": "1190382", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5981.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5982.0", + "revision": "1190646", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5982.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5993.0", + "revision": "1192594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5993.3", + "revision": "1192594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.3/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5993.18", + "revision": "1192594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.18/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5993.32", + "revision": "1192594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.32/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5993.54", + "revision": "1192594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.54/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "118.0.5993.70", + "revision": "1192594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/118.0.5993.70/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.5997.0", + "revision": "1193999", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5997.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.5999.0", + "revision": "1194462", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.5999.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6000.0", + "revision": "1194527", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6000.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6001.0", + "revision": "1194570", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6001.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6002.0", + "revision": "1194627", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6002.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6003.0", + "revision": "1194755", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6003.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6004.0", + "revision": "1194959", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6004.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6005.0", + "revision": "1195292", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6005.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6007.0", + "revision": "1195881", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6007.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6008.0", + "revision": "1196163", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6008.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6018.0", + "revision": "1198284", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6018.4", + "revision": "1198284", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6018.4/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6020.2", + "revision": "1198929", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6020.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6022.0", + "revision": "1199477", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6022.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6023.0", + "revision": "1199825", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6023.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6024.0", + "revision": "1200090", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6024.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6026.0", + "revision": "1200638", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6026.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6027.0", + "revision": "1200682", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6027.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6028.0", + "revision": "1200725", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6028.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6029.0", + "revision": "1200781", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6029.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6034.3", + "revision": "1201974", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6034.3/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6036.0", + "revision": "1202576", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6036.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6039.0", + "revision": "1203503", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6039.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6040.0", + "revision": "1203661", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6040.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6041.0", + "revision": "1203717", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6041.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6042.0", + "revision": "1203758", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6042.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6044.0", + "revision": "1203869", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6044.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6045.0", + "revision": "1204232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6045.6", + "revision": "1204232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.6/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6045.9", + "revision": "1204232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.9/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6045.21", + "revision": "1204232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.21/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6045.59", + "revision": "1204232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.59/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "119.0.6045.105", + "revision": "1204232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/119.0.6045.105/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6046.0", + "revision": "1204916", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6046.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6048.0", + "revision": "1205593", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6048.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6049.0", + "revision": "1205809", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6049.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6050.0", + "revision": "1206167", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6050.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6051.0", + "revision": "1206341", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6051.2", + "revision": "1206341", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6051.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6055.0", + "revision": "1206888", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6055.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6057.0", + "revision": "1207054", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6057.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6061.0", + "revision": "1208194", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6061.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6062.2", + "revision": "1208568", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6062.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6065.0", + "revision": "1209401", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6065.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6066.0", + "revision": "1209732", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6066.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6067.0", + "revision": "1209810", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6067.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6068.0", + "revision": "1209864", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6068.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6069.0", + "revision": "1209912", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6069.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6070.0", + "revision": "1209973", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6070.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6071.0", + "revision": "1210159", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6071.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6072.0", + "revision": "1210586", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6072.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6073.0", + "revision": "1210793", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6073.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6075.0", + "revision": "1211473", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6075.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6077.0", + "revision": "1212018", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6077.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6078.0", + "revision": "1212514", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6078.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6079.0", + "revision": "1212715", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6079.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6080.0", + "revision": "1213057", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6080.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6081.0", + "revision": "1213099", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6081.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6082.0", + "revision": "1213169", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6082.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6084.0", + "revision": "1213262", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6084.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6086.0", + "revision": "1213882", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6086.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6087.0", + "revision": "1214118", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6087.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6088.2", + "revision": "1214564", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6088.2/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6089.0", + "revision": "1214769", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6089.3", + "revision": "1214769", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6089.3/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6091.0", + "revision": "1215318", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6091.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6092.0", + "revision": "1216182", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6092.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6093.0", + "revision": "1216513", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6093.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6094.0", + "revision": "1216571", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6094.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6095.0", + "revision": "1216615", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6095.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6096.0", + "revision": "1216668", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6096.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6097.0", + "revision": "1216746", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6097.0/win64/chromedriver-win64.zip" + } + ] + } + }, + { + "version": "120.0.6098.0", + "revision": "1216907", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6098.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.0", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.2", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.5", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.5/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.18", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.18/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.28", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.28/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.35", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.35/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.56", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.56/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.62", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.62/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.71", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.71/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "120.0.6099.109", + "revision": "1217362", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/120.0.6099.109/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6100.0", + "revision": "1217989", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6100.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6101.0", + "revision": "1218178", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6101.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6102.0", + "revision": "1218596", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6102.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6103.0", + "revision": "1218782", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6103.3", + "revision": "1218782", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6103.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6104.0", + "revision": "1219253", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6104.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6105.0", + "revision": "1219441", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6105.2", + "revision": "1219441", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6105.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6106.0", + "revision": "1219847", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6106.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6107.0", + "revision": "1219911", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6107.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6108.0", + "revision": "1219969", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6108.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6109.0", + "revision": "1220011", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6109.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6111.0", + "revision": "1220232", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6111.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6114.0", + "revision": "1220904", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6114.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6115.2", + "revision": "1221295", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6115.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6119.0", + "revision": "1222688", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6119.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6120.0", + "revision": "1222902", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6120.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6122.0", + "revision": "1223320", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6122.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6123.0", + "revision": "1223353", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6123.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6124.0", + "revision": "1223380", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6124.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6125.0", + "revision": "1223437", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6125.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6126.0", + "revision": "1223598", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6126.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6127.0", + "revision": "1224055", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6127.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6128.0", + "revision": "1224274", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6128.2", + "revision": "1224274", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6128.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6129.0", + "revision": "1224701", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6129.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6130.0", + "revision": "1224902", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6130.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6133.0", + "revision": "1225867", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6133.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6134.0", + "revision": "1226072", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6134.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6136.0", + "revision": "1226537", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6136.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6137.0", + "revision": "1226644", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6137.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6139.0", + "revision": "1227183", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6139.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6140.0", + "revision": "1227356", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6140.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6141.0", + "revision": "1227758", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6141.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6142.0", + "revision": "1227959", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6142.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6143.0", + "revision": "1228252", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6143.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6144.0", + "revision": "1228441", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6144.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6145.0", + "revision": "1228632", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6145.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6146.0", + "revision": "1228775", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6146.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6147.0", + "revision": "1228912", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6147.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6148.0", + "revision": "1228964", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6148.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6150.0", + "revision": "1229070", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6150.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6152.0", + "revision": "1229307", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6152.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6154.0", + "revision": "1229871", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6154.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6156.0", + "revision": "1230501", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6156.2", + "revision": "1230501", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6156.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6166.0", + "revision": "1232695", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6166.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.0", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.2", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.8", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.8/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.16", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.16/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.47", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.47/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.57", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.57/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.85", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.85/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "121.0.6167.184", + "revision": "1233107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/121.0.6167.184/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6168.0", + "revision": "1233733", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6168.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6169.0", + "revision": "1233911", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6169.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6170.0", + "revision": "1234130", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6170.3", + "revision": "1234130", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6170.5", + "revision": "1234130", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6170.5/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6171.0", + "revision": "1234477", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6171.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6172.0", + "revision": "1234820", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6172.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6173.0", + "revision": "1234878", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6173.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6174.0", + "revision": "1235369", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6174.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6175.0", + "revision": "1235413", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6175.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6176.0", + "revision": "1235456", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6176.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6177.0", + "revision": "1235498", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6177.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6178.0", + "revision": "1235559", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6178.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6179.0", + "revision": "1235708", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6179.2", + "revision": "1235708", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6179.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6180.0", + "revision": "1236109", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6180.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6181.0", + "revision": "1236288", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6181.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6182.0", + "revision": "1236748", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6182.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6183.0", + "revision": "1236918", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6183.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6184.0", + "revision": "1237305", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6184.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6185.0", + "revision": "1237499", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6185.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6186.0", + "revision": "1237890", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6186.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6187.0", + "revision": "1238056", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6187.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6188.0", + "revision": "1238359", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6188.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6189.0", + "revision": "1238413", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6189.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6190.0", + "revision": "1238439", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6190.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6192.0", + "revision": "1238491", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6192.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6193.0", + "revision": "1238583", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6193.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6194.0", + "revision": "1238916", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6194.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6195.0", + "revision": "1239118", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6195.2", + "revision": "1239118", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6195.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6196.0", + "revision": "1239517", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6196.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6197.0", + "revision": "1239641", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6197.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6199.0", + "revision": "1240104", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6199.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6200.0", + "revision": "1240427", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6200.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6201.0", + "revision": "1240561", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6201.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6202.0", + "revision": "1240653", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6202.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6203.0", + "revision": "1240700", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6203.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6204.0", + "revision": "1240741", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6204.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6206.0", + "revision": "1240833", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6206.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6207.0", + "revision": "1240889", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6207.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6208.0", + "revision": "1240940", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6208.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6209.0", + "revision": "1240994", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6209.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6210.0", + "revision": "1241089", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6210.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6211.0", + "revision": "1241153", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6211.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6212.0", + "revision": "1241290", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6212.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6214.0", + "revision": "1241437", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6214.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6215.0", + "revision": "1241509", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6215.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6216.0", + "revision": "1241566", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6216.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6217.0", + "revision": "1241592", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6217.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6218.0", + "revision": "1241638", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6218.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6223.0", + "revision": "1241888", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6223.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6224.0", + "revision": "1242239", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6224.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6225.0", + "revision": "1242416", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6225.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6226.0", + "revision": "1242761", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6226.2", + "revision": "1242761", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6226.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6227.3", + "revision": "1242890", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6227.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6228.0", + "revision": "1243250", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6228.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6229.0", + "revision": "1243422", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6229.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6231.0", + "revision": "1243752", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6231.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6233.0", + "revision": "1243833", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6233.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6234.0", + "revision": "1243873", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6234.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6235.0", + "revision": "1244024", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6235.3", + "revision": "1244024", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6235.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6236.2", + "revision": "1244273", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6236.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6237.0", + "revision": "1244538", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6237.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6238.2", + "revision": "1244895", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6238.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6239.0", + "revision": "1245206", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6239.2", + "revision": "1245206", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6239.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6240.0", + "revision": "1245594", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6240.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6241.0", + "revision": "1245833", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6241.3", + "revision": "1245833", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6241.4", + "revision": "1245833", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.4/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6241.5", + "revision": "1245833", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6241.5/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6244.0", + "revision": "1246626", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6244.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6245.0", + "revision": "1246798", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6245.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6246.0", + "revision": "1246866", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6246.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6248.0", + "revision": "1246936", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6248.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6249.0", + "revision": "1246997", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6249.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6251.0", + "revision": "1247345", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6251.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6252.4", + "revision": "1247442", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6252.4/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6253.0", + "revision": "1247893", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6253.3", + "revision": "1247893", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6253.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6254.0", + "revision": "1248107", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6254.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6255.0", + "revision": "1248543", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6255.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6256.2", + "revision": "1248731", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6256.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6257.0", + "revision": "1249198", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6257.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6258.0", + "revision": "1249342", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6258.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6259.0", + "revision": "1249557", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6259.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6260.0", + "revision": "1250035", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6260.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.0", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.3", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.6", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.6/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.18", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.18/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.29", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.29/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.39", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.39/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.57", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.57/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.69", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.69/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.94", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.94/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.111", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "122.0.6261.128", + "revision": "1250580", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.128/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6262.0", + "revision": "1251193", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6262.5", + "revision": "1251193", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6262.5/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6263.0", + "revision": "1251382", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6263.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6265.0", + "revision": "1252026", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6265.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6268.0", + "revision": "1252961", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6268.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6269.0", + "revision": "1253259", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6269.2", + "revision": "1253259", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6269.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6270.0", + "revision": "1253682", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6270.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6271.0", + "revision": "1253874", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6271.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6272.0", + "revision": "1254309", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6272.2", + "revision": "1254309", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6272.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6273.0", + "revision": "1254475", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6273.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6274.0", + "revision": "1254884", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6274.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6275.0", + "revision": "1255020", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6275.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6276.0", + "revision": "1255416", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6276.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6277.0", + "revision": "1255559", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6277.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6278.0", + "revision": "1255881", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6278.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6279.0", + "revision": "1255932", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6279.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6280.0", + "revision": "1255966", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6280.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6281.0", + "revision": "1255995", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6281.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6283.0", + "revision": "1256193", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6283.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6284.0", + "revision": "1256568", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6284.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6285.0", + "revision": "1256728", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6285.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6286.0", + "revision": "1257143", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6286.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6287.0", + "revision": "1257313", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6287.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6288.0", + "revision": "1257716", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6288.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6289.0", + "revision": "1257906", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6289.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6290.0", + "revision": "1258314", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6290.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6291.0", + "revision": "1258423", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6291.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6292.0", + "revision": "1258846", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6292.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6293.0", + "revision": "1258886", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6293.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6294.0", + "revision": "1258922", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6294.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6295.0", + "revision": "1258951", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6295.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6296.0", + "revision": "1259007", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6296.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6297.0", + "revision": "1259158", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6297.2", + "revision": "1259158", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6297.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6298.0", + "revision": "1259633", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6298.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6299.0", + "revision": "1259817", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6299.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6300.2", + "revision": "1260023", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6300.3", + "revision": "1260023", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6300.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6301.0", + "revision": "1260414", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6301.2", + "revision": "1260414", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6301.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6306.0", + "revision": "1261996", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6306.2", + "revision": "1261996", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6306.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6307.0", + "revision": "1262084", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6307.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6308.0", + "revision": "1262126", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6308.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6309.0", + "revision": "1262161", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6309.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6310.0", + "revision": "1262199", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6310.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6311.0", + "revision": "1262371", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6311.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6312.0", + "revision": "1262506", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6312.2", + "revision": "1262506", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6312.4", + "revision": "1262506", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.4/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6312.10", + "revision": "1262506", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.10/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6312.22", + "revision": "1262506", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.22/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "123.0.6312.28", + "revision": "1262506", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.28/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6325.0", + "revision": "1265597", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6325.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6326.0", + "revision": "1265677", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6326.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6328.0", + "revision": "1266393", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6328.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6329.0", + "revision": "1266759", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6329.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6330.0", + "revision": "1266968", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6330.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6331.0", + "revision": "1267189", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6331.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6332.0", + "revision": "1267385", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6332.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6333.0", + "revision": "1267485", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6333.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6334.0", + "revision": "1267520", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6334.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6335.0", + "revision": "1267562", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6335.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6336.0", + "revision": "1267599", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6336.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6337.0", + "revision": "1267642", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6337.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6338.0", + "revision": "1267798", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6338.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6339.0", + "revision": "1268132", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6339.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6341.0", + "revision": "1268602", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6341.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6342.2", + "revision": "1268951", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.2/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6342.3", + "revision": "1268951", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6342.3/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6343.0", + "revision": "1269365", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6343.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6344.0", + "revision": "1269477", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6344.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6345.0", + "revision": "1269976", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6345.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6346.0", + "revision": "1270132", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6346.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6347.0", + "revision": "1270518", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6347.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6348.0", + "revision": "1270618", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6348.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6349.0", + "revision": "1270668", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6349.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6350.0", + "revision": "1270706", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6350.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6351.0", + "revision": "1270764", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6351.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6352.1", + "revision": "1270950", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6352.1/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6353.0", + "revision": "1271325", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6353.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + }, + { + "version": "124.0.6354.0", + "revision": "1271514", + "downloads": + { + "chrome": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/linux64/chrome-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/mac-arm64/chrome-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/mac-x64/chrome-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/win32/chrome-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/win64/chrome-win64.zip" + } + ], + "chromedriver": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/linux64/chromedriver-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/mac-arm64/chromedriver-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/mac-x64/chromedriver-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/win32/chromedriver-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/win64/chromedriver-win64.zip" + } + ], + "chrome-headless-shell": + [ + { + "platform": "linux64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/linux64/chrome-headless-shell-linux64.zip" + }, + { + "platform": "mac-arm64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/mac-arm64/chrome-headless-shell-mac-arm64.zip" + }, + { + "platform": "mac-x64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/mac-x64/chrome-headless-shell-mac-x64.zip" + }, + { + "platform": "win32", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/win32/chrome-headless-shell-win32.zip" + }, + { + "platform": "win64", + "url": "https://storage.googleapis.com/chrome-for-testing-public/124.0.6354.0/win64/chrome-headless-shell-win64.zip" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/main/resources/tools/instruction.txt b/m78-all/Tianye/Tianye-server/src/main/resources/tools/instruction.txt new file mode 100644 index 000000000..a45701d90 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/main/resources/tools/instruction.txt @@ -0,0 +1,3 @@ +下载地址: https://chromedriver.chromium.org/downloads +1、查看chrome版本号,下载版本号对应的chromedriver,区分系统 +2、解压chromedriver.zip,修改config.properties文件中 chrome.driver.path 路径 \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/CommonTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/CommonTest.java new file mode 100644 index 000000000..bd5034db9 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/CommonTest.java @@ -0,0 +1,27 @@ +package run.mone.local.docean.controller.test; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import run.mone.junit.DoceanConfiguration; +import run.mone.junit.DoceanExtension; +import run.mone.local.docean.fsm.FlowService; + +import javax.annotation.Resource; + +/** + * @author goodjava@qq.com + * @date 2024/3/5 11:00 + */ +@ExtendWith(DoceanExtension.class) +@DoceanConfiguration(basePackage = {"run.mone.local.docean", "com.xiaomi.youpin"}) +public class CommonTest { + + + @Resource + private FlowService flowService; + + @Test + public void displayFlowServiceSetContents() { + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/ControllerTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/ControllerTest.java new file mode 100644 index 000000000..afc3bea5f --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/ControllerTest.java @@ -0,0 +1,75 @@ +package run.mone.local.docean.controller.test; + +import com.xiaomi.youpin.docean.Ioc; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import run.mone.junit.DoceanConfiguration; +import run.mone.junit.DoceanExtension; +import run.mone.local.docean.controller.TestController; + +import javax.annotation.Resource; + +import static org.junit.Assert.assertEquals; + +/** + * @author goodjava@qq.com + * @date 2024/2/24 09:16 + */ +@ExtendWith(DoceanExtension.class) +@DoceanConfiguration(basePackage = {"run.mone.local.docean","com.xiaomi.youpin"}) +public class ControllerTest { + + @Resource + private TestController tc; + + @org.junit.jupiter.api.Test + public void testGetKnowledgeIdByUserName() { + Long expected = 2061L; // 假设这是我们期望的返回值 + Long actual = tc.testGetKnowledgeIdByUserName(); + assertEquals(expected, actual); + } + + + @org.junit.jupiter.api.Test + public void testGetPromptIdByUserName() { + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin.docean.plugin"); + TestController tc = Ioc.ins().getBean(TestController.class); + Long expected = 71239L; // 假设这是我们期望的返回值 + Long actual = tc.testGetPromptIdByUserName(); + assertEquals(expected, actual); + } + + @org.junit.jupiter.api.Test + public void testTestUserByToken() { + // 初始化IOC容器,这里假设已经在测试类的其他地方进行了初始化 + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin"); + + // 通过IOC容器获取TestController的实例 + TestController testController = Ioc.ins().getBean(TestController.class); + + // 调用testUserByToken方法并获取结果 + String expected = "zhangping17"; // 假设这是我们期望的返回值 + String actual = testController.testUserByToken(); + + // 断言结果是否符合预期 + assertEquals(expected, actual); + } + + @Test + public void testWxMsgSend() { + // 初始化IOC容器,这里假设已经在测试类的其他地方进行了初始化 + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin"); + + // 通过IOC容器获取TestController的实例 + TestController testController = Ioc.ins().getBean(TestController.class); + + // 调用wxMsgSend方法并获取结果 + String expected = "success"; // 假设这是我们期望的返回值 + String actual = testController.wxMsgSend(); + + // 断言结果是否符合预期 + assertEquals(expected, actual); + } + + +} diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/DbTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/DbTest.java new file mode 100644 index 000000000..b7720a586 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/DbTest.java @@ -0,0 +1,56 @@ +package run.mone.local.docean.controller.test; + +import org.junit.Test; +import org.nutz.dao.Dao; +import org.nutz.dao.impl.NutDao; +import org.nutz.dao.impl.SimpleDataSource; +import run.mone.local.docean.po.AgentInfoPo; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.List; + +/** + * @author HawickMason@xiaomi.com + * @date 2/26/24 5:22 PM + */ +public class DbTest { + @Test + public void testSqllite() { + Connection c = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:test.db"); + } catch (Exception e) { + // do nothing + } + System.out.println("Open databse successfully"); + } + + @Test + public void testAgentInfoStore() throws ClassNotFoundException { + SimpleDataSource dataSource = new SimpleDataSource(); + dataSource.setJdbcUrl("jdbc:sqlite:test.db"); + dataSource.setDriverClassName("org.sqlite.JDBC"); + Dao dao = new NutDao(dataSource); + // 创建表 + dao.create(AgentInfoPo.class, false); // false的含义是,如果表已经存在,就不要删除重建了. + dao.insert(AgentInfoPo.builder() + .token("testTokenAAA") + .avatarPath("testPath") + .build()); + AgentInfoPo info = dao.fetch(AgentInfoPo.class, 1); + List infos = dao.query(AgentInfoPo.class, null); + System.out.println("First record:" + info); + System.out.println("All: " + infos); + } + + @Test + public void testSqlEscape() { + String originalString = "这是一个包含@的字符串,例如:email@example.com"; + String replacedString = originalString.replaceAll("@", "@@"); + + System.out.println("原始字符串: " + originalString); + System.out.println("替换后的字符串: " + replacedString); + } +} diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/M78ServiceTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/M78ServiceTest.java new file mode 100644 index 000000000..35a2d7e59 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/M78ServiceTest.java @@ -0,0 +1,38 @@ +package run.mone.local.docean.controller.test; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import run.mone.junit.DoceanConfiguration; +import run.mone.junit.DoceanExtension; +import run.mone.local.docean.service.M78Service; +import run.mone.local.docean.util.HttpUtils; + +import javax.annotation.Resource; + +/** + * @author goodjava@qq.com + * @date 2024/3/7 10:49 + */ +@ExtendWith(DoceanExtension.class) +@DoceanConfiguration(basePackage = {"run.mone.local.docean", "com.xiaomi.youpin"}) +public class M78ServiceTest { + + @Resource + private M78Service m78Service; + + + @Test + public void testAsk() { + String question = "今天北京天气怎么样?"; +// String question = "hi"; + String history = ""; + String knowledge = ""; + String plugin = "[{\"desc\":\"查询某个地方的天气\",\"function\":\"weather\",\"params\":{\"location\":\"那个地方\"}}]"; + Object obj = m78Service.ask2(question, history, knowledge, plugin, null); + System.out.println(obj); + } + + +} diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/MailTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/MailTest.java new file mode 100644 index 000000000..da8b9963f --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/MailTest.java @@ -0,0 +1,40 @@ +package run.mone.local.docean.controller.test; + +import com.sun.mail.util.MailSSLSocketFactory; +import lombok.extern.slf4j.Slf4j; + +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.security.GeneralSecurityException; +import java.util.Properties; + +@Slf4j +public class MailTest { + + public static void main(String[] args) throws MessagingException, GeneralSecurityException { + Properties props = new Properties(); + props.put("mail.host", "smtp.qq.com"); + props.put("mail.transport.protocol", "smtp"); + props.put("mail.smtp.auth", "true"); + MailSSLSocketFactory sf = new MailSSLSocketFactory(); + sf.setTrustAllHosts(true); + props.put("mail.smtp.ssl.enable", "true"); + props.put("mail.smtp.ssl.socketFactory", sf); + Session session = Session.getInstance(props, new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication("XX@qq.com", "XX"); + } + }); + session.setDebug(true); + MimeMessage message = new MimeMessage(session); + message.setFrom(new InternetAddress("XX@qq.com")); + message.addRecipient(Message.RecipientType.TO, new InternetAddress("XX@qq.com")); + message.setSubject("title"); + message.setText("content"); + Transport.send(message); + System.out.println("##############"); + } + +} diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/SerivceTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/SerivceTest.java new file mode 100644 index 000000000..420f0d20e --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/SerivceTest.java @@ -0,0 +1,263 @@ +package run.mone.local.docean.controller.test; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.xiaomi.youpin.docean.Ioc; +import lombok.SneakyThrows; +import org.junit.Test; +import org.nutz.dao.Dao; +import org.nutz.dao.impl.NutDao; +import org.nutz.dao.impl.SimpleDataSource; +import run.mone.ai.z.dto.ZKnowledgeReq; +import run.mone.local.docean.dto.ExecCommandResult; +import run.mone.local.docean.enums.ImEnum; +import run.mone.local.docean.fsm.BotReq; +import run.mone.local.docean.fsm.bo.EndFlowRes; +import run.mone.local.docean.fsm.bo.FlowData; +import run.mone.local.docean.fsm.bo.InputData; +import run.mone.local.docean.fsm.bo.NodeEdge; +import run.mone.local.docean.po.Message; +import run.mone.local.docean.service.*; +import run.mone.local.docean.service.tool.ChromeService; +import run.mone.local.docean.service.tool.IdeService; +import run.mone.local.docean.service.tool.OSXService; +import run.mone.m78.api.bo.feature.router.FeatureRouterDTO; +import run.mone.m78.api.bo.gitlab.GitLabReq; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.*; + +/** + * @author goodjava@qq.com + * @date 2024/2/24 16:52 + */ +public class SerivceTest { + + @Test + public void test1() { + ZService zService = Ioc.ins().init("com.xiaomi.youpin", "run.mone.local.docean").getBean(ZService.class); + ZKnowledgeReq req = new ZKnowledgeReq(); + req.setKnowledgeBaseId(2061L); + req.setQueryText("kafka"); + req.setLimit(1); + String res = zService.getKnowledgeBaseSummaryAnswer(req); + System.out.println(res); + } + + @Test + public void testGetFileContent() { + GitService gitService = Ioc.ins().init("com.xiaomi.youpin", "run.mone.local.docean").getBean(GitService.class); + GitLabReq req = new GitLabReq(); + req.setGitDomain(""); + req.setGitToken(""); + req.setProjectId("81650"); + req.setFilePath("gateway-service/src/main/java/com/xiaomi/youpin/gwdash/bo/AccountDetailResult.java"); + req.setBranch("master"); + + //System.out.println(gitService.getProjectStructureTree(req).getData()); + System.out.println(gitService.getFileContent(req).getData()); + //System.out.println(gitService.parseProjectJavaFile(req).getData()); + } + + @Test + public void testSendFeiShu() { + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin"); + ImContext imContext = Ioc.ins().getBean(ImContext.class); + boolean expected = true; // 假设这是我们期望的返回值 + boolean actual = imContext.sendMessage("hello world", "zhangping17@xiaomi.com", ImEnum.FEISHU); + assertEquals(expected, actual); + } + + @Test + public void testSendWeiXin() { + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin"); + ImContext imContext = Ioc.ins().getBean(ImContext.class); + boolean expected = true; // 假设这是我们期望的返回值 + boolean actual = imContext.sendMessage("hello world", "o3V7c6dBbmaxL68N8UjJhw6NR-6I", ImEnum.WEIXIN); + assertEquals(expected, actual); + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + @SneakyThrows + @Test + public void testChromeService() { + Ioc.ins().init("run.mone.local.docean.service.tool", "com.xiaomi.youpin"); + ChromeService chromeService = Ioc.ins().getBean(ChromeService.class); + chromeService.open("https://baike.baidu.com/item/%E5%9C%86%E6%98%8E%E5%9B%AD"); + System.out.println(chromeService.getCurrentUrl()); + System.out.println(chromeService.getTitle()); + System.out.println(chromeService.getContent("百度", null)); + System.out.println(chromeService.list()); + TimeUnit.SECONDS.sleep(5); + chromeService.takeFullScreenShot("/tmp/a.png"); + System.out.println(chromeService.close()); + System.out.println(chromeService.quit()); + } + @SneakyThrows + @Test + public void testTakeFullScreenShotWithCookies() { + Ioc.ins().init("run.mone.local.docean.service.tool", "com.xiaomi.youpin"); + ChromeService chromeService = Ioc.ins().getBean(ChromeService.class); + chromeService.openWithCookie("", ""); + TimeUnit.SECONDS.sleep(5); + chromeService.takeFullScreenShot("/tmp/a.png"); + System.out.println(chromeService.quit()); + + + } + + @SneakyThrows + @Test + public void initializeAndMonitorNetworkTraffic() { + Ioc.ins().init("run.mone.local.docean.service.tool", "com.xiaomi.youpin"); + ChromeService chromeService = Ioc.ins().getBean(ChromeService.class); + chromeService.newInit(); + chromeService.networkMonitor("https://www.zhihu.com/billboard"); + TimeUnit.SECONDS.sleep(150); + System.out.println(chromeService.close()); + System.out.println(chromeService.quit()); + } + + + /** + * 测试执行IDE服务的方法。 + * 初始化IdeService实例,发送关闭所有标签页的命令,并验证返回结果。 + * 确保返回的JsonElement不为空,是JsonObject类型,并且返回码为0。 + */ + @Test + public void testExecuteIdeService() { + IdeService ideService = Ioc.ins().init("com.xiaomi.youpin", "run.mone.local.docean").getBean(IdeService.class); + + JsonObject cmdCloseAllTabs = new JsonObject(); + cmdCloseAllTabs.addProperty("cmd", "close_all_tab"); + + JsonElement response = ideService.execute(cmdCloseAllTabs); + + assertNotNull(response); + assertTrue(response.isJsonObject()); + JsonObject responseObj = response.getAsJsonObject(); + assertEquals(0, responseObj.get("code").getAsInt()); + } + + @Test + public void testOSX() { + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin"); + OSXService osxService = Ioc.ins().getBean(OSXService.class); + osxService.open("/tmp"); +// osxService.open("Google Chrome.app"); +// osxService.open("Pages.app"); +// osxService.open("Goland.app"); +// osxService.notify("test","msg"); + ExecCommandResult res = osxService.dialog("test", "msg"); + if (0 == res.getResultCode()) { + System.out.println("ok"); + } else { + System.out.println("cancel"); + } + osxService.open("Google Chrome.app"); + osxService.open("Pages.app"); + osxService.open("Goland.app"); + osxService.notify("test", "msg"); + } + + @Test + public void testPersistMessage() throws ClassNotFoundException { + SimpleDataSource dataSource = new SimpleDataSource(); + dataSource.setJdbcUrl("jdbc:sqlite:test.db"); + dataSource.setDriverClassName("org.sqlite.JDBC"); + Dao dao = new NutDao(dataSource); + dao.create(Message.class, false); + Ioc.ins().init("run.mone.local.docean", "com.xiaomi.youpin"); + AgentMsgPersistService agentMsgPersistService = Ioc.ins().getBean(AgentMsgPersistService.class); + + // 假设这是我们期望的返回值 + boolean expected = true; + + // 创建一个模拟的Message对象 + Message mockMessage = new Message(); + mockMessage.setRole("mock"); + mockMessage.setData("测试记录"); + + // 调用persist方法并获取实际的返回值 + boolean actual = agentMsgPersistService.persist(mockMessage); + + // 断言期望值和实际值相等 + assertEquals(expected, actual); + + // 验证是否正确地记录了日志,这里假设log是一个可以被mock的对象 + // verify(log).info(contains("persisting msg:"), eq(mockMessage), eq(remoteRecord)); + + // 如果需要,还可以验证storeLocal和storeRemote方法是否被正确调用 + // verify(agentMsgPersistService).storeLocal(mockMessage); + // if (remoteRecord) { + // verify(agentMsgPersistService).storeRemote(mockMessage); + // } + } + + @Test + public void testExecuteBotService() { + // 初始化BotService实例 + BotService botService = Ioc.ins().init("com.xiaomi.youpin", "run.mone.local.docean").getBean(BotService.class); + + // 创建一个模拟的BotReq对象 + BotReq mockReq = BotReq.builder().flowDataList(Lists.newArrayList( + FlowData.builder().id(0).type("begin").name("开始").inputMap(new LinkedHashMap<>(ImmutableMap.of("a", InputData.builder().value(new JsonPrimitive("1")).build(), "b", InputData.builder().value(new JsonPrimitive("2")).build()))).build(), + FlowData.builder().id(1).type("code").name("代码") + .inputMap(new LinkedHashMap<>(ImmutableMap.of("a1", InputData.builder().type("reference").name("a").flowId(0).build(), + "a2", InputData.builder().type("reference").name("b").flowId(0).build()))) + .build(), + FlowData.builder().id(2).type("end").name("结束").build() + )).nodeEdges(new ArrayList<>(Arrays.asList(NodeEdge.builder().sourceNodeId(0).targetNodeId(1).build(), NodeEdge.builder().sourceNodeId(1).targetNodeId(2).build()))) + .build(); + // 调用execute方法并获取实际的返回值 + EndFlowRes actual = botService.execute(mockReq); + System.out.println(actual); + + } + + @Test + public void testMailBotService() { + // 初始化BotService实例 + BotService botService = Ioc.ins().init("com.xiaomi.youpin", "run.mone.local.docean").getBean(BotService.class); + // 创建一个模拟的BotReq对象 + BotReq mockReq = BotReq.builder().flowDataList(Lists.newArrayList( + FlowData.builder().id(0).type("begin").name("开始").build(), + FlowData.builder().id(1).type("mail").name("发邮件").inputMap(new LinkedHashMap<>(ImmutableMap.of("recipient", InputData.builder().value(new JsonPrimitive("429867478@qq.com")).build(), "title", InputData.builder().value(new JsonPrimitive("title2")).build(), "content", InputData.builder().value(new JsonPrimitive("content2")).build()))).build(), + FlowData.builder().id(2).type("end").name("结束").build() + )).nodeEdges(new ArrayList<>(Arrays.asList(NodeEdge.builder().sourceNodeId(0).targetNodeId(1).build(), NodeEdge.builder().sourceNodeId(1).targetNodeId(2).build()))) + .build(); + // 调用execute方法并获取实际的返回值 + EndFlowRes actual = botService.execute(mockReq); + System.out.println(actual); + + } + + + public void testGetFeatureRouterDetail() { + FeatureRouterService featureRouterService = Ioc.ins().init("com.xiaomi.youpin", "run.mone.local.docean").getBean(FeatureRouterService.class); + + // 假设这是我们期望的返回值 + FeatureRouterDTO expected = new FeatureRouterDTO(); + expected.setId(40L); + expected.setName("lucky"); + + // 调用getFeatureRouterDetail方法并获取实际的返回值 + FeatureRouterDTO actual = featureRouterService.getFeatureRouterDetail(40L); + + // 断言期望值和实际值相等 + assertEquals(expected.getName(), actual.getName()); + + } + + +} diff --git a/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/UtilsTest.java b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/UtilsTest.java new file mode 100644 index 000000000..98ae0bd1e --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/java/run/mone/local/docean/controller/test/UtilsTest.java @@ -0,0 +1,32 @@ +package run.mone.local.docean.controller.test; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import lombok.SneakyThrows; +import org.junit.Test; +import run.mone.local.docean.util.HttpUtils; + +/** + * @author goodjava@qq.com + * @date 2024/2/28 11:37 + */ +public class UtilsTest { + + + @SneakyThrows + @Test + public void testChatGptApiInteraction() { + JsonObject jo = new JsonObject(); + jo.addProperty("promptName", "minzai"); + JsonObject params = new JsonObject(); + params.addProperty("list", ""); + params.addProperty("question", "1+1=?"); + jo.add("params", params); + JsonArray array = new JsonArray(); + array.add("content"); + jo.add("keys", array); + JsonElement res = HttpUtils.postJson("https://mone.test.mi.com/open-apis/ai-plugin-new/chatgpt/query", jo); + System.out.println(res); + } +} diff --git a/m78-all/Tianye/Tianye-server/src/test/resources/code.txt b/m78-all/Tianye/Tianye-server/src/test/resources/code.txt new file mode 100644 index 000000000..08006c801 --- /dev/null +++ b/m78-all/Tianye/Tianye-server/src/test/resources/code.txt @@ -0,0 +1,12 @@ +import com.google.gson.JsonArray +import com.google.gson.JsonObject + + +def execute(JsonObject obj) { + println(obj) + String a = obj.get("a").getAsString() + String b = obj.get("b").getAsString() + JsonObject res = new JsonObject() + res.addProperty("sum", a + b) + return res +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-service/pom.xml b/m78-all/Tianye/Tianye-service/pom.xml new file mode 100644 index 000000000..22cda52f1 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/pom.xml @@ -0,0 +1,185 @@ + + + + Tianye + run.mone.local.docean + 1.0.0-SNAPSHOT + + 4.0.0 + + Tianye-service + + + + org.apache.commons + commons-text + 1.10.0 + + + + com.sun.mail + javax.mail + + + org.projectlombok + lombok + + + run.mone + http + + + docean + run.mone + + + docean-plugin + run.mone + pom + + + run.mone + docean-plugin-dubbo + + + + run.mone + docean-plugin-junit + 1.5.0-jdk21-SNAPSHOT + + + + run.mone + docean-plugin-configuration + + + run.mone + docean-plugin-db + + + org.xerial + sqlite-jdbc + + + run.mone + nacos + + + org.apache.dubbo + dubbo + + + Tianye-api + run.mone.local.docean + 1.0.0-SNAPSHOT + + + + Tianye-common + run.mone.local.docean + 1.0.0-SNAPSHOT + + + + junit + junit + 4.13.1 + test + + + + com.github.binarywang + weixin-java-mp + 4.6.0 + + + + org.seleniumhq.selenium + selenium-chrome-driver + 4.18.1 + + + + org.seleniumhq.selenium + selenium-devtools-v122 + 4.18.1 + + + + + run.mone.ai + z-api + + + + m78-api + run.mone + 1.0.0-SNAPSHOT + + + + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + + org.mapstruct + mapstruct + 1.4.2.Final + + + + org.mapstruct + mapstruct-jdk8 + 1.4.1.Final + + + + org.mapstruct + mapstruct-processor + 1.4.1.Final + + + + + run.mone + struct + 1.4.1-jdk20-SNAPSHOT + + + + org.apache.groovy + groovy-all + 4.0.15 + pom + + + + + com.ibeetl + beetl-core + 3.16.0.RELEASE + + + + com.ibeetl + beetl-default-antlr4.9-support + 3.16.0.RELEASE + + + + com.ibeetl + beetl-ext + 3.16.0.RELEASE + + + + + + + + \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/bot/BotService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/bot/BotService.java new file mode 100644 index 000000000..9f5140200 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/bot/BotService.java @@ -0,0 +1,16 @@ +package run.mone.local.docean.bot; + +import com.xiaomi.youpin.docean.anno.Service; + +/** + * @author goodjava@qq.com + * @date 2024/3/6 20:11 + */ +@Service +public class BotService { + + public String execute() { + return "ok"; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/config/MessageConfig.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/config/MessageConfig.java new file mode 100644 index 000000000..dcc664f5f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/config/MessageConfig.java @@ -0,0 +1,72 @@ +package run.mone.local.docean.config; + +import com.xiaomi.youpin.docean.anno.Bean; +import com.xiaomi.youpin.docean.anno.Configuration; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import me.chanjar.weixin.mp.api.WxMpMessageRouter; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; +import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; +import run.mone.local.docean.handler.MenuHandler; +import run.mone.local.docean.handler.WxMessageHandler; +import run.mone.local.docean.handler.WxMsgfLogHandler; + +import javax.annotation.Resource; + +import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType.EVENT; +import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType.TEXT; + + +/** + * @author caobaoyu + * @description: 三方IM SDK配置 + * @date 2024-02-24 10:24 + */ +@Configuration +public class MessageConfig { + + @Value("${wx.mp.config.appId}") + private String appId; + + @Value("${wx.mp.config.secret}") + private String secret; + + @Value("${wx.mp.config.token}") + private String token; + + @Value("${wx.mp.config.aesKey}") + private String aesKey; + + @Resource + private WxMessageHandler wxMessageHandler; + + @Bean + public WxMpConfigStorage wxMpConfigStorage() { + WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl(); + configStorage.setAppId(this.appId); + configStorage.setSecret(this.secret); + configStorage.setToken(this.token); + configStorage.setAesKey(this.aesKey); + return configStorage; + } + + @Bean + public WxMpService wxMpService() { + WxMpService wxMpService = new WxMpServiceImpl(); + wxMpService.setWxMpConfigStorage(wxMpConfigStorage()); + return wxMpService; + } + + @Bean + public WxMpMessageRouter wxMpMessageRouter() { + WxMpService wxMpService = wxMpService(); + WxMpMessageRouter newRouter = new WxMpMessageRouter(wxMpService); + newRouter.rule().handler(new WxMsgfLogHandler()).next(); + newRouter.rule().async(false).msgType(TEXT).handler(new WxMessageHandler()).end(); + newRouter.rule().async(false).msgType(EVENT).handler(new MenuHandler()).end(); + return newRouter; + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/context/CodeContext.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/context/CodeContext.java new file mode 100644 index 000000000..90956ccca --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/context/CodeContext.java @@ -0,0 +1,17 @@ +package run.mone.local.docean.context; + +import lombok.Builder; +import lombok.Data; +import org.slf4j.Logger; + +/** + * @author goodjava@qq.com + * @date 2024/3/27 15:07 + */ +@Data +@Builder +public class CodeContext { + + private Logger logger; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/context/TianyeContext.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/context/TianyeContext.java new file mode 100644 index 000000000..0bc974db9 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/context/TianyeContext.java @@ -0,0 +1,27 @@ +package run.mone.local.docean.context; + +import lombok.Data; + +/** + * @author goodjava@qq.com + * @date 2024/2/26 11:55 + */ +@Data +public class TianyeContext { + + private Long knowledgeBaseId; + + private String userName; + + private String token; + + private static final class LazyHolder { + private static final TianyeContext ins = new TianyeContext(); + } + + + public static final TianyeContext ins() { + return LazyHolder.ins; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/DubboTestServiceImpl.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/DubboTestServiceImpl.java new file mode 100644 index 000000000..794fd779a --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/DubboTestServiceImpl.java @@ -0,0 +1,19 @@ +package run.mone.local.docean.dubbo; + +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Service; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import run.mone.local.docean.api.service.DubboTestService; + +//@Service(group = "dev", version = "1.0", interfaceClass = DubboTestService.class) +@Slf4j +public class DubboTestServiceImpl implements DubboTestService { + + private static final Logger logger = LoggerFactory.getLogger(DubboTestServiceImpl.class); + + @Override + public String test() { + return "test: " + System.currentTimeMillis(); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/TYFlowServiceImpl.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/TYFlowServiceImpl.java new file mode 100644 index 000000000..a41c849d4 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/TYFlowServiceImpl.java @@ -0,0 +1,37 @@ +package run.mone.local.docean.dubbo; + +import com.google.gson.Gson; +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Service; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.api.service.TYFlowService; +import run.mone.local.docean.fsm.BotReq; +import run.mone.local.docean.service.BotService; + +import javax.annotation.Resource; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author wmin + * @date 2024/3/4 + */ +@Service(group = "staging", version = "1.0", interfaceClass = TYFlowService.class) +@Slf4j +public class TYFlowServiceImpl implements TYFlowService { + @Resource + private BotService botService; + + static Gson gson = new Gson(); + + private ExecutorService pool = Executors.newFixedThreadPool(10); + + @Override + public Integer execFlow(String botReqStr) { + BotReq botReq = gson.fromJson(botReqStr, BotReq.class); + pool.submit(() -> { + log.info("start executing botReq:{}", gson.toJson(botReq)); + botService.execute(botReq); + }); + return null; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/TianyeService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/TianyeService.java new file mode 100644 index 000000000..7f36dcb68 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/dubbo/TianyeService.java @@ -0,0 +1,57 @@ +package run.mone.local.docean.dubbo; + +import com.google.common.collect.Lists; +import com.xiaomi.data.push.rpc.RpcServer; +import com.xiaomi.data.push.rpc.RpcVersion; +import com.xiaomi.data.push.rpc.common.Pair; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.common.Safe; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.rpc.TianyeCmd; +import run.mone.local.docean.rpc.processor.PingProcessor; + +import java.net.InetAddress; + +/** + * @author goodjava@qq.com + * @date 2024/2/23 10:36 + */ +//@Service +@Slf4j +public class TianyeService { + + private int port = 5678; + + public void init() { + log.info("tianye init"); + Safe.runAndLog(() -> { + //获取用户名(从本地系统) + String username = System.getProperty("user.name"); + log.info("Username: " + username); + //获取ip(从本地系统) + String ip = InetAddress.getLocalHost().getHostAddress(); + log.info("IP: " + ip); + +// startRpcServer(); + }); + } + + public String hi() { + return "hi"; + } + + + public void startRpcServer() { + log.info("agent manager start port:{} begin:{}", port, new RpcVersion()); + RpcServer rpcServer = new RpcServer("", "tianye_client", false); + rpcServer.setListenPort(port); + //注册处理器 + rpcServer.setProcessorList(Lists.newArrayList( + new Pair<>(TianyeCmd.pingReq, new PingProcessor()) + )); + rpcServer.init(); + rpcServer.start(config -> config.setIdle(false)); + log.info("nacos rpc server start finish"); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/enums/ImEnum.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/enums/ImEnum.java new file mode 100644 index 000000000..9824e2477 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/enums/ImEnum.java @@ -0,0 +1,21 @@ +package run.mone.local.docean.enums; + +public enum ImEnum { + + FEISHU("feishu"), + WEIXIN("weixin"); + + private String value; + + ImEnum(String s) { + this.value = s; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotContext.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotContext.java new file mode 100644 index 000000000..9c9a2668e --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotContext.java @@ -0,0 +1,51 @@ +package run.mone.local.docean.fsm; + + +import lombok.Data; +import org.apache.commons.compress.utils.Lists; + +import java.util.List; +import java.util.concurrent.LinkedBlockingQueue; + + +@Data +public class BotContext { + + boolean exit; + + //直接退出循环 + volatile boolean quit; + + private int index; + + private List botList; + + private BotState currentBot; + + private boolean cycle; + + private List memary = Lists.newArrayList(); + + private LinkedBlockingQueue questionQueue = new LinkedBlockingQueue<>(); + + private LinkedBlockingQueue answerQueue = new LinkedBlockingQueue<>(); + + + /** + * 获取下一个机器人实例。 + * 如果索引超出机器人列表大小,并且循环标志为真,则返回列表中的第一个机器人。 + * 如果索引超出机器人列表大小,并且循环标志为假,则返回null。 + * 否则返回当前索引对应的机器人实例。 + */ + public BotState nextBot() { + index++; + if (index >= botList.size()) { + if (cycle) { + return botList.get(0); + } + return null; + } + return botList.get(index); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotFlow.java new file mode 100644 index 000000000..421e750f8 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotFlow.java @@ -0,0 +1,108 @@ +package run.mone.local.docean.fsm; + +import com.google.gson.JsonObject; +import com.xiaomi.data.push.graph.Graph2; +import com.xiaomi.youpin.docean.Ioc; +import lombok.Data; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.bo.*; +import run.mone.local.docean.fsm.debug.DebugController; +import run.mone.local.docean.fsm.sync.SyncFlowStatusService; + +import java.util.*; + +@Slf4j +@Data +public abstract class BotFlow { + + private String flowRecordId; + + protected int id; + + private String name; + + protected Graph2 graph; + + protected LinkedHashMap inputMap = new LinkedHashMap<>(); + + protected LinkedHashMap outputMap = new LinkedHashMap<>(); + + protected LinkedHashMap batchMap = new LinkedHashMap<>(); + + protected Map flowMeta = new HashMap<>(); + + protected boolean finish; + + private SyncFlowStatusService syncFlowStatusServices; + + //控制是否开启debug模式 + private DebugController debugController; + + private long startTime; + + + public void init(FlowData data) { + this.id = data.getId(); + this.flowRecordId = data.getFlowRecordId(); + this.name = data.getName(); + this.inputMap = data.getInputMap(); + this.outputMap = data.getOutputMap(); + this.batchMap = data.getBatchMap(); + this.flowMeta = data.getFlowMeta(); + debugController = new DebugController(data.isDebug()); + syncFlowStatusServices = Ioc.ins().getBean(SyncFlowStatusService.class); + } + + protected void setDebug(boolean debug) { + debugController.setDebug(debug); + } + + protected void updateInputDataWithReferences(FlowContext context, boolean batch) { + } + + + protected void storeResultsInReferenceData(FlowContext context, JsonObject resObj) { + storeResultsInReferenceData(context, resObj, false); + } + + protected void storeResultsInReferenceData(FlowContext context, JsonObject resObj, boolean batch) { + + } + + + @SneakyThrows + public FlowRes execute0(FlowReq req, FlowContext context) { + this.debugController.waitForDebug(); + return newExecute(req, context); + } + + + public FlowRes execute(FlowReq req, FlowContext context) { + return FlowRes.success(null); + } + + public void enter(FlowContext ctx, FlowReq req) { + + } + + public void exit(FlowContext ctx, FlowReq req, FlowRes res) { + + + } + + public FlowRes newExecute(FlowReq req, FlowContext context) { + return FlowRes.success(""); + } + + protected boolean isBatch() { + boolean batch = true; + if (null == batchMap || batchMap.isEmpty()) { + batch = false; + } + return batch; + } + + public abstract String getFlowName(); + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotFsm.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotFsm.java new file mode 100644 index 000000000..8e0ae3aa5 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotFsm.java @@ -0,0 +1,44 @@ +package run.mone.local.docean.fsm; + +import lombok.Data; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.TimeUnit; + +@Data +@Slf4j +public class BotFsm { + + private BotState currentState; + + private BotState globalState; + + private BotReq req; + + private BotContext context; + + public void init(BotContext context, BotReq req) { + BotState bot = context.getBotList().get(context.getIndex()); + currentState = bot; + this.context = context; + this.context.setCurrentBot(bot); + this.req = req; + } + + //@SneakyThrows + public BotRes execute() { + return BotRes.success(""); + } + + + public void enter(BotState bot) { + if (null == bot) { + context.exit = true; + } else { + context.setCurrentBot(bot); + currentState = bot; + } + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotReq.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotReq.java new file mode 100644 index 000000000..4f2828298 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotReq.java @@ -0,0 +1,34 @@ +package run.mone.local.docean.fsm; + +import lombok.Builder; +import lombok.Data; +import run.mone.local.docean.fsm.bo.FlowData; +import run.mone.local.docean.fsm.bo.NodeEdge; + +import java.util.List; +import java.util.Map; + +@Builder +@Data +public class BotReq { + + private String flowRecordId; + + private boolean syncFlowStatusToM78; + + private List flowDataList; + + private List nodeEdges; + + private String userName; + + //sourceId <-> targetIds + private Map> ifEdgeMap; + + private Map> elseEdgeMap; + + private String id; + + private boolean debug; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotRes.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotRes.java new file mode 100644 index 000000000..861278f36 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotRes.java @@ -0,0 +1,68 @@ +package run.mone.local.docean.fsm; + +import lombok.Data; + +import java.util.Map; + +/** + * @author wmin + * @date 2024/2/23 + */ +@Data +public class BotRes { + + private int code; + + public static final int SUCCESS = 0; + + public static final int FAILURE = 500; + + public static final int RETRY= 333; + + public static final int WAIT= 777; + + public static final int BREAK = 886; + + private String message; + + private Map attachement; + + private T data; + + + public static BotRes success(T data) { + BotRes res = new BotRes(); + res.setCode(SUCCESS); + res.setMessage("success"); + res.setData(data); + return res; + } + + public static BotRes failure(Throwable throwable) { + BotRes res = new BotRes(); + res.setCode(FAILURE); + res.setMessage(throwable.getMessage()); + return res; + } + + public static BotRes failure(String message) { + BotRes res = new BotRes(); + res.setCode(FAILURE); + res.setMessage(message); + return res; + } + + public static BotRes retry() { + BotRes res = new BotRes(); + res.setCode(RETRY); + return res; + } + + public BotRes(int code, String message) { + this.code = code; + this.message = message; + } + + public BotRes() { + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotState.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotState.java new file mode 100644 index 000000000..809fc790c --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/BotState.java @@ -0,0 +1,33 @@ +package run.mone.local.docean.fsm; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +@Slf4j +@Data +public class BotState { + + protected BotFsm fsm; + + private String remoteIpPort; + + private String promptMetaInfo; + + private String name; + + public void enter(BotContext context) { + + } + + public BotRes execute(BotReq req, BotContext context) { + return BotRes.success(null); + } + + + public void exit() { + + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/FlowService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/FlowService.java new file mode 100644 index 000000000..70ba1b107 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/FlowService.java @@ -0,0 +1,36 @@ +package run.mone.local.docean.fsm; + +import com.google.common.collect.Maps; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.common.ClassFinder; +import com.xiaomi.youpin.docean.common.ReflectUtils; +import lombok.Data; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @author goodjava@qq.com + * @date 2024/3/5 10:57 + */ +@Service +@Data +public class FlowService { + + public static Map flowMap = Maps.newHashMap(); + + public void init() { + ClassFinder classFinder = new ClassFinder(); + Set set = classFinder.findClassSet("run.mone.local.docean.fsm.flow"); + List list = set.stream().map(it -> ReflectUtils.classForName(it)).collect(Collectors.toList()); + list.stream().filter(it-> BotFlow.class.isAssignableFrom(it)).forEach(it->{ + BotFlow botFlow = (BotFlow) ReflectUtils.getInstance(it); + String name = botFlow.getFlowName(); + Class clazz = botFlow.getClass(); + flowMap.put(name,clazz); + }); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/GlobalState.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/GlobalState.java new file mode 100644 index 000000000..91926b4f0 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/GlobalState.java @@ -0,0 +1,19 @@ +package run.mone.local.docean.fsm; + +import lombok.extern.slf4j.Slf4j; + + +/** + * 全局状态 + */ +@Slf4j +public class GlobalState extends BotState { + + public static final String EXIT_CMD = "exit!"; + + + @Override + public BotRes execute(BotReq req, BotContext context) { + return null; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/GraphState.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/GraphState.java new file mode 100644 index 000000000..a1e398e1f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/GraphState.java @@ -0,0 +1,33 @@ +package run.mone.local.docean.fsm; + +import com.xiaomi.youpin.docean.common.ReflectUtils; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.bo.FlowData; + + +/** + * @author goodjava@qq.com + * @date 2024/3/1 16:12 + *

+ * 图状态,直接会把一张图中定义的flow全跑完 + */ +@Slf4j +public class GraphState extends BotState { + + + @Getter + private BotFlow currBotFlow; + + + @Override + public BotRes execute(BotReq req, BotContext context) { + return BotRes.success(""); + } + + private BotFlow createBotFlow(FlowData data) { + BotFlow botFlow = (BotFlow) ReflectUtils.getInstance(FlowService.flowMap.get(data.getType())); + botFlow.init(data); + return botFlow; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/JsonElementUtils.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/JsonElementUtils.java new file mode 100644 index 000000000..1cd4c7f89 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/JsonElementUtils.java @@ -0,0 +1,69 @@ +package run.mone.local.docean.fsm; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import lombok.extern.slf4j.Slf4j; + +/** + * @author wmin + * @date 2024/3/14 + */ +@Slf4j +public class JsonElementUtils { + + // 查询指定field的值 + public static JsonElement queryFieldValue(JsonElement data, String field) { + log.info("queryFieldValue {}", field); + String[] fieldPath = field.split("\\."); + return queryFieldRecursive(data, fieldPath, 0); + } + + // 递归查询指定field的值 + private static JsonElement queryFieldRecursive(JsonElement data, String[] fieldPath, int index) { + if (index == fieldPath.length) { + return data; + } + + if (data.isJsonObject()) { + JsonObject jsonObject = data.getAsJsonObject(); + String fieldName = fieldPath[index]; + JsonElement fieldValue = jsonObject.get(fieldName); + if (fieldValue != null) { + return queryFieldRecursive(fieldValue, fieldPath, index + 1); + } else { + throw new IllegalArgumentException("Field not found: " + fieldName); + } + } else if (data.isJsonArray()) { + JsonArray jsonArray = data.getAsJsonArray(); + try { + int arrayIndex = Integer.parseInt(fieldPath[index]); + if (arrayIndex >= 0 && arrayIndex < jsonArray.size()) { + return queryFieldRecursive(jsonArray.get(arrayIndex), fieldPath, index + 1); + } else { + throw new IndexOutOfBoundsException("Index out ofbounds: " + arrayIndex); + } + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Invalid arrayindex: " + fieldPath[index]); + } + } else if (data.isJsonPrimitive()) { + return data; + } else { + throw new IllegalArgumentException("Invalid JSON format"); + } + } + + public static String getValue(JsonElement data) { + if (null == data){ + return null; + } + if (data.isJsonPrimitive()) { + return data.getAsString(); + } else if (data.isJsonObject() || data.isJsonArray()) { + return data.toString(); + } else { + return null; + } + } + +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/MemoryData.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/MemoryData.java new file mode 100644 index 000000000..c89d64d91 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/MemoryData.java @@ -0,0 +1,18 @@ +package run.mone.local.docean.fsm; + +import lombok.Builder; +import lombok.Data; + +/** + * @author goodjava@qq.com + * @date 2024/2/27 16:28 + */ +@Data +@Builder +public class MemoryData { + + private String role; + + private String message; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/ParallelState.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/ParallelState.java new file mode 100644 index 000000000..97b217fa7 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/ParallelState.java @@ -0,0 +1,53 @@ +package run.mone.local.docean.fsm; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +/** + * @author wmin + * @date 2024/2/23 + */ +@Slf4j +@Data +public class ParallelState extends BotState { + + private List bots; + + private ExecutorService pool = Executors.newCachedThreadPool(); + + public BotRes execute(BotReq req, BotContext context) { + try { + List> futureList = pool.invokeAll(bots.stream().map(bot -> (Callable) () -> { + log.info(" ParallelBot start enter {}", bot.getRemoteIpPort()); + bot.enter(context); + BotRes res = bot.execute(req, context); + bot.exit(); + return res; + }).collect(Collectors.toList())); + + List resList = futureList.stream().map(it -> { + try { + log.info("ParallelBot res:{}", it.get()); + return it.get(); + } catch (InterruptedException e) { + log.error("ParallelBot.execute InterruptedException{}", e); + } catch (ExecutionException e) { + log.error("ParallelBot.execute ExecutionException{}", e); + } + return null; + }).collect(Collectors.toList()); + + if (resList.stream().allMatch(it -> it.getCode() == BotRes.SUCCESS)) { + return BotRes.success("ok"); + } + } catch (Exception e){ + log.error("ParallelBot execute error,", e); + return BotRes.failure(""); + } + return BotRes.failure("ParallelBot failure"); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/ProbeSeekerState.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/ProbeSeekerState.java new file mode 100644 index 000000000..92ee81fbb --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/ProbeSeekerState.java @@ -0,0 +1,23 @@ +package run.mone.local.docean.fsm; + +/** + * @author goodjava@qq.com + * @date 2024/2/27 16:42 + * + * 探知者 + * 作用:想agent的主人问问题 + * + */ +public class ProbeSeekerState extends BotState { + + @Override + public BotRes execute(BotReq req, BotContext context) { + + String msg = context.getQuestionQueue().poll(); + + + context.getAnswerQueue().add(msg); + + return BotRes.success(null); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/Condition.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/Condition.java new file mode 100644 index 000000000..251bb6803 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/Condition.java @@ -0,0 +1,62 @@ +package run.mone.local.docean.fsm.bo; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 22:41 + */ +public class Condition { + + private String value; + private Operator operator; + private String otherValue; + + public Condition(String value, Operator operator, String otherValue) { + this.value = value; + this.operator = operator; + this.otherValue = otherValue; + } + + public boolean evaluate() { + System.out.println("evaluate"); + // 根据操作符来比较值,这里只是一个简单的示例 + switch (operator) { + case EQUALS: + return value.equals(otherValue); + case NOT_EQUALS: + return !value.equals(otherValue); + case GREATER_THAN: + // 假设value和otherValue都可以转换为数字 + return Double.parseDouble(value) > Double.parseDouble(otherValue); + case LESS_THAN: + // 假设value和otherValue都可以转换为数字 + return Double.parseDouble(value) < Double.parseDouble(otherValue); + case CONTAINS: + // 假设value是一个字符串,检查它是否包含otherValue + return value.contains(otherValue); + // ... 其他比较逻辑 + default: + return false; + } + } + + // 组合两个条件的逻辑AND + public Condition and(Condition other) { + return new Condition(this.value, this.operator, this.otherValue) { + @Override + public boolean evaluate() { + return Condition.this.evaluate() && other.evaluate(); + } + }; + } + + public Condition or(Condition other) { + return new Condition(this.value, this.operator, this.otherValue) { + @Override + public boolean evaluate() { + return Condition.this.evaluate() || other.evaluate(); + } + }; + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/EndFlowRes.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/EndFlowRes.java new file mode 100644 index 000000000..614f3fbe2 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/EndFlowRes.java @@ -0,0 +1,28 @@ +package run.mone.local.docean.fsm.bo; + +import com.google.gson.JsonElement; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/3/4 15:29 + */ +@Data +@Builder +public class EndFlowRes implements Serializable { + private int code; + + private String message; + + private String answerContent; + + private Map data; + + private List endFlowOutputDetails; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowContext.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowContext.java new file mode 100644 index 000000000..6721033a9 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowContext.java @@ -0,0 +1,101 @@ +package run.mone.local.docean.fsm.bo; + + +import com.google.gson.JsonElement; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import run.mone.local.docean.fsm.BotState; +import run.mone.local.docean.fsm.JsonElementUtils; +import run.mone.local.docean.fsm.MemoryData; + +import java.util.*; +import java.util.concurrent.LinkedBlockingQueue; + + +@Data +@Slf4j +public class FlowContext { + + boolean exit; + + //直接退出循环 + volatile boolean quit; + + private int index; + + private List botList; + + private BotState currentBot; + + private boolean cycle; + + private List memory = Lists.newArrayList(); + + private LinkedBlockingQueue questionQueue = new LinkedBlockingQueue<>(); + + private LinkedBlockingQueue answerQueue = new LinkedBlockingQueue<>(); + + private Map> referenceData = new HashMap<>(); + + private Map> batchParamMap = new HashMap<>(); + + private Map> batchReslutMap = new HashMap<>(); + + private FlowRes flowRes; + + private long startTime; + + + /** + * 获取下一个机器人实例。 + * 如果索引超出机器人列表大小,并且循环标志为真,则返回列表中的第一个机器人。 + * 如果索引超出机器人列表大小,并且循环标志为假,则返回null。 + * 否则返回当前索引对应的机器人实例。 + */ + public BotState nextBot() { + index++; + if (index >= botList.size()) { + if (cycle) { + return botList.get(0); + } + return null; + } + return botList.get(index); + } + + public JsonElement queryFieldValueFromReferenceData(int flowId, String field) { + log.info("queryFieldValueFromReferenceData flowId:{} field:{}", flowId, field); + Map itemDataMap = this.referenceData.get(flowId); + if (!field.contains(".")) { + return itemDataMap.get(field).getValue(); + } + return JsonElementUtils.queryFieldValue(itemDataMap.get(field.split("\\.")[0]).getValue(), field.substring(field.indexOf(".")+1)); + } + + public void updateBatchParamWithId(Integer id, JsonElement element) { + this.getBatchParamMap().compute(id, (k, v) -> { + if (v == null) { + List list = new ArrayList<>(); + list.add(element); + return list; + } else { + v.add(element); + } + return v; + }); + } + + public void updateBatchResultMapWithId(Integer id, Object obj) { + this.getBatchReslutMap().compute(id, (k, v) -> { + if (v == null) { + List list = new ArrayList<>(); + list.add(obj); + return list; + } else { + v.add(obj); + } + return v; + }); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowData.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowData.java new file mode 100644 index 000000000..94c6a4b52 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowData.java @@ -0,0 +1,40 @@ +package run.mone.local.docean.fsm.bo; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 16:24 + */ +@Data +@Builder +public class FlowData implements Serializable { + + private String flowRecordId; + + private int id; + + private String name; + + private String type; + + @Builder.Default + private LinkedHashMap inputMap = new LinkedHashMap<>(); + + @Builder.Default + private LinkedHashMap outputMap = new LinkedHashMap<>(); + + @Builder.Default + private LinkedHashMap batchMap = new LinkedHashMap<>(); + + private Map flowMeta; + + @Builder.Default + private boolean debug = false; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowReq.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowReq.java new file mode 100644 index 000000000..a1d4ee5c7 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowReq.java @@ -0,0 +1,20 @@ +package run.mone.local.docean.fsm.bo; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Builder +@Data +public class FlowReq { + + private String userName; + + private boolean syncFlowStatusToM78; + + private Map> ifEdgeMap ; + + private Map> elseEdgeMap; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowRes.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowRes.java new file mode 100644 index 000000000..12b14b62a --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/FlowRes.java @@ -0,0 +1,76 @@ +package run.mone.local.docean.fsm.bo; + +import lombok.Data; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author wmin + * @date 2024/2/23 + */ +@Data +public class FlowRes { + + private int code; + + public static final int SUCCESS = 0; + + public static final int FAILURE = 500; + + public static final int RETRY= 333; + + public static final int WAIT= 777; + + public static final int BREAK = 886; + + private String message; + + private Map attachement; + + //记录运行时每个节点的input实际值 nodeId + private Map inputs = new HashMap<>(); + + //记录运行后每个节点的output实际值 + private Map outputs = new HashMap<>(); + + private T data; + + + public static FlowRes success(T data) { + FlowRes res = new FlowRes(); + res.setCode(SUCCESS); + res.setMessage("success"); + res.setData(data); + return res; + } + + public static FlowRes failure(Throwable throwable) { + FlowRes res = new FlowRes(); + res.setCode(FAILURE); + res.setMessage(throwable.getMessage()); + return res; + } + + public static FlowRes failure(String message) { + FlowRes res = new FlowRes(); + res.setCode(FAILURE); + res.setMessage(message); + return res; + } + + public static FlowRes retry() { + FlowRes res = new FlowRes(); + res.setCode(RETRY); + return res; + } + + public FlowRes(int code, String message) { + this.code = code; + this.message = message; + } + + public FlowRes() { + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/InputData.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/InputData.java new file mode 100644 index 000000000..63a13de44 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/InputData.java @@ -0,0 +1,92 @@ +package run.mone.local.docean.fsm.bo; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import lombok.Builder; +import lombok.Data; + +import java.util.Objects; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 14:13 + */ +@Data +@Builder +public class InputData implements ItemData { + + //是否是原始input,而非coreSetting set进来的 + @Builder.Default + private boolean originalInput = true; + + private int flowId; + + private String referenceName; + + private String name; + + //value reference + @Builder.Default + private String type = "value"; + + @Builder.Default + private String valueType = "string"; + + //和后边数据的操作符 + private String operator; + + private JsonElement value; + + private int flowId2; + + @Builder.Default + private String type2 = "value"; + + private String referenceName2; + + private JsonElement value2; + + //or and + private String relationship; + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof InputData inputData)) return false; + + if (flowId != inputData.flowId) return false; + return Objects.equals(name, inputData.name); + } + + @Override + public int hashCode() { + int result = flowId; + result = 31 * result + (name != null ? name.hashCode() : 0); + return result; + } + + @Override + public String getValueType() { + return null; + } + + public JsonElement getValue2() { + return null==value2?new JsonPrimitive(""):value2; + } + + public JsonElement getValueByType(){ + if (null == this.valueType || "string".equalsIgnoreCase(this.valueType)){ + if (value.isJsonPrimitive()){ + return new JsonPrimitive(value.getAsString()); + } else { + return new JsonPrimitive(value.toString()); + } + } + return value; + } + + public boolean isEmptyValue(){ + return (null==value || value.toString().equals("\"\""))?true:false; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/ItemData.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/ItemData.java new file mode 100644 index 000000000..903728a9d --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/ItemData.java @@ -0,0 +1,22 @@ +package run.mone.local.docean.fsm.bo; + +import com.google.gson.JsonElement; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 14:32 + */ +public interface ItemData { + + String getName(); + + String getReferenceName(); + + String getType(); + + String getValueType(); + + JsonElement getValue(); + + int getFlowId(); +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/ItemKey.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/ItemKey.java new file mode 100644 index 000000000..1cf695c81 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/ItemKey.java @@ -0,0 +1,18 @@ +package run.mone.local.docean.fsm.bo; + +import lombok.Builder; +import lombok.Data; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 14:53 + */ +@Data +@Builder +public class ItemKey { + + private int flowId; + + private String name; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/NodeEdge.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/NodeEdge.java new file mode 100644 index 000000000..7fbaa6c16 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/NodeEdge.java @@ -0,0 +1,17 @@ +package run.mone.local.docean.fsm.bo; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author wmin + * @date 2024/3/12 + */ +@Data +@Builder +public class NodeEdge implements Serializable { + private int sourceNodeId; + private int targetNodeId; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/Operator.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/Operator.java new file mode 100644 index 000000000..01a5e86f9 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/Operator.java @@ -0,0 +1,15 @@ +package run.mone.local.docean.fsm.bo; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 22:41 + */ +public enum Operator { + + EQUALS, + NOT_EQUALS, + GREATER_THAN, + LESS_THAN, + CONTAINS + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/OutputData.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/OutputData.java new file mode 100644 index 000000000..784003703 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/OutputData.java @@ -0,0 +1,46 @@ +package run.mone.local.docean.fsm.bo; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import lombok.Builder; +import lombok.Data; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 14:13 + */ +@Data +@Builder +public class OutputData implements ItemData { + + private int flowId; + + private String name; + + private String referenceName; + + @Builder.Default + private String type = "value"; + + private JsonElement value; + + //string、object、array、array + private String valueType; + + private String schema; + + public JsonElement getValue() { + return null==value?new JsonPrimitive(""):value; + } + + public String getValueType() { + if (valueType == null || valueType.isEmpty()){ + return "String"; + } + return valueType; + } + + public boolean isEmptyValue(){ + return (null==value || value.toString().equals("\"\""))?true:false; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/PluginInfo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/PluginInfo.java new file mode 100644 index 000000000..954cae0e1 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/PluginInfo.java @@ -0,0 +1,43 @@ +package run.mone.local.docean.fsm.bo; + +import com.google.gson.JsonArray; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/3/5 13:14 + */ +@Data +@Builder +public class PluginInfo implements Serializable { + + private String url; + + private String method; + + private Map headers; + + private String meta; + + private String desc; + + private Long pluginId; + + private Long orgId; + + private String name; + + private Integer type; + + private JsonArray input; + + private JsonArray output; + + private String display; + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/SyncFlowStatus.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/SyncFlowStatus.java new file mode 100644 index 000000000..7e6a47915 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/bo/SyncFlowStatus.java @@ -0,0 +1,91 @@ +package run.mone.local.docean.fsm.bo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author wmin + * @date 2024/3/4 + */ +@Data +@Builder +public class SyncFlowStatus implements Serializable { + private String flowRecordId; + //节点入参 + @Builder.Default + private Map nodeInputsMap = new ConcurrentHashMap<>(); + //节点出参 + @Builder.Default + private Map nodeOutputsMap = new ConcurrentHashMap<>(); + //todo 2成功 3失败 + private int endFlowStatus; + private EndFlowOutput endFlowOutput; + private long timestamp; + private long durationTime; + + @Data + @Builder + public static class SyncNodeInput implements Serializable { + private int nodeId; + private List inputDetails; + } + + @Data + @Builder + public static class SyncNodeInputDetail implements Serializable { + private String name; + private String value; + //string、array,用于前端展示区分 + private String valueType; + + private String operator; + private String name2; + private String value2; + private String type2; + } + + @Data + @Builder + public static class SyncNodeOutput implements Serializable { + private int nodeId; + //todo 1开始 2成功 3失败 + private int status; + private List outputDetails; + private String errorInfo; + private long durationTime; + } + + @Data + @Builder + public static class SyncNodeOutputDetail implements Serializable { + private String name; + private String value; + //string、array,用于前端展示区分 + private String valueType; + } + + @Data + @Builder + public static class EndFlowOutput implements Serializable { + private String answerContent; + private List endFlowOutputDetails; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class EndFlowOutputDetail { + private String name; + private String value; + //string、array,用于前端展示区分 + private String valueType; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/debug/DebugController.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/debug/DebugController.java new file mode 100644 index 000000000..20f5a7a99 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/debug/DebugController.java @@ -0,0 +1,51 @@ +package run.mone.local.docean.fsm.debug; + +import com.google.common.util.concurrent.Monitor; + +/** + * @author goodjava@qq.com + * @date 2024/3/25 11:41 + */ +public class DebugController { + + private final Monitor monitor = new Monitor(); + + //默认是不需要debug + private boolean debug = false; + + public DebugController(boolean debug) { + this.debug = debug; + } + + public DebugController() { + } + + // Guard 条件,当 debug 为 false 时满足 + private final Monitor.Guard notDebugging = new Monitor.Guard(monitor) { + @Override + public boolean isSatisfied() { + return !debug; + } + }; + + public void setDebug(boolean debug) { + monitor.enter(); + try { + this.debug = debug; + } finally { + monitor.leave(); + } + } + + public void waitForDebug() throws InterruptedException { + // 等待 notDebugging 条件满足 + monitor.enterWhen(notDebugging); + try { + // 在这里执行需要在 debug 模式下阻塞的代码 + } finally { + monitor.leave(); + } + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/BeginFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/BeginFlow.java new file mode 100644 index 000000000..1cac03346 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/BeginFlow.java @@ -0,0 +1,34 @@ +package run.mone.local.docean.fsm.flow; + + +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.bo.*; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 10:29 + */ +@Slf4j +public class BeginFlow extends BotFlow { + + + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + context.getReferenceData().put(this.id, this.inputMap); + return super.execute(req, context); + } + + @Override + public String getFlowName() { + return "begin"; + } + + public void exit(FlowContext ctx, FlowReq req, FlowRes res) { + log.info("exit beginFlow..... id:{},flowRecordId:{}", id, this.getFlowRecordId()); + ctx.setStartTime(System.currentTimeMillis()); + if (req.isSyncFlowStatusToM78()) { + this.getSyncFlowStatusServices().addSyncFlowStatusMap(this.getFlowRecordId(), null, SyncFlowStatus.SyncNodeOutput.builder().nodeId(id).status(2).build()); + } + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/CodeFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/CodeFlow.java new file mode 100644 index 000000000..a8492a974 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/CodeFlow.java @@ -0,0 +1,63 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.gson.JsonObject; +import lombok.Data; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.bo.FlowContext; +import run.mone.local.docean.fsm.bo.FlowReq; +import run.mone.local.docean.fsm.bo.FlowRes; +import run.mone.local.docean.fsm.bo.InputData; +import run.mone.local.docean.tianye.common.CommonConstants; + +import javax.script.ScriptException; +import java.io.IOException; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 10:25 + *

+ * 处理Code的状态 + */ +@Slf4j +@Data +public class CodeFlow extends BotFlow { + + private String code = ""; + + @SneakyThrows + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + loadCode(); + log.info("execute:{}", code); + //调用函数 + JsonObject resObj; + try { + resObj = callFunction(this.inputMap); + } catch (Exception e){ + log.error("callFunction error,{}", e); + return FlowRes.failure(e.getMessage()); + } + storeResultsInReferenceData(context, resObj); + return FlowRes.success(null); + } + + @Override + public String getFlowName() { + return "code"; + } + + private void loadCode() throws IOException { + InputData inputCode = this.inputMap.get(CommonConstants.TY_CODE_INPUT_MARK); + log.info("inputCode:{}", inputCode); + code = inputCode.getValue().getAsString(); + } + + @NotNull + private JsonObject callFunction(Map inputMap) throws ScriptException, NoSuchMethodException { + return new JsonObject(); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/DataBaseFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/DataBaseFlow.java new file mode 100644 index 000000000..8c1f94e4d --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/DataBaseFlow.java @@ -0,0 +1,54 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.gson.JsonObject; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.DaoUp; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.bo.FlowContext; +import run.mone.local.docean.fsm.bo.FlowReq; +import run.mone.local.docean.fsm.bo.FlowRes; +import run.mone.local.docean.util.GsonUtils; + + +/** + * @author HawickMason@xiaomi.com + * @date 3/27/24 15:51 + */ +@Slf4j +public class DataBaseFlow extends BotFlow { + + private String sql = ""; + + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + loadSql(); + log.info("execute database flow block, sql:{}", sql); + JsonObject resObj = new JsonObject(); + try { + Sql sql = Sqls.create(this.sql); + sql.setCallback(Sqls.callback.records()); + Sql res = DaoUp.me().dao().execute(sql); + Object result = res.getResult(); + if (result != null) { + resObj.add("data", GsonUtils.gson.toJsonTree(result)); + } + log.info("execute sql res:{}", result); + } catch (Throwable e){ + log.error("execute sql error,", e); + return FlowRes.failure(e.getMessage()); + } + storeResultsInReferenceData(context, resObj); + return FlowRes.success(resObj); + } + + private void loadSql() { + + } + + @Override + public String getFlowName() { + return "database"; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/EndFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/EndFlow.java new file mode 100644 index 000000000..444650d08 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/EndFlow.java @@ -0,0 +1,90 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.gson.JsonElement; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.JsonElementUtils; +import run.mone.local.docean.fsm.bo.*; +import run.mone.local.docean.tianye.common.CommonConstants; +import run.mone.local.docean.util.TemplateUtils; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 10:30 + * 结束的Flow + */ +@Slf4j +public class EndFlow extends BotFlow { + + + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + log.info("end flow"); + Map> referenceData = context.getReferenceData(); + + log.info("endFlow outputMap:{}", this.getOutputMap()); + this.getOutputMap().entrySet().stream().filter(i -> "reference".equals(i.getValue().getType())).forEach(it -> { + ItemData value = it.getValue(); + if (null == referenceData.get(value.getFlowId())){ + log.error("referenceData is empty.flowId:{}", value.getFlowId()); + it.setValue(OutputData.builder().type(value.getType()).value(value.getValue()).name(value.getName()).valueType(it.getValue().getValueType()).build()); + } else { + JsonElement jsonElement = context.queryFieldValueFromReferenceData(value.getFlowId(), value.getReferenceName()); + if (null != jsonElement) { + it.setValue(OutputData.builder().type(value.getType()).value(jsonElement).name(value.getName()).valueType(it.getValue().getValueType()).build()); + } + } + }); + + Map data = this.getOutputMap().entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue().getValue())); + List endFlowOutputDetails = this.getOutputMap().entrySet().stream().map( + i -> SyncFlowStatus.EndFlowOutputDetail.builder() + .name(i.getKey()).value(i.getValue().getValue() != null ? i.getValue().getValue().toString() : null).valueType(i.getValue().getValueType()).build()).collect(Collectors.toList()); + context.setExit(true); + + String message = ""; + + if (this.getInputMap().get(CommonConstants.TY_END_MESSAGE_CONTENT_MARK) != null) { + JsonElement value = this.getInputMap().get(CommonConstants.TY_END_MESSAGE_CONTENT_MARK).getValue(); + if (null != value){ + String template = value.getAsString(); + message = TemplateUtils.renderTemplate(template, data.entrySet().stream() + .collect(Collectors.toMap(entry -> entry.getKey(), entry -> JsonElementUtils.getValue(entry.getValue())))); + } + } + + FlowRes flowRes; + EndFlowRes endFlowRes = EndFlowRes.builder().data(data).answerContent(message).endFlowOutputDetails(endFlowOutputDetails).build(); + if (null == context.getFlowRes()){ + flowRes = FlowRes.success(endFlowRes); + } else { + flowRes = context.getFlowRes(); + flowRes.setData(endFlowRes); + flowRes.setCode(0); + } + + log.info("res:{}", flowRes); + context.setFlowRes(flowRes); + return flowRes; + } + + @Override + public String getFlowName() { + return "end"; + } + + public void exit(FlowContext ctx, FlowReq req, FlowRes res) { + long durationTime = System.currentTimeMillis() - ctx.getStartTime(); + log.info("exit endFlow..... id:{},flowRecordId:{},durationTime:{}", id, this.getFlowRecordId(), durationTime); + if (req.isSyncFlowStatusToM78()) { + EndFlowRes endFlowRes = (EndFlowRes) ctx.getFlowRes().getData(); + SyncFlowStatus.EndFlowOutput endFlowOutput = SyncFlowStatus.EndFlowOutput.builder().answerContent(endFlowRes.getAnswerContent()).endFlowOutputDetails(endFlowRes.getEndFlowOutputDetails()).build(); + this.getSyncFlowStatusServices().syncFinalRst(this.getFlowRecordId(), res.getCode()==0?2:3, durationTime, endFlowOutput, + null, SyncFlowStatus.SyncNodeOutput.builder().nodeId(id).status(res.getCode()==0?2:3).build()); + } + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/KnowledgeFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/KnowledgeFlow.java new file mode 100644 index 000000000..98550a752 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/KnowledgeFlow.java @@ -0,0 +1,97 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.common.base.Preconditions; +import com.google.gson.JsonObject; +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.infra.rpc.Result; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import run.mone.ai.z.dto.ZKnowledgeReq; +import run.mone.ai.z.dto.ZKnowledgeRes; +import run.mone.ai.z.service.KnowledgeBaseService; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.bo.*; +import run.mone.local.docean.tianye.common.CommonConstants; +import run.mone.local.docean.util.GsonUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author goodjava@qq.com + * @author shanwb + * @date 2024/3/1 14:45 + */ +@Slf4j +public class KnowledgeFlow extends BotFlow { + + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + KnowledgeBaseService knowledgeBaseService = Ioc.ins().getBean(KnowledgeBaseService.class); + + String userName = req.getUserName(); + ZKnowledgeReq knowledgeReq = buildParams(userName, this.inputMap); + + Result> result = knowledgeBaseService.querySimilarKnowledge(knowledgeReq); + log.warn("querySimilarKnowledge result:{}", GsonUtils.gson.toJson(result)); + if (result.getCode() != 0){ + log.error("querySimilarKnowledge error, ", result); + return FlowRes.failure(result.getMessage()); + } + + List contentList = result.getData().stream().map(i -> i.getContent()).collect(Collectors.toList()); + //outputList output + JsonObject resData = GsonUtils.objectToJsonObject(contentList); + + storeResultsInReferenceData(context, resData); + + //返回的数据一定要放到一个JsonObject中,方便后边的Flow解析 + return FlowRes.success(resData); + } + + @Override + public String getFlowName() { + return "knowledge"; + } + + @NotNull + private Map getStringMap(FlowContext context) { + Map map = context.getReferenceData().get(this.id); + if (null == map) { + map = new LinkedHashMap<>(); + } + return map; + } + + private ZKnowledgeReq buildParams(String userName, Map inputDataMap) { + ZKnowledgeReq knowledgeReq = new ZKnowledgeReq(); + + InputData query = inputDataMap.get(CommonConstants.TY_KNOWLEDGE_QUERY_MARK); + Preconditions.checkArgument(null != query, "query can not be null"); + String queryText = query.getValue().getAsString(); + + InputData knowledgeBase = inputDataMap.get(CommonConstants.TY_KNOWLEDGE_ID_MARK); + Preconditions.checkArgument(null != knowledgeBase, "knowledgeBaseId can not be null"); + Long knowledgeBaseId = knowledgeBase.getValue().getAsLong(); + + //todo 搜索类型:语义、混合、全文检索。默认语义 + + InputData maxRecall = inputDataMap.get(CommonConstants.TY_KNOWLEDGE_MAX_RECALL_MARK); + Preconditions.checkArgument(null != maxRecall, "maxRecall can not be null"); + Integer limit = maxRecall.getValue().getAsInt(); + + InputData minMatch = inputDataMap.get(CommonConstants.TY_KNOWLEDGE_MIN_MATCH_MARK); + Preconditions.checkArgument(null != minMatch, "minMatch can not be null"); + Double similarity = minMatch.getValue().getAsDouble(); + + knowledgeReq.setKnowledgeBaseId(knowledgeBaseId); + knowledgeReq.setUserName(userName); + knowledgeReq.setQueryText(queryText); + knowledgeReq.setLimit(limit); + knowledgeReq.setSimilarity(similarity); + + return knowledgeReq; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/LLMFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/LLMFlow.java new file mode 100644 index 000000000..7b2cef58a --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/LLMFlow.java @@ -0,0 +1,134 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.gson.*; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.context.TianyeContext; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.JsonElementUtils; +import run.mone.local.docean.fsm.bo.*; +import run.mone.local.docean.tianye.common.CommonConstants; +import run.mone.local.docean.tianye.common.LocalCache; +import run.mone.local.docean.util.GsonUtils; +import run.mone.local.docean.util.TemplateUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author zhidong + * @author goodjava@qq.com + * @date 2024/2/29 11:58 + *

+ * 处理大模型的一个Flow + */ +@Slf4j +public class LLMFlow extends BotFlow { + + + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + String model = inputMap.get(CommonConstants.TY_LLM_MODEL_MARK).getValue().getAsString(); + log.info("execute llmFlow model:{}", model); + String msg = ""; + JsonObject obj = null; + try { + boolean useCache = false; + InputData cacheData = inputMap.get(CommonConstants.TY_LLM_USE_CACHE); + if (null != cacheData) { + JsonElement cacheElement = inputMap.get(CommonConstants.TY_LLM_USE_CACHE).getValue(); + useCache = null != cacheElement ? "true".equals(cacheElement.getAsString()) : false; + } + obj = this.postJsonProxy(preparePrompt(), model, useCache, ""); + msg = obj.get("answer").getAsString(); + } catch (Throwable ex) { + log.error("call ai error:{}", ex); + return FlowRes.failure("call ai error:" + ex.getMessage()); + } + log.info("llmFlow res:{}", msg); + JsonObject resData; + try { + resData = GsonUtils.gson.fromJson(msg, JsonObject.class); + } catch (Exception e) { + log.warn("LLMFlow execute fromJson", e); + resData = new JsonObject(); + resData.addProperty("output", msg); + } + log.info("llm flow:{}", resData); + + if (!isBatch()) { + storeResultsInReferenceData(context, resData); + } + + return FlowRes.success(resData); + } + + @Override + public String getFlowName() { + return "llm"; + } + + private String preparePrompt() { + String body = inputMap.get(CommonConstants.TY_LLM_PROMPT_MARK).getValue().getAsString(); + Map m = new HashMap<>(); + inputMap.entrySet().stream().filter(e -> e.getValue().isOriginalInput()).forEach(it -> { + JsonElement element = it.getValue().getValue(); + m.put(it.getKey(), JsonElementUtils.getValue(element)); + }); + Map fmt = new HashMap<>(); + outputMap.entrySet().forEach(it -> { + fmt.put(it.getKey(), ""); + }); + String fmtStr = "最后的结果请以json返回,json格式为:" + GsonUtils.gson.toJson(fmt) + "\n"; + boolean batch = isBatch(); + if (batch) { + //完全靠用户的输入来匹配 比如 json格式为: {"code":""} + fmtStr = ""; + } + String finalPrompt = TemplateUtils.renderTemplate(body, m) + "\n" + fmtStr; + log.info("finalPrompt:{}", finalPrompt); + return finalPrompt; + } + + public JsonObject postJsonProxy(String prompt, String model, boolean useCache, String rstSchema) { + if (useCache) { + String cacheKey = "llm_" + prompt.hashCode() + "_" + (getFirstSevenCharacters(prompt).hashCode()); + JsonObject obj = LocalCache.getInstance().get(cacheKey); + if (null != obj) { + log.warn("use cache:{}", cacheKey); + return obj; + } + + obj = this.postJsonProxy(prompt, model, rstSchema); + if (null != obj && obj.size() > 0) { + LocalCache.getInstance().put(cacheKey, obj); + } + return obj; + } else { + return this.postJsonProxy(prompt, model, rstSchema); + } + } + + public String getFirstSevenCharacters(String input) { + return input.length() > 7 ? input.substring(0, 7) : input; + } + + public JsonObject postJsonProxy(String prompt, String model, String rstFormatDefinition) { + return new JsonObject(); + } + + private int getTimeout() { + int timeout = 150 * 1000; + if (inputMap.containsKey(CommonConstants.TY_LLM_TIMEOUT_MARK)) { + try { + timeout = inputMap.get(CommonConstants.TY_LLM_TIMEOUT_MARK).getValue().getAsInt(); + } catch (Exception ignore) { + } + } + return timeout; + } + + private String getToken() { + return TianyeContext.ins().getToken(); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/PluginFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/PluginFlow.java new file mode 100644 index 000000000..cf289df02 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/PluginFlow.java @@ -0,0 +1,84 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.common.collect.Maps; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.xiaomi.data.push.client.HttpClientV5; +import com.xiaomi.youpin.docean.Ioc; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.bo.*; +import run.mone.local.docean.service.BotPluginService; +import run.mone.local.docean.tianye.common.CommonConstants; +import run.mone.local.docean.util.GsonUtils; +import run.mone.local.docean.util.HttpUtils; + +import java.util.Map; + +/** + * @author caobaoyu + * @author goodjava@qq.com + * @description: 调用外部 plugin + * @date 2024-03-05 09:53 + */ +@Slf4j +public class PluginFlow extends BotFlow { + + private static Gson gson = GsonUtils.gson; + + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + JsonObject res = applyPlugin(this.inputMap); + storeResultsInReferenceData(context, res); + return FlowRes.success(res); + } + + @Override + public String getFlowName() { + return "plugin"; + } + + public JsonObject applyPlugin(Map inputMap) { + long pluginId = Long.parseLong(inputMap.get(CommonConstants.TY_PLUGIN_ID_MARK).getValue().getAsString()); + //从m78获取plugin信息 + PluginInfo pluginInfo = getPluginInfo(pluginId); + String urlStr = pluginInfo.getUrl(); + String methodStr = pluginInfo.getMethod(); + Map headersMap = pluginInfo.getHeaders(); + + JsonObject param = new JsonObject(); + Map paramMap = Maps.newHashMap(); + inputMap.entrySet() + .stream() + .filter(e -> e.getValue().isOriginalInput()).forEach(entry -> { + param.add(entry.getKey(), entry.getValue().getValueByType()); + if (entry.getValue().getValue().isJsonPrimitive()) { + paramMap.put(entry.getKey(), entry.getValue().getValue().getAsJsonPrimitive().getAsString()); + } + }); + String reqUrl = "GET".equalsIgnoreCase(methodStr) + ? HttpUtils.buildUrlWithParameters(urlStr, paramMap) + : urlStr; + //todo 页面设置或者plugin元数据带过来 + int timeout = 30 * 1000 * 10000; + String jsonStr = this.proxy(reqUrl, methodStr, headersMap, param, timeout); + log.info("plugin proxy rst:{}", jsonStr); + return GsonUtils.gson.fromJson(jsonStr, JsonObject.class); + } + + private PluginInfo getPluginInfo(long pluginId) { + BotPluginService botPluginService = Ioc.ins().getBean(BotPluginService.class); + return botPluginService.getPluginInfoById(pluginId); + } + + public String proxy(String reqUrl, String method, Map headers, JsonObject param, int timeout) { + if ("GET".equalsIgnoreCase(method.toUpperCase())) { + return HttpClientV5.get(reqUrl, headers, timeout); + } + String body = gson.toJson(param); + log.info("plugin post body:{}", body); + return HttpClientV5.post(reqUrl, body, headers, timeout); + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/PreconditionFlow.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/PreconditionFlow.java new file mode 100644 index 000000000..4a04c666e --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/flow/PreconditionFlow.java @@ -0,0 +1,41 @@ +package run.mone.local.docean.fsm.flow; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import run.mone.local.docean.fsm.BotFlow; +import run.mone.local.docean.fsm.bo.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author goodjava@qq.com + * @date 2024/2/29 11:54 + */ +@Slf4j +public class PreconditionFlow extends BotFlow { + + + /** + * 执行流程操作的方法。 + * 根据传入的请求和上下文,通过一系列条件判断来决定执行的逻辑。 + * + * @param req 流程请求对象 + * @param context 流程上下文 + * @return 返回操作结果,包含布尔值表示操作是否成功 + */ + @Override + public FlowRes execute(FlowReq req, FlowContext context) { + return FlowRes.success(""); + } + + @Override + public String getFlowName() { + return "precondition"; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/sync/SyncFlowStatusService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/sync/SyncFlowStatusService.java new file mode 100644 index 000000000..bd7bac931 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/fsm/sync/SyncFlowStatusService.java @@ -0,0 +1,62 @@ +package run.mone.local.docean.fsm.sync; + +import com.google.gson.Gson; +import com.xiaomi.data.push.client.HttpClientV5; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import run.mone.local.docean.fsm.bo.SyncFlowStatus; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + + +/** + * @author wmin + * @date 2024/3/4 + */ +@Service +@Slf4j +public class SyncFlowStatusService { + + @Value("${m78.server.addr}") + private String m78Server; + + //flowRecordId <-> syncFlowStatus + public ConcurrentHashMap syncFlowStatusMap = new ConcurrentHashMap<>(); + private ExecutorService pool = Executors.newFixedThreadPool(10); + private static Gson gson = new Gson(); + + public void addSyncFlowStatusMap(String flowRecordId, SyncFlowStatus.SyncNodeInput nodeInputs, SyncFlowStatus.SyncNodeOutput nodeOutputs) { + + } + + public void updateFlowStatusMap(String flowRecordId, SyncFlowStatus.SyncNodeInput nodeInputs, SyncFlowStatus.SyncNodeOutput nodeOutputs) { + + } + + public void syncFinalRst(String flowRecordId, int finalStatus, long durationTime, SyncFlowStatus.EndFlowOutput endFlowOutput, SyncFlowStatus.SyncNodeInput nodeInput, SyncFlowStatus.SyncNodeOutput nodeOutput) { + + } + + private void syncM78(String flowRecordId, boolean removeFromMap) { + SyncFlowStatus syncFlowStatus = syncFlowStatusMap.get(flowRecordId); + syncFlowStatus.setTimestamp(System.currentTimeMillis()); + String body = gson.toJson(syncFlowStatus); + log.info("sync flowStatus to m78:{}", body); + + Map header = new HashMap<>(); + header.put("Content-Type", "application/json"); + HttpClientV5.post(m78Server + "/open/api/v1/flow/flowStatus/notify", body, header, 10000); + if (removeFromMap){ + log.info("flowRecordId {} is done.", flowRecordId); + syncFlowStatusMap.remove(flowRecordId); + } + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/AbstractHandler.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/AbstractHandler.java new file mode 100644 index 000000000..555bbb557 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/AbstractHandler.java @@ -0,0 +1,14 @@ +package run.mone.local.docean.handler; + +import com.google.gson.Gson; +import me.chanjar.weixin.mp.api.WxMpMessageHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public abstract class AbstractHandler implements WxMpMessageHandler { + protected Logger logger = LoggerFactory.getLogger(getClass()); + + protected Gson gson = new Gson(); + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/MenuHandler.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/MenuHandler.java new file mode 100644 index 000000000..4a02f95a6 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/MenuHandler.java @@ -0,0 +1,29 @@ +package run.mone.local.docean.handler; + +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; + +import java.util.Map; + +/** + * @author caobaoyu + * @description: + * @date 2024-02-29 16:12 + */ +@Slf4j +public class MenuHandler extends AbstractHandler { + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMpXmlMessage, Map map, WxMpService wxMpService, WxSessionManager wxSessionManager) throws WxErrorException { + if ("guanyu".equals(wxMpXmlMessage.getEventKey())) { + return WxMpXmlOutMessage.TEXT().content("您好,我是关羽1号,您的OpenId为:" + wxMpXmlMessage.getFromUser()) + .fromUser(wxMpXmlMessage.getToUser()).toUser(wxMpXmlMessage.getFromUser()) + .build(); + } + return null; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/Message.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/Message.java new file mode 100644 index 000000000..4d419b327 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/Message.java @@ -0,0 +1,23 @@ +package run.mone.local.docean.handler; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author caobaoyu + * @description: + * @date 2024-02-27 14:42 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Message implements Serializable { + + private String role; + + private String content; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/MessageProxy.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/MessageProxy.java new file mode 100644 index 000000000..52e38e97f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/MessageProxy.java @@ -0,0 +1,27 @@ +package run.mone.local.docean.handler; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author caobaoyu + * @description: + * @date 2024-02-27 14:42 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MessageProxy implements Serializable { + + private String role; + + private String content; + + private String promptName; + + private Map params; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/WxMessageHandler.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/WxMessageHandler.java new file mode 100644 index 000000000..cb21628b0 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/WxMessageHandler.java @@ -0,0 +1,145 @@ +package run.mone.local.docean.handler; + + +import com.google.gson.Gson; +import com.google.gson.internal.LinkedTreeMap; +import com.xiaomi.data.push.client.HttpClientV5; +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.docean.common.StringUtils; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import run.mone.local.docean.service.IMRecordService; +import run.mone.m78.api.IMRecordProvider; +import run.mone.m78.api.bo.im.ExecuteBotReqDTO; +import run.mone.m78.api.bo.im.HasBotReqDTO; +import run.mone.m78.api.bo.im.IMRecordDTO; +import run.mone.m78.api.bo.im.M78IMRelationDTO; + +import java.math.BigInteger; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.regex.Pattern; + +/** + * @author caobaoyu + * @description: + * @date 2024-02-26 11:03 + */ +@Slf4j +public class WxMessageHandler extends AbstractHandler { + + + private static Gson gson = new Gson(); + + // todo: 加定时任务,在一定时间内没有下一条消息就清空 + private Map> msgHistory = new ConcurrentHashMap<>(); + + private ExecutorService pool = Executors.newFixedThreadPool(10); + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMpXmlMessage, Map map, WxMpService wxMpService, WxSessionManager wxSessionManager) { + pool.submit(() -> { + String msg = null; + if ("呼叫关羽".equals(wxMpXmlMessage.getContent())) { + msg = "您的openId:" + wxMpXmlMessage.getFromUser(); + } else { + String regex = "-?\\d+"; + IMRecordProvider imRecordProvider = ((IMRecordService) Ioc.ins().getBean(IMRecordService.class)).getIMRecordProvider(); + HasBotReqDTO req = new HasBotReqDTO(); + req.setUser(wxMpXmlMessage.getFromUser()); + req.setImType(2); + List imRelationDTOS = imRecordProvider.hasBot(req); + if (imRelationDTOS != null && imRelationDTOS.size() > 0) { + //有发布的bot + IMRecordDTO imRecord = new IMRecordDTO(); + imRecord.setUserName(wxMpXmlMessage.getFromUser()); + imRecord.setImTypeId(2); + imRecord.setStatus(0); + IMRecordDTO getRecord = imRecordProvider.get(imRecord); + if (getRecord != null) { + //有使用中的bot,调用bot + log.info("imRecord:{}", imRecord); + if ("结束本次会话".equals(wxMpXmlMessage.getContent())) { + IMRecordDTO deleteRecord = new IMRecordDTO(); + deleteRecord.setUserName(getRecord.getUserName()); + deleteRecord.setImTypeId(2); + deleteRecord.setStatus(0); + imRecordProvider.delete(imRecord); + msg = "已为您结束本次会话,欢迎下次使用"; + } else { + //调用bot + ExecuteBotReqDTO reqDTO = new ExecuteBotReqDTO(); + reqDTO.setUsername(getRecord.getUserName()); + reqDTO.setBotId(getRecord.getBotId().longValue()); + reqDTO.setInput(wxMpXmlMessage.getContent()); + reqDTO.setTopicId("1"); + msg = imRecordProvider.executeBot(reqDTO); + } + + } else { + //没有使用中的bot + // 判断字符串是否匹配整数的正则表达式 + if (Pattern.matches(regex, wxMpXmlMessage.getContent())) { + IMRecordDTO addIMRecord = new IMRecordDTO(); + addIMRecord.setBotId(new BigInteger(wxMpXmlMessage.getContent())); + addIMRecord.setUserName((wxMpXmlMessage.getFromUser())); + addIMRecord.setImTypeId(2); + addIMRecord.setStatus(0); + if (imRecordProvider.add(addIMRecord)) { + msg = "请输入问题"; + } else { + StringBuffer content = new StringBuffer(); + for (int i = 0; i < imRelationDTOS.size(); i++) { + content.append("\n [" + imRelationDTOS.get(i).getBotId() + "]" + imRelationDTOS.get(i).getBotName() + ";"); + } + msg = "欢迎您使用本公众号,提供的机器人有:" + content.toString() + "\n请回复数字"; + } + } else { + StringBuffer content = new StringBuffer(); + for (int i = 0; i < imRelationDTOS.size(); i++) { + content.append("\n [" + imRelationDTOS.get(i).getBotId() + "]" + imRelationDTOS.get(i).getBotName() + ";"); + } + msg = "欢迎您使用本公众号,提供的机器人有:" + content.toString() + "\n请回复数字"; + } + } + } else { + //没有发布过的bot + msg = "请先创建bot"; + } + } + + WxMpKefuMessage message = WxMpKefuMessage.TEXT().toUser(wxMpXmlMessage.getFromUser()).content(msg).build(); + try { + //TODO 调用bot执行 + wxMpService.getKefuService().sendKefuMessage(message); + } catch (WxErrorException e) { + logger.error("wx send kfMsg error:", e); + } + }); + + return null; + } + + private String postProxy(String param) { + Map body = new HashMap<>(); + body.put("promptName", "wx_msg"); + body.put("model", "gpt-4-1106-Preview-2"); + body.put("stream", false); + body.put("zzToken", "XX"); + body.put("type", 0); + Map paramMap = new HashMap<>(); + paramMap.put("content", param); + body.put("paramMap", paramMap); + Map header = new HashMap<>(); + header.put("Content-Type", "application/json"); + return HttpClientV5.post("http://XX/api/z-proxy/ask", gson.toJson(body), header, 100000); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/WxMsgfLogHandler.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/WxMsgfLogHandler.java new file mode 100644 index 000000000..330a55d58 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/handler/WxMsgfLogHandler.java @@ -0,0 +1,23 @@ +package run.mone.local.docean.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; + +import java.util.Map; + +/** + * @author caobaoyu + * @description: + * @date 2024-02-29 16:25 + */ +public class WxMsgfLogHandler extends AbstractHandler { + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + logger.info("\n接收到WeChat请求消息,内容:{}", gson.toJson(wxMessage)); + return null; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/AgentInfoPo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/AgentInfoPo.java new file mode 100644 index 000000000..b4ebf42a5 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/AgentInfoPo.java @@ -0,0 +1,35 @@ +package run.mone.local.docean.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.nutz.dao.entity.annotation.Column; +import org.nutz.dao.entity.annotation.Id; +import org.nutz.dao.entity.annotation.Table; + +import static run.mone.local.docean.tianye.common.TableConstants.TABLE_AGENT_CONFIG_INFO; + +/** + * @author HawickMason@xiaomi.com + * @date 2/27/24 16:29 + */ +@NoArgsConstructor +@AllArgsConstructor +@Data +@Builder +@Table(TABLE_AGENT_CONFIG_INFO) +public class AgentInfoPo { + + @Id + private Long id; + + @Column + private String token; + + @Column("avatar_path") + private String avatarPath; + + @Column + private byte[] avatar; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/FunctionInfo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/FunctionInfo.java new file mode 100644 index 000000000..dd96f9508 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/FunctionInfo.java @@ -0,0 +1,20 @@ +package run.mone.local.docean.po; + +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author goodjava@qq.com + * @date 2024/2/26 18:14 + */ +@Data +@Builder +public class FunctionInfo implements Serializable { + + private String script; + + private String functionName; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/Message.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/Message.java new file mode 100644 index 000000000..8d9a24301 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/Message.java @@ -0,0 +1,36 @@ +package run.mone.local.docean.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.nutz.dao.entity.annotation.Column; +import org.nutz.dao.entity.annotation.Id; +import org.nutz.dao.entity.annotation.Table; + +import java.io.Serializable; + +/** + * @author goodjava@qq.com + * @date 2024/2/28 13:56 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table +public class Message implements Serializable { + + @Id + private Long id; + + @Column + private String topicId; + + @Column + private String role; + + @Column + private String data; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotBo.java new file mode 100644 index 000000000..f080f51a5 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotBo.java @@ -0,0 +1,43 @@ +package run.mone.local.docean.po.m78; + +import com.xiaomi.mone.http.docs.annotations.HttpApiDocClassDefine; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-01 15:44 + */ +@Data +public class BotBo implements Serializable { + + @HttpApiDocClassDefine(value = "id", description = "机器人id") + private Long id; + + @HttpApiDocClassDefine(value = "name", description = "机器人名称") + private String name; + + @HttpApiDocClassDefine(value = "workspaceId", description = "工作空间id") + private Long workspaceId; + + @HttpApiDocClassDefine(value = "avatarUrl", description = "机器人头像") + private String avatarUrl; + + @HttpApiDocClassDefine(value = "creator", description = "创建人") + private String creator; + + @HttpApiDocClassDefine(value = "remark", description = "备注") + private String remark; + + @HttpApiDocClassDefine(value = "permissions", description = "权限") + private Integer permissions; + + @HttpApiDocClassDefine(value = "publishStatus", description = "发布状态") + private Integer publishStatus; + + @HttpApiDocClassDefine(value = "publishStatusDesc", description = "发布状态描述") + private String publishStatusDesc; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotFlowBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotFlowBo.java new file mode 100644 index 000000000..9675b87d5 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotFlowBo.java @@ -0,0 +1,38 @@ +package run.mone.local.docean.po.m78; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-07 15:44 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class BotFlowBo implements Serializable { + + private Long id; + + private String name; + + private String avatarUrl; + + private String desc; + + private String inputs; + + private String nodes; + + private String edges; + + //tianye可直接使用的req + private String tianyeBotReq; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotPluginBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotPluginBo.java new file mode 100644 index 000000000..a77737036 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotPluginBo.java @@ -0,0 +1,28 @@ +package run.mone.local.docean.po.m78; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-07 14:41 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BotPluginBo implements Serializable { + + private Long orgId; + + private String orgName; + + private List pluginDetailList; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotPluginDetailBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotPluginDetailBo.java new file mode 100644 index 000000000..f7061ea72 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotPluginDetailBo.java @@ -0,0 +1,39 @@ +package run.mone.local.docean.po.m78; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-07 15:13 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BotPluginDetailBo implements Serializable { + + private Long pluginId; + + private Long orgId; + + private String name; + + private String apiUrl; + + private String meta; + + private String creator; + + private Integer type; + + private String desc; + + private String avatarUrl; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotSettingBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotSettingBo.java new file mode 100644 index 000000000..a439afd86 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotSettingBo.java @@ -0,0 +1,74 @@ +package run.mone.local.docean.po.m78; + +import com.xiaomi.mone.http.docs.annotations.HttpApiDocClassDefine; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-01 15:58 + */ +@Data +public class BotSettingBo implements Serializable { + + @HttpApiDocClassDefine(value = "id", description = "id") + private Long id; + + @HttpApiDocClassDefine(value = "botId", description = "机器人id") + private Long botId; + + /** + * 人物设定 + */ + @HttpApiDocClassDefine(value = "setting", description = "机器人设定") + private String setting; + + /** + * 模型 + */ + @HttpApiDocClassDefine(value = "aiModel", description = "模型") + private String aiModel; + + /** + * 对话轮次 + */ + @HttpApiDocClassDefine(value = "dialogueTurns", description = "对话轮次") + private Integer dialogueTurns; + + /** + * 开场白 + */ + @HttpApiDocClassDefine(value = "openingRemarks", description = "开场白") + private String openingRemarks; + + /** + * 开场白问题 + */ + @HttpApiDocClassDefine(value = "openingQues", description = "开场白问题") + private List openingQues; + + @HttpApiDocClassDefine(value = "customizePromptSwitch", description = "自定义prompt开关 0-关闭 1-开启") + private Integer customizePromptSwitch; + + /** + * 自定义prompt + */ + @HttpApiDocClassDefine(value = "customizePrompt", description = "自定义prompt") + private String customizePrompt; + + /** + * 音色开关 + */ + @HttpApiDocClassDefine(value = "timbreSwitch", description = "音色开关 0-关闭 1-开启") + private Integer timbreSwitch; + + /** + * 音色 + */ + @HttpApiDocClassDefine(value = "timbre", description = "音色") + private String timbre; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotVo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotVo.java new file mode 100644 index 000000000..90aa55fc6 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/BotVo.java @@ -0,0 +1,50 @@ +package run.mone.local.docean.po.m78; + +import com.xiaomi.mone.http.docs.annotations.HttpApiDocClassDefine; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-01 16:22 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BotVo implements Serializable { + + @HttpApiDocClassDefine(value = "botId", description = "机器人id") + private Long botId; + + @HttpApiDocClassDefine(value = "botName", description = "机器人名称") + private String botName; + + @HttpApiDocClassDefine(value = "botInfo", description = "机器人信息") + private BotBo botInfo; + + @HttpApiDocClassDefine(value = "botSetting", description = "机器人设置信息") + private BotSettingBo botSetting; + + @HttpApiDocClassDefine(value = "botPluginList", description = "机器人插件列表") + private List botPluginList; + + @HttpApiDocClassDefine(value = "botFlowBoList", description = "机器人工作流列表") + private List botFlowBoList; + + @HttpApiDocClassDefine(value = "knowledgeBoList", description = "知识库列表") + private List knowledgeBoList; + + @Builder.Default + private String dbInfo = ""; + + @Builder.Default + private String userName = ""; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/KnowledgeBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/KnowledgeBo.java new file mode 100644 index 000000000..46bc6ab22 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/KnowledgeBo.java @@ -0,0 +1,25 @@ +package run.mone.local.docean.po.m78; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author caobaoyu + * @description: + * @date 2024-03-07 17:10 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class KnowledgeBo implements Serializable { + + private Long knowledgeBaseId; + + private String knowledgeName; + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/BotPresetQuestionBo.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/BotPresetQuestionBo.java new file mode 100644 index 000000000..cc8927abe --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/BotPresetQuestionBo.java @@ -0,0 +1,14 @@ +package run.mone.local.docean.po.m78.presetQuestion; + +import lombok.Data; + +import java.util.List; + +/** + * @author zhangxiaowei6 + * @Date 2024/3/13 18:38 + */ +@Data +public class BotPresetQuestionBo { + private List contents; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/Content.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/Content.java new file mode 100644 index 000000000..3d4dcc3ef --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/Content.java @@ -0,0 +1,13 @@ +package run.mone.local.docean.po.m78.presetQuestion; + +import lombok.Data; + +/** + * @author zhangxiaowei6 + * @Date 2024/3/13 18:41 + */ +@Data +public class Content { + private String role; + private Part parts; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/Part.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/Part.java new file mode 100644 index 000000000..7942c2380 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/po/m78/presetQuestion/Part.java @@ -0,0 +1,13 @@ +package run.mone.local.docean.po.m78.presetQuestion; + +import lombok.Data; + +/** + * @author zhangxiaowei6 + * @Date 2024/3/13 18:42 + */ + +@Data +public class Part { + private String text; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/DoceanRpcClient.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/DoceanRpcClient.java new file mode 100644 index 000000000..b43e2db7a --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/DoceanRpcClient.java @@ -0,0 +1,337 @@ +/* + * Copyright 2020 Xiaomi + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package run.mone.local.docean.rpc; + +import com.alibaba.nacos.api.docean.NacosReq; +import com.alibaba.nacos.api.docean.NacosRes; +import com.alibaba.nacos.api.exception.NacosException; +import com.alibaba.nacos.api.naming.pojo.Instance; +import com.google.common.collect.Lists; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.xiaomi.data.push.client.HttpClientV5; +import com.xiaomi.data.push.common.SafeRun; +import com.xiaomi.data.push.nacos.NacosNaming; +import com.xiaomi.data.push.rpc.RpcClient; +import com.xiaomi.data.push.rpc.common.Pair; +import com.xiaomi.data.push.rpc.protocol.RemotingCommand; +import com.xiaomi.data.push.task.Task; +import com.xiaomi.youpin.docean.anno.Component; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.Data; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import run.mone.local.docean.context.TianyeContext; +import run.mone.local.docean.protobuf.*; +import run.mone.local.docean.rpc.processor.MessageProcessor; +import run.mone.local.docean.service.ZService; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; + +/** + * @author goodjava@qq.com + * @date 2022/4/17 + */ +@Slf4j +@Data +@Component +public class DoceanRpcClient { + + private RpcClient client; + + private boolean init; + + private Gson gson = new Gson(); + + @Value("$serverAddr") + @Getter + private String serverAddr; + + @Value("$userName") + private String userName; + + @Value("$role") + private String role; + + @Value("$alias") + private String alias; + + @Value("$im.server") + private String imServer; + + @Value("$public.token") + private String publicToken; + + @Value("$nacos_config_server_addr") + private String nacosServerAddr; + + @Resource + private ZService zService; + + + @PostConstruct + public void init() { + try { + String userName = getUserName(); + if (StringUtils.isBlank(userName)) { + log.warn("未获取到有效的用户名,请通过环境变量或者属性配置z token!!!"); + return; + } + Map labels = new HashMap<>(); + labels.put("private", "true"); + Long id = zService.getKnowledgeIdByUserName(userName, labels); + TianyeContext.ins().setUserName(userName); + TianyeContext.ins().setKnowledgeBaseId(id); + + + if (StringUtils.isEmpty(imServer)) { + Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> { + SafeRun.run(() -> { + imServer = getInstance(); + }); + }, 5, 30, TimeUnit.SECONDS); + } + + + if (StringUtils.isBlank(serverAddr)) { + log.warn("serverAddr is not set, try get latest addr every 30s!"); + if (client != null) { + client.shutdown(); + } + String address = fetchNewServerAddress(); + log.info("fetchNewServerAddress rst:{}", address); + serverAddr = address; + initClient(address); + + Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> { + SafeRun.run(() -> { + String newServerAddr = fetchNewServerAddress(); + if (!newServerAddr.equals(serverAddr)) { + log.info("new server addr:{}", newServerAddr); + serverAddr = newServerAddr; + client.setServerAddrs(new AtomicReference<>(serverAddr)); + } + + }); + }, 5, 5, TimeUnit.SECONDS); + } else { + log.info("serverAddr is already set:{}, init client to connect", serverAddr); + initClient(serverAddr); + } + } catch (Throwable ex) { + log.error("init error:{}", ex.getMessage()); + } + } + + @Value("$fetch_m78_addr") + private String openMachineIpUrl; + + private String fetchNewServerAddress() { + try { + String url = openMachineIpUrl; + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + String machineRes = HttpClientV5.get(url, headers, 5000); + JsonObject jsonObject = gson.fromJson(machineRes, JsonObject.class); + String newServerAddr = jsonObject.get("data").getAsString(); + return newServerAddr; + } catch (Throwable ex) { + return ""; + } + } + + private void initClient(String sAdr) { + log.info("initClient sAdr:{},serverAddr:{}", sAdr, serverAddr); + client = new RpcClient(sAdr); + client.setReconnection(false); + client.setTasks(Lists.newArrayList(new Task(() -> { + log.info("ping m78server:" + serverAddr); + PingMsg pingMsg = PingMsg.newBuilder().setUserName(TianyeContext.ins().getUserName()).setAlias(alias).setRole(role).build(); + client.sendMessage(serverAddr, TianyeCmd.pingReq, pingMsg.toByteArray(), 5000, true, cmd -> cmd.addExtField("protobuf", "true")); + }, 5), new Task(() -> { + log.info("ping imserver:" + imServer); + PingMsg pingMsg = PingMsg.newBuilder().setUserName(TianyeContext.ins().getUserName()).setAlias(alias).setRole(role).build(); + client.sendMessage(imServer, TianyeCmd.pingReq, pingMsg.toByteArray(), 5000, true, cmd -> cmd.addExtField("protobuf", "true")); + }, 5))); + client.setProcessorList(Lists.newArrayList(new Pair(TianyeCmd.clientMessageReq, new MessageProcessor()))); + client.start(config -> config.setIdle(false)); + client.init(); + init = true; + log.info("docean rpc client start finish"); + } + + public NacosRes req(String addr, NacosReq req) { + return req(TianyeCmd.nacosReq, addr, req); + } + + + public NacosRes req(String addr, NacosReqProto req, Consumer consumer) { + return req(TianyeCmd.nacosReq, addr, req, consumer); + } + + + public ListResponse req(String addr, ListRequest req, Consumer consumer) { + try { + log.debug("rpc req:{} {}", req.getCmd(), addr); + RemotingCommand res = client.sendMessage(addr, TianyeCmd.listReq, req.toByteArray(), 5000, true, consumer); + byte[] data = res.getBody(); + return ListResponse.parseFrom(data); + } catch (Throwable ex) { + log.error("rpc req error {}:{}:{}", addr, req.getCmd(), ex.getMessage()); + throw new RuntimeException(ex); + } + } + + public NacosRes req(int code, String addr, NacosReqProto req, Consumer consumer) { + try { + log.debug("rpc req:{} {}", req.getCmd(), addr); + RemotingCommand res = client.sendMessage(addr, code, req.toByteArray(), 5000, true, consumer); + byte[] data = res.getBody(); + NacosRes nacosRes = gson.fromJson(new String(data), NacosRes.class); + return nacosRes; + } catch (Throwable ex) { + log.error("rpc req error {}:{}:{}", addr, req.getCmd(), ex.getMessage()); + throw new RuntimeException(ex); + } + } + + /** + * 直接获取 body 二进制(一般用protobuf压测,避免序列化反序列化的开销) + * + * @param code + * @param addr + * @param req + * @param consumer + * @return + */ + public byte[] reqBytes(int code, String addr, NacosReqProto req, Consumer consumer) { + try { + log.debug("rpc req:{} {}", req.getCmd(), addr); + RemotingCommand res = client.sendMessage(addr, code, req.toByteArray(), 5000, true, consumer); + return res.getBody(); + } catch (Throwable ex) { + log.error("rpc req error {}:{}:{}", addr, req.getCmd(), ex.getMessage()); + throw new RuntimeException(ex); + } + } + + + public NacosRes req(int code, String addr, NacosReq req) { + try { + log.debug("rpc req:{} {}", req.getCmd(), addr); + RemotingCommand res = client.sendMessage(addr, code, gson.toJson(req), 5000, true); + byte[] data = res.getBody(); + NacosRes nacosRes = gson.fromJson(new String(data), NacosRes.class); + return nacosRes; + } catch (Throwable ex) { + log.error("rpc req error {}:{}:{}", addr, req.getCmd(), ex.getMessage()); + throw new RuntimeException(ex); + } + } + + public AiResult req(int code, String addr, AiMessage req) { + try { + RemotingCommand res = client.sendMessage(addr, code, req.toByteArray(), 5000, true, cmd -> cmd.addExtField("protobuf", "true")); + byte[] data = res.getBody(); + return AiResult.parseFrom(data); + } catch (Throwable ex) { + log.error("rpc req error {}:{}:{}", addr, req.getCmd(), ex.getMessage()); + throw new RuntimeException(ex); + } + } + + /** + * 不需要返回值 + * + * @param addr + * @param req + */ + public boolean tell(String addr, NacosReq req) { + try { + log.debug("rpc tell:{} {}", addr, req.getCmd()); + client.tell(addr, TianyeCmd.distroReq, gson.toJson(req)); + return true; + } catch (Throwable ex) { + String message = ""; + if (req.isShowErrorMessage()) { + message = ex.getMessage(); + } + log.error("rpc tell error:{} {} {}", addr, req.getCmd(), message); + } + return false; + } + + private String getUserName() { + try { + // HINT: 只允许通过token配置agent + String token = retrieveToken(); + log.debug("User token is:{}", token); + if (StringUtils.isNotBlank(token)) { + TianyeContext.ins().setToken(token); + String userByToken = zService.getUserByToken(token); + log.debug("User token is:{}, userByToken:{}", token, userByToken); + return userByToken; + } + } catch (Exception e) { + log.error("Error while try to retrieve user name:", e); + return ""; + } + return ""; + } + + private String retrieveToken() { + String token = this.publicToken; + if (StringUtils.isEmpty(token)) { + token = System.getProperty("token"); + if (StringUtils.isEmpty(token)) { + token = System.getenv("tianye_token"); + } + } + return token; + } + + private String getInstance() { + NacosNaming nacosNaming = new NacosNaming(); + nacosNaming.setServerAddr(nacosServerAddr); + nacosNaming.init(); + try { + List list = nacosNaming.getAllInstances("tianye-center"); + if (list != null && list.size() > 0) { + StringBuilder sb = new StringBuilder(); + for (Instance instance : list) { + sb.append(instance.getIp()).append(":").append(instance.getPort()).append(","); + } + return sb.toString().substring(0, sb.length() - 1); + } else { + return ""; + } + } catch (NacosException e) { + log.error("Error while try to register instance", e); + throw new RuntimeException(e); + } + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Actions.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Actions.java new file mode 100644 index 000000000..62b601cb3 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Actions.java @@ -0,0 +1,29 @@ +package run.mone.local.docean.rpc.card; + +import lombok.Data; + +import java.util.HashMap; +import java.util.List; + +@Data +public class Actions { + + private String tag; + + private List options; + + private HashMap value; + + public static void main(String[] args) { + Actions actions = new Actions(); + Options option = new Options(); + HashMap text = new HashMap<>(); + text.put("tag", "plain_text"); + text.put("content", "1"); + option.setText(text); + option.setValue("2"); + actions.setOptions(List.of(option)); + actions.setTag("actionCard"); + System.out.println(actions); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Elements.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Elements.java new file mode 100644 index 000000000..752648679 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Elements.java @@ -0,0 +1,13 @@ +package run.mone.local.docean.rpc.card; + +import lombok.Data; + +import java.util.List; + +@Data +public class Elements { + + private String tag; + + private List actions; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Options.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Options.java new file mode 100644 index 000000000..828ead227 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/card/Options.java @@ -0,0 +1,13 @@ +package run.mone.local.docean.rpc.card; + +import lombok.Data; + +import java.util.HashMap; + +@Data +public class Options { + + private HashMap text; + + private String value; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/processor/MessageProcessor.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/processor/MessageProcessor.java new file mode 100644 index 000000000..e578ec264 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/processor/MessageProcessor.java @@ -0,0 +1,26 @@ +package run.mone.local.docean.rpc.processor; + +import com.xiaomi.data.push.rpc.netty.NettyRequestProcessor; +import com.xiaomi.data.push.rpc.protocol.RemotingCommand; +import io.netty.channel.ChannelHandlerContext; +import lombok.extern.slf4j.Slf4j; + +/** + * @author goodjava@qq.com + * @date 2022/4/18 10:10 + */ +@Slf4j +public class MessageProcessor implements NettyRequestProcessor { + + + @Override + public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request) throws Exception { + return null; + } + + @Override + public boolean rejectRequest() { + return false; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/processor/PingProcessor.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/processor/PingProcessor.java new file mode 100644 index 000000000..4db4f0884 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/rpc/processor/PingProcessor.java @@ -0,0 +1,29 @@ +package run.mone.local.docean.rpc.processor; + +import com.alibaba.nacos.api.docean.PingInfo; +import com.google.gson.Gson; +import com.xiaomi.data.push.rpc.netty.NettyRequestProcessor; +import com.xiaomi.data.push.rpc.protocol.RemotingCommand; +import io.netty.channel.ChannelHandlerContext; +import run.mone.local.docean.rpc.TianyeCmd; + +/** + * @author goodjava@qq.com + * @date 2022/4/18 10:10 + */ +public class PingProcessor implements NettyRequestProcessor { + @Override + public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request) throws Exception { + PingInfo pingInfo = request.getReq(PingInfo.class); + RemotingCommand response = RemotingCommand.createResponseCommand(TianyeCmd.pingRes); + PingInfo res = new PingInfo(); + res.setPing(pingInfo.getPing() + ":pong"); + response.setBody(new Gson().toJson(res).getBytes()); + return response; + } + + @Override + public boolean rejectRequest() { + return false; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/AgentMsgPersistService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/AgentMsgPersistService.java new file mode 100644 index 000000000..05dae99f5 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/AgentMsgPersistService.java @@ -0,0 +1,73 @@ +package run.mone.local.docean.service; + +import com.google.gson.Gson; +import com.xiaomi.youpin.docean.anno.Service; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.impl.NutDao; +import org.springframework.beans.factory.annotation.Value; +import run.mone.local.docean.context.TianyeContext; +import run.mone.local.docean.po.Message; +import run.mone.local.docean.protobuf.AiMessage; +import run.mone.local.docean.protobuf.AiResult; +import run.mone.local.docean.rpc.DoceanRpcClient; +import run.mone.local.docean.rpc.TianyeCmd; + +import javax.annotation.Resource; + +/** + * @author HawickMason@xiaomi.com + * @date 2/28/24 15:11 + */ +@Slf4j +@Service +public class AgentMsgPersistService { + + @Value("${agent.msg.remote.record}") + private boolean remoteRecord; + + @Resource + private NutDao dao; + + @Resource + private DoceanRpcClient client; + + + /** + * 尝试将消息持久化到本地,并根据配置决定是否也持久化到远程。 + * 如果在过程中发生异常,则记录错误日志并返回false。 + * + * @param message 要持久化的消息对象 + * @return 持久化操作是否成功 + */ + public boolean persist(Message message) { + try { + log.info("persisting msg:{}, with remoteRecord:{}", message, remoteRecord); + storeLocal(message); + if (remoteRecord) { + storeRemote(message); + } + return true; + } catch (Exception e) { + log.error("Error while try to persist agent msg, nested exception is:", e); + return false; + } + } + + public void storeLocal(Message message) { + log.info("try store locally!"); + dao.insert(message); + } + + public void storeRemote(Message message) { + log.info("try store remote!"); + AiMessage remoteMsg = AiMessage.newBuilder() + .setCmd("STORE") + .setFrom(TianyeContext.ins().getUserName()) + .setData(message.getData()) + .setMessage(message.getRole()) + .setTopicId(message.getTopicId()) + .build(); + log.info("remote msg:{}", remoteMsg); + AiResult res = client.req(TianyeCmd.messageReq, client.getServerAddr(), remoteMsg); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/BotPluginService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/BotPluginService.java new file mode 100644 index 000000000..42c565bb1 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/BotPluginService.java @@ -0,0 +1,56 @@ +package run.mone.local.docean.service; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Reference; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.fsm.bo.PluginInfo; +import run.mone.m78.api.BotPluginProvider; +import run.mone.m78.api.bo.plugins.BotPluginDTO; + +import java.util.Map; +import java.util.Optional; + +/** + * @author HawickMason@xiaomi.com + * @date 3/5/24 16:08 + */ +@Service +@Slf4j +public class BotPluginService { + + private final Gson gson = new Gson(); + + @Reference(interfaceClass = BotPluginProvider.class, group = "${dubbo.group}", version = "${dubbo.version}", timeout = 30000, check = false) + private BotPluginProvider botPluginProvider; + + + public PluginInfo getPluginInfoById(Long id) { + // mason TODO + BotPluginDTO botPluginById = botPluginProvider.getBotPluginById(id); + String apiUrl = botPluginById.getApiUrl(); + String meta = botPluginById.getMeta(); + JsonObject metaJson = gson.fromJson(meta, JsonObject.class); + + String display = Optional.ofNullable(metaJson.get("display")).map(it -> it.getAsString()).orElse(""); + + JsonArray input = metaJson.get("input").getAsJsonArray(); + JsonArray output = metaJson.get("output").getAsJsonArray(); + + Map headersMap = gson.fromJson(metaJson.get("http_headers").getAsJsonObject(), new TypeToken>() { + }.getType()); + return PluginInfo.builder() + .display(display) + .url(apiUrl) + .input(input) + .name(botPluginById.getName()) + .output(output) + .method(metaJson.get("http_method").getAsString()) + .headers(headersMap) + .build(); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/BotService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/BotService.java new file mode 100644 index 000000000..bc3968604 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/BotService.java @@ -0,0 +1,46 @@ +package run.mone.local.docean.service; + +import com.google.common.collect.Lists; +import com.xiaomi.youpin.docean.anno.Service; +import org.apache.commons.lang3.StringUtils; +import run.mone.local.docean.fsm.*; +import run.mone.local.docean.fsm.bo.EndFlowRes; +import run.mone.local.docean.fsm.bo.FlowRes; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * @author goodjava@qq.com + * @date 2024/3/1 16:40 + */ +@Service +public class BotService { + + + private ConcurrentMap debugMap = new ConcurrentHashMap<>(); + + + //执行一个bot + public EndFlowRes execute(BotReq req) { + return EndFlowRes.builder().build(); + } + + //从debugMap中查找BotFsm,执行被debug打断的流程 + public boolean continueDebugProcess(String reqId) { + if (StringUtils.isEmpty(reqId)) { + return false; + } + BotFsm fsm = debugMap.get(reqId); + if (fsm == null) { + return false; + } + BotState state = fsm.getCurrentState(); + if (state instanceof GraphState gs) { + BotFlow flow = gs.getCurrBotFlow(); + flow.getDebugController().setDebug(false); + } + return true; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/CodeService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/CodeService.java new file mode 100644 index 000000000..ace1e9f07 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/CodeService.java @@ -0,0 +1,42 @@ +//package run.mone.local.docean.service; +// +//import com.google.common.base.Preconditions; +//import com.google.gson.JsonObject; +//import com.xiaomi.youpin.docean.plugin.dubbo.anno.Reference; +//import com.xiaomi.youpin.docean.anno.Service; +//import com.xiaomi.youpin.infra.rpc.Result; +//import com.xiaomi.youpin.infra.rpc.errors.GeneralCodes; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.lang3.StringUtils; +//import run.mone.local.docean.util.GsonUtils; +//import run.mone.m78.api.BotPluginProvider; +//import run.mone.m78.api.CodeProvider; +//import run.mone.m78.api.bo.code.CodeDTO; +//import run.mone.m78.api.bo.feature.router.FeatureRouterDTO; +// +///** +// * @author HawickMason@xiaomi.com +// * @date 3/11/24 15:02 +// */ +//@Slf4j +//@Service +//public class CodeService { +// +// @Reference(interfaceClass = CodeProvider.class, group = "staging", version = "1.0", timeout = 30000, check = false) +// private CodeProvider codeProvider; +// +// public String getCodeDetailById(Long id) { +// Preconditions.checkArgument(id != null, "须传递id"); +// Result res = codeProvider.getCodeDetailById(id); +// log.info("getCodeDetail, id:{}, res:{}", id, res); +// if (res == null || res.getCode() != GeneralCodes.OK.getCode() || res.getData() == null) { +// return ""; +// } +// CodeDTO data = res.getData(); +// CodeDTO.CodeContentDTO code = data.getCode(); +// if (code == null || StringUtils.isBlank(code.getCode())) { +// return ""; +// } +// return code.getCode(); +// } +//} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/CommandExecuteService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/CommandExecuteService.java new file mode 100644 index 000000000..f66714879 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/CommandExecuteService.java @@ -0,0 +1,75 @@ +package run.mone.local.docean.service; + +import com.google.gson.Gson; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.infra.rpc.Result; +import com.xiaomi.youpin.infra.rpc.errors.GeneralCodes; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.dto.ExecCommandResult; +import run.mone.local.docean.service.tool.TerminalExecutorService; + +import javax.annotation.Resource; + +@Slf4j +@Service +public class CommandExecuteService { + + @Resource + TerminalExecutorService executorService; + + /** + * pull->commit -a + * git提交当前目录下所有更新内容 + * @return + */ + public Result gitCommit(){ + return gitCommitWithPath(null); + } + + /** + * pull->commit -a + * git提交指定目录下所有更新内容 + * @return + */ + public Result gitCommitWithPath(String workPath){ + + Result gitPull = executorService.execCommand("git pull", workPath); + if(gitPull.getCode() != 0 && gitPull.getData().getResultCode() != 0){ + log.info("execute command [ git pull ] fail! workPath : {}, execute result : {}", workPath, new Gson().toJson(gitPull)); + return Result.fail(GeneralCodes.InternalError,"execute command [ git pull ] fail!"); + } + return executorService.execCommand("git commit -a -m \"update\"", workPath); + } + + /** + * pull->add->commit -a + * git提交当前目录下所有更新内容,支持新建文件的提交 + * @return + */ + public Result gitAddCommit(){ + return gitAddCommitWithPath(null); + } + + /** + * pull->add->commit -a + * git提交指定目录下所有更新内容,支持新建文件的提交 + * @return + */ + public Result gitAddCommitWithPath(String workPath){ + Result gitPull = executorService.execCommand("git pull", workPath); + if(gitPull.getCode() != 0 && gitPull.getData().getResultCode() != 0){ + log.info("execute command [ git pull ] fail! workPath : {}, execute result : {}", workPath, new Gson().toJson(gitPull)); + return Result.fail(GeneralCodes.InternalError,"execute command [ git pull ] fail!"); + } + + Result gitAdd = executorService.execCommand("git add .", workPath); + if(gitAdd.getCode() != 0 && gitAdd.getData().getResultCode() != 0){ + log.info("execute command [ git add . ] fail! workPath : {}, execute result : {}", workPath, new Gson().toJson(gitAdd)); + return Result.fail(GeneralCodes.InternalError,"execute command [ git add . ] fail!"); + } + + return executorService.execCommand("git commit -a -m \"update\"", workPath); + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/FeatureRouterService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/FeatureRouterService.java new file mode 100644 index 000000000..a28ce882f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/FeatureRouterService.java @@ -0,0 +1,27 @@ +package run.mone.local.docean.service; + +import com.google.common.base.Preconditions; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Reference; +import lombok.extern.slf4j.Slf4j; +import run.mone.m78.api.FeatureRouterProvider; +import run.mone.m78.api.bo.feature.router.FeatureRouterDTO; + +/** + * @author HawickMason@xiaomi.com + * @date 3/1/24 16:40 + */ +@Slf4j +@Service +public class FeatureRouterService { + + @Reference(interfaceClass = FeatureRouterProvider.class, group = "${dubbo.group}", version = "${dubbo.version}", timeout = 30000, check = false) + private FeatureRouterProvider featureRouterProvider; + + public FeatureRouterDTO getFeatureRouterDetail(Long id) { + Preconditions.checkArgument(id != null, "须传递id"); + FeatureRouterDTO featureRouterDetailById = featureRouterProvider.getFeatureRouterDetailById(id); + log.info("getFeatureRouterDetail, id:{}, res:{}", id, featureRouterDetailById); + return featureRouterDetailById; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/GitService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/GitService.java new file mode 100644 index 000000000..b71d1d2d7 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/GitService.java @@ -0,0 +1,38 @@ +package run.mone.local.docean.service; + +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Reference; +import com.xiaomi.youpin.infra.rpc.Result; +import lombok.extern.slf4j.Slf4j; +import run.mone.m78.api.GitLabService; +import run.mone.m78.api.bo.gitlab.GitLabReq; +import run.mone.m78.api.bo.gitlab.GitTreeItem; + +import java.util.List; + +/** + * @author wmin + * @date 2024/2/26 + */ +@Slf4j +//@Service +public class GitService { + + @Reference(interfaceClass = GitLabService.class, group = "${dubbo.group}", version = "${dubbo.version}", timeout = 30000,check = false) + private GitLabService gitLabService; + + public Result getFileContent(GitLabReq gitLabReq){ + return gitLabService.getFileContent(gitLabReq); + } + + + public Result parseProjectJavaFile(GitLabReq gitLabReq){ + return gitLabService.parseProjectJavaFile(gitLabReq); + } + + public Result> getProjectStructureTree(GitLabReq gitLabReq){ + return gitLabService.getProjectStructureTree(gitLabReq); + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/GroovyService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/GroovyService.java new file mode 100644 index 000000000..3c438f380 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/GroovyService.java @@ -0,0 +1,50 @@ +package run.mone.local.docean.service; + +import com.google.gson.JsonElement; +import com.xiaomi.youpin.docean.anno.Service; +import lombok.extern.slf4j.Slf4j; + +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/2/21 18:05 + */ +@Service +@Slf4j +public class GroovyService { + + private ScriptEngineManager factory = new ScriptEngineManager(GroovyService.class.getClassLoader()); + + private ScriptEngine engine; + + public void init() { + log.info("init"); + engine = factory.getEngineByName("groovy"); + } + + + public GroovyService() { + + } + + + public Object invoke(String script, String functionName, Map bindValues, JsonElement args, Object context) throws ScriptException, NoSuchMethodException { + try { + bindValues.entrySet().stream().forEach(it -> engine.put(it.getKey(), it.getValue())); + engine.eval(script); + Object res = ((Invocable) engine).invokeFunction(functionName, args, context); + log.info("invoke res:" + res); + return res; + } catch (Throwable e) { + log.error("invoke script error:" + e.getMessage(), e); + throw e; + } + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/IMRecordService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/IMRecordService.java new file mode 100644 index 000000000..14a61e65f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/IMRecordService.java @@ -0,0 +1,22 @@ +package run.mone.local.docean.service; + +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Reference; +import lombok.extern.slf4j.Slf4j; +import run.mone.m78.api.IMRecordProvider; + +/** + * @author zhangping17@xiaomi.com + * @date 3/1/24 16:40 + */ +@Slf4j +@Service +public class IMRecordService { + + @Reference(interfaceClass = IMRecordProvider.class, group = "${dubbo.group}", version = "${dubbo.version}", timeout = 30000, check = false) + private IMRecordProvider imRecordProvider; + + public IMRecordProvider getIMRecordProvider() { + return imRecordProvider; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ImContext.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ImContext.java new file mode 100644 index 000000000..b043fc725 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ImContext.java @@ -0,0 +1,33 @@ +package run.mone.local.docean.service; + +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.docean.anno.Service; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.enums.ImEnum; +import run.mone.local.docean.service.api.ImStrategy; + +@Service +@Slf4j +public class ImContext { + + public boolean sendMessage(String message, String toId, ImEnum imType) { + ImStrategy imStrategy = null; + if (imType == ImEnum.FEISHU) { + imStrategy = Ioc.ins().getBean("feiShu"); + } else if (imType == ImEnum.WEIXIN) { + imStrategy = Ioc.ins().getBean("weiXin"); + } + return imStrategy.sendMessage(message, toId); + } + + public Object replyMessage(String message, String toId, ImEnum imType) { + log.info("replayMessage begin,imType:{}",imType.getValue()); + ImStrategy imStrategy = null; + if (imType == ImEnum.FEISHU) { + imStrategy = Ioc.ins().getBean("feiShu"); + } else if (imType == ImEnum.WEIXIN) { + imStrategy = Ioc.ins().getBean("weiXin"); + } + return imStrategy.replyMessage(message, toId); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/LocalMessageService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/LocalMessageService.java new file mode 100644 index 000000000..c9842b6ed --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/LocalMessageService.java @@ -0,0 +1,55 @@ +package run.mone.local.docean.service; + +import com.xiaomi.youpin.docean.anno.Service; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.po.Message; + +import java.util.*; + +/** + * @author goodjava@qq.com + * @date 2024/2/28 13:55 + */ +@Service +@Data +@Slf4j +public class LocalMessageService { + + private Map> messagesMap = new HashMap<>(); + + public void add(String topicId, Message message) { + messagesMap.compute(topicId, (k, v) -> { + if (v == null) { + List list = new ArrayList<>(); + list.add(message); + return list; + } else { + v.add(message); + //如果v的长度超过10,则只保留后3条 + if (v.size() > 10) { + v = v.subList(v.size() - 3, v.size()); + return v; + } + return v; + } + }); + } + + public void clearMessage(String topcId) { + List messageList = messagesMap.get(topcId); + if (null != messageList) { + messageList.clear(); + } + } + + + public List getMessagesMap(String topicId) { + List messages = messagesMap.getOrDefault(topicId, new ArrayList<>()); + //获取messageList,如果messageList超过 30条,则截断获取最后的30条 + messages = messages.size() > 30 ? messages.subList(messages.size() - 30, messages.size()) : messages; + messagesMap.put(topicId, messages); + return messages; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/M78Service.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/M78Service.java new file mode 100644 index 000000000..90eb6cbe4 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/M78Service.java @@ -0,0 +1,125 @@ +package run.mone.local.docean.service; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.po.m78.BotVo; +import run.mone.local.docean.util.HttpUtils; + +import java.text.SimpleDateFormat; + +/** + * @author goodjava@qq.com + * @date 2024/2/28 12:08 + */ +@Service +@Slf4j +public class M78Service { + + private static final String PRESET_QUESTION_PROMPT_NAME = "preset_problem"; + + @Value("$gpt_query_addr") + private String GPT_QUERY_URL; + + @Value("$model") + private String model; + + + @SneakyThrows + public String ask(String question, String history, String knowldge, String plugin) { + long startTime = System.currentTimeMillis(); + JsonElement res = ask2(question, history, knowldge, plugin, null); + String anwser = res.getAsJsonObject().get("data").getAsJsonObject().get("content").getAsString(); + log.info("ask duration:{}", System.currentTimeMillis() - startTime); + log.info("anwser:{}", anwser); + return anwser; + } + + @SneakyThrows + public JsonElement ask2(String question, String history, String knowldge, String plugin, BotVo botVo) { + String characterSetting = ""; + String model = ""; + if (null != botVo) { + model = botVo.getBotSetting().getAiModel(); + characterSetting = botVo.getBotSetting().getSetting(); + } + JsonObject jo = new JsonObject(); + jo.addProperty("promptName", "minzai"); + JsonObject params = new JsonObject(); + params.addProperty("list", history); + params.addProperty("question", question); + params.addProperty("plugin", plugin); + params.addProperty("knowldge", knowldge); + params.addProperty("character_setting", characterSetting); + params.addProperty("opening_remarks",botVo.getBotSetting().getOpeningRemarks()); + //从数据库中获取的私有知识 + params.addProperty("dbInfo", botVo.getDbInfo()); + //当前时间 + long now = System.currentTimeMillis(); + params.addProperty("now", "时间戳:" + now + " 北京时间:" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(now)); + //操控者名字 + params.addProperty("user_name", botVo.getUserName()); + jo.add("params", params); + JsonArray array = new JsonArray(); + array.add("content"); + array.add("type"); + array.add("function"); + array.add("params"); + jo.add("keys", array); + jo.addProperty("__model", model); + + JsonElement res = HttpUtils.postJson(GPT_QUERY_URL, jo); + JsonObject obj = new JsonObject(); + obj.addProperty("type", "llm"); + obj.addProperty("content", "我并不能回答这个问题"); + if (res == null) { + return obj; + } + if (res.isJsonObject()) { + if (res.getAsJsonObject().has("data")) { + return new JsonParser().parse(res.getAsJsonObject().get("data").getAsString()); + } + } + return obj; + } + + @SneakyThrows + public JsonElement askPresetQuestion(String question, String history, BotVo botVo, String knowledge) { + String characterSetting = ""; + String model = ""; + if (null != botVo) { + model = botVo.getBotSetting().getAiModel(); + characterSetting = botVo.getBotSetting().getSetting(); + } + String customizePrompt = botVo.getBotSetting().getCustomizePrompt(); + JsonObject jo = new JsonObject(); + jo.addProperty("promptName", PRESET_QUESTION_PROMPT_NAME); + JsonObject params = new JsonObject(); + params.addProperty("character_setting", characterSetting); + params.addProperty("multi_dialogue", history); + params.addProperty("supplement_prompt", customizePrompt); + params.addProperty("knowledge", knowledge); + + jo.add("params", params); + + //keys是希望返回的结果 + JsonArray array = new JsonArray(); + array.add("content"); + array.add("type"); + array.add("function"); + array.add("params"); + jo.add("keys", array); + + jo.addProperty("__model", model); + JsonElement jsonElement = HttpUtils.postJson(GPT_QUERY_URL, jo); + log.info("askPresetQuestion: {}", jsonElement.getAsJsonObject().get("data").getAsString()); + String data = jsonElement.getAsJsonObject().get("data").getAsString(); + return new JsonParser().parse(data); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/TestConvert.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/TestConvert.java new file mode 100644 index 000000000..9127c3cbc --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/TestConvert.java @@ -0,0 +1,17 @@ +package run.mone.local.docean.service; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import run.mone.local.docean.po.AgentInfoPo; +import run.mone.local.docean.po.Message; + +/** + * @author wmin + * @date 2024/3/1 + */ +@Mapper +public interface TestConvert { + TestConvert INSTANCE = Mappers.getMapper(TestConvert.class); + + AgentInfoPo toPo(Message dto); +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ToolService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ToolService.java new file mode 100644 index 000000000..a31f06d1d --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ToolService.java @@ -0,0 +1,37 @@ +package run.mone.local.docean.service; + +import com.google.common.collect.Maps; +import com.google.gson.JsonElement; +import com.xiaomi.youpin.docean.anno.Service; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.po.FunctionInfo; + +import javax.annotation.Resource; +import javax.script.ScriptException; + +/** + * @author goodjava@qq.com + * @date 2024/2/26 18:08 + */ +@Service +@Slf4j +public class ToolService { + + + @Resource + private GroovyService groovyService; + + /** + * 调用指定的函数信息对象中的脚本函数。 + * + * @param functionInfo 包含脚本和函数名称的对象 + * @param param 传递给脚本函数的参数 + * @return 脚本函数执行后返回的JsonElement对象 + */ + public JsonElement call(FunctionInfo functionInfo, JsonElement param) throws ScriptException, NoSuchMethodException { + String script = functionInfo.getScript(); + String name = functionInfo.getFunctionName(); + return (JsonElement) groovyService.invoke(script, name, Maps.newHashMap(), param, null); + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ZService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ZService.java new file mode 100644 index 000000000..e93fea860 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/ZService.java @@ -0,0 +1,117 @@ +package run.mone.local.docean.service; + +import com.google.common.collect.Lists; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.dubbo.anno.Reference; +import com.xiaomi.youpin.infra.rpc.Result; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; +import run.mone.ai.z.dto.ZKnowledgeBaseDTO; +import run.mone.ai.z.dto.ZKnowledgeBaseFileBlockDTO; +import run.mone.ai.z.dto.ZKnowledgeBaseFilesDTO; +import run.mone.ai.z.dto.ZKnowledgeReq; +import run.mone.ai.z.service.KnowledgeBaseService; +import run.mone.ai.z.service.ZDubboService; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class ZService { + + @Reference(interfaceClass = ZDubboService.class, group = "staging", version = "1.0", check = false) + private ZDubboService zDubboService; + + @Reference(interfaceClass = KnowledgeBaseService.class, group = "staging", version = "1.0", timeout = 30000, check = false) + private KnowledgeBaseService knowledgeBaseService; + + /** + * 根据token获取用户名 + * + * @param token + * @return + */ + public String getUserByToken(String token) { + return zDubboService.getUserName(token); + } + + public String getKnowledgeBaseSummaryAnswer(ZKnowledgeReq req) { + return knowledgeBaseService.summaryInKnowledgeBase(req).getData().getAnswer(); + } + + + public String getKnowledgeBaseFilesContentConcatenated(Long knowledgeBaseId, String account) { + if (null == knowledgeBaseId) { + return ""; + } + Result> rst = knowledgeBaseService.listKnowledgeBaseFilesWithContent(knowledgeBaseId, Lists.newArrayList(), account); + if (rst.getCode() != 0 || CollectionUtils.isEmpty(rst.getData())){ + log.error("listKnowledgeBaseFilesWithContent rst:{}", rst); + return ""; + } + return rst.getData().stream().map(it -> it.getFileContent()).collect(Collectors.joining("\n")); + } + + + /** + * 获取用户知识库id + * + * @param userName + * @return + */ + public Long getKnowledgeIdByUserName(String userName, Map lebels) { + Result> result = knowledgeBaseService.listMyKnowledgeBase(userName, lebels); + if (result.getData() == null || result.getData().isEmpty()) { + return null; + } else { + return result.getData().get(0).getId(); + } + } + + public Long getPromptIdByUserName(String userName) { + List ids = zDubboService.getPromptIdsByUserWithPrivate(userName); + if (ids == null || ids.isEmpty()) { + return null; + } else { + return ids.get(0); + } + } + + public Long getPromptIdByUserNameAndLabel(String userName, String label) { + List ids = zDubboService.getPromptByUserWithTagAndLabel(userName, label); + if (ids == null || ids.isEmpty()) { + return null; + } else { + return ids.get(0); + } + } + + public List getKnowledgeList(String username) { + Map lebels = new HashMap<>(); +// lebels.put("private", "true"); + return knowledgeBaseService.listMyKnowledgeBase(username, lebels).getData(); + } + + public List listKnowledgeBaseFiles(Long knowledgeId, List fileIds, String account) { + return knowledgeBaseService.listKnowledgeBaseFiles(knowledgeId, fileIds, account).getData(); + } + + public List listKnowledgeBaseFileBlocks(Long knowledgeId, Long fileId, String account) { + return knowledgeBaseService.listKnowledgeBaseFileBlocks(knowledgeId, fileId, account).getData(); + } + + public ZKnowledgeBaseFileBlockDTO updateKnowledgeBaseFileBlock(Long knowledgeId, String account, ZKnowledgeBaseFileBlockDTO dto) { + return knowledgeBaseService.addOrUpdateKnowledgeBaseFileBlock(knowledgeId, account, dto).getData(); + } + + public Void deleteFileInKnowledgeBase(Long knowledgeId, List fileIds, String account) { + return knowledgeBaseService.deleteFileInKnowledgeBase(knowledgeId, fileIds, account).getData(); + } + + public Boolean deleteKnowledgeBaseFileBlock(Long knowledgeId, String account, Long fileId, String blockId){ + return knowledgeBaseService.deleteKnowledgeBaseFileBlock(knowledgeId, account, fileId, blockId).getData(); + } +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/api/ImStrategy.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/api/ImStrategy.java new file mode 100644 index 000000000..e4dccc8af --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/api/ImStrategy.java @@ -0,0 +1,8 @@ +package run.mone.local.docean.service.api; + +public interface ImStrategy { + + boolean sendMessage(String message, String toId); + + Object replyMessage(String body, String toId); +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/api/OSStrategy.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/api/OSStrategy.java new file mode 100644 index 000000000..54cd83ba4 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/api/OSStrategy.java @@ -0,0 +1,12 @@ +package run.mone.local.docean.service.api; + +import run.mone.local.docean.dto.ExecCommandResult; + +public interface OSStrategy { + + void open(String path); + + void notify(String title, String msg); + + ExecCommandResult dialog(String title, String msg); +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/ChromeService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/ChromeService.java new file mode 100644 index 000000000..50360920f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/ChromeService.java @@ -0,0 +1,317 @@ +package run.mone.local.docean.service.tool; + +import com.google.gson.Gson; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.openqa.selenium.*; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.devtools.Command; +import org.openqa.selenium.devtools.DevTools; +import org.openqa.selenium.devtools.v122.network.Network; +import org.openqa.selenium.devtools.v122.network.model.Request; +import org.openqa.selenium.remote.Response; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.Rectangle; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.*; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +/** + * @author liuchuankang + * @date 2024/02/27 + */ +@Slf4j +@Service +public class ChromeService implements ToolService { + + private AtomicBoolean isInit = new AtomicBoolean(); + + private WebDriver driver; + + @Value("${chrome.driver.path}") + private String chromeDriverPath; + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public void newInit() { + if (isInit.compareAndSet(false, true)) { + System.setProperty("webdriver.chrome.driver", chromeDriverPath); + // 创建 ChromeOptions 实例并设置默认 URL + ChromeOptions options = new ChromeOptions(); + options.setPageLoadStrategy(PageLoadStrategy.EAGER); // 设置页面加载策略 + options.addArguments("--start-maximized"); // 最大化浏览器窗口 + options.addArguments("homepage=https://www.example.com"); +// options.addArguments("headless"); +// options.addArguments("disable-gpu"); +// options.addArguments("disable-dev-shm-usage"); +// options.addArguments("disable-plugins"); +// // 禁用java +// options.addArguments("disable-java"); +// // 以最高权限运行 +// options.addArguments("no-sandbox"); + + // 创建 Chrome 浏览器实例 + driver = new ChromeDriver(options); +// log.info("新打开chrome浏览器,chromeDriver={}",new Gson().toJson(driver)); + } + } + + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public boolean open(String url) { + newInit(); +// driver.get(url); + Set before = driver.getWindowHandles(); + JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; + Response response = (Response) jsExecutor.executeScript("window.open('" + url + "')"); + Set after = driver.getWindowHandles(); + after.removeAll(before); + driver.switchTo().window((String) after.toArray()[0]); + return true; + } + + public String openWithCookie(String url,String cookieStr) throws IOException, AWTException { + newInit(); + LocalDate localDate = LocalDate.now().plusDays(2); + System.out.println("local:"+localDate.getYear()); + ZoneId zoneId = ZoneId.systemDefault(); + Date date = Date.from(localDate.atStartOfDay().atZone(zoneId).toInstant()); + URL url1 = new URL(url); + driver.get(url); + WebDriver.Options manage = driver.manage(); + if(StringUtils.isNotBlank(cookieStr)){ + String[] split = cookieStr.split(";"); + if(split.length>1){ + for (String cookieKV : split) { + String[] split1 = cookieKV.split("="); + if(split1.length == 2){ + // 创建 Cookie 对象 + Cookie cookie = new Cookie(split1[0], split1[1],url1.getHost(),"/",date); + // 添加 Cookie 到浏览器 + manage.addCookie(cookie); + } + } + } + } + driver.get(url); + WebElement webElement = driver.findElement(By.xpath("/html")); + return webElement.getText(); + + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public String getTitle() { + if (isInit.get()) { + String title = driver.getTitle(); + log.info("chrome 获取title={}", title); + return title; + } + return null; + } + public List getImageList() { + List images = driver.findElements(By.tagName("img")); + return images.stream().map(image->image.getAttribute("src")).collect(Collectors.toList()); + } + public String getAllText() { + return driver.findElement(By.tagName("body")).getText(); + } + public String clickText(String text) { + // 查找页面上的文本元素 + WebElement textElement=driver.findElement(By.xpath("//span[contains(text(),'"+text+"')]")); + // 点击文本元素 + textElement.click(); + WebElement webElement = driver.findElement(By.xpath("/html")); + return webElement.getText(); + } + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public String getContent(String title, String url) { + log.info("chrome 获取页签内容title={},url={}", title, url); + + if (isInit.get()) { + String currentWindowHandle = driver.getWindowHandle(); + Set windowHandles = driver.getWindowHandles(); + for (String windowHandle : windowHandles) { + driver.switchTo().window(windowHandle); + if ((StringUtils.isNotBlank(title) && driver.getTitle().contains(title)) + || StringUtils.isNotBlank(url) && driver.getCurrentUrl().contains(url)) { + String pageSource = driver.getPageSource(); + driver.switchTo().window(currentWindowHandle); + log.info("chrome 获取页签结果content={}", pageSource); + return pageSource; + } + } + driver.switchTo().window(currentWindowHandle); + String pageSource = driver.getPageSource(); + log.info("chrome 获取页签结果content={}", pageSource); + return pageSource; + } + return null; + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public boolean close() { + if (!isInit.get()) { + return true; + } + if (driver.getWindowHandles().size() == 1 && isInit.compareAndSet(true, false)) { + log.info("chrome quit浏览器"); + driver.quit(); + } else { + Set windowHandles = driver.getWindowHandles(); + String windowHandle = driver.getWindowHandle(); + windowHandles.remove(windowHandle); + log.info("chrome close页签"); + driver.close(); + driver.switchTo().window(windowHandles.stream().findFirst().get()); + } + return true; + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public boolean quit() { + if (isInit.compareAndSet(true, false)) { + log.info("chrome quit浏览器"); + driver.quit(); + } + return true; + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public String getCurrentUrl() { + newInit(); + String currentUrl = driver.getCurrentUrl(); + log.info("chrome currentUrl={}", currentUrl); + return currentUrl; + } + + /** + * @author liuchuankang + * @date 2024/02/27 + */ + public List list() { + newInit(); + String currentWindowHandle = driver.getWindowHandle(); + Set windowHandles = driver.getWindowHandles(); + List list = new ArrayList<>(); + // 遍历所有窗口句柄 + for (String windowHandle : windowHandles) { + driver.switchTo().window(windowHandle); + list.add(driver.getTitle()); + } + driver.switchTo().window(currentWindowHandle); + log.info("chrome list={}", new Gson().toJson(list)); + return list; + } + + + public void takeFullScreenShot(String filename) throws IOException, AWTException { + // 获取浏览器窗口的尺寸 + org.openqa.selenium.Dimension size = driver.manage().window().getSize(); + + // 创建一个Robot对象来截取屏幕 + Robot robot = new Robot(); + + // 获取屏幕的分辨率 + Rectangle screenSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); + + // 计算需要截取的屏幕区域 + int width = size.getWidth(); + int height = size.getHeight(); + + // 创建一个BufferedImage来保存截图 + BufferedImage fullScreenshot = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = fullScreenshot.getGraphics(); + + // 截取屏幕并绘制到BufferedImage上 + g.drawImage(robot.createScreenCapture(screenSize), 0, 0, null); + + // 释放Graphics对象 + g.dispose(); + // 保存截图到文件 + ImageIO.write(fullScreenshot, "png", new File(filename)); + } + + + public void networkMonitor(String url) { + // 获取 DevTools 并创建一个会话 + DevTools devTools = ((ChromeDriver) driver).getDevTools(); + devTools.createSession(); + + // 启用网络监控 + devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty())); + + // 添加网络请求监听器 + devTools.addListener(Network.requestWillBeSent(), request -> { + Request req = request.getRequest(); +// System.out.println("Request URL: " + req.getUrl()); +// System.out.println("Request Method: " + req.getMethod()); + }); + + // 添加网络响应监听器 + devTools.addListener(Network.responseReceived(), response -> { + org.openqa.selenium.devtools.v122.network.model.Response res = response.getResponse(); + System.out.println("Response URL: " + res.getUrl()); + + if(true){ + return; + } + +// System.out.println("Response Status: " + res.getStatus()); + + Command getResponseBodyCommand = Network.getResponseBody(response.getRequestId()); + + Network.GetResponseBodyResponse responseBody = devTools.send(getResponseBodyCommand); + // 检查响应体是否存在 + if (responseBody.getBase64Encoded()) { + // 如果响应体是base64编码的,需要解码 + byte[] decodedBody = Base64.getDecoder().decode(responseBody.getBody()); + // 处理解码后的响应体 + System.out.println("Decoded response body: " + new String(decodedBody, StandardCharsets.UTF_8)); + } else { + // 如果响应体不是base64编码的,直接输出 + System.out.println("--->"); + System.out.println("Response body: " + responseBody.getBody()); + } + + + }); + // 打开一个网页 + driver.get(url); + } + + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/FeiShuService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/FeiShuService.java new file mode 100644 index 000000000..177de3f63 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/FeiShuService.java @@ -0,0 +1,121 @@ +package run.mone.local.docean.service.tool; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.internal.LinkedTreeMap; +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.config.Config; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.service.api.ImStrategy; +import run.mone.local.docean.util.MessageUtil; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service(name = "feiShu") +public class FeiShuService implements ImStrategy, ToolService { + + private static Gson gson = new Gson(); + + @Override + public boolean sendMessage(String message, String toId) { + try { + String GET_HISTORY_MESSAGE_URL = ((Config)Ioc.ins().getBean(Config.class)).get("feishu_domain","")+"/open-apis/im/v1/messages?receive_id_type=open_id"; + String access_token = MessageUtil.getTenantToken(); + String url = GET_HISTORY_MESSAGE_URL; + String res1 = String.format(MessageUtil.getMessageTemplateSend(), message, toId); + MessageUtil.innerRequest(res1, url, access_token, "POST"); + return true; + } catch (Exception e) { + log.error("send message error:", e); + return false; + } + } + + @Override + public Object replyMessage(String body, String toId) { + try { + Object param = null; + try { + param = gson.fromJson(body, Object.class); + } catch (Exception e) { + String access_token = MessageUtil.getTenantToken(); + String url = MessageUtil.getReplyMessageUrl() + "/" + toId + "/reply"; + body = body.replace("\n", ""); + body = body.replace(":", ""); + body = body.replace("{", ""); + body = body.replace("}", ""); + String res = String.format(MessageUtil.getMessageTemplateRelay(), body); + // 回复 + MessageUtil.innerRequest(res, url, access_token, "POST"); + return true; + } + + // 获取access_token + String access_token = MessageUtil.getTenantToken(); + if (!(param instanceof LinkedTreeMap) || (!((LinkedTreeMap)param).containsKey("open_chat_id") && !((LinkedTreeMap) param).containsKey("event"))) { + String url = MessageUtil.getReplyMessageUrl() + "/" + toId + "/reply"; + String reply = body; + reply = reply.replace("\n", ""); + reply = reply.replace("\"", ""); + reply = reply.replace("\\", ""); + String res = String.format(MessageUtil.getMessageTemplateRelay(), reply); + // 回复 + MessageUtil.innerRequest(res, url, access_token, "POST"); + return true; + } + // 获取messageId,组织message + if (((LinkedTreeMap)param).containsKey("open_chat_id")) { + String message = "请输入问题"; + String GET_HISTORY_MESSAGE_URL = ((Config)Ioc.ins().getBean(Config.class)).get("feishu_domain","")+"/open-apis/im/v1/messages?receive_id_type=chat_id"; + String url = GET_HISTORY_MESSAGE_URL; + String res1 = String.format(MessageUtil.getMessageTemplateSend(), message, ((LinkedTreeMap)param).get("open_chat_id").toString()); + MessageUtil.innerRequest(res1, url, access_token, "POST"); + return true; + } else { + String messageId = ((LinkedTreeMap) ((LinkedTreeMap) ((LinkedTreeMap) param).get("event")).get("message")).get("message_id").toString(); + String url = MessageUtil.getReplyMessageUrl() + "/" + messageId + "/reply"; + String reply = "欢迎使用"; + String res = String.format(MessageUtil.getMessageTemplateRelay(), reply); + // 回复 + MessageUtil.innerRequest(res, url, access_token, "POST"); + return true; + } + } catch (Exception e) { + log.error("reply message error:", e); + return false; + } + } + + + public Object replyMessageCard(String body, String card) { + try { + Object param = gson.fromJson(body, Object.class); + // 获取access_token + String access_token = MessageUtil.getTenantToken(); + // 获取messageId,组织message + String messageId = ((LinkedTreeMap) ((LinkedTreeMap) ((LinkedTreeMap) param).get("event")).get("message")).get("message_id").toString(); + String url = MessageUtil.getReplyMessageUrl() + "/" + messageId + "/reply"; + //String res = "{\"config\":{\"wide_screen_mode\":true},\"elements\":[{\"actions\":[{\"tag\":\"button\",\"text\":{\"content\":\"bot\",\"tag\":\"plain_text\"},\"type\":\"primary\"},{\"tag\":\"button\",\"text\":{\"content\":\"查看活动指南\",\"tag\":\"plain_text\"},\"type\":\"default\",\"multi_url\":{\"url\":\"https://open.feishu.cn/\",\"android_url\":\"\",\"ios_url\":\"\",\"pc_url\":\"\"}}],\"tag\":\"action\"},{\"tag\":\"action\",\"actions\":[{\"tag\":\"overflow\",\"options\":[{\"text\":{\"tag\":\"plain_text\",\"content\":\"t1\"},\"value\":\"o1\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t2\"},\"value\":\"o2\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t3\"},\"value\":\"o3\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t6\"},\"value\":\"o6\"}],\"value\":{\"k1\":\"v1\",\"k2\":\"v2\",\"k3\":\"v3\",\"k6\":\"v6\"}}]}]}"; + //res = "{\"config\":{\"wide_screen_mode\":true},\"elements\":[{\"tag\":\"action\",\"actions\":[{\"tag\":\"overflow\",\"options\":[{\"text\":{\"tag\":\"plain_text\",\"content\":\"t1\"},\"value\":\"o1\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t2\"},\"value\":\"o2\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t3\"},\"value\":\"o3\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t6\"},\"value\":\"o6\"}],\"value\":{\"k1\":\"v1\",\"k2\":\"v2\",\"k3\":\"v3\",\"k6\":\"v6\"}}]}]}"; + //String res1 = "{\"config\":{\"wide_screen_mode\":true},\"elements\":[{\"tag\":\"action\",\"actions\":[{\"tag\":\"overflow\",\"options\":[{\"text\":{\"tag\":\"plain_text\",\"content\":\"t1\"},\"value\":\"o1\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t2\"},\"value\":\"o2\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t3\"},\"value\":\"o3\"},{\"text\":{\"tag\":\"plain_text\",\"content\":\"t6\"},\"value\":\"o6\"}],\"value\":{\"k1\":\"v1\",\"k2\":\"v2\",\"k3\":\"v3\",\"k6\":\"v6\"}}]}]}"; + //res = card; + //res = "{\"elements\":[{\"tag\":\"action\",\"actions\":[{\"tag\":\"overflow\",\"options\":[{\"text\":{\"tag\":\"plain_text\",\"content\":\"1\"},\"value\":\"1\"}],\"value\":{\"1\":\"1\"}}]}]}"; + Map map = new HashMap<>(); + map.put("content", card); + map.put("msg_type", "interactive"); + card = gson.toJson(map); + // 回复 + MessageUtil.innerRequest(card, url, access_token, "POST"); + return true; + } catch (Exception e) { + log.error("reply message error:", e); + return false; + } + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/IdeService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/IdeService.java new file mode 100644 index 000000000..94d826986 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/IdeService.java @@ -0,0 +1,48 @@ +package run.mone.local.docean.service.tool; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.xiaomi.youpin.docean.anno.Service; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import run.mone.local.docean.util.HttpUtils; + +/** + * @author goodjava@qq.com + * @date 2024/2/27 14:02 + *

+ * 操作本地ide的一些行为 + */ +@Slf4j +@Service +public class IdeService implements ToolService { + + + /** + * 执行IDE服务的方法。 + * 支持能力 + * 关闭所有tab标签:{"cmd":"close_all_tab"} + */ + @SneakyThrows + public JsonElement execute(JsonElement params) { + //支持调用ide,比如关闭所有tab,编写代码等 + log.info("execute ide service params:{}", params); + if (params.isJsonObject()) { + JsonObject obj = (JsonObject) params; + HttpUtils.postJson("http://127.0.0.1:3458/tianye", obj); + } + JsonObject res = new JsonObject(); + res.addProperty("code", 0); + return res; + } + + @Override + public String author() { + return "goodjava@qq.com"; + } + + @Override + public String version() { + return "0.0.1:2024-02-27"; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/MessageService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/MessageService.java new file mode 100644 index 000000000..4f2ac392f --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/MessageService.java @@ -0,0 +1,263 @@ +package run.mone.local.docean.service.tool; + +import com.google.gson.*; +import com.google.gson.internal.LinkedTreeMap; +import com.xiaomi.data.push.client.HttpClientV5; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.mvc.util.GsonUtils; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; +import run.mone.local.docean.context.TianyeContext; +import run.mone.local.docean.fsm.bo.PluginInfo; +import run.mone.local.docean.po.Message; +import run.mone.local.docean.po.m78.BotVo; +import run.mone.local.docean.po.m78.presetQuestion.BotPresetQuestionBo; +import run.mone.local.docean.po.m78.presetQuestion.Content; +import run.mone.local.docean.po.m78.presetQuestion.Part; +import run.mone.local.docean.service.*; +import run.mone.local.docean.util.HttpUtils; +import run.mone.local.docean.util.MessageUtil; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class MessageService implements ToolService { + + @Resource + private WxMpService wxMpService; + + @Resource + private M78Service m78Service; + + @Resource + private LocalMessageService localMessageService; + + @Resource + private AgentMsgPersistService agentMsgPersistService; + + @Resource + private BotPluginService botPluginService; + + @Resource + private ZService zService; + + @Value("${wx.templateId}") + private String wxTemplateId; + + @Value("${feishu_domain}") + private String feishuDomain; + + private ExecutorService pool = Executors.newFixedThreadPool(5); + + public void reply(Object body) { + try { + // 获取messageId,组织message + String messageId = ((LinkedTreeMap) ((LinkedTreeMap) ((LinkedTreeMap) body).get("event")).get("message")).get("message_id").toString(); + String userId = ((LinkedTreeMap) ((LinkedTreeMap) ((LinkedTreeMap) ((LinkedTreeMap) body).get("event")).get("sender")).get("sender_id")).get("user_id").toString(); + String message = GsonUtils.gson.fromJson(((LinkedTreeMap) ((LinkedTreeMap) ((LinkedTreeMap) body).get("event")).get("message")).get("content").toString(), JsonObject.class).get("text").getAsString(); + log.info("userId:{},message:{}", userId, message); + + String url = MessageUtil.getReplyMessageUrl() + "/" + messageId + "/reply"; + + String reply = askWithHistoryAndKnowledgeBase(MessageUtil.getAppId() + "#" + userId, message, null, null); + + String res = String.format(MessageUtil.getMessageTemplateRelay(), reply); + // 回复 + MessageUtil.innerRequest(res, url, MessageUtil.getTenantToken(), "POST"); + } catch (Exception e) { + log.error("reply message error:", e); + } + } + + public String askWithHistoryAndKnowledgeBase(String topicId, String message, Long knowLedgeId, BotVo botVo) { + log.info("askWithHistoryAndKnowledgeBase topicId:{}", topicId); + String history = localMessageService.getMessagesMap(topicId).stream().map(it -> it.getRole() + ":" + it.getData()).collect(Collectors.joining("\n")); + saveMessage(topicId, Message.builder().role("user").data(message).build()); + if (null == knowLedgeId) { + knowLedgeId = TianyeContext.ins().getKnowledgeBaseId(); + } + String knowldge = zService.getKnowledgeBaseFilesContentConcatenated(knowLedgeId, TianyeContext.ins().getUserName()); + String plugin = extractAndSerializeBotPlugins(TianyeContext.ins().getUserName(), botVo); + //向ai问问题 + JsonObject obj = m78Service.ask2(message, history, knowldge, plugin, botVo).getAsJsonObject(); + + String reply = ""; + String type = obj.get("type").getAsString(); + if (type.equals("plugin")) { + //call function + String funcId = obj.get("pluginId").getAsString(); + JsonObject param = obj.get("params").getAsJsonObject(); + log.info("call function id:{} param:{}", funcId, param); + JsonObject res = pluginCall(funcId, param); + reply = new GsonBuilder().setPrettyPrinting().create().toJson(res); + } else { + obj.addProperty("type", "llm"); + reply = obj.toString(); + } + //如果发现reply长度超过4000前字节,则只保留前边的4000字节 + String saveReply = reply; + if (reply.length() > 4000) { + saveReply = saveReply.substring(0, 4000); + } + saveMessage(topicId, Message.builder().role("assistant").data(saveReply).build()); + return reply; + } + + private String extractAndSerializeBotPlugins(String userName, BotVo botVo) { + List plugins = new ArrayList<>(); + if (null != botVo && botVo.getBotPluginList() != null) { + botVo.getBotPluginList().forEach(it -> { + it.getPluginDetailList().stream().forEach(detail -> { + String meta = detail.getMeta(); + JsonObject metaJson = GsonUtils.gson.fromJson(meta, JsonObject.class); + //eg: [{"desc": "计算一个随机数(0-n),n是你提供的上限","pluginId":"7", "input": [{"desc": "随机数的上限", "name": "n"}], "output": [{"desc": "产生的随机数", "name": "num"}]}] + PluginInfo pluginInfo = PluginInfo.builder().build(); + pluginInfo.setUrl(detail.getApiUrl()); + pluginInfo.setPluginId(detail.getPluginId()); + pluginInfo.setInput(metaJson.get("input").getAsJsonArray()); + pluginInfo.setOutput(metaJson.get("output").getAsJsonArray()); + pluginInfo.setDesc(metaJson.get("desc").getAsString()); + plugins.add(pluginInfo); + }); + }); + return GsonUtils.gson.toJson(plugins); + } + return ""; + } + + @SneakyThrows + private JsonObject pluginCall(String funcId, JsonObject param) { + PluginInfo plugin = botPluginService.getPluginInfoById(Long.valueOf(funcId)); + String url = plugin.getUrl(); + String method = plugin.getMethod(); + Map headers = plugin.getHeaders(); + JsonElement res = new JsonPrimitive(""); + JsonArray array = plugin.getInput(); + if ("GET".equalsIgnoreCase(method)) { + Map paraMap = new HashMap<>(); + array.forEach(it -> { + JsonObject jsonObj = it.getAsJsonObject(); + if (jsonObj == null) { + return; + } + JsonElement nameJ = jsonObj.get("name"); + if (nameJ == null) { + return; + } + String name = nameJ.getAsString(); + JsonElement valueJ = param.get(name); + if (valueJ == null) { + return; + } + String value = param.get(name).getAsString(); + paraMap.put(name, value); + } + ); + String callRes = HttpClientV5.get(HttpUtils.buildUrlWithParameters(url, paraMap), headers, 180000); + try { + res = new JsonParser().parse(callRes); + } catch (Exception e) { + res = new JsonPrimitive(callRes); + } + } else { + JsonObject pluginReq = new JsonObject(); + array.forEach(it -> { + JsonObject jsonObj = it.getAsJsonObject(); + String name = jsonObj.get("name").getAsString(); + JsonElement value = param.get(name); + pluginReq.add(name, value); + }); + res = HttpUtils.postJson(url, pluginReq); + } + + log.info("call plugin res:{}", res); + res.getAsJsonObject().addProperty("call_plugin", plugin.getName()); + res.getAsJsonObject().addProperty("type", "plugin"); + res.getAsJsonObject().addProperty("display", plugin.getDisplay()); + return res.getAsJsonObject(); + } + + private void saveMessage(String topicId, Message message) { + localMessageService.add(topicId, message); + pool.submit(() -> { + agentMsgPersistService.persist(message); + }); + } + + public boolean sendMsg(String content, String email) { + // 处理消息 + String GET_HISTORY_MESSAGE_URL = feishuDomain+"/open-apis/im/v1/messages?receive_id_type=email"; + String access_token = MessageUtil.getTenantToken(); + String url = GET_HISTORY_MESSAGE_URL; + String res1 = String.format(MessageUtil.getMessageTemplateSend(), content, email); + MessageUtil.innerRequest(res1, url, access_token, "POST"); + return true; + } + + public boolean sendWxMsg(String openId, String keyWord) { + WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() + .toUser(openId) + .templateId(wxTemplateId) + .build(); + templateMessage.addData(new WxMpTemplateData("keyword", keyWord)); + try { + String msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage); + log.info("msgId:{}", msgId); + return true; + } catch (WxErrorException e) { + log.error("wx send msg error:", e); + return false; + } + } + + public String getPresetQuestion(String topicId, String msg, BotVo botVo, Long knowLedgeId) { + //获取历史多轮对话 + List historyList = localMessageService.getMessagesMap(topicId); + log.info("getPresetQuestion.historyList:{}", historyList); + + //获取私人知识库 + if (null == knowLedgeId) { + knowLedgeId = TianyeContext.ins().getKnowledgeBaseId(); + } + + String knowledge = zService.getKnowledgeBaseFilesContentConcatenated(knowLedgeId, TianyeContext.ins().getUserName()); + + //转换 + BotPresetQuestionBo botPresetQuestion = new BotPresetQuestionBo(); + List contentList = new ArrayList<>(); + historyList.forEach(message -> { + Content content = new Content(); + content.setRole(message.getRole()); + Part part = new Part(); + part.setText(message.getData()); + content.setParts(part); + contentList.add(content); + }); + botPresetQuestion.setContents(contentList); + //获取自定义prompt + String customizePrompt = botVo.getBotSetting().getCustomizePrompt(); + //请求ai + try { + String historyJson = GsonUtils.gson.toJson(botPresetQuestion); + JsonElement jsonElement = m78Service.askPresetQuestion(msg, historyJson, botVo,knowledge); + return GsonUtils.gson.toJson(jsonElement); + } catch (Exception e) { + log.error("getPresetQuestion error:", e); + return null; + } + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/OSXService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/OSXService.java new file mode 100644 index 000000000..e8add6284 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/OSXService.java @@ -0,0 +1,115 @@ +package run.mone.local.docean.service.tool; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.infra.rpc.Result; +import com.xiaomi.youpin.infra.rpc.errors.GeneralCodes; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import run.mone.local.docean.dto.ExecCommandResult; +import run.mone.local.docean.service.api.OSStrategy; + +import javax.annotation.Resource; +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * @author wangzhidong + * @author goodjava@qq.com + * @date 2024/2/27 14:02 + *

+ * 操作操作系统 + */ +@Slf4j +@Service +public class OSXService implements ToolService, OSStrategy { + private final String searchPath = "/Applications/:/System/Library/CoreServices/:" + System.getenv("HOME") + "/Applications/"; + @Resource + private TerminalExecutorService executorService; + + public JsonElement execute(JsonElement params) { + log.info("execute os X service params:{}", params); + if (params.isJsonObject()) { + JsonObject obj = (JsonObject) params; + String cmd = obj.get("cmd").getAsString(); + if ("open".equals(cmd)) { + open(obj.get("param").getAsString()); + }else if ("notify".equals(cmd)) { + notify(obj.get("title").getAsString(),obj.get("param").getAsString()); + } + } + return null; + } + + public void open(String path) { + String fPath = path; + File file = new File(fPath); + if (!file.exists()) { + for (String pre : searchPath.split(":")) { + file = new File(pre + path); + if (file.exists()) { + fPath = pre + path; + break; + } + } + } + exec("open", fPath); + } + + public void notify(String title, String msg) { + if (StringUtils.isEmpty(title)) { + title = "Tianye"; + } + exec("osascript", "-e", String.format("display notification \"%s\" with title \"%s\"", msg, title)); + } + + public ExecCommandResult dialog(String title, String msg) { + if (StringUtils.isEmpty(title)) { + title = "Tianye"; + } + Result res= exec("osascript", "-e", String.format("display dialog \"%s\" with title \"%s\"", msg, title)); + return res.getData(); + } + + private Result exec(String... command) { + ExecCommandResult execCommandResult = new ExecCommandResult(); + try { + ProcessBuilder builder = new ProcessBuilder(); + // 设置命令和参数 + builder.command(command); + + // 启动进程 + Process process = builder.start(); + + // 读取命令执行结果 + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream())); + List resultData = new ArrayList<>(); + String line; + while ((line = reader.readLine()) != null) { + resultData.add(line); + } + reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + while ((line = reader.readLine()) != null) { + resultData.add(line); + } + log.info("exec result data:{}", new Gson().toJson(resultData)); + + // 等待命令执行完成 + int exitCode = process.waitFor(); + execCommandResult.setResultCode(exitCode); + execCommandResult.setResultData(resultData); + + log.info("exec command :{} , exitCode : {}, resultData : {}", command, exitCode, resultData); + return Result.success(execCommandResult); + + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.fail(GeneralCodes.ServerIsBuzy, "系统异常"); + } + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/TerminalExecutorService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/TerminalExecutorService.java new file mode 100644 index 000000000..7d8d9e53c --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/TerminalExecutorService.java @@ -0,0 +1,67 @@ +package run.mone.local.docean.service.tool; + +import com.google.gson.Gson; +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.infra.rpc.Result; +import com.xiaomi.youpin.infra.rpc.errors.GeneralCodes; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import run.mone.local.docean.dto.ExecCommandResult; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Service +public class TerminalExecutorService implements ToolService { + + public Result execCommand(String command, String workPath) { + + ExecCommandResult execCommandResult = new ExecCommandResult(); + try { + ProcessBuilder builder = new ProcessBuilder(); + // 设置命令和参数 + builder.command("bash", "-c", command); + + // 设置工作目录(可选) + if (StringUtils.isNotBlank(workPath)) { + File workPathDir = new File(workPath); + if (workPathDir.isDirectory()) { + builder.directory(workPathDir); + } else { + builder.directory(); + } + + } + + // 启动进程 + Process process = builder.start(); + + // 读取命令执行结果 + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + List resultData = new ArrayList<>(); + String line; + while ((line = reader.readLine()) != null) { + resultData.add(line); + } + + log.info("execCommand result data:{}", new Gson().toJson(resultData)); + + // 等待命令执行完成 + int exitCode = process.waitFor(); + execCommandResult.setResultCode(exitCode); + execCommandResult.setResultData(resultData); + + log.info("execCommand command :{} , workPath : {} , exitCode : {}, resultData : {}", command, workPath, exitCode, resultData); + return Result.success(execCommandResult); + + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.fail(GeneralCodes.ServerIsBuzy, "系统异常"); + } + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/ToolService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/ToolService.java new file mode 100644 index 000000000..787a3edfe --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/ToolService.java @@ -0,0 +1,24 @@ +package run.mone.local.docean.service.tool; + +import com.google.gson.JsonElement; + +/** + * @author goodjava@qq.com + * @date 2024/2/27 13:59 + */ +public interface ToolService { + + default JsonElement execute(JsonElement params){ + return null; + } + + + default String version() { + return "0.0.1"; + } + + default String author() { + return "tianye"; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/WeiXinService.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/WeiXinService.java new file mode 100644 index 000000000..6a0711585 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/service/tool/WeiXinService.java @@ -0,0 +1,67 @@ +package run.mone.local.docean.service.tool; + +import com.xiaomi.youpin.docean.anno.Service; +import com.xiaomi.youpin.docean.plugin.config.anno.Value; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpMessageRouter; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; +import run.mone.local.docean.service.api.ImStrategy; + +import javax.annotation.Resource; + +@Slf4j +@Service(name = "weiXin") +public class WeiXinService implements ImStrategy { + + @Resource + private WxMpService wxMpService; + + @Value("${wx.templateId}") + private String wxTemplateId; + + @Resource + private WxMpMessageRouter messageRouter; + + @Override + public boolean sendMessage(String message, String toId) { + WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder() + .toUser(toId) + .templateId(wxTemplateId) + .build(); + templateMessage.addData(new WxMpTemplateData("keyword", message)); + try { + String msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage); + log.info("msgId:{}", msgId); + return true; + } catch (WxErrorException e) { + log.error("wx send msg error:", e); + return false; + } + } + + @Override + public String replyMessage(String body, String toId) { + // 明文传输的消息 + WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(body.toString()); + WxMpXmlOutMessage outMessage = this.route(inMessage); + if (outMessage == null) { + return ""; + } + return outMessage.toXml(); + } + + private WxMpXmlOutMessage route(WxMpXmlMessage message) { + try { + return this.messageRouter.route(message); + } catch (Exception e) { + log.error("路由消息时出现异常!", e); + } + return null; + + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/GsonUtils.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/GsonUtils.java new file mode 100644 index 000000000..3d415d803 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/GsonUtils.java @@ -0,0 +1,34 @@ +package run.mone.local.docean.util; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +/** + * @author goodjava@qq.com + * @date 2024/3/4 11:34 + */ +public class GsonUtils { + + public static Gson gson = new Gson(); + + public static JsonObject objectToJsonObject(Object object) { + Gson gson = new GsonBuilder().create(); + JsonElement jsonElement = gson.toJsonTree(object); + if (jsonElement.isJsonObject()) { + return jsonElement.getAsJsonObject(); + } else if (jsonElement.isJsonArray()) { + JsonObject res = new JsonObject(); + res.add("outputList", jsonElement); + res.addProperty("output", jsonElement.toString()); + return res; + } else { + JsonObject res = new JsonObject(); + res.add("data", jsonElement); + return res; + } + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/HttpUtils.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/HttpUtils.java new file mode 100644 index 000000000..f164eaac4 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/HttpUtils.java @@ -0,0 +1,87 @@ +package run.mone.local.docean.util; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.util.http.okhttp.OkHttpClientBuilder; +import okhttp3.*; +import org.apache.commons.lang3.StringUtils; + +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * @author goodjava@qq.com + * @date 2024/2/27 14:17 + */ +@Slf4j +public class HttpUtils { + + + //使用okhttp进行一次post请求,参数是JsonObject(class) + public static JsonElement postJson(String url, JsonObject json) throws IOException { + OkHttpClient client = new OkHttpClient.Builder().readTimeout(5, TimeUnit.MINUTES).build(); + MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + RequestBody body = RequestBody.create(JSON, json.toString()); + Request request = new Request.Builder() + .url(url) + .post(body) + .build(); + + //返回一个JsonElement + try (Response response = client.newCall(request).execute()) { + if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); + String responseData = response.body().string(); + log.info("ai response:{}", responseData); + if (StringUtils.isEmpty(responseData)) { + return null; + } + JsonParser parser = new JsonParser(); + return parser.parse(responseData); + } + + } + + public static String buildUrlWithParameters(String baseUrl, Map parameters) { + if (parameters == null || parameters.isEmpty()) { + return baseUrl; + } + + StringBuilder queryStringBuilder = new StringBuilder(); + boolean isFirst = true; + for (Map.Entry entry : parameters.entrySet()) { + if (!isFirst) { + queryStringBuilder.append("&"); + } + try { + String encodedKey = URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8); + String encodedValue = URLEncoder.encode((String) entry.getValue(), StandardCharsets.UTF_8); + queryStringBuilder.append(encodedKey).append("=").append(encodedValue); + } catch (Exception e) { + // 异常返回空值 + return null; + } + isFirst = false; + } + + String queryString = queryStringBuilder.toString(); + if (!queryString.isEmpty()) { + if (!baseUrl.contains("?")) { + baseUrl += "?"; + } else { + // 如果URL已经包含查询参数,确保它们之间有一个'&' + if (!baseUrl.endsWith("&")) { + baseUrl += "&"; + } + } + baseUrl += queryString; + } + + return baseUrl; + } + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/MessageUtil.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/MessageUtil.java new file mode 100644 index 000000000..7fdf2a4c4 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/MessageUtil.java @@ -0,0 +1,87 @@ +package run.mone.local.docean.util; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.xiaomi.data.push.client.HttpClientV5; +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.docean.plugin.config.Config; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author zhangping17 + * @Date 2024/2/22 15:49 + * 消息操作工具 + */ +public class MessageUtil { + + static final String MESSAGE_TEMPLATE_RELAY = "{\n" + + " \"content\": \"{\\\"text\\\":\\\" %s \\\"}\",\n" + + " \"msg_type\": \"text\"\n" + + "}"; + + static final String MESSAGE_TEMPLATE_SEND = "{\n" + + " \"content\": \"{\\\"text\\\":\\\" %s \\\"}\",\n" + + " \"receive_id\": \"%s\",\n" + + " \"msg_type\": \"text\"\n" + + "}"; + static Gson gson = new Gson(); + + public static String getTenantToken() { + String app_id = ((Config)Ioc.ins().getBean(Config.class)).get("feishu_id",""); + String app_secret = ((Config)Ioc.ins().getBean(Config.class)).get("feishu_secret",""); + //获取tenant_access_token + String data = "{\n" + + " \"app_id\":\"" + app_id + "\",\n" + + " \"app_secret\":\"" + app_secret + "\"\n" + + "}"; + try { + String GET_TENANT_URL = ((Config)Ioc.ins().getBean(Config.class)).get("feishu_domain","")+"/open-apis/auth/v3/tenant_access_token/internal"; + String getTenantTokenRes = innerRequest(data, GET_TENANT_URL, "", "POST"); + JsonObject jsonObject = gson.fromJson(getTenantTokenRes, JsonObject.class); + Integer code = jsonObject.get("code").getAsInt(); + String msg = jsonObject.get("msg").getAsString(); + String tenantToken = jsonObject.get("tenant_access_token").getAsString(); + if (code != 0) { + return ""; + } + return tenantToken; + } catch (Exception e) { + return ""; + } + } + + public static String innerRequest(String data, String url, String apiKey, String method) { + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + if (apiKey != null && !apiKey.isEmpty()) { + headers.put("Authorization", "Bearer " + apiKey); + } + if ("POST".equals(method)) { + return HttpClientV5.post(url, data, headers, 5000); + } else { + return HttpClientV5.get(url, headers, 5000); + } + } + + public static String getAppId() { + return ((Config)Ioc.ins().getBean(Config.class)).get("feishu_id",""); + } + + public static String getReplyMessageUrl() { + return ((Config) Ioc.ins().getBean(Config.class)).get("feishu_domain","")+"/open-apis/im/v1/messages"; + } + + public static String getMessageTemplateRelay() { + return MESSAGE_TEMPLATE_RELAY; + } + + public static String getMessageTemplateSend() { + return MESSAGE_TEMPLATE_SEND; + } + + public static Gson getGson() { + return gson; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/NetUtil.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/NetUtil.java new file mode 100644 index 000000000..73260edda --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/NetUtil.java @@ -0,0 +1,143 @@ +package run.mone.local.docean.util; + +import lombok.extern.slf4j.Slf4j; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.springframework.util.StringUtils; + +import java.io.IOException; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.regex.Pattern; + +/** + * @Author zhangping17 + * @Date 2021/12/22 16:33 + */ +@Slf4j +public class NetUtil { + + private static volatile InetAddress LOCAL_ADDRESS = null; + public static final String LOCALHOST = "127.0.0.1"; + public static final String ANYHOST = "0.0.0.0"; + public static final String DOCKERHOST = "172.17.0.1"; + private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$"); + + public static String getLocalIp() { + String localIp = System.getenv("host.ip") == null ? getLocalHost() : System.getenv("host.ip"); + return localIp; + } + + private static String getLocalHost() { + InetAddress address = getLocalAddress(); + return address == null ? LOCALHOST : address.getHostAddress(); + } + + private static InetAddress getLocalAddress() { + if (LOCAL_ADDRESS != null) { + return LOCAL_ADDRESS; + } + InetAddress localAddress = getLocalAddress0(); + LOCAL_ADDRESS = localAddress; + return localAddress; + } + + private static InetAddress getLocalAddress0() { + InetAddress localAddress = null; + try { + localAddress = InetAddress.getLocalHost(); + if (localAddress instanceof Inet6Address) { + Inet6Address address = (Inet6Address) localAddress; + if (isValidV6Address(address)) { + return normalizeV6Address(address); + } + } else if (isValidAddress(localAddress)) { + return localAddress; + } + } catch (Throwable e) { + log.warn(e.getMessage()); + } + try { + Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); + if (null == interfaces) { + return localAddress; + } + while (interfaces.hasMoreElements()) { + try { + NetworkInterface network = interfaces.nextElement(); + Enumeration addresses = network.getInetAddresses(); + while (addresses.hasMoreElements()) { + try { + InetAddress address = addresses.nextElement(); + if (address instanceof Inet6Address) { + Inet6Address v6Address = (Inet6Address) address; + if (isValidV6Address(v6Address)) { + return normalizeV6Address(v6Address); + } + } else if (isValidAddress(address)) { + return address; + } + } catch (Throwable e) { + log.warn(e.getMessage()); + } + } + } catch (Throwable e) { + log.warn(e.getMessage()); + } + } + } catch (Throwable e) { + log.warn(e.getMessage()); + } + return localAddress; + } + + static boolean isValidV6Address(Inet6Address address) { + boolean preferIpv6 = Boolean.getBoolean("java.net.preferIPv6Addresses"); + if (!preferIpv6) { + return false; + } + try { + return address.isReachable(100); + } catch (IOException e) { + // ignore + } + return false; + } + + static InetAddress normalizeV6Address(Inet6Address address) { + String addr = address.getHostAddress(); + int i = addr.lastIndexOf('%'); + if (i > 0) { + try { + return InetAddress.getByName(addr.substring(0, i) + '%' + address.getScopeId()); + } catch (UnknownHostException e) { + // ignore + log.debug("Unknown IPV6 address: ", e); + } + } + return address; + } + + static boolean isValidAddress(InetAddress address) { + if (address == null || address.isLoopbackAddress()) { + return false; + } + String name = address.getHostAddress(); + return (name != null + && !ANYHOST.equals(name) + && !LOCALHOST.equals(name) + && !DOCKERHOST.equals(name) + && IP_PATTERN.matcher(name).matches()); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/TemplateUtils.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/TemplateUtils.java new file mode 100644 index 000000000..d1de93b4c --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/TemplateUtils.java @@ -0,0 +1,44 @@ +package run.mone.local.docean.util; + +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.tuple.Pair; +import org.beetl.core.Configuration; +import org.beetl.core.Function; +import org.beetl.core.GroupTemplate; +import org.beetl.core.Template; +import org.beetl.core.resource.StringTemplateResourceLoader; +import run.mone.local.docean.util.template.function.JsonValueFunction; + +import java.util.List; +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/3/4 15:44 + */ +@Slf4j +public class TemplateUtils { + + public static String renderTemplate(String template, Map m) { + return renderTemplate(template, m, Lists.newArrayList(Pair.of(JsonValueFunction.name, new JsonValueFunction()))); + } + + public static String renderTemplate(String template, Map m, List> functionList) { + try { + StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader(); + Configuration cfg = Configuration.defaultConfiguration(); + GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); + functionList.forEach(it -> gt.registerFunction(it.getKey(), it.getValue())); + Template t = gt.getTemplate(template); + m.forEach((k, v) -> t.binding(k, v)); + String str = t.render(); + return str; + } catch (Throwable ex) { + log.error("renderTemplate", ex); + } + return ""; + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/VirtualThreadUtil.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/VirtualThreadUtil.java new file mode 100644 index 000000000..cf31dad38 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/VirtualThreadUtil.java @@ -0,0 +1,16 @@ +package run.mone.local.docean.util; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author zhangping17 + * @date 2024/3/11 15:10 + */ +public class VirtualThreadUtil { + + public static ExecutorService getExecutorService() { + ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor(); + return executorService; + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/template/function/JsonValueFunction.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/template/function/JsonValueFunction.java new file mode 100644 index 000000000..fc8795ebe --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/util/template/function/JsonValueFunction.java @@ -0,0 +1,29 @@ +package run.mone.local.docean.util.template.function; + +import com.google.gson.JsonElement; +import org.beetl.core.Context; +import org.beetl.core.Function; +import run.mone.local.docean.fsm.JsonElementUtils; + +import java.util.Map; + +/** + * @author goodjava@qq.com + * @date 2024/3/22 15:08 + */ +public class JsonValueFunction implements Function { + + + public static final String name = "json_value"; + + @Override + public Object call(Object[] paras, Context ctx) { + String key = paras[0].toString(); + Map map = ctx.globalVar; + Object value = map.get(key); + String name = paras[1].toString(); + JsonElement element = (JsonElement) value; + JsonElement jsonValue = JsonElementUtils.queryFieldValue(element, name); + return JsonElementUtils.getValue(jsonValue); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/web/WebReq.java b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/web/WebReq.java new file mode 100644 index 000000000..c3dd15bc7 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/java/run/mone/local/docean/web/WebReq.java @@ -0,0 +1,20 @@ +package run.mone.local.docean.web; + +import lombok.Builder; +import lombok.Data; +import run.mone.local.docean.fsm.bo.FlowData; +import run.mone.local.docean.fsm.bo.NodeEdge; + +import java.util.List; + +/** + * @author liuchuankang + * @Type WebReq.java + * @Desc + * @date 2024/3/22 20:20 + */ +@Data +public class WebReq { + private String openUrl; + private String cookies; +} diff --git a/m78-all/Tianye/Tianye-service/src/main/resources/flow.proto b/m78-all/Tianye/Tianye-service/src/main/resources/flow.proto new file mode 100644 index 000000000..69e1caaf1 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/resources/flow.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +option java_multiple_files = true; +package run.mone.local.docean.grpc; + +message FlowStatusRequest { + string flowRecordId = 1; +} + +message FlowStatusResponse { + string flowRecordId = 1; + int32 status = 2; +} + +service FlowStatusService { + rpc FlowStatus(FlowStatusRequest) returns (stream FlowStatusResponse); +} + + diff --git a/m78-all/Tianye/Tianye-service/src/main/resources/gen.sh b/m78-all/Tianye/Tianye-service/src/main/resources/gen.sh new file mode 100755 index 000000000..222fa8b37 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/main/resources/gen.sh @@ -0,0 +1 @@ +protoc --plugin=protoc-gen-grpc-java=/Users/wmin/Downloads/protoc-gen-grpc-java-1.34.1-osx-x86_64.exe --grpc-java_out=../java/ --java_out=../java/ flow.proto diff --git a/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/controller/test/SerivceTest.java b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/controller/test/SerivceTest.java new file mode 100644 index 000000000..2ab5950d3 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/controller/test/SerivceTest.java @@ -0,0 +1,5 @@ +package run.mone.local.docean.controller.test; + +public class SerivceTest{ + +} \ No newline at end of file diff --git a/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/ConditionTest.java b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/ConditionTest.java new file mode 100644 index 000000000..8e45711e0 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/ConditionTest.java @@ -0,0 +1,44 @@ +package run.mone.local.docean.test; + +import com.google.common.collect.Lists; +import org.junit.jupiter.api.Test; +import run.mone.local.docean.fsm.bo.Condition; +import run.mone.local.docean.fsm.bo.Operator; +import run.mone.local.docean.protobuf.Bo; + +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author goodjava@qq.com + * @date 2024/3/4 10:30 + */ +public class ConditionTest { + + + @Test + public void test1() { + Condition condition = new Condition("a", Operator.EQUALS, "a"); + Condition condition2 = new Condition("a", Operator.EQUALS, "b"); + Condition condition3 = new Condition("a", Operator.EQUALS, "b"); + + List conditions = Lists.newArrayList(condition, condition2, condition3); + + List isOrRelationshipList = Lists.newArrayList(false, false); + + AtomicInteger index = new AtomicInteger(0); + Condition combinedCondition = conditions.stream() + .reduce((previousCondition, currentCondition) -> { + boolean isOrRelationship = isOrRelationshipList.get(index.getAndIncrement()); + return isOrRelationship ? previousCondition.or(currentCondition) : previousCondition.and(currentCondition); + }).orElse(null); // orElse(null) is used to handle the case where the conditions list might be empty + + boolean result = false; + if (combinedCondition != null) { + result = combinedCondition.evaluate(); + } + System.out.println(result); + + + } +} diff --git a/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/DebugControllerTest.java b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/DebugControllerTest.java new file mode 100644 index 000000000..abea2d91e --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/DebugControllerTest.java @@ -0,0 +1,32 @@ +package run.mone.local.docean.test; + +import lombok.SneakyThrows; +import org.junit.jupiter.api.Test; +import run.mone.local.docean.fsm.debug.DebugController; + +import java.util.concurrent.TimeUnit; + +/** + * @author goodjava@qq.com + * @date 2024/3/25 11:54 + */ +public class DebugControllerTest { + + + @SneakyThrows + @Test + public void test1() { + DebugController controller = new DebugController(false); + new Thread(()->{ + try { + TimeUnit.SECONDS.sleep(3); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + controller.setDebug(false); + }).start(); + + controller.waitForDebug(); + System.out.println("finish"); + } +} diff --git a/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/GsonTest.java b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/GsonTest.java new file mode 100644 index 000000000..ef660baec --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/GsonTest.java @@ -0,0 +1,65 @@ +package run.mone.local.docean.test; + +import com.google.common.collect.Lists; +import com.google.gson.JsonObject; +import org.junit.jupiter.api.Test; +import run.mone.local.docean.util.GsonUtils; + +import java.util.List; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * @author goodjava@qq.com + * @date 2024/3/4 11:36 + */ +public class GsonTest { + + + @Test + public void testObjectToJsonObject() { + // 创建一个测试对象 + TestObject testObj = new TestObject(); + testObj.setName("TestName"); + testObj.setValue(123); + + // 调用待测试的方法 + JsonObject jsonObject = GsonUtils.objectToJsonObject(testObj); + + // 验证结果是否符合预期 + assertNotNull("The result should not be null", jsonObject); + assertTrue("The result should be a JsonObject", jsonObject.isJsonObject()); + assertEquals("TestName", jsonObject.get("name").getAsString()); + assertEquals(123, jsonObject.get("value").getAsInt()); + + + List list = Lists.newArrayList(1,2,3,4); + System.out.println(GsonUtils.objectToJsonObject(list)); + + } + + // 测试用的内部类 + private static class TestObject { + private String name; + private int value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + } +} + diff --git a/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/TemplateUtilsTest.java b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/TemplateUtilsTest.java new file mode 100644 index 000000000..7190dcc91 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/TemplateUtilsTest.java @@ -0,0 +1,61 @@ +package run.mone.local.docean.test; + +import com.google.common.collect.Lists; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import org.apache.commons.lang3.tuple.Pair; +import org.beetl.core.Context; +import org.beetl.core.Function; +import org.junit.jupiter.api.Test; +import run.mone.local.docean.fsm.JsonElementUtils; +import run.mone.local.docean.util.GsonUtils; +import run.mone.local.docean.util.TemplateUtils; +import run.mone.local.docean.util.template.function.JsonValueFunction; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + +/** + * @author goodjava@qq.com + * @date 2024/3/4 15:49 + */ +public class TemplateUtilsTest { + + + @Test + public void testRenderTemplate() { + String template = "Hello, ${name}!"; + Map map = new HashMap<>(); + map.put("name", "World"); + + String result = TemplateUtils.renderTemplate(template, map); + assertEquals("Hello, World!", result); + } + + + @Test + public void testRenderTemplate2() { + JsonObject obj = new JsonObject(); + obj.addProperty("name", "zzy"); + obj.add("list", GsonUtils.gson.toJsonTree(Lists.newArrayList("1", "2"))); + + String template = "Hello, ${name}! ${json_value('v','name')} ${json_value('v','list.1')}"; + Map map = new HashMap<>(); + map.put("name", "World"); + map.put("v", obj); + + List> functionList = new ArrayList<>(); + functionList.add(Pair.of(JsonValueFunction.name, new JsonValueFunction())); + + String result = TemplateUtils.renderTemplate(template, map, functionList); + System.out.println(result); + } + + +} diff --git a/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/TianyeServiceTest.java b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/TianyeServiceTest.java new file mode 100644 index 000000000..3c4a061a2 --- /dev/null +++ b/m78-all/Tianye/Tianye-service/src/test/java/run/mone/local/docean/test/TianyeServiceTest.java @@ -0,0 +1,116 @@ +package run.mone.local.docean.test; + +import com.google.gson.Gson; +import com.xiaomi.youpin.docean.Ioc; +import com.xiaomi.youpin.infra.rpc.Result; +import org.junit.Test; +import org.springframework.util.CollectionUtils; +import run.mone.local.docean.dto.ExecCommandResult; +import run.mone.local.docean.dubbo.TianyeService; +import run.mone.local.docean.fsm.*; +import run.mone.local.docean.po.Message; +import run.mone.local.docean.service.CommandExecuteService; +import run.mone.local.docean.service.TestConvert; +import run.mone.local.docean.service.tool.TerminalExecutorService; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +/** + * @author goodjava@qq.com + * @date 2024/2/23 10:39 + */ +public class TianyeServiceTest { + + @Test + public void testExecCommand() { + TerminalExecutorService terminalExecutor = Ioc.ins().init("run.mone.local.docean.service").getBean(TerminalExecutorService.class); + String command = "ls -l"; + Result result = terminalExecutor.execCommand(command, null); + if (result.getCode() == 0 && result.getData() != null) { + + } + } + + public void testExecCommand2(){ + CommandExecuteService commandExecuteService = Ioc.ins().init("run.mone.local.docean.service").getBean(CommandExecuteService.class); +// Result result = commandExecuteService.gitCommitWithPath("/home/gxh/myprojects/Tianye"); + Result result = commandExecuteService.gitCommit(); + System.out.println("git commit result : " + new Gson().toJson(result)); + } + + @Test + public void testExecCommand3(){ + TerminalExecutorService terminalExecutor = Ioc.ins().init("run.mone.local.docean.service").getBean(TerminalExecutorService.class); + String command = "pwd"; + String workPath = ""; + Result result = terminalExecutor.execCommand(command, workPath); + if(result.getCode() == 0 && result.getData() != null){ + ExecCommandResult data = result.getData(); + System.out.println("command : [ " + command + " ] execute result code : " + data.getResultCode()); + List resultData = data.getResultData(); + if (!CollectionUtils.isEmpty(resultData)) { + System.out.println("command : [ " + command + " ] execute result data =============> "); + resultData.forEach(t -> { + System.out.println(t); + }); + } + } else { + System.out.println("command : [ " + command + " ] execute fail! result : " + new Gson().toJson(result)); + } + } + + @Test + public void testHi() { + Ioc.ins().init("run.mone.local.docean.dubbo"); + TianyeService tianyeService = Ioc.ins().getBean(TianyeService.class); + String expected = "hi"; + String actual = tianyeService.hi(); + assertEquals(expected, actual); + } + + @Test + public void testFsm() { + BotContext context = new BotContext(); + BotState bot1 = new BotState(); + bot1.setRemoteIpPort("1"); + BotState bot3 = new BotState(); + bot3.setRemoteIpPort("3"); + + ParallelState parallelBot = new ParallelState(); + BotState bot21 = new BotState(); + bot21.setRemoteIpPort("21"); + BotState bot22 = new BotState(); + bot22.setRemoteIpPort("22"); + parallelBot.setBots(Arrays.asList(bot21, bot22)); + context.setBotList(Arrays.asList(bot1, parallelBot, bot3)); + BotFsm fsm = new BotFsm(); + fsm.init(context, BotReq.builder().build()); + fsm.execute(); + + } + + @Test + public void testFsm2() { + BotContext context = new BotContext(); + BotState bot1 = new BotState(); + bot1.setRemoteIpPort("1"); + BotState bot3 = new BotState(); + bot3.setRemoteIpPort("3"); + + context.setBotList(Arrays.asList(bot1, bot3)); + context.setCycle(true); + BotFsm fsm = new BotFsm(); + fsm.init(context, BotReq.builder().build()); + fsm.execute(); + + } + + @Test + public void testMapstruct() { + System.out.println(TestConvert.INSTANCE.toPo(Message.builder().id(12L).build())); + } + +} diff --git a/m78-all/Tianye/cache/validator.bin b/m78-all/Tianye/cache/validator.bin new file mode 100644 index 000000000..e0fe15eb8 --- /dev/null +++ b/m78-all/Tianye/cache/validator.bin @@ -0,0 +1 @@ +(]cPjL\Qɓ \ No newline at end of file diff --git a/m78-all/Tianye/pom.xml b/m78-all/Tianye/pom.xml new file mode 100644 index 000000000..b1ac6dbe0 --- /dev/null +++ b/m78-all/Tianye/pom.xml @@ -0,0 +1,148 @@ + + + + 4.0.0 + run.mone.local.docean + Tianye + 1.0.0-SNAPSHOT + pom + + + Tianye-api + Tianye-common + Tianye-service + Tianye-server + + + + + + com.google.code.gson + gson + 2.10.1 + + + com.sun.mail + javax.mail + 1.6.2 + + + org.projectlombok + lombok + 1.18.30 + + + docean + run.mone + 1.5.0-jdk21-SNAPSHOT + + + docean-plugin + run.mone + 1.5.0-jdk21 + pom + + + run.mone + docean-plugin-dubbo + 1.5.0-jdk21 + + + run.mone + docean-plugin-mybatis + 1.5.0-jdk21 + + + run.mone + docean-plugin-db + 1.5.0-jdk21 + + + run.mone + docean-plugin-configuration + 1.5.0-jdk21 + + + run.mone + docean-plugin-redis + 1.5.0-jdk21 + + + org.apache.dubbo + dubbo + 2.7.12-mone-v20-SNAPSHOT + + + run.mone + http + 1.5.0-jdk21 + + + run.mone + nacos + 1.5.0-jdk21 + + + run.mone.ai + z-api + 1.0-SNAPSHOT + + + org.xerial + sqlite-jdbc + 3.45.1.0 + + + com.fasterxml.jackson.core + jackson-databind + 2.9.10.8 + + + com.google.guava + guava + 32.1.3-jre + + + + + + + + src/main/resources + true + + config/*.properties + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 21 + 21 + true + true + UTF-8 + + + + + + + + + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + diff --git a/m78-all/Tianye/tianye.sh b/m78-all/Tianye/tianye.sh new file mode 100755 index 000000000..1940f5fe0 --- /dev/null +++ b/m78-all/Tianye/tianye.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# 检查是否提供了至少一个参数 +if [ "$#" -eq 0 ]; then + echo "未提供额外的启动参数!" + #exit 1 +fi + +# 定义JAR包的路径和名称 +JAR_PATH="./Tianye-server/target/Tianye-server-1.0.0-SNAPSHOT.jar" + +# 构建Java命令,包含-D参数和脚本参数 +JAVA_CMD="java -jar " + +# 遍历脚本参数,并将其添加到JAVA_CMD中 +for arg in "$@"; do + JAVA_CMD="$JAVA_CMD -D$arg" +done + +# 添加默认参数 +JAVA_CMD="$JAVA_CMD --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -Dio.netty.tryReflectionSetAccessible=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/sun.reflect=ALL-UNNAMED --add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED --add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED --enable-preview" + +# 添加jar +JAVA_CMD="$JAVA_CMD $JAR_PATH" + +# 执行Java命令 +echo "启动Agent,使用以下参数: $JAVA_CMD" +$JAVA_CMD \ No newline at end of file diff --git a/m78-all/m78-fe/.editorconfig b/m78-all/m78-fe/.editorconfig new file mode 100644 index 000000000..9d08a1a82 --- /dev/null +++ b/m78-all/m78-fe/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/m78-all/m78-fe/.env b/m78-all/m78-fe/.env new file mode 100644 index 000000000..d79634bef --- /dev/null +++ b/m78-all/m78-fe/.env @@ -0,0 +1,6 @@ +VITE_GLOB_API_URL=/api/ +VITE_GLOB_API_NEW_URL=/api/ +VITE_GLOB_Z_API_URL=/api/z/ +VITE_APP_STATIC_PATH=/ +VITE_APP_ROUTER_PATH=/ +VITE_GLOB_API_NEW_URL1=/open-apis/ai-plugin-new/ diff --git a/m78-all/m78-fe/.env.development b/m78-all/m78-fe/.env.development new file mode 100644 index 000000000..fdc75f083 --- /dev/null +++ b/m78-all/m78-fe/.env.development @@ -0,0 +1,16 @@ +### + # @Description: + # @Date: 2023-10-25 19:51:39 + # @LastEditTime: 2024-01-08 10:24:01 +### + +# 应用环境 +VUE_APP_ENV=development + +# 指定构建模式 +NODE_ENV=development + +# 部署路径 +VITE_APP_PUBLIC_PATH=/ + +VITE_APP_STATIC_PATH=/ diff --git a/m78-all/m78-fe/.env.production b/m78-all/m78-fe/.env.production new file mode 100644 index 000000000..795b63753 --- /dev/null +++ b/m78-all/m78-fe/.env.production @@ -0,0 +1,16 @@ +### + # @Description: + # @Date: 2023-10-25 19:51:54 + # @LastEditTime: 2024-01-08 10:24:09 +### + +# 应用环境 +VUE_APP_ENV=production + +# 指定构建模式 +NODE_ENV=production + +# 部署路径 +VITE_APP_PUBLIC_PATH=/ + +VITE_APP_STATIC_PATH=/ diff --git a/m78-all/m78-fe/.eslintignore b/m78-all/m78-fe/.eslintignore new file mode 100644 index 000000000..75840b8e8 --- /dev/null +++ b/m78-all/m78-fe/.eslintignore @@ -0,0 +1,4 @@ +/build/ +/config/ +/dist/ +/*.js \ No newline at end of file diff --git a/m78-all/m78-fe/.eslintrc.cjs b/m78-all/m78-fe/.eslintrc.cjs new file mode 100644 index 000000000..1a30e93a5 --- /dev/null +++ b/m78-all/m78-fe/.eslintrc.cjs @@ -0,0 +1,22 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + extends: [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-typescript', + '@vue/eslint-config-prettier' + ], + parserOptions: { + ecmaVersion: 'latest' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + //在rules中添加自定义规则 + //关闭组件命名规则 + 'vue/multi-word-component-names': 'off' + } +} diff --git a/m78-all/m78-fe/.gitignore b/m78-all/m78-fe/.gitignore new file mode 100644 index 000000000..d3fc549a3 --- /dev/null +++ b/m78-all/m78-fe/.gitignore @@ -0,0 +1,37 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.vscode +.history + +.vite-ssg-temp +# lock +yarn.lock +package-lock.json +pnpm-lock.yaml + diff --git a/m78-all/m78-fe/.npmrc b/m78-all/m78-fe/.npmrc new file mode 100644 index 000000000..cf0404245 --- /dev/null +++ b/m78-all/m78-fe/.npmrc @@ -0,0 +1,2 @@ +shamefully-hoist=true +strict-peer-dependencies=false diff --git a/m78-all/m78-fe/.prettierrc.json b/m78-all/m78-fe/.prettierrc.json new file mode 100644 index 000000000..66e23359c --- /dev/null +++ b/m78-all/m78-fe/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "tabWidth": 2, + "singleQuote": true, + "printWidth": 100, + "trailingComma": "none" +} \ No newline at end of file diff --git a/m78-all/m78-fe/README.md b/m78-all/m78-fe/README.md new file mode 100644 index 000000000..a33d3dee7 --- /dev/null +++ b/m78-all/m78-fe/README.md @@ -0,0 +1,25 @@ +# m78 + +## 项目设置 + +```sh +npm install +``` + +### 本地启动 + +```sh +npm run dev +``` + +### 构建 + +```sh +npm run build +``` + +### lint + +```sh +npm run lint +``` diff --git a/m78-all/m78-fe/env.d.ts b/m78-all/m78-fe/env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/m78-all/m78-fe/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/m78-all/m78-fe/index.html b/m78-all/m78-fe/index.html new file mode 100644 index 000000000..79d791e2e --- /dev/null +++ b/m78-all/m78-fe/index.html @@ -0,0 +1,13 @@ + + + + + + + AI + + +

+ + + diff --git a/m78-all/m78-fe/package.json b/m78-all/m78-fe/package.json new file mode 100644 index 000000000..dc8110064 --- /dev/null +++ b/m78-all/m78-fe/package.json @@ -0,0 +1,81 @@ +{ + "name": "m78", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite", + "serve": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "format": "prettier --write src/" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "@microsoft/fetch-event-source": "^2.0.1", + "@pixi/animate": "^3.0.1", + "@traptitech/markdown-it-katex": "^3.6.0", + "@vue-flow/background": "^1.3.0", + "@vue-flow/controls": "^1.1.1", + "@vue-flow/core": "^1.33.4", + "@vue-flow/minimap": "^1.4.0", + "aieditor": "1.0.0-rc.7", + "axios": "^1.6.5", + "clipboard": "^2.0.11", + "codemirror": "^5.65.16", + "codemirror-editor-vue3": "^2.4.1", + "crypto-js": "^4.2.0", + "dateformat": "^5.0.3", + "element-plus": "^2.4.4", + "eslint": "^8.56.0", + "highlight.js": "^11.9.0", + "html2canvas": "^1.4.1", + "lodash": "^4.17.21", + "markdown-it": "^14.0.0", + "markdown-it-link-attributes": "^4.0.1", + "mitt": "^3.0.1", + "moment-timezone": "^0.5.44", + "pinia": "^2.1.7", + "pixi-spine": "^4.0.4", + "pixi.js": "^7.4.0", + "plupload": "^2.3.9", + "qs": "^6.11.2", + "uuid": "^9.0.1", + "v-contextmenu": "^3.2.0", + "vue": "^3.3.4", + "vue-clipboard3": "^2.0.0", + "vue-i18n": "^9.9.0", + "vue-router": "^4.2.5", + "vue3-calendar-heatmap": "^2.0.5", + "vue3-json-viewer": "^2.2.2", + "x-data-spreadsheet": "^1.1.9", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.1/xlsx-0.20.1.tgz" + }, + "devDependencies": { + "@iconify-json/ep": "^1.1.12", + "@rushstack/eslint-patch": "^1.3.3", + "@tsconfig/node18": "^18.2.2", + "@types/codemirror": "^5.60.15", + "@types/node": "^18.18.5", + "@vitejs/plugin-vue": "^4.4.0", + "@vitejs/plugin-vue-jsx": "^3.0.2", + "@vue/eslint-config-prettier": "^8.0.0", + "@vue/eslint-config-typescript": "^12.0.0", + "@vue/tsconfig": "^0.4.0", + "eslint-plugin-vue": "^9.17.0", + "less": "^4.2.0", + "npm-run-all2": "^6.1.1", + "prettier": "^3.0.3", + "sass": "^1.69.7", + "typescript": "~5.2.0", + "unocss": "^0.58.3", + "unplugin-element-plus": "^0.8.0", + "unplugin-vue-components": "^0.26.0", + "vite": "^4.4.11", + "vite-ssg": "^0.23.1", + "vite-svg-loader": "^5.1.0", + "vue-tsc": "^1.8.19" + } +} diff --git a/m78-all/m78-fe/public/images/character/201201.atlas b/m78-all/m78-fe/public/images/character/201201.atlas new file mode 100644 index 000000000..dea3848c7 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/201201.atlas @@ -0,0 +1,279 @@ + +201201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: false + xy: 98, 29 + size: 45, 84 + orig: 45, 84 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 150, 117 + size: 37, 51 + orig: 37, 51 + offset: 0, 0 + index: -1 +both_eyes + rotate: false + xy: 361, 238 + size: 82, 16 + orig: 82, 16 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 16 + size: 94, 97 + orig: 94, 97 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 115 + size: 146, 139 + orig: 146, 139 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 135, 2 + size: 25, 33 + orig: 25, 33 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 263, 174 + size: 33, 28 + orig: 33, 28 + offset: 0, 0 + index: -1 +l_eye + rotate: false + xy: 334, 173 + size: 26, 33 + orig: 26, 33 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 419, 178 + size: 29, 30 + orig: 29, 30 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 478, 194 + size: 26, 10 + orig: 26, 10 + offset: 0, 0 + index: -1 +l_eye_down + rotate: false + xy: 255, 146 + size: 30, 26 + orig: 30, 26 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 255, 131 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_shock + rotate: false + xy: 450, 191 + size: 26, 29 + orig: 26, 29 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 316, 152 + size: 19, 25 + orig: 19, 25 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 343, 154 + size: 16, 7 + orig: 16, 7 + offset: 0, 0 + index: -1 +l_eyebrow_down + rotate: false + xy: 343, 163 + size: 16, 8 + orig: 16, 8 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 361, 214 + size: 22, 57 + orig: 22, 57 + offset: 0, 0 + index: -1 +l_side_hair + rotate: true + xy: 285, 208 + size: 46, 74 + orig: 46, 74 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 189, 119 + size: 25, 7 + orig: 25, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 490, 192 + size: 26, 15 + orig: 26, 15 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 35, 3 + size: 24, 11 + orig: 24, 11 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 445, 222 + size: 43, 32 + orig: 43, 32 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 240, 170 + size: 13, 6 + orig: 13, 6 + offset: 0, 0 + index: -1 +mouth_shock + rotate: true + xy: 395, 182 + size: 30, 22 + orig: 30, 22 + offset: 0, 0 + index: -1 +mouth_wave1 + rotate: false + xy: 204, 170 + size: 34, 6 + orig: 34, 6 + offset: 0, 0 + index: -1 +mouth_wave2 + rotate: true + xy: 227, 132 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 287, 147 + size: 24, 27 + orig: 24, 27 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 204, 204 + size: 79, 50 + orig: 79, 50 + offset: 0, 0 + index: -1 +r_eye + rotate: false + xy: 362, 178 + size: 31, 34 + orig: 31, 34 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 189, 128 + size: 36, 40 + orig: 36, 40 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 2, 2 + size: 31, 12 + orig: 31, 12 + offset: 0, 0 + index: -1 +r_eye_down + rotate: false + xy: 98, 2 + size: 35, 25 + orig: 35, 25 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: true + xy: 490, 220 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +r_eye_shock + rotate: true + xy: 298, 173 + size: 33, 34 + orig: 33, 34 + offset: 0, 0 + index: -1 +r_eyeball + rotate: false + xy: 420, 210 + size: 23, 26 + orig: 23, 26 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 450, 179 + size: 15, 10 + orig: 15, 10 + offset: 0, 0 + index: -1 +r_eyebrow_down + rotate: false + xy: 61, 6 + size: 16, 8 + orig: 16, 8 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 204, 178 + size: 24, 57 + orig: 24, 57 + offset: 0, 0 + index: -1 +r_side_hair + rotate: false + xy: 150, 170 + size: 52, 84 + orig: 52, 84 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/201201.json b/m78-all/m78-fe/public/images/character/201201.json new file mode 100644 index 000000000..4d646e76b --- /dev/null +++ b/m78-all/m78-fe/public/images/character/201201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"i2tPW1jITGAwrL1H9U73IRt+4zc","spine":"3.5.25","width":179.57,"height":223.66,"images":"./png/"},"bones":[{"name":"root","x":-0.6,"y":-17},{"name":"body","parent":"root","length":66.35,"rotation":-90.91,"x":0.75,"y":99.06},{"name":"body2","parent":"body","length":43.88,"rotation":2.25,"x":22.58,"y":-6.23},{"name":"eff_exclamation","parent":"root","length":26.1,"rotation":53.2,"x":54.21,"y":236.47},{"name":"eff_panic","parent":"root","length":21.75,"rotation":34.41,"x":74.1,"y":202.02},{"name":"eff_sad1","parent":"root","length":21.79,"rotation":-92.49,"x":-10.78,"y":137.39},{"name":"eff_sad2","parent":"root","length":19.29,"rotation":-92.31,"x":45.2,"y":135.28},{"name":"eff_star1","parent":"root","length":18.65,"rotation":41.15,"x":48.9,"y":87.78},{"name":"eff_star2","parent":"root","length":20.36,"rotation":148.77,"x":-39.02,"y":84.98},{"name":"eff_star3","parent":"root","length":16.33,"rotation":-21.88,"x":48.9,"y":53.06},{"name":"head","parent":"body","length":128.31,"rotation":-180,"x":-8.21,"y":-0.68},{"name":"f_hair","parent":"head","length":97.7,"rotation":135.45,"x":114.36,"y":-19.06},{"name":"l_arm","parent":"body","length":25.3,"rotation":30.76,"x":-5.66,"y":11.43},{"name":"l_arm2","parent":"l_arm","length":21.91,"rotation":1.8,"x":26.8,"y":0.42},{"name":"l_eye","parent":"head","length":11.13,"rotation":-106.66,"x":62.57,"y":-34.69},{"name":"l_eyeball","parent":"head","length":20.47,"rotation":-6.74,"x":26.89,"y":-36.87},{"name":"l_eyebrow","parent":"head","length":15.51,"rotation":98.95,"x":78.64,"y":-84.87},{"name":"l_leg","parent":"root","length":44.9,"rotation":-94.54,"x":14.11,"y":64.64},{"name":"l_side_hair","parent":"head","length":44.68,"rotation":-149.77,"x":33.65,"y":-48.28},{"name":"mouth","parent":"head","length":10.53,"rotation":-14.99,"x":5.75,"y":-7.61},{"name":"r_arm","parent":"body","length":28.37,"rotation":-40.11,"x":-5.92,"y":-7.22},{"name":"r_arm2","parent":"r_arm","length":23.35,"rotation":73.17,"x":27.7,"y":1.57},{"name":"r_eye","parent":"head","length":11.03,"rotation":117.1,"x":56.77,"y":16.78},{"name":"r_eyeball","parent":"head","length":20.76,"rotation":12.86,"x":25,"y":14.65},{"name":"r_eyebrow","parent":"head","length":14.16,"rotation":-94.95,"x":70.82,"y":91.32},{"name":"r_leg","parent":"root","length":42.97,"rotation":-78.43,"x":-17.25,"y":61.96},{"name":"r_side_hair","parent":"head","length":45,"rotation":138.09,"x":29.46,"y":44.87}],"slots":[{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body","attachment":"body1"},{"name":"l_side_hair","bone":"l_side_hair","attachment":"l_side_hair"},{"name":"r_side_hair","bone":"r_side_hair","attachment":"r_side_hair"},{"name":"head","bone":"head","attachment":"head"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"r_eyeball","bone":"r_eyeball","attachment":"r_eyeball"},{"name":"l_eyeball","bone":"l_eyeball","attachment":"l_eyeball"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"r_eyebrow","bone":"r_eyebrow"}],"skins":{"default":{"body1":{"body1":{"x":27.48,"y":-1.91,"rotation":90.91,"width":45,"height":84}},"body2":{"body2":{"x":18.12,"y":-0.24,"rotation":88.65,"width":37,"height":51}},"f_hair":{"f_hair":{"x":52.07,"y":7.72,"rotation":135.45,"width":94,"height":97}},"head":{"head":{"x":63.43,"y":5.77,"rotation":-89.09,"width":146,"height":139}},"l_arm1":{"l_arm1":{"x":12.48,"y":0.81,"rotation":60.15,"width":25,"height":33}},"l_arm2":{"l_arm2":{"x":10.65,"y":1.28,"rotation":58.34,"width":33,"height":28}},"l_eye":{"both_eyes":{"x":-16.15,"y":-27.38,"rotation":17.57,"width":82,"height":16},"l_eye":{"x":8.59,"y":-16.33,"rotation":17.57,"width":26,"height":33},"l_eye2":{"x":9.1,"y":-11.32,"rotation":17.57,"width":29,"height":30},"l_eye3":{"x":8.84,"y":-17.36,"rotation":17.57,"width":26,"height":10},"l_eye_down":{"x":11.09,"y":-19.48,"rotation":17.57,"width":30,"height":26},"l_eye_sad":{"x":11.06,"y":-19.38,"rotation":17.57,"width":28,"height":13},"l_eye_shock":{"x":8.99,"y":-15.08,"rotation":17.57,"width":26,"height":29}},"l_eyeball":{"l_eyeball":{"x":15.69,"y":1.26,"rotation":-82.35,"width":19,"height":25}},"l_eyebrow":{"l_eyebrow":{"x":48.5,"y":0.43,"rotation":171.96,"width":16,"height":7},"l_eyebrow_down":{"x":47.32,"y":0.53,"rotation":171.96,"width":16,"height":8}},"l_side_hair":{"l_side_hair":{"x":13.3,"y":4.84,"rotation":60.68,"width":46,"height":74}},"mouth":{"mouth1":{"x":11.21,"y":-1.06,"rotation":-74.1,"width":25,"height":7},"mouth2":{"x":11.21,"y":-1.06,"rotation":-74.1,"width":26,"height":15},"mouth3":{"x":11.21,"y":-1.06,"rotation":-74.1,"width":24,"height":11},"mouth_happy":{"x":9.22,"y":2.79,"rotation":-74.1,"width":43,"height":32},"mouth_sad":{"x":13.55,"y":-2.6,"rotation":-74.1,"width":13,"height":6},"mouth_shock":{"x":8.82,"y":-1.71,"rotation":-74.1,"width":30,"height":22},"mouth_wave1":{"x":10.8,"y":3.24,"rotation":-74.1,"width":34,"height":6},"mouth_wave2":{"x":11.18,"y":3.57,"rotation":-74.1,"width":36,"height":26}},"png/l_leg":{"l_leg":{"x":19.74,"y":-2.28,"rotation":94.54,"width":22,"height":57}},"png/r_leg":{"r_leg":{"x":17.48,"y":1.5,"rotation":78.43,"width":24,"height":57}},"r_arm1":{"r_arm1":{"x":17.64,"y":0.91,"rotation":132.42,"width":24,"height":27}},"r_arm2":{"r_arm2":{"x":24.53,"y":15.49,"rotation":-9.66,"width":79,"height":50}},"r_eye":{"r_eye":{"x":6.9,"y":11.6,"rotation":153.81,"width":31,"height":34},"r_eye2":{"x":9.55,"y":12.87,"rotation":153.81,"width":36,"height":40},"r_eye3":{"x":9.32,"y":12.4,"rotation":153.81,"width":31,"height":12},"r_eye_down":{"x":12.05,"y":13.35,"rotation":153.81,"width":35,"height":25},"r_eye_sad":{"x":12.05,"y":13.35,"rotation":153.81,"width":34,"height":14},"r_eye_shock":{"x":9.66,"y":10.97,"rotation":153.81,"width":33,"height":34}},"r_eyeball":{"r_eyeball":{"x":15.2,"y":-2.02,"rotation":-101.95,"width":23,"height":26}},"r_eyebrow":{"r_eyebrow":{"x":70.84,"y":4.31,"rotation":5.86,"width":15,"height":10},"r_eyebrow_down":{"x":70.84,"y":4.31,"rotation":5.86,"width":16,"height":8}},"r_side_hair":{"r_side_hair":{"x":32.56,"y":-6.12,"rotation":132.82,"width":52,"height":84}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.7,"name":"l_eye2"},{"time":0.7667,"name":"l_eye3"},{"time":1.1333,"name":"l_eye2"},{"time":1.2,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.7,"name":null},{"time":1.2,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1,"name":"mouth3"},{"time":0.1667,"name":"mouth2"},{"time":0.8,"name":"mouth3"},{"time":0.8667,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.7,"name":"r_eye2"},{"time":0.7667,"name":"r_eye3"},{"time":1.1333,"name":"r_eye_down"},{"time":1.2,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.7,"name":null},{"time":1.2,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.59},{"time":0.6667,"angle":0},{"time":1,"angle":5.39},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":-1.59},{"time":0.3333,"x":2.77,"y":-0.89},{"time":0.6667,"x":0,"y":-1.59},{"time":1,"x":-3.54,"y":-0.72},{"time":1.3333,"x":0,"y":-1.59}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":1.75,"curve":[0.25,0,0.75,1]},{"time":0.3333,"angle":0.8,"curve":[0.25,0,0.75,1]},{"time":0.6667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1,"angle":2.73,"curve":[0.25,0,0.646,1]},{"time":1.3333,"angle":1.75}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.625,0.5]},{"time":0.3333,"x":2.12,"y":0.17,"curve":[0.375,0.5,0.75,1]},{"time":0.6667,"x":0,"y":0,"curve":[0.25,0,0.625,0.5]},{"time":1,"x":2.12,"y":-0.17,"curve":[0.375,0.5,0.75,1]},{"time":1.3333,"x":0,"y":0}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":1.91},{"time":0.6667,"angle":0},{"time":1.0333,"angle":-2.47},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":2.56},{"time":0.6667,"angle":-1.62},{"time":1.0333,"angle":-14.03},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":4.05},{"time":0.3333,"angle":-3.45},{"time":0.5667,"angle":6.27},{"time":0.8333,"angle":47.36},{"time":1.1667,"angle":50.06},{"time":1.3333,"angle":4.05}],"translate":[{"time":0,"x":-0.3,"y":-3.31},{"time":0.5667,"x":0,"y":0},{"time":0.8333,"x":-0.01,"y":-5.79,"curve":"stepped"},{"time":1.1667,"x":-0.01,"y":-5.79},{"time":1.3333,"x":-0.3,"y":-3.31}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.61,"curve":[0.797,0,0.646,0.99]},{"time":0.6667,"angle":0,"curve":[0.396,0,0.75,1]},{"time":1,"angle":-3.41,"curve":[0.557,0.04,0.75,1]},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":14.59},{"time":0.6667,"angle":0},{"time":1.0333,"angle":17.54},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":-13.18},{"time":0.6667,"angle":0},{"time":1.0333,"angle":-12.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.06,"y":-0.92},{"time":0.6667,"x":0,"y":0,"curve":[0.712,0.12,0.735,0.91]},{"time":0.7667,"x":-5.04,"y":0.03,"curve":"stepped"},{"time":1.1,"x":-5.04,"y":0.03,"curve":[0.758,0.06,0.725,0.86]},{"time":1.2,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.3333,"angle":37.23,"curve":[0.25,0,0.391,1.34]},{"time":0.6667,"angle":26.41},{"time":0.8333,"angle":51.17,"curve":"stepped"},{"time":1.1,"angle":51.17},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.625,0.5]},{"time":0.3333,"x":-0.09,"y":-0.04,"curve":[0.375,0.5,0.75,1]},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":-0.02,"y":-0.27},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":8.74},{"time":0.6667,"angle":0},{"time":1.0333,"angle":29.02},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3667,"x":-0.46,"y":0.29},{"time":0.6667,"x":0,"y":0},{"time":1.0333,"x":-2.63,"y":2.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":[0.781,0.02,0.75,1]},{"time":0.9333,"angle":-33.25,"curve":"stepped"},{"time":1.0667,"angle":-33.25,"curve":[0.734,0.07,0.62,1]},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":[0.891,0,0.75,1]},{"time":0.8,"x":0.36,"y":0.72},{"time":0.9333,"x":0.72,"y":1.45,"curve":"stepped"},{"time":1.0667,"x":0.72,"y":1.45,"curve":[0.25,0,0.75,1]},{"time":1.2,"x":0.36,"y":2.17,"curve":[0.443,-0.01,0.75,1]},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0.7,"angle":-0.43}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"both_eyes"},{"time":0.0333,"name":"both_eyes"},{"time":0.0667,"name":"both_eyes"},{"time":0.1667,"name":"both_eyes"},{"time":0.3333,"name":"both_eyes"},{"time":0.3667,"name":"both_eyes"},{"time":1,"name":"both_eyes"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":0.7,"name":"r_eyebrow"},{"time":0.8333,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":9.05},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":-12.12,"curve":"stepped"},{"time":0.8,"angle":-12.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":1.41,"y":10.9},{"time":0.4333,"x":0,"y":0},{"time":0.5333,"x":0,"y":-3.08},{"time":0.7333,"x":5.54,"y":15.6,"curve":"stepped"},{"time":0.8,"x":5.54,"y":15.6},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":353.68},{"time":0.5,"angle":358.11},{"time":0.7333,"angle":26.58,"curve":"stepped"},{"time":0.8,"angle":26.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.2,"y":0.12},{"time":0.5,"x":2.01,"y":0.03},{"time":0.5667,"x":5.05,"y":0.05},{"time":0.7333,"x":-0.83,"y":-0.58,"curve":"stepped"},{"time":0.8,"x":-0.83,"y":-0.58},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.35},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.91,"y":2.26},{"time":0.5,"x":2.18,"y":4.8},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-4.32},{"time":0.5,"angle":0},{"time":0.7333,"angle":47.09,"curve":"stepped"},{"time":0.8,"angle":47.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-1.01,"y":-1.61,"curve":"stepped"},{"time":0.8,"x":-1.01,"y":-1.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-23.89},{"time":0.5,"angle":6.05},{"time":0.7333,"angle":-40.75,"curve":"stepped"},{"time":0.8,"angle":-40.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":5.23,"y":1.21,"curve":"stepped"},{"time":0.8,"x":5.23,"y":1.21},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-4.46},{"time":0.5,"angle":0},{"time":0.7333,"angle":-10.98},{"time":0.8,"angle":-10.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":14.48},{"time":0.5333,"angle":0.98},{"time":0.8333,"angle":40.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.16},{"time":0.5333,"angle":-6.3},{"time":0.8333,"angle":-53.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0.77,"y":-0.02},{"time":0.5,"x":-1.81,"y":-0.13},{"time":0.8,"x":3.2,"y":-0.21},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":12.42},{"time":0.5,"angle":-10.43},{"time":0.7333,"angle":-73.38,"curve":"stepped"},{"time":0.8,"angle":-73.38},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":-0.39,"y":-0.55},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-0.35,"y":-1.3,"curve":"stepped"},{"time":0.8,"x":-0.35,"y":-1.3},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":10.06},{"time":0.5,"angle":0},{"time":0.7333,"angle":19.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.92,"y":-0.25},{"time":0.2333,"x":-0.64,"y":0.81},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-0.99,"y":0.69},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":24.41},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0,"curve":[0.495,0,0.75,1]},{"time":0.7333,"angle":37.22,"curve":"stepped"},{"time":0.8,"angle":37.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":8.53,"y":10.26},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.7333,"x":-2.01,"y":14.09,"curve":"stepped"},{"time":0.8,"x":-2.01,"y":14.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-31.11},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0,"curve":[0.49,0,0.75,1]},{"time":0.7333,"angle":-44.85,"curve":"stepped"},{"time":0.8,"angle":-44.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":8.53,"y":10.26},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.7333,"x":-2.01,"y":14.09,"curve":"stepped"},{"time":0.8,"x":-2.01,"y":14.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.4667,"name":"l_eye2"},{"time":0.5,"name":"both_eyes"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.4667,"name":null},{"time":1,"name":"l_eyeball"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4667,"name":"mouth_happy"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.0667,"name":"r_eye"},{"time":0.4667,"name":"r_eye2"},{"time":0.5,"name":null},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.4667,"name":null},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.78},{"time":0.4667,"angle":-10.56},{"time":0.7333,"angle":-13.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-2.03,"y":-0.68},{"time":0.4667,"x":7.43,"y":-3.38},{"time":0.7333,"x":9.45,"y":-2.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":345.89},{"time":0.4667,"angle":12.79},{"time":0.7333,"angle":24.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4667,"x":-1.36,"y":6.71},{"time":0.7333,"x":-1.48,"y":1.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-1.23},{"time":0.5,"angle":-2.72},{"time":0.7333,"angle":4.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.7,"y":2.45},{"time":0.7333,"x":-0.33,"y":-0.45},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.88},{"time":0.4667,"angle":-23.78,"curve":"stepped"},{"time":0.7333,"angle":-23.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-9.41},{"time":0.4667,"angle":-10.91},{"time":0.7333,"angle":-3.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-3.56},{"time":0.4667,"angle":0},{"time":0.8,"angle":1.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-7.4},{"time":0.4667,"angle":0},{"time":0.7333,"angle":11.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.69},{"time":0.4667,"angle":0},{"time":0.7333,"angle":-12.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":[0.526,0.04,0.635,0.96]},{"time":0.5,"x":-8.07,"y":-0.34,"curve":"stepped"},{"time":0.9667,"x":-8.07,"y":-0.34},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":6.34},{"time":0.1333,"angle":30.57},{"time":0.2667,"angle":9.21},{"time":0.4,"angle":36.23},{"time":0.5333,"angle":9.6},{"time":0.6667,"angle":34.79},{"time":0.8,"angle":5.23},{"time":0.9,"angle":28.58},{"time":1,"angle":6.34}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.4667,"angle":21.41},{"time":0.7333,"angle":29.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4667,"x":1.34,"y":1.36,"curve":"stepped"},{"time":0.7333,"x":1.34,"y":1.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":1,"name":"l_eye_sad"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_down"},{"time":1,"name":"l_eyebrow_down"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.5,"name":"mouth_sad"},{"time":1,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":1,"name":"r_eye_sad"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-0.37,"curve":"stepped"},{"time":1,"angle":-0.37}],"translate":[{"time":0,"x":-0.29,"y":2.65,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":-0.29,"y":-1.55,"curve":[0.25,0,0.75,1]},{"time":1,"x":-0.29,"y":2.65}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":356.36,"curve":[0.25,0,0.75,1]},{"time":0.5,"angle":342.85,"curve":[0.25,0,0.75,1]},{"time":0.7333,"angle":346.2,"curve":[0.25,0,0.75,1]},{"time":1,"angle":356.36}],"translate":[{"time":0,"x":4.71,"y":2.7,"curve":"stepped"},{"time":0.5,"x":4.71,"y":2.7,"curve":[0.25,0,0.75,1]},{"time":0.7333,"x":2.59,"y":1.11,"curve":[0.25,0,0.75,1]},{"time":1,"x":4.71,"y":2.7}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-20.29},{"time":0.5,"angle":-18.76},{"time":1,"angle":-20.29}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":38.99},{"time":0.5,"angle":29.99},{"time":1,"angle":38.99}],"translate":[{"time":0,"x":-1.5,"y":-3.05},{"time":0.5,"x":0.6,"y":-1.39},{"time":1,"x":-1.5,"y":-3.05}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":-4.94},{"time":0.5,"angle":-16.35},{"time":1,"angle":-4.94}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":33.54},{"time":0.5,"angle":-316.44},{"time":1,"angle":33.54}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.67,"y":0.28},{"time":0.5,"x":-4.39,"y":-0.91},{"time":1,"x":0.67,"y":0.28}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.73,"y":-4.54,"curve":"stepped"},{"time":1,"x":-0.73,"y":-4.54}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.37,"y":-0.39},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":37.92,"curve":[0.25,0,0.531,1.01]},{"time":0.5,"angle":34.27,"curve":[0.25,0,0.531,1.01]},{"time":1,"angle":37.92}],"translate":[{"time":0,"x":-0.63,"y":0.75,"curve":"stepped"},{"time":0.5,"x":-0.63,"y":0.75,"curve":"stepped"},{"time":1,"x":-0.63,"y":0.75}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.56},{"time":0.6667,"angle":13.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.12,"y":0.64},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.7333,"name":"l_eye2"},{"time":0.8,"name":"l_eye3"},{"time":0.8667,"name":"l_eye2"},{"time":0.9,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.5,"name":"l_eyeball"},{"time":0.7333,"name":null},{"time":0.7667,"name":null},{"time":0.8333,"name":null},{"time":0.8667,"name":null},{"time":0.9,"name":"l_eyeball"},{"time":1.0333,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.7333,"name":"r_eye2"},{"time":0.8,"name":"r_eye3"},{"time":0.8667,"name":"r_eye2"},{"time":0.9,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.7333,"name":null},{"time":0.7667,"name":null},{"time":0.8333,"name":null},{"time":0.8667,"name":null},{"time":0.9,"name":"r_eyeball"},{"time":1.0333,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":0.8333,"name":null},{"time":1.3333,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":4.05},{"time":0.6667,"angle":-5},{"time":1.3333,"angle":4.05}],"translate":[{"time":0,"x":-2.9,"y":-0.72},{"time":0.3333,"x":0.36,"y":-2.9},{"time":0.6667,"x":3.29,"y":-1.01},{"time":1,"x":0.36,"y":-2.17},{"time":1.3333,"x":-2.9,"y":-0.72}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.018,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.018,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":2.56},{"time":0.3333,"angle":2.48},{"time":0.6667,"angle":356.38},{"time":1,"angle":350.09},{"time":1.3333,"angle":2.56}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.39,"y":0.03},{"time":0.6667,"x":-0.69,"y":-0.07},{"time":1,"x":1.39,"y":0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.35},{"time":0.6667,"angle":3.78},{"time":1,"angle":-0.79},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.97},{"time":0.6667,"angle":-2.4},{"time":1,"angle":2.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-9.44},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.03},{"time":0.6667,"angle":-0.47},{"time":1,"angle":-3.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":2.3},{"time":0.3333,"angle":19.66},{"time":0.6667,"angle":0},{"time":1,"angle":10.73},{"time":1.3333,"angle":2.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.97},{"time":0.6667,"angle":0},{"time":1,"angle":-9.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8667,"angle":0,"curve":"stepped"},{"time":0.9,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.02,"y":-0.03,"curve":"stepped"},{"time":0.7667,"x":-3.02,"y":-0.03},{"time":0.8,"x":-9.05,"y":-0.09,"curve":"stepped"},{"time":0.8333,"x":-9.05,"y":-0.09},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":0.9,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8667,"x":1,"y":1,"curve":"stepped"},{"time":0.9,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.9,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.9,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.9,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":29.33},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-0.09,"y":0.98},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.53},{"time":0.6667,"angle":7.92},{"time":1,"angle":15.9},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.25,"y":-0.01},{"time":0.6667,"x":0.53,"y":1.29},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"root":{"rotate":[{"time":1.1667,"angle":-0.03}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_shock"},{"time":0.3333,"name":"l_eye_shock"},{"time":0.6667,"name":"l_eye_shock"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.3333,"name":null},{"time":0.6667,"name":null}]},"mouth":{"attachment":[{"time":0,"name":"mouth_shock"},{"time":0.3333,"name":"mouth_shock"},{"time":0.6667,"name":"mouth_shock"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_shock"},{"time":0.3333,"name":"r_eye_shock"},{"time":0.6667,"name":"r_eye_shock"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.3333,"name":null},{"time":0.6667,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":0.3333,"name":null},{"time":0.6667,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.01},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":7.14,"y":0},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":16.93},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.042,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.07},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":33.75},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-23.91},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":3.57,"y":2.12},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":-2.57,"curve":[0.646,0.05,0.719,0.97]},{"time":0.3333,"angle":-7.14,"curve":[0.578,0,0.75,1]},{"time":0.6667,"angle":-2.57}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":35.69},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-41.42},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.3,"y":2.45},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":4.29,"y":-0.94},{"time":0.3333,"x":8.18,"y":-0.73,"curve":"stepped"},{"time":0.4333,"x":8.18,"y":-0.73},{"time":0.5333,"x":4.29,"y":-0.94,"curve":"stepped"},{"time":0.6667,"x":4.29,"y":-0.94}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-58.82,"curve":[0.568,0,0.786,0.71]},{"time":0.2333,"angle":-68.38,"curve":[0.339,0.24,0.672,0.58]},{"time":0.4333,"angle":-83.31,"curve":[0.339,0.28,0.672,0.62]},{"time":0.6667,"angle":-58.82}],"translate":[{"time":0,"x":-0.07,"y":-1.04},{"time":0.2333,"x":-1.86,"y":-0.74,"curve":[0.391,0.1,0.75,1]},{"time":0.6667,"x":-0.07,"y":-1.04}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":18.43},{"time":0.4667,"angle":10.91},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.88,"y":1.33},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.3333,"name":"l_eye"},{"time":0.6667,"name":"l_eye"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.3333,"name":"l_eyeball"},{"time":0.6667,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_down"},{"time":0.3333,"name":"l_eyebrow_down"},{"time":0.6667,"name":"l_eyebrow_down"},{"time":1,"name":"l_eyebrow_down"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_wave1"},{"time":0.1667,"name":"mouth_wave2"},{"time":0.3333,"name":"mouth_wave1"},{"time":0.5,"name":"mouth_wave2"},{"time":0.6667,"name":"mouth_wave1"},{"time":0.8333,"name":"mouth_wave2"},{"time":1,"name":"mouth_wave1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.3333,"name":"r_eye"},{"time":0.6667,"name":"r_eye"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.3333,"name":"r_eyeball"},{"time":0.6667,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":null},{"time":0.3333,"name":null},{"time":0.6667,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.09},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-3.08,"y":0.78},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.82,"y":1.5},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-11.38},{"time":0.2333,"angle":-21.02},{"time":0.5,"angle":-14.73},{"time":0.7333,"angle":-3},{"time":1,"angle":-11.38}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":2.98,"y":-4.63},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":7.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-5.33},{"time":0.5,"angle":0},{"time":0.7333,"angle":2.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":7},{"time":0.3333,"angle":-2.5},{"time":0.6667,"angle":8.24},{"time":1,"angle":7}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.32},{"time":0.6667,"angle":1.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.61,"y":2.3,"curve":"stepped"},{"time":0.3,"x":-0.61,"y":2.3},{"time":0.4333,"x":0.34,"y":-4.88,"curve":"stepped"},{"time":0.9,"x":0.34,"y":-4.88},{"time":1,"x":-0.61,"y":2.3}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.55,"y":2.03,"curve":"stepped"},{"time":0.3333,"x":0.55,"y":2.03},{"time":0.4667,"x":-0.09,"y":-2.34,"curve":"stepped"},{"time":0.9,"x":-0.09,"y":-2.34},{"time":1,"x":0.55,"y":2.03}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.6,"y":1.48},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.67,"y":-3.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7,"angle":0,"curve":"stepped"},{"time":0.9,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":0.9,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7,"x":1,"y":1,"curve":"stepped"},{"time":0.9,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":33.35},{"time":0.3333,"angle":41.73},{"time":0.5,"angle":55.72},{"time":0.8333,"angle":61.05},{"time":1,"angle":33.35}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":7.52},{"time":0.3333,"angle":5.86},{"time":0.5,"angle":0},{"time":0.7333,"angle":13.02},{"time":0.8333,"angle":4.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-1.06,"y":0.64},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/201201.png b/m78-all/m78-fe/public/images/character/201201.png new file mode 100644 index 000000000..c079055b2 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/201201.png differ diff --git a/m78-all/m78-fe/public/images/character/201301.atlas b/m78-all/m78-fe/public/images/character/201301.atlas new file mode 100644 index 000000000..3a77e22c3 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/201301.atlas @@ -0,0 +1,356 @@ + +201301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: false + xy: 232, 99 + size: 37, 54 + orig: 37, 54 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 343, 212 + size: 72, 42 + orig: 72, 42 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 166, 155 + size: 107, 99 + orig: 107, 99 + offset: 0, 0 + index: -1 +feather + rotate: false + xy: 2, 26 + size: 98, 51 + orig: 98, 51 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 79 + size: 162, 175 + orig: 162, 175 + offset: 0, 0 + index: -1 +knife + rotate: false + xy: 147, 2 + size: 43, 28 + orig: 43, 28 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 211, 32 + size: 26, 30 + orig: 26, 30 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 343, 181 + size: 38, 29 + orig: 38, 29 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 232, 2 + size: 28, 35 + orig: 28, 35 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 378, 143 + size: 31, 33 + orig: 31, 33 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 2, 6 + size: 89, 18 + orig: 89, 18 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 271, 102 + size: 25, 16 + orig: 25, 16 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: false + xy: 177, 32 + size: 32, 26 + orig: 32, 26 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: true + xy: 483, 142 + size: 31, 14 + orig: 31, 14 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: true + xy: 413, 143 + size: 29, 33 + orig: 29, 33 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 254, 62 + size: 28, 35 + orig: 28, 35 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: true + xy: 256, 32 + size: 28, 35 + orig: 28, 35 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 338, 125 + size: 23, 8 + orig: 23, 8 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 298, 108 + size: 24, 10 + orig: 24, 10 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 338, 135 + size: 23, 10 + orig: 23, 10 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: true + xy: 499, 190 + size: 23, 11 + orig: 23, 11 + offset: 0, 0 + index: -1 +l_hair + rotate: false + xy: 102, 26 + size: 43, 51 + orig: 43, 51 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 147, 32 + size: 28, 45 + orig: 28, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 147, 32 + size: 28, 45 + orig: 28, 45 + offset: 0, 0 + index: -1 +l_ribbon + rotate: false + xy: 166, 94 + size: 64, 59 + orig: 64, 59 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 269, 2 + size: 28, 17 + orig: 28, 17 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 284, 73 + size: 27, 13 + orig: 27, 13 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 288, 2 + size: 28, 8 + orig: 28, 8 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 275, 159 + size: 55, 36 + orig: 55, 36 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 126, 16 + size: 16, 8 + orig: 16, 8 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 455, 174 + size: 33, 25 + orig: 33, 25 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: true + xy: 332, 159 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: true + xy: 499, 152 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 448, 142 + size: 30, 33 + orig: 30, 33 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 177, 60 + size: 38, 32 + orig: 38, 32 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 217, 60 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 466, 215 + size: 38, 39 + orig: 38, 39 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 482, 175 + size: 38, 15 + orig: 38, 15 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 322, 130 + size: 27, 14 + orig: 27, 14 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: false + xy: 192, 2 + size: 38, 28 + orig: 38, 28 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 271, 120 + size: 33, 14 + orig: 33, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: true + xy: 417, 174 + size: 33, 36 + orig: 33, 36 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 383, 176 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: true + xy: 342, 147 + size: 32, 34 + orig: 32, 34 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 287, 139 + size: 33, 18 + orig: 33, 18 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 243, 32 + size: 26, 11 + orig: 26, 11 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 287, 120 + size: 33, 17 + orig: 33, 17 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 93, 2 + size: 31, 22 + orig: 31, 22 + offset: 0, 0 + index: -1 +r_hair + rotate: true + xy: 417, 209 + size: 45, 47 + orig: 45, 47 + offset: 0, 0 + index: -1 +r_ribbon + rotate: false + xy: 275, 197 + size: 66, 57 + orig: 66, 57 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/201301.json b/m78-all/m78-fe/public/images/character/201301.json new file mode 100644 index 000000000..ad9fba565 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/201301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"nJMWIy05izwTGtomlqlxG88rMjQ","spine":"3.5.25","width":208,"height":263,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":45.99,"rotation":89.52,"x":1.33,"y":54.36},{"name":"body2","parent":"body1","length":28.74,"rotation":-179.52,"x":13.01,"y":0.49},{"name":"eff_exclamation","parent":"root","length":20.61,"rotation":41.99,"x":65.74,"y":239.58},{"name":"eff_panic","parent":"root","length":19.37,"rotation":24.54,"x":84.13,"y":200.51},{"name":"eff_sad1","parent":"root","length":24.78,"rotation":-90,"x":-11.07,"y":130.18},{"name":"eff_sad2","parent":"root","length":21.52,"rotation":-90,"x":43.05,"y":130.97},{"name":"eff_star1","parent":"root","length":18.17,"rotation":18.43,"x":63.83,"y":58.8},{"name":"eff_star2","parent":"root","length":18.17,"rotation":161.57,"x":-61.41,"y":50.37},{"name":"eff_star3","parent":"root","length":16.49,"rotation":-7.56,"x":60,"y":30.46},{"name":"head","parent":"body1","length":140.27,"rotation":-0.15,"x":34.52,"y":-3.16},{"name":"f_hair","parent":"head","length":101.68,"rotation":129.35,"x":123.75,"y":-31.61},{"name":"feather","parent":"head","length":96.86,"rotation":65.58,"x":77.97,"y":54.89},{"name":"knife","parent":"body1","length":27.94,"rotation":115.64,"x":4.49,"y":13.07},{"name":"l_arm1","parent":"body1","length":19.78,"rotation":-133.74,"x":29.19,"y":-8.19},{"name":"l_arm2","parent":"l_arm1","length":27.36,"rotation":7.18,"x":15.72,"y":-0.22},{"name":"l_eye","parent":"head","length":13.46,"rotation":5.53,"x":32.2,"y":-36.06},{"name":"l_eyebrow","parent":"head","length":12.7,"rotation":-84.18,"x":79.99,"y":-25.57},{"name":"l_hair","parent":"head","length":35.3,"rotation":-147.24,"x":20.37,"y":-40.4},{"name":"l_leg","parent":"root","length":39.47,"rotation":-90,"x":8.61,"y":39.42},{"name":"l_ribbon","parent":"head","length":13.89,"rotation":-139.97,"x":26.49,"y":-39.18},{"name":"mouth","parent":"head","length":9.95,"rotation":16.27,"x":0.16,"y":-14.94},{"name":"r_arm1","parent":"body1","length":24.41,"rotation":132.93,"x":32.5,"y":9.09},{"name":"r_arm2","parent":"r_arm1","length":31.68,"rotation":-7.8,"x":21.4,"y":0.68},{"name":"r_eye","parent":"head","length":14.56,"rotation":0.63,"x":27.39,"y":18.31},{"name":"r_eyebrow","parent":"head","length":15.34,"rotation":77.63,"x":78.88,"y":5.84},{"name":"r_hair","parent":"head","length":36.1,"rotation":143.39,"x":17.44,"y":52.31},{"name":"r_leg","parent":"root","length":39.09,"rotation":-90,"x":-10.93,"y":39.8},{"name":"r_ribbon","parent":"head","length":11.19,"rotation":142.58,"x":20.49,"y":54.26}],"slots":[{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"l_ribbon","bone":"l_ribbon","attachment":"l_ribbon"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"r_ribbon","bone":"r_ribbon","attachment":"r_ribbon"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"head","bone":"head","attachment":"head"},{"name":"feather","bone":"feather","attachment":"feather"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"knife","bone":"knife","attachment":"knife"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"}],"skins":{"default":{"body1":{"body1":{"x":22.26,"y":0.57,"rotation":-89.52,"width":37,"height":54}},"body2":{"body2":{"x":23.75,"y":-3.5,"rotation":90,"width":72,"height":42}},"f_hair":{"f_hair":{"x":55.83,"y":9.22,"rotation":141.27,"width":107,"height":99}},"feather":{"feather":{"x":31.45,"y":-0.45,"rotation":-154.96,"width":98,"height":51}},"head":{"head":{"x":83.11,"y":16.24,"rotation":-89.37,"width":162,"height":175}},"knife":{"knife":{"x":6.8,"y":-2.83,"rotation":154.84,"width":43,"height":28}},"l_arm1":{"l_arm1":{"x":11.7,"y":0.42,"rotation":44.22,"width":26,"height":30}},"l_arm2":{"l_arm2":{"x":14.2,"y":0.39,"rotation":37.03,"width":38,"height":29}},"l_eye1":{"l_eye1":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":28,"height":35},"l_eye2":{"x":18.97,"y":-2.89,"rotation":-94.9,"width":31,"height":33},"l_eye3":{"x":14.79,"y":28.99,"rotation":-94.9,"width":89,"height":18},"l_eye_happy":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":25,"height":16},"l_eye_sad1":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":32,"height":26},"l_eye_sad2":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":31,"height":14},"l_eye_surprised":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":29,"height":33},"l_eye_uneasy1":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":28,"height":35},"l_eye_uneasy2":{"x":16.3,"y":-2.66,"rotation":-94.9,"width":28,"height":35}},"l_eyebrow":{"l_eyebrow":{"x":8.96,"y":-8.78,"rotation":-5.19,"width":23,"height":8},"l_eyebrow_sad":{"x":8.96,"y":-8.78,"rotation":-5.19,"width":24,"height":10},"l_eyebrow_surprised":{"x":8.96,"y":-8.78,"rotation":-5.19,"width":23,"height":10},"l_eyebrow_uneasy":{"x":8.96,"y":-8.78,"rotation":-5.19,"width":23,"height":11}},"l_hair":{"l_hair":{"x":20.55,"y":-0.46,"rotation":57.86,"width":43,"height":51}},"l_leg":{"l_leg":{"x":20.29,"y":0.83,"rotation":90,"width":28,"height":45}},"l_ribbon":{"l_ribbon":{"x":7.76,"y":0.34,"rotation":50.6,"width":64,"height":59}},"mouth1":{"mouth1":{"x":18.87,"y":3.32,"rotation":-105.64,"width":28,"height":17},"mouth2":{"x":18.87,"y":3.32,"rotation":-105.64,"width":27,"height":13},"mouth3":{"x":18.87,"y":3.32,"rotation":-105.64,"width":28,"height":8},"mouth_happy":{"x":18.87,"y":3.32,"rotation":-105.64,"width":55,"height":36},"mouth_sad":{"x":18.87,"y":3.32,"rotation":-105.64,"width":16,"height":8},"mouth_surprised":{"x":18.87,"y":3.32,"rotation":-105.64,"width":33,"height":25},"mouth_uneasy1":{"x":18.87,"y":3.32,"rotation":-105.64,"width":36,"height":8},"mouth_uneasy2":{"x":18.87,"y":3.32,"rotation":-105.64,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":16.2,"y":-0.18,"rotation":137.54,"width":30,"height":33}},"r_arm2":{"r_arm2":{"x":15.24,"y":-0.37,"rotation":145.35,"width":38,"height":32}},"r_eye1":{"r_eye1":{"x":18.69,"y":2.32,"rotation":-90,"width":32,"height":35},"r_eye2":{"x":18.69,"y":2.32,"rotation":-90,"width":38,"height":39},"r_eye3":{"x":18.69,"y":2.32,"rotation":-90,"width":38,"height":15},"r_eye_happy":{"x":18.69,"y":2.32,"rotation":-90,"width":27,"height":14},"r_eye_sad1":{"x":18.69,"y":2.32,"rotation":-90,"width":38,"height":28},"r_eye_sad2":{"x":18.69,"y":2.32,"rotation":-90,"width":33,"height":14},"r_eye_surprised":{"x":18.69,"y":2.32,"rotation":-90,"width":33,"height":36},"r_eye_uneasy1":{"x":18.69,"y":2.32,"rotation":-90,"width":32,"height":34},"r_eye_uneasy2":{"x":18.69,"y":2.32,"rotation":-90,"width":32,"height":34}},"r_eyebrow":{"r_eyebrow":{"x":11.21,"y":13.02,"rotation":-167.01,"width":33,"height":18},"r_eyebrow_sad":{"x":11.14,"y":15.57,"rotation":-167.01,"width":26,"height":11},"r_eyebrow_surprised":{"x":10.73,"y":6.24,"rotation":-167.01,"width":33,"height":17},"r_eyebrow_uneasy":{"x":11.36,"y":7.92,"rotation":-167.01,"width":31,"height":22}},"r_hair":{"r_hair":{"x":27.42,"y":-0.16,"rotation":127.23,"width":45,"height":47}},"r_leg":{"r_leg":{"x":20.67,"y":0.38,"rotation":90,"width":28,"height":45}},"r_ribbon":{"r_ribbon":{"x":9.24,"y":-0.77,"rotation":128.05,"width":66,"height":57}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.4667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.2667,"name":"mouth2"},{"time":0.3333,"name":"mouth1"},{"time":1.2,"name":"mouth2"},{"time":1.2667,"name":"mouth3"},{"time":1.3333,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.4667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-2.8},{"time":0.4,"angle":0.43},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":0,"y":-4.27},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.024,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.024,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":352.78},{"time":0.4,"angle":4.9},{"time":0.6,"angle":1.41},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-11.86},{"time":0.3333,"angle":-196.33},{"time":0.6667,"angle":-184.87},{"time":0.9333,"angle":-214.64},{"time":1.1333,"angle":6.28},{"time":1.2333,"angle":0.87},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-0.09,"y":-0.3},{"time":0.3333,"x":-3.03,"y":6.84,"curve":"stepped"},{"time":0.6667,"x":-3.03,"y":6.84,"curve":"stepped"},{"time":0.9333,"x":-3.03,"y":6.84},{"time":1.1333,"x":-0.21,"y":3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":65.48},{"time":0.1333,"angle":96.41},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.9333,"angle":40.36},{"time":1.1333,"angle":109.99},{"time":1.2333,"angle":98.84},{"time":1.3333,"angle":65.48}],"translate":[{"time":0,"x":1.6,"y":-1.47},{"time":0.1333,"x":2.81,"y":-2.75},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.9333,"x":1.35,"y":-0.28},{"time":1.1333,"x":3.95,"y":0.33},{"time":1.2333,"x":3.56,"y":-1.33},{"time":1.3333,"x":1.6,"y":-1.47}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.38},{"time":0.5333,"angle":2.83,"curve":"stepped"},{"time":1,"angle":2.83},{"time":1.0667,"angle":3.71},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-4.3},{"time":0.4,"angle":5.85,"curve":"stepped"},{"time":1,"angle":5.85},{"time":1.1333,"angle":7.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":1.42},{"time":0.5333,"angle":-1.16,"curve":"stepped"},{"time":1,"angle":-1.16},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":12.02},{"time":0.4,"angle":-5.69},{"time":0.8,"angle":-11.99},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-4.74},{"time":0.4,"angle":10.85},{"time":0.8,"angle":18.6},{"time":1,"angle":13.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.4,"x":-6.59,"y":0.07},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.4,"x":-6.59,"y":0.07},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1333,"angle":0},{"time":0.2,"angle":4.38},{"time":0.2667,"angle":36.05},{"time":0.3333,"angle":52.41},{"time":0.4,"angle":-266.32},{"time":0.4667,"angle":-145.48},{"time":0.5333,"angle":-13.54},{"time":0.6,"angle":-282.52},{"time":0.6667,"angle":-151.91},{"time":0.7333,"angle":-36.44},{"time":0.8,"angle":50.1},{"time":0.8667,"angle":-280.97},{"time":0.9333,"angle":-283.37},{"time":1,"angle":62.9},{"time":1.1333,"angle":-2.26},{"time":1.2,"angle":-18.68},{"time":1.2667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1333,"x":0,"y":0},{"time":0.2,"x":-9.94,"y":-26.08},{"time":0.2333,"x":-2.64,"y":-38.16},{"time":0.2667,"x":13.29,"y":-48.19},{"time":0.3333,"x":59.09,"y":-47.7},{"time":0.6,"x":176.21,"y":-26.6},{"time":0.6667,"x":186.57,"y":-26.52},{"time":0.7333,"x":175.6,"y":-26.61},{"time":0.9333,"x":59.38,"y":-35.79},{"time":0.9667,"x":39.71,"y":-41.59},{"time":1,"x":23.46,"y":-41.28},{"time":1.0667,"x":1.47,"y":-30.4},{"time":1.1333,"x":-5.05,"y":-9.91},{"time":1.2,"x":-5.69,"y":-7.03},{"time":1.2667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.2667,"name":"mouth3"},{"time":0.3667,"name":"mouth2"},{"time":0.4,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-4.17},{"time":0.5,"angle":0},{"time":0.7333,"angle":4.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-3.67},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":-3.15},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":352.94},{"time":0.5,"angle":0},{"time":0.7333,"angle":9.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":-10.84},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":8.68},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-3.9},{"time":0.5,"angle":0},{"time":0.7333,"angle":23.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":12.61},{"time":0.5,"angle":0},{"time":0.7333,"angle":8.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-36.8},{"time":0.5,"angle":0},{"time":0.7333,"angle":3.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":-3.14,"y":-0.25},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-10.89},{"time":0.5,"angle":0},{"time":0.7333,"angle":-3.86},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-4.06},{"time":0.5,"angle":0},{"time":0.8,"angle":3.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.74},{"time":0.5,"angle":-6.16},{"time":0.8333,"angle":36.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":2.44},{"time":0.7667,"angle":-3.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-7.15},{"time":0.5,"angle":0},{"time":0.8,"angle":-6.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":5.17},{"time":0.5,"angle":0},{"time":0.8,"angle":8.05},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.37,"y":0.33},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.19,"y":0.16},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.37,"y":0.33},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.19,"y":0.16},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-9.45},{"time":0.5,"angle":0},{"time":0.7333,"angle":5.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":-0.13,"y":1.57},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-0.28,"y":-3.66},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":4.37},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.05},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-2.62},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":-2.62},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":4.37},{"time":0.3333,"angle":6.67},{"time":0.7333,"angle":355.95},{"time":0.8333,"angle":355.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-2.63},{"time":0.5,"angle":0},{"time":0.7333,"angle":6.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-2.63},{"time":0.5,"angle":0},{"time":0.7333,"angle":6.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-6.35},{"time":0.5,"angle":0},{"time":0.7333,"angle":3.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-6.35},{"time":0.5,"angle":0},{"time":0.7333,"angle":3.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.83},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":3.32},{"time":0.5,"angle":0},{"time":0.8,"angle":-5.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-3.23},{"time":0.5,"angle":0},{"time":0.8,"angle":2.35},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-12.49},{"time":0.5,"angle":0},{"time":0.8,"angle":-4.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":12.32},{"time":0.5,"angle":0},{"time":0.8,"angle":10.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad2"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0.03},{"time":0.3333,"angle":-2.23},{"time":0.6667,"angle":0},{"time":1,"angle":2.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":0,"y":-2.64,"curve":"stepped"},{"time":1,"x":0,"y":-2.64},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":357.75},{"time":0.6667,"angle":0},{"time":1,"angle":2.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-13.47},{"time":0.3333,"angle":-19.39},{"time":0.6667,"angle":-19.37},{"time":1,"angle":-21.56},{"time":1.3333,"angle":-13.47}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-1.98,"y":-0.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-13.47},{"time":0.3333,"angle":-19.39},{"time":0.6667,"angle":-19.37},{"time":1,"angle":-21.56},{"time":1.3333,"angle":-13.47}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":9.77},{"time":0.3333,"angle":21.74},{"time":0.6667,"angle":20.04},{"time":1,"angle":21.38},{"time":1.3333,"angle":9.77}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-1.98,"y":-0.02,"curve":"stepped"},{"time":1,"x":-1.98,"y":-0.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":9.77},{"time":0.3333,"angle":21.74},{"time":0.6667,"angle":20.04},{"time":1,"angle":21.38},{"time":1.3333,"angle":9.77}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0.42},{"time":0.6667,"angle":-9.97},{"time":1.3333,"angle":0.42}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-3.97,"y":-0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":43.42},{"time":0.5,"angle":52.36},{"time":1,"angle":47.05},{"time":1.3333,"angle":43.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":3.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.04},{"time":0.8333,"angle":22.17},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.42},{"time":0.8333,"angle":-11.66},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4333,"x":-5.8,"y":-0.69,"curve":"stepped"},{"time":0.9,"x":-5.8,"y":-0.69},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4333,"x":-4.16,"y":-0.64,"curve":"stepped"},{"time":0.9,"x":-4.16,"y":-0.64},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eff_sad1":{"translate":[{"time":0.6,"x":0,"y":7.82}]},"eff_sad2":{"translate":[{"time":0.6,"x":0,"y":7.82}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":1.3333,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.24},{"time":0.6667,"angle":0},{"time":1,"angle":4.95},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.75,"y":-2.47},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.49,"y":-2.47},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.034,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.034,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":355.53},{"time":0.6667,"angle":0},{"time":1,"angle":3.01},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.912,"y":1},{"time":0.6667,"x":0.983,"y":1},{"time":1,"x":0.937,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":1.52},{"time":0.3333,"angle":-8.9},{"time":0.6667,"angle":5.38},{"time":1,"angle":7.73},{"time":1.3333,"angle":1.52}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":1.52},{"time":0.6667,"angle":-1.79},{"time":1,"angle":3.42},{"time":1.3333,"angle":1.52}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.09},{"time":0.5,"angle":1.02},{"time":1,"angle":6.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.08},{"time":0.5,"angle":-0.1},{"time":1,"angle":-2.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.05},{"time":0.6667,"angle":0.84},{"time":1,"angle":4.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.97,"y":-0.08},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.49,"y":0.04},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-2.12},{"time":0.6,"angle":2.05},{"time":0.6667,"angle":0},{"time":1.0667,"angle":12.1},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.21},{"time":0.5,"angle":-2.87},{"time":0.6667,"angle":-2.2},{"time":1,"angle":-2.85},{"time":1.1667,"angle":-2.36},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.12},{"time":0.6667,"angle":0},{"time":1,"angle":1.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.87},{"time":0.6667,"angle":0},{"time":1,"angle":-4.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.92},{"time":0.6667,"angle":0},{"time":1,"angle":-11.99},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":20.39},{"time":0.6667,"angle":13.71},{"time":1,"angle":8.84},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7333,"x":-4.79,"y":0.03},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7333,"x":-4.79,"y":0.03},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.54},{"time":0.6667,"angle":0},{"time":1,"angle":3.67},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.94,"curve":"stepped"},{"time":0.6667,"angle":4.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":0,"y":-0.21},{"time":0.3333,"x":0,"y":2.78,"curve":"stepped"},{"time":0.6667,"x":0,"y":2.78},{"time":0.8,"x":0,"y":0.73},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.48,"curve":"stepped"},{"time":0.6667,"angle":5.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0},{"time":0.4,"angle":8.91},{"time":0.5333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":11.73},{"time":0.4333,"angle":-0.24},{"time":0.6,"angle":11.75},{"time":0.7667,"angle":-0.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.89},{"time":0.5,"angle":-6.18},{"time":0.6667,"angle":12.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.51},{"time":0.4333,"angle":5.46},{"time":0.6,"angle":-7.01},{"time":0.7667,"angle":-2.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.99},{"time":0.5,"angle":-0.53},{"time":0.6667,"angle":-5.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.4667,"angle":3.97},{"time":0.8,"angle":-1.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-2.46},{"time":0.3333,"angle":5.13},{"time":0.5333,"angle":-1.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2,"angle":0},{"time":0.3333,"angle":-4.13},{"time":0.6667,"angle":-5.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":5.53},{"time":0.3333,"angle":-9.4},{"time":0.6667,"angle":-11.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-3.27},{"time":0.3333,"angle":22.21},{"time":0.6667,"angle":16.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":5.21,"y":-0.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":5.21,"y":-0.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":3.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.4,"x":1.91,"y":0.32},{"time":0.5333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.4667,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1333,"name":"mouth_uneasy2"},{"time":0.2667,"name":"mouth_uneasy1"},{"time":0.4,"name":"mouth_uneasy2"},{"time":0.5333,"name":"mouth_uneasy1"},{"time":0.6667,"name":"mouth_uneasy2"},{"time":0.8,"name":"mouth_uneasy1"},{"time":0.9,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.4667,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":3.65},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":4.66},{"time":0.8,"angle":-0.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-18.52},{"time":0.2333,"angle":-15.96},{"time":0.5,"angle":-22.82},{"time":0.7333,"angle":-24.61},{"time":1,"angle":-18.52}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":16.02},{"time":0.2333,"angle":18.58},{"time":0.5,"angle":11.72},{"time":0.7333,"angle":9.93},{"time":1,"angle":16.02}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-20.18,"curve":"stepped"},{"time":0.5,"angle":-20.18,"curve":"stepped"},{"time":1,"angle":-20.18}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":105.36},{"time":0.5,"angle":107.89},{"time":1,"angle":105.36}],"translate":[{"time":0,"x":3.64,"y":-1.4,"curve":"stepped"},{"time":0.5,"x":3.64,"y":-1.4,"curve":"stepped"},{"time":1,"x":3.64,"y":-1.4}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":3.61},{"time":0.3333,"angle":4.85},{"time":0.5,"angle":10.6},{"time":0.7333,"angle":-6.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.84},{"time":0.5,"angle":0},{"time":0.8,"angle":2.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-4.21},{"time":0.5,"angle":0},{"time":0.7333,"angle":-10.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":11.43},{"time":0.5,"angle":0},{"time":0.7333,"angle":5.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"knife":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":5.93},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/201301.png b/m78-all/m78-fe/public/images/character/201301.png new file mode 100644 index 000000000..1ad213946 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/201301.png differ diff --git a/m78-all/m78-fe/public/images/character/202101.atlas b/m78-all/m78-fe/public/images/character/202101.atlas new file mode 100644 index 000000000..a6d066a9d --- /dev/null +++ b/m78-all/m78-fe/public/images/character/202101.atlas @@ -0,0 +1,314 @@ + +202101.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 394, 16 + size: 49, 54 + orig: 49, 54 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 571, 109 + size: 86, 16 + orig: 86, 16 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 659, 109 + size: 86, 16 + orig: 86, 16 + offset: 0, 0 + index: -1 +f_hair1 + rotate: false + xy: 325, 72 + size: 96, 53 + orig: 96, 53 + offset: 0, 0 + index: -1 +f_hair2 + rotate: true + xy: 493, 94 + size: 31, 76 + orig: 31, 76 + offset: 0, 0 + index: -1 +hat + rotate: false + xy: 162, 15 + size: 161, 110 + orig: 161, 110 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 2 + size: 158, 123 + orig: 158, 123 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 976, 53 + size: 24, 32 + orig: 24, 32 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 542, 7 + size: 38, 36 + orig: 38, 36 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 495, 47 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 535, 47 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 495, 7 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 575, 62 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 615, 62 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 655, 62 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 695, 62 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 325, 18 + size: 52, 67 + orig: 52, 67 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 580, 15 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 620, 15 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 660, 15 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 900, 59 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 938, 59 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 740, 12 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 778, 12 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 816, 12 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 854, 12 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 900, 31 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 938, 31 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 892, 3 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 423, 72 + size: 5, 4 + orig: 5, 4 + offset: 0, 0 + index: -1 +r_arm + rotate: true + xy: 445, 17 + size: 60, 48 + orig: 60, 48 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 930, 4 + size: 25, 33 + orig: 25, 33 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 982, 88 + size: 37, 39 + orig: 37, 39 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 700, 15 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 747, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 794, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 841, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: true + xy: 888, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: true + xy: 935, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 740, 40 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 423, 79 + size: 46, 68 + orig: 46, 68 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 780, 40 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 820, 40 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 860, 40 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/202101.json b/m78-all/m78-fe/public/images/character/202101.json new file mode 100644 index 000000000..39e7deab6 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/202101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"oxdZFCUz9BHYPf1yYUGMlAuzvJo","spine":"3.5.25","width":170.01,"height":231.08,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.3,"x":2.95,"y":46.36},{"name":"eff_exclamation","parent":"root","length":11.71,"rotation":57.79,"x":55.88,"y":231.16},{"name":"eff_panic","parent":"root","length":14.75,"rotation":41.91,"x":34.26,"y":188.69},{"name":"eff_sad1","parent":"root","length":7.37,"rotation":-87.75,"x":12.82,"y":113.13},{"name":"eff_sad2","parent":"root","length":4.48,"rotation":-90,"x":53.78,"y":86.89},{"name":"eff_star1","parent":"root","length":8.96,"rotation":45.23,"x":58.25,"y":51.86},{"name":"eff_star2","parent":"root","length":12.38,"rotation":88.65,"x":-66.49,"y":83.79},{"name":"eff_star3","parent":"root","length":8.96,"rotation":122.53,"x":-51.63,"y":48.87},{"name":"head","parent":"body","length":132.6,"x":44.34,"y":1.83},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":62.74,"y":-9.6},{"name":"hair1","parent":"head","length":38.65,"rotation":-145.59,"x":108.72,"y":-3.66},{"name":"hair2","parent":"head","length":34.59,"rotation":-167.47,"x":94.8,"y":46.3},{"name":"hat","parent":"head","length":36.14,"rotation":29.55,"x":95.88,"y":23.76},{"name":"l_arm1","parent":"body","length":24.14,"rotation":-146.52,"x":33.12,"y":-12.1},{"name":"l_arm2","parent":"l_arm1","length":32.56,"rotation":9.83,"x":16.64,"y":0.07},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":10.44,"y":49.93},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":20.37,"y":-7.08},{"name":"r_arm","parent":"body","length":32.2,"rotation":144.08,"x":36.31,"y":23.68},{"name":"r_arm2","parent":"r_arm","length":16.56,"rotation":1.65,"x":-0.52,"y":0.66},{"name":"r_leg","parent":"root","length":44.6,"rotation":-90.91,"x":-8.4,"y":50.25}],"slots":[{"name":"png/l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"png/l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"png/body","bone":"body","attachment":"body"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"png/f_hair2","bone":"hair2","attachment":"f_hair2"},{"name":"png/f_hair1","bone":"hair1","attachment":"f_hair1"},{"name":"png/hat","bone":"hat","attachment":"hat"},{"name":"r_arm1","bone":"r_arm2","attachment":"r_arm1"},{"name":"png/r_arm","bone":"r_arm","attachment":"r_arm"}],"skins":{"default":{"eyebrow":{"eyebrow1":{"x":3.54,"y":-0.08,"rotation":-91.35,"width":86,"height":16},"eyebrow2":{"rotation":-91.35,"width":86,"height":16}},"l_eye":{"l_eye1":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"x":47.31,"y":-36.68,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45},"l_sadeye1":{"x":51.17,"y":-33.85,"rotation":-89.55,"width":38,"height":45},"l_sadeye2":{"x":51.17,"y":-33.85,"rotation":-89.55,"width":38,"height":45},"l_sadeye3":{"x":47.02,"y":-37.05,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth7":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth8":{"x":7.36,"y":6.52,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26}},"nose":{"nose":{"x":28.91,"y":-25.91,"rotation":-89.55,"width":5,"height":4}},"png/body":{"body":{"x":25.5,"y":2.94,"rotation":-89.1,"width":49,"height":54}},"png/f_hair1":{"f_hair1":{"x":21.5,"y":-0.38,"rotation":56.04,"width":96,"height":53}},"png/f_hair2":{"f_hair2":{"x":22.58,"y":-1.42,"rotation":77.92,"width":31,"height":76}},"png/hat":{"hat":{"x":-17.81,"y":-3.85,"rotation":-119.1,"width":161,"height":110}},"png/head":{"head":{"x":55.85,"y":1.3,"rotation":-89.55,"width":158,"height":123}},"png/l_arm1":{"l_arm1":{"x":10.16,"y":2.85,"rotation":57.42,"width":24,"height":32}},"png/l_arm2":{"l_arm2":{"x":13.8,"y":-1.56,"rotation":47.59,"width":38,"height":36}},"png/l_leg":{"l_leg":{"x":17.94,"y":1.46,"rotation":88.65,"width":52,"height":67}},"png/r_arm":{"r_arm":{"x":8.46,"y":9.26,"rotation":126.82,"width":60,"height":48},"r_arm2":{"x":13.2,"y":2.69,"rotation":126.82,"width":37,"height":39}},"png/r_leg":{"r_leg":{"x":18.93,"y":-5.36,"rotation":90.91,"width":46,"height":68}},"r_arm1":{"r_arm1":{"x":13.77,"y":1.63,"rotation":125.17,"width":25,"height":33}},"r_eye":{"r_eye1":{"x":41.63,"y":18.94,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":41.63,"y":18.94,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":41.63,"y":18.94,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":41.63,"y":18.94,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":41.63,"y":18.94,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"x":41.65,"y":18.94,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":41.63,"y":18.94,"rotation":-89.55,"width":38,"height":45},"r_sadeye1":{"x":45.88,"y":16.27,"rotation":-89.55,"width":38,"height":45},"r_sadeye2":{"x":45.88,"y":16.27,"rotation":-89.55,"width":38,"height":45},"r_sadeye3":{"x":45.88,"y":16.27,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1667,"name":"l_eye1"},{"time":0.2,"name":"l_eye2"},{"time":0.2667,"name":"l_eye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth4"},{"time":0.3333,"name":"mouth1"},{"time":0.4,"name":"mouth2"},{"time":0.4667,"name":"mouth3"},{"time":0.5,"name":"mouth6"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1667,"name":"r_eye1"},{"time":0.2,"name":"r_eye2"},{"time":0.2667,"name":"r_eye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.59},{"time":0.3333,"angle":0},{"time":0.5,"angle":-1.21},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.99,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.99,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.42},{"time":0.3333,"angle":0},{"time":0.5,"angle":0.37},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-7.63},{"time":0.1667,"angle":-15.07},{"time":0.3333,"angle":-7.63},{"time":0.5,"angle":-12.17},{"time":0.6667,"angle":-7.63}],"translate":[{"time":0,"x":16.45,"y":-8.7,"curve":"stepped"},{"time":0.1667,"x":16.45,"y":-8.7,"curve":"stepped"},{"time":0.3333,"x":16.45,"y":-8.7,"curve":"stepped"},{"time":0.5,"x":16.45,"y":-8.7,"curve":"stepped"},{"time":0.6667,"x":16.45,"y":-8.7}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":77.04},{"time":0.1667,"angle":83.88},{"time":0.3333,"angle":62.04},{"time":0.5,"angle":87.37},{"time":0.6667,"angle":67.03}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":52.74},{"time":0.1667,"angle":59.58},{"time":0.3333,"angle":62.54},{"time":0.5,"angle":59.55},{"time":0.6667,"angle":56.24}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-0.15,"y":3.68},{"time":0.5,"x":-2.09,"y":1.02},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.81},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.96},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.1667,"x":3.55,"y":0.11},{"time":0.2333,"x":0,"y":0},{"time":0.2667,"x":-3.56,"y":-0.02,"curve":"stepped"},{"time":0.6333,"x":-3.56,"y":-0.02},{"time":0.6667,"x":3.55,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"hat":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.1333,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1,"name":"mouth6"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.1333,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":12.09},{"time":0.5,"angle":-7.41},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-4.71},{"time":1,"angle":-4.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-3.86,"y":7.4},{"time":0.5,"x":-0.85,"y":-1.75},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":-1.68,"y":11.24},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.99,"y":1},{"time":0.3333,"x":1.039,"y":1.04},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.021,"y":1},{"time":0.8333,"x":1.04,"y":1.04},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-19},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-34.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0,"y":7.03},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":0,"y":11.85},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":42.55},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":24.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-4.37,"y":9.97},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":-3.91,"y":14},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":11.7},{"time":0.5,"angle":3.6},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-8.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-0.19,"y":-0.98},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":13.54},{"time":0.5,"angle":0},{"time":0.8333,"angle":-9.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.25},{"time":0.5,"angle":0},{"time":0.8333,"angle":-11.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.16},{"time":0.5,"angle":0},{"time":0.8333,"angle":-1.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.68,"y":6.75},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":6.27,"y":-0.53},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":82.84},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":73.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":21.57},{"time":0.5,"angle":17.19},{"time":0.8333,"angle":29.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-32.63},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-26.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":14.67,"y":4.4},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":12.01,"y":-8.41},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":8.02},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":0,"y":2.67},{"time":1,"x":0,"y":0}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye1"},{"time":0.6667,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth6"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth6"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye1"},{"time":0.6667,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.91},{"time":0.3333,"angle":0},{"time":0.5,"angle":8.73},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.1},{"time":0.3333,"angle":0},{"time":0.5,"angle":-0.28},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-32.23},{"time":0.3333,"angle":0},{"time":0.5,"angle":-47.95},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":57.78},{"time":0.3333,"angle":0},{"time":0.5,"angle":60.83},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.21},{"time":0.3333,"angle":0},{"time":0.5,"angle":23.49},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.09,"y":1.02},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.67},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.08},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-5.06,"y":0.19,"curve":"stepped"},{"time":0.3,"x":-5.06,"y":0.19},{"time":0.3333,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.6333,"x":3.55,"y":0.11},{"time":0.6667,"x":-5.06,"y":0.19}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-24.9},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":23.73},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye3"},{"time":0.0667,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2667,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4667,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6667,"name":"l_sadeye2"},{"time":0.7333,"name":"l_sadeye3"},{"time":0.8,"name":"l_sadeye1"},{"time":0.8667,"name":"l_sadeye2"},{"time":0.9333,"name":"l_sadeye3"},{"time":1,"name":"l_sadeye1"},{"time":1.0667,"name":"l_sadeye2"},{"time":1.1333,"name":"l_sadeye3"},{"time":1.2,"name":"l_sadeye1"},{"time":1.2667,"name":"l_sadeye2"},{"time":1.3333,"name":"l_sadeye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye3"},{"time":0.0667,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2667,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4667,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6667,"name":"r_sadeye2"},{"time":0.7333,"name":"r_sadeye3"},{"time":0.8,"name":"r_sadeye1"},{"time":0.8667,"name":"r_sadeye2"},{"time":0.9333,"name":"r_sadeye3"},{"time":1,"name":"r_sadeye1"},{"time":1.0667,"name":"r_sadeye2"},{"time":1.1333,"name":"r_sadeye3"},{"time":1.2,"name":"r_sadeye1"},{"time":1.2667,"name":"r_sadeye2"},{"time":1.3333,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-12.25,"curve":"stepped"},{"time":0.3333,"angle":-12.25,"curve":"stepped"},{"time":0.6667,"angle":-12.25,"curve":"stepped"},{"time":1,"angle":-12.25,"curve":"stepped"},{"time":1.3333,"angle":-12.25}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":0.992,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"x":1.02,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"x":0.992,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":1,"x":1.023,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"x":0.992,"y":0.992}]},"head":{"rotate":[{"time":0,"angle":-17.07,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"angle":-14.54,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"angle":-13.65,"curve":"stepped"},{"time":1,"angle":-13.65},{"time":1.3333,"angle":-17.07}],"translate":[{"time":0,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.3333,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.6667,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1.3333,"x":-5.11,"y":1.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.23},{"time":0.6667,"angle":-16.32},{"time":1,"angle":-10.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.37},{"time":0.6667,"angle":0},{"time":1,"angle":0.94},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1333,"x":0,"y":0},{"time":0.1667,"x":0.84,"y":0.03},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5,"x":0.84,"y":0.03},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0},{"time":0.8333,"x":0.84,"y":0.03},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.1333,"x":0,"y":0},{"time":1.1667,"x":0.84,"y":0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.65},{"time":0.6667,"angle":0},{"time":1,"angle":-1.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":7.12},{"time":0.6667,"angle":0},{"time":1,"angle":2.73},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.1667,"name":"l_eye2"},{"time":1.2,"name":"l_eye3"},{"time":1.2667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.1667,"name":"r_eye2"},{"time":1.2,"name":"r_eye3"},{"time":1.2667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.91},{"time":0.6667,"angle":0},{"time":1,"angle":3.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.83,"y":-3.77},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.03,"y":-3.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.6},{"time":0.6667,"angle":0},{"time":1,"angle":-2.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.57,"y":-0.18},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.58,"y":3.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.63},{"time":0.6667,"angle":0},{"time":1,"angle":-1.4},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.63},{"time":0.6667,"angle":0},{"time":1,"angle":7.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.14},{"time":0.6667,"angle":0},{"time":1,"angle":-4.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.21},{"time":0.6667,"angle":0},{"time":1,"angle":23.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-2.09,"y":1.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.67},{"time":0.6667,"angle":0},{"time":1,"angle":-6.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.6667,"x":3.55,"y":0.11},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.56,"y":-0.02},{"time":0.8,"x":3.55,"y":0.11,"curve":"stepped"},{"time":1.1333,"x":3.55,"y":0.11},{"time":1.1667,"x":0,"y":0},{"time":1.2,"x":-3.56,"y":-0.02},{"time":1.2667,"x":3.55,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.04,"y":-2.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.07,"y":-2.85},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"},{"time":0.1667,"name":"l_eye5"},{"time":0.3333,"name":"l_eye6"},{"time":0.5,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.1667,"name":"mouth_sad"},{"time":0.3333,"name":"mouth4"},{"time":0.5,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"},{"time":0.1667,"name":"r_eye5"},{"time":0.3333,"name":"r_eye6"},{"time":0.5,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5},{"time":0.1667,"angle":12.28},{"time":0.3333,"angle":-5},{"time":0.5,"angle":-7.2}],"translate":[{"time":0,"x":-1.83,"y":-3.77},{"time":0.1667,"x":-3.64,"y":3.48},{"time":0.3333,"x":-1.83,"y":-3.77,"curve":"stepped"},{"time":0.5,"x":-1.83,"y":-3.77}],"scale":[{"time":0,"x":0.989,"y":1.019,"curve":"stepped"},{"time":0.1667,"x":0.989,"y":1.019,"curve":"stepped"},{"time":0.3333,"x":0.989,"y":1.019,"curve":"stepped"},{"time":0.5,"x":0.989,"y":1.019}]},"head":{"rotate":[{"time":0,"angle":9.39},{"time":0.1667,"angle":12.48},{"time":0.3333,"angle":9.39,"curve":"stepped"},{"time":0.5,"angle":9.39}],"translate":[{"time":0,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.1667,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.3333,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.5,"x":-1.57,"y":-0.18}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":4.63},{"time":0.1667,"angle":28.22},{"time":0.3333,"angle":4.63,"curve":"stepped"},{"time":0.5,"angle":4.63}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":7.39},{"time":0.1667,"angle":-26.93},{"time":0.3333,"angle":7.39,"curve":"stepped"},{"time":0.5,"angle":7.39}],"translate":[{"time":0,"x":0.7,"y":-9.89,"curve":"stepped"},{"time":0.1667,"x":0.7,"y":-9.89,"curve":"stepped"},{"time":0.3333,"x":0.7,"y":-9.89,"curve":"stepped"},{"time":0.5,"x":0.7,"y":-9.89}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-17.52},{"time":0.1667,"angle":68.32},{"time":0.3333,"angle":-17.52,"curve":"stepped"},{"time":0.5,"angle":-17.52}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-0.4,"curve":"stepped"},{"time":0.1667,"angle":-0.4,"curve":"stepped"},{"time":0.3333,"angle":-0.4,"curve":"stepped"},{"time":0.5,"angle":-0.4}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":2.67},{"time":0.1667,"angle":345.35},{"time":0.3333,"angle":2.67,"curve":"stepped"},{"time":0.5,"angle":2.67}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":11.23,"y":0.34,"curve":"stepped"},{"time":0.1667,"x":11.23,"y":0.34,"curve":"stepped"},{"time":0.3333,"x":11.23,"y":0.34,"curve":"stepped"},{"time":0.5,"x":11.23,"y":0.34}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-24.8},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.76,"y":5.44},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":32.32},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-5.09,"y":6.65},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":42.05,"curve":"stepped"},{"time":0.1667,"angle":42.05,"curve":"stepped"},{"time":0.3333,"angle":42.05,"curve":"stepped"},{"time":0.5,"angle":42.05}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":4.42},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":7.25,"y":6.92},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eff_exclamation":{"translate":[{"time":0,"x":-13.55,"y":-8.86}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.5,"name":"mouth1"},{"time":0.5333,"name":"mouth2"},{"time":0.5667,"name":"mouth1"},{"time":0.6667,"name":"mouth2"},{"time":0.7,"name":"mouth3"},{"time":0.7333,"name":"mouth2"},{"time":0.8,"name":"mouth1"},{"time":0.8333,"name":"mouth2"},{"time":0.8667,"name":"mouth1"},{"time":1.0667,"name":"mouth2"},{"time":1.1,"name":"mouth3"},{"time":1.1667,"name":"mouth2"},{"time":1.2,"name":"mouth1"},{"time":1.2667,"name":"mouth2"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.78},{"time":0.6667,"angle":0},{"time":1,"angle":1.21},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.83,"y":-3.77},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.03,"y":-3.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.6},{"time":0.6667,"angle":0},{"time":1,"angle":-2.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.57,"y":-0.18},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.58,"y":3.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.63},{"time":0.6667,"angle":0},{"time":1,"angle":-1.4},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.63},{"time":0.6667,"angle":0},{"time":1,"angle":7.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.14},{"time":0.6667,"angle":0},{"time":1,"angle":-4.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.21},{"time":0.6667,"angle":0},{"time":1,"angle":23.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-2.09,"y":1.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.67},{"time":0.6667,"angle":0},{"time":1,"angle":-6.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.6667,"x":3.55,"y":0.11},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.56,"y":-0.02},{"time":0.8,"x":3.55,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.04,"y":-2.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.07,"y":-2.85},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0}]},"hat":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.1667,"name":"l_eye5"},{"time":0.3333,"name":"l_eye4"},{"time":0.5,"name":"l_eye5"},{"time":0.6667,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1667,"name":"mouth7"},{"time":0.3333,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.6667,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.1667,"name":"r_eye5"},{"time":0.3333,"name":"r_eye4"},{"time":0.5,"name":"r_eye5"},{"time":0.6667,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":5.75},{"time":0.3333,"angle":0},{"time":0.5,"angle":-10.43},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":4.63},{"time":0.3333,"angle":0},{"time":0.5,"angle":-1.4},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.97},{"time":0.3333,"angle":0},{"time":0.5,"angle":-20.53},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":24.18},{"time":0.3333,"angle":0},{"time":0.5,"angle":17.49},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.21},{"time":0.3333,"angle":0},{"time":0.5,"angle":23.49},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.09,"y":1.02},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.67},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.08},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-1.48,"y":-0.05}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/202101.png b/m78-all/m78-fe/public/images/character/202101.png new file mode 100644 index 000000000..c34673e75 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/202101.png differ diff --git a/m78-all/m78-fe/public/images/character/202201.atlas b/m78-all/m78-fe/public/images/character/202201.atlas new file mode 100644 index 000000000..118b85720 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/202201.atlas @@ -0,0 +1,314 @@ + +202201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 188, 187 + size: 59, 67 + orig: 59, 67 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 329, 238 + size: 86, 16 + orig: 86, 16 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 329, 220 + size: 86, 16 + orig: 86, 16 + offset: 0, 0 + index: -1 +f_hair1 + rotate: false + xy: 2, 15 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +f_hair2 + rotate: true + xy: 249, 220 + size: 34, 78 + orig: 34, 78 + offset: 0, 0 + index: -1 +f_hair3 + rotate: false + xy: 88, 21 + size: 62, 64 + orig: 62, 64 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 87 + size: 184, 167 + orig: 184, 167 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 240, 105 + size: 33, 42 + orig: 33, 42 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 367, 57 + size: 37, 39 + orig: 37, 39 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 193, 40 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 417, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 464, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: true + xy: 308, 180 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: true + xy: 355, 180 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: true + xy: 402, 176 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: true + xy: 449, 176 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 249, 189 + size: 29, 57 + orig: 29, 57 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 240, 140 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: true + xy: 308, 140 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: true + xy: 355, 140 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 193, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 221, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 280, 151 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 408, 68 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 408, 40 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 249, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: true + xy: 277, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: true + xy: 305, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 333, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 233, 115 + size: 5, 4 + orig: 5, 4 + offset: 0, 0 + index: -1 +r_arm + rotate: true + xy: 188, 121 + size: 64, 50 + orig: 64, 50 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 188, 121 + size: 64, 50 + orig: 64, 50 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 188, 87 + size: 32, 43 + orig: 32, 43 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 402, 136 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 449, 136 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 233, 58 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 284, 100 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: true + xy: 331, 100 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: true + xy: 273, 60 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: true + xy: 320, 60 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 152, 23 + size: 39, 62 + orig: 39, 62 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: true + xy: 378, 96 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: true + xy: 425, 96 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 472, 89 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/202201.json b/m78-all/m78-fe/public/images/character/202201.json new file mode 100644 index 000000000..0203d07d7 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/202201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"z/Y2FARHfIuNvfkfDMv5CMu3ydQ","spine":"3.5.25","width":184.73,"height":255.61,"images":"./png/"},"bones":[{"name":"root","x":1.5},{"name":"body","parent":"root","length":42.4,"rotation":89.3,"x":0.8,"y":38.05},{"name":"eff_exclamation","parent":"root","length":11.71,"rotation":57.79,"x":45.42,"y":236.25},{"name":"eff_panic","parent":"root","length":14.75,"rotation":41.91,"x":62.82,"y":207.04},{"name":"eff_sad1","parent":"root","length":7.37,"rotation":-87.75,"x":13.29,"y":113.67},{"name":"eff_sad2","parent":"root","length":4.48,"rotation":-90,"x":60.97,"y":90.17},{"name":"eff_star1","parent":"root","length":8.96,"rotation":45.23,"x":31.37,"y":24.7},{"name":"eff_star2","parent":"root","length":12.38,"rotation":154.93,"x":-47.11,"y":84.12},{"name":"eff_star3","parent":"root","length":8.96,"rotation":122.53,"x":-41.88,"y":33.72},{"name":"head","parent":"body","length":132.6,"x":50.88,"y":-1.7},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":62.65,"y":-2.2},{"name":"hair1","parent":"head","length":38.65,"rotation":-145.59,"x":108.9,"y":13.31},{"name":"hair2","parent":"head","length":34.59,"rotation":169.84,"x":97.61,"y":46.89},{"name":"hair3","parent":"head","length":23.53,"rotation":-139.88,"x":107.02,"y":-22.35},{"name":"l_arm1","parent":"body","length":24.14,"rotation":-146.52,"x":48.38,"y":-10.59},{"name":"l_arm2","parent":"l_arm1","length":32.56,"rotation":9.83,"x":21.9,"y":1.79},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":10.71,"y":46.98},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":20.37,"y":-7.08},{"name":"r_arm1","parent":"body","length":16.56,"rotation":143.19,"x":47.9,"y":21.65},{"name":"r_arm","parent":"r_arm1","length":32.2,"rotation":88.25,"x":19.31,"y":-1.41},{"name":"r_leg","parent":"root","length":44.6,"rotation":-90.91,"x":-11.62,"y":49.61}],"slots":[{"name":"png/l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"png/l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"png/body","bone":"body","attachment":"body"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"png/f_hair2","bone":"hair2","attachment":"f_hair2"},{"name":"f_hair3","bone":"hair3","attachment":"f_hair3"},{"name":"png/f_hair1","bone":"hair1","attachment":"f_hair1"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"png/r_arm","bone":"r_arm","attachment":"r_arm"},{"name":"tom","bone":"root","color":"ff0b3245"}],"skins":{"default":{"eyebrow":{"eyebrow1":{"x":3.54,"y":-0.08,"rotation":-91.35,"width":86,"height":16},"eyebrow2":{"rotation":-91.35,"width":86,"height":16}},"f_hair3":{"f_hair3":{"x":15.13,"y":-6.15,"rotation":50.58,"width":62,"height":64}},"l_eye":{"l_eye1":{"x":47.74,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"x":47.72,"y":-34.04,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_sadeye1":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_sadeye2":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45},"l_sadeye3":{"x":47.72,"y":-34.04,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":1.49,"y":-0.96,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth7":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth8":{"x":7.36,"y":6.52,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26}},"nose":{"nose":{"x":29.61,"y":-21.54,"rotation":-89.55,"width":5,"height":4}},"png/body":{"body":{"x":29.01,"y":1.64,"rotation":-89.1,"width":59,"height":67}},"png/f_hair1":{"f_hair1":{"x":21.5,"y":-0.38,"rotation":56.04,"width":84,"height":70}},"png/f_hair2":{"f_hair2":{"x":21.38,"y":7.4,"rotation":100.61,"width":34,"height":78}},"png/head":{"head":{"x":81.36,"y":15.39,"rotation":-89.55,"width":184,"height":167}},"png/l_arm1":{"l_arm1":{"x":14.18,"y":-2.29,"rotation":57.42,"width":33,"height":42}},"png/l_arm2":{"l_arm2":{"x":13.8,"y":-1.56,"rotation":47.59,"width":37,"height":39}},"png/l_leg":{"l_leg":{"x":19.74,"y":-0.77,"rotation":88.65,"width":29,"height":57}},"png/r_arm":{"r_arm":{"x":28.37,"y":7.63,"rotation":39.46,"width":64,"height":50},"r_arm2":{"x":-30.7,"y":-63.01,"rotation":39.46,"width":64,"height":50}},"png/r_leg":{"r_leg":{"x":18.87,"y":-2.14,"rotation":90.91,"width":39,"height":62}},"r_arm1":{"r_arm1":{"x":10.73,"y":5.47,"rotation":125.17,"width":32,"height":43}},"r_eye":{"r_eye1":{"x":43.53,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"x":43.52,"y":23.47,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_sadeye1":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_sadeye2":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45},"r_sadeye3":{"x":43.52,"y":23.47,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1667,"name":"l_eye1"},{"time":0.2,"name":"l_eye2"},{"time":0.2667,"name":"l_eye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth4"},{"time":0.3333,"name":"mouth1"},{"time":0.4,"name":"mouth2"},{"time":0.4667,"name":"mouth3"},{"time":0.5,"name":"mouth6"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1667,"name":"r_eye1"},{"time":0.2,"name":"r_eye2"},{"time":0.2667,"name":"r_eye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.59},{"time":0.3333,"angle":0},{"time":0.5,"angle":-1.21},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.99,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.99,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.42},{"time":0.3333,"angle":0},{"time":0.5,"angle":0.37},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-7.63},{"time":0.1667,"angle":3.06},{"time":0.3333,"angle":-7.63},{"time":0.5,"angle":5.44},{"time":0.6667,"angle":-7.63}],"translate":[{"time":0,"x":-1.74,"y":-0.88,"curve":"stepped"},{"time":0.1667,"x":-1.74,"y":-0.88,"curve":"stepped"},{"time":0.3333,"x":-1.74,"y":-0.88,"curve":"stepped"},{"time":0.5,"x":-1.74,"y":-0.88,"curve":"stepped"},{"time":0.6667,"x":-1.74,"y":-0.88}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":37.78},{"time":0.1667,"angle":83.88},{"time":0.3333,"angle":62.04},{"time":0.5,"angle":87.37},{"time":0.6667,"angle":37.78}],"translate":[{"time":0,"x":-2.73,"y":-2.8}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":113.47,"curve":"stepped"},{"time":0.1667,"angle":113.47,"curve":"stepped"},{"time":0.3333,"angle":113.47,"curve":"stepped"},{"time":0.5,"angle":113.47,"curve":"stepped"},{"time":0.6667,"angle":113.47}],"translate":[{"time":0,"x":-2.42,"y":2.34,"curve":"stepped"},{"time":0.1667,"x":-2.42,"y":2.34,"curve":"stepped"},{"time":0.3333,"x":-2.42,"y":2.34,"curve":"stepped"},{"time":0.5,"x":-2.42,"y":2.34,"curve":"stepped"},{"time":0.6667,"x":-2.42,"y":2.34}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.81},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.96},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.1667,"x":3.55,"y":0.11},{"time":0.2333,"x":0,"y":0},{"time":0.2667,"x":-3.56,"y":-0.02,"curve":"stepped"},{"time":0.6333,"x":-3.56,"y":-0.02},{"time":0.6667,"x":3.55,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":9.35},{"time":0.3333,"angle":0},{"time":0.5,"angle":5.48},{"time":0.6667,"angle":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":0.4667,"name":"eyebrow1"},{"time":0.5,"name":"eyebrow1"},{"time":0.8,"name":"eyebrow1"},{"time":0.8333,"name":"eyebrow1"},{"time":1.1667,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.5,"name":"l_eye1"},{"time":0.8333,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth6"},{"time":0.6667,"name":"mouth2"},{"time":0.8333,"name":"mouth6"},{"time":1.1667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.5,"name":"r_eye1"},{"time":0.8333,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":12.09},{"time":0.5,"angle":-7.41,"curve":"stepped"},{"time":0.6667,"angle":-7.41},{"time":0.8333,"angle":0},{"time":1,"angle":-4.71},{"time":1.1667,"angle":-4.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-3.86,"y":7.4},{"time":0.5,"x":-0.85,"y":-1.75,"curve":"stepped"},{"time":0.6667,"x":-0.85,"y":-1.75},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-1.68,"y":11.24},{"time":1.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.99,"y":1},{"time":0.3333,"x":1.039,"y":1.04},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1},{"time":0.8333,"x":1.021,"y":1},{"time":1,"x":1.04,"y":1.04},{"time":1.1667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-19},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-34.27},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0,"y":7.03},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":0,"y":11.85},{"time":1.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":42.55},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":24.06},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-4.37,"y":9.97},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-3.91,"y":14},{"time":1.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":11.7},{"time":0.5,"angle":3.6,"curve":"stepped"},{"time":0.6667,"angle":3.6},{"time":0.8333,"angle":0},{"time":1,"angle":-8.82},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-0.19,"y":-0.98},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":20.9},{"time":0.5,"angle":-5.24},{"time":0.6667,"angle":0},{"time":1,"angle":-3.5},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.25},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":1,"angle":-11.39},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":17.9},{"time":0.5,"angle":-10.56},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":32.99},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":18.6},{"time":0.5,"angle":12.5},{"time":0.6667,"angle":17.19},{"time":1,"angle":10.47},{"time":1.1667,"angle":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-19.12},{"time":0.3333,"angle":-63.11},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-81.98},{"time":1.1667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":1.39,"y":5.88},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-1.67,"y":6.75},{"time":1.1667,"x":0,"y":0}]},"root":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0667,"x":0,"y":0},{"time":0.3333,"x":0,"y":11.34},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":0.9333,"x":0,"y":6.74},{"time":1.1667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1,"y":0.976},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.1667,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5,"x":9.94,"y":0.78,"curve":"stepped"},{"time":0.8,"x":9.94,"y":0.78},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.1667,"x":0,"y":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":26.39},{"time":0.6667,"angle":0},{"time":1,"angle":10.83},{"time":1.1667,"angle":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye1"},{"time":0.6667,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth6"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth6"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye1"},{"time":0.6667,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.91},{"time":0.3333,"angle":0},{"time":0.5,"angle":8.73},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-9.72},{"time":0.3333,"angle":0},{"time":0.5,"angle":0.85},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.06,"y":-0.68},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.66,"y":2.81},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":10.95},{"time":0.3333,"angle":0},{"time":0.5,"angle":4},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-14.34},{"time":0.3333,"angle":0},{"time":0.5,"angle":-23.76},{"time":0.6667,"angle":0}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":63.02},{"time":0.3333,"angle":0},{"time":0.5,"angle":43.48},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.21},{"time":0.3333,"angle":0},{"time":0.5,"angle":9.83},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.09,"y":1.02},{"time":0.6667,"x":0,"y":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.01},{"time":0.3333,"angle":0},{"time":0.5,"angle":-13.1},{"time":0.6667,"angle":0}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-5.06,"y":0.19,"curve":"stepped"},{"time":0.3,"x":-5.06,"y":0.19},{"time":0.3333,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.6333,"x":3.55,"y":0.11},{"time":0.6667,"x":-5.06,"y":0.19}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-24.9},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":23.73},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.847,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":14.09},{"time":0.3333,"angle":0},{"time":0.5,"angle":1.32},{"time":0.6667,"angle":0}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-18.88},{"time":0.3333,"angle":0},{"time":0.5,"angle":-18.88},{"time":0.6667,"angle":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye3"},{"time":0.0667,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2667,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4667,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6667,"name":"l_sadeye2"},{"time":0.7333,"name":"l_sadeye3"},{"time":0.8,"name":"l_sadeye1"},{"time":0.8667,"name":"l_sadeye2"},{"time":0.9333,"name":"l_sadeye3"},{"time":1,"name":"l_sadeye1"},{"time":1.0667,"name":"l_sadeye2"},{"time":1.1333,"name":"l_sadeye3"},{"time":1.2,"name":"l_sadeye1"},{"time":1.2667,"name":"l_sadeye2"},{"time":1.3333,"name":"l_sadeye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye3"},{"time":0.0667,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2667,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4667,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6667,"name":"r_sadeye2"},{"time":0.7333,"name":"r_sadeye3"},{"time":0.8,"name":"r_sadeye1"},{"time":0.8667,"name":"r_sadeye2"},{"time":0.9333,"name":"r_sadeye3"},{"time":1,"name":"r_sadeye1"},{"time":1.0667,"name":"r_sadeye2"},{"time":1.1333,"name":"r_sadeye3"},{"time":1.2,"name":"r_sadeye1"},{"time":1.2667,"name":"r_sadeye2"},{"time":1.3333,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-12.25,"curve":"stepped"},{"time":0.3333,"angle":-12.25,"curve":"stepped"},{"time":0.6667,"angle":-12.25,"curve":"stepped"},{"time":1,"angle":-12.25,"curve":"stepped"},{"time":1.3333,"angle":-12.25}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":0.992,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"x":1.02,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"x":0.992,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":1,"x":1.023,"y":0.992,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"x":0.992,"y":0.992}]},"head":{"rotate":[{"time":0,"angle":-17.07,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"angle":-14.54,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"angle":-13.65,"curve":"stepped"},{"time":1,"angle":-13.65},{"time":1.3333,"angle":-17.07}],"translate":[{"time":0,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.3333,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.6667,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1.3333,"x":-5.11,"y":1.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-15.49},{"time":0.3333,"angle":-14.04},{"time":0.6667,"angle":-16.32},{"time":1,"angle":-18.74},{"time":1.3333,"angle":-15.49}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.97},{"time":0.6667,"angle":0},{"time":1,"angle":-5.96},{"time":1.3333,"angle":0}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1333,"x":0,"y":0},{"time":0.1667,"x":0.84,"y":0.03},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5,"x":0.84,"y":0.03},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0},{"time":0.8333,"x":0.84,"y":0.03},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.1333,"x":0,"y":0},{"time":1.1667,"x":0.84,"y":0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.53},{"time":0.6667,"angle":0},{"time":1,"angle":4.1},{"time":1.3333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":-37.6},{"time":0.3333,"angle":-28.86},{"time":0.6667,"angle":-37.6},{"time":1,"angle":-8.72},{"time":1.3333,"angle":-37.6}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":7.81},{"time":0.3333,"angle":15.64},{"time":0.6667,"angle":7.81},{"time":1,"angle":25},{"time":1.3333,"angle":7.81}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.13},{"time":0.6667,"angle":0},{"time":1,"angle":-4.73},{"time":1.3333,"angle":0}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.1667,"name":"l_eye2"},{"time":1.2,"name":"l_eye3"},{"time":1.2667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.1667,"name":"r_eye2"},{"time":1.2,"name":"r_eye3"},{"time":1.2667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.91},{"time":0.6667,"angle":0},{"time":1,"angle":3.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.83,"y":-3.77},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.03,"y":-3.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.6},{"time":0.6667,"angle":0},{"time":1,"angle":-2.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.57,"y":-0.18},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.58,"y":3.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.63},{"time":0.6667,"angle":0},{"time":1,"angle":-1.4},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.63},{"time":0.6667,"angle":0},{"time":1,"angle":7.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.14},{"time":0.6667,"angle":0},{"time":1,"angle":-4.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.21},{"time":0.6667,"angle":0},{"time":1,"angle":23.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-2.09,"y":1.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.67},{"time":0.6667,"angle":0},{"time":1,"angle":-6.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.6667,"x":3.55,"y":0.11},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.56,"y":-0.02},{"time":0.8,"x":3.55,"y":0.11,"curve":"stepped"},{"time":1.1333,"x":3.55,"y":0.11},{"time":1.1667,"x":0,"y":0},{"time":1.2,"x":-3.56,"y":-0.02},{"time":1.2667,"x":3.55,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.04,"y":-2.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.07,"y":-2.85},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.27},{"time":0.6667,"angle":0},{"time":1,"angle":-4.18},{"time":1.3333,"angle":0}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"},{"time":0.1667,"name":"l_eye5"},{"time":0.5,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.1667,"name":"mouth_sad"},{"time":0.5,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"},{"time":0.1667,"name":"r_eye5"},{"time":0.5,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5},{"time":0.1667,"angle":18.09},{"time":0.5,"angle":-5}],"translate":[{"time":0,"x":-1.83,"y":-3.77},{"time":0.1667,"x":-2.83,"y":4.3},{"time":0.5,"x":-1.83,"y":-3.77}]},"head":{"rotate":[{"time":0,"angle":9.39},{"time":0.1667,"angle":12.48},{"time":0.5,"angle":9.39}],"translate":[{"time":0,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.1667,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.5,"x":-1.57,"y":-0.18}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":4.63},{"time":0.1667,"angle":28.22},{"time":0.5,"angle":4.63}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":29.95},{"time":0.1667,"angle":0.91},{"time":0.5,"angle":29.95}],"translate":[{"time":0,"x":2.02,"y":2.38,"curve":"stepped"},{"time":0.1667,"x":2.02,"y":2.38,"curve":"stepped"},{"time":0.5,"x":2.02,"y":2.38}]},"l_arm1":{"rotate":[{"time":0,"angle":-17.52},{"time":0.1667,"angle":61.59},{"time":0.5,"angle":-17.52}]},"l_arm2":{"rotate":[{"time":0,"angle":-0.4},{"time":0.1667,"angle":11.3},{"time":0.5,"angle":-0.4}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}]},"hair2":{"rotate":[{"time":0,"angle":2.67},{"time":0.1667,"angle":345.35},{"time":0.5,"angle":2.67}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":11.23,"y":0.34,"curve":"stepped"},{"time":0.1667,"x":11.23,"y":0.34,"curve":"stepped"},{"time":0.5,"x":11.23,"y":0.34}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":43.35},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-5.09,"y":6.65},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1},{"time":0.3667,"x":0.889,"y":1},{"time":0.5,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":3.95},{"time":0.1667,"angle":-321.36},{"time":0.5,"angle":3.95}],"translate":[{"time":0,"x":-4,"y":1.92,"curve":"stepped"},{"time":0.1667,"x":-4,"y":1.92,"curve":"stepped"},{"time":0.5,"x":-4,"y":1.92}]},"eff_exclamation":{"translate":[{"time":0,"x":-13.55,"y":-8.86}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":38.09},{"time":0.5,"angle":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.5,"name":"mouth1"},{"time":0.5333,"name":"mouth2"},{"time":0.5667,"name":"mouth1"},{"time":0.6667,"name":"mouth2"},{"time":0.7,"name":"mouth3"},{"time":0.7333,"name":"mouth2"},{"time":0.8,"name":"mouth1"},{"time":0.8333,"name":"mouth2"},{"time":0.8667,"name":"mouth1"},{"time":1.0667,"name":"mouth2"},{"time":1.1,"name":"mouth3"},{"time":1.1667,"name":"mouth2"},{"time":1.2,"name":"mouth1"},{"time":1.2667,"name":"mouth2"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.78},{"time":0.6667,"angle":0},{"time":1,"angle":1.21},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.83,"y":-3.77},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.03,"y":-3.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.6},{"time":0.6667,"angle":0},{"time":1,"angle":-2.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.57,"y":-0.18},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.58,"y":3.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.63},{"time":0.6667,"angle":0},{"time":1,"angle":-1.4},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.63},{"time":0.6667,"angle":0},{"time":1,"angle":7.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.14},{"time":0.6667,"angle":0},{"time":1,"angle":-4.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.21},{"time":0.6667,"angle":0},{"time":1,"angle":23.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-2.09,"y":1.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.67},{"time":0.6667,"angle":0},{"time":1,"angle":-6.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.55,"y":0.11,"curve":"stepped"},{"time":0.6667,"x":3.55,"y":0.11},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.56,"y":-0.02},{"time":0.8,"x":3.55,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.04,"y":-2.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.07,"y":-2.85},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.39},{"time":1.3333,"angle":0}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.1667,"name":"l_eye5"},{"time":0.3333,"name":"l_eye4"},{"time":0.5,"name":"l_eye5"},{"time":0.6667,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1667,"name":"mouth7"},{"time":0.3333,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.6667,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.1667,"name":"r_eye5"},{"time":0.3333,"name":"r_eye4"},{"time":0.5,"name":"r_eye5"},{"time":0.6667,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":5.75},{"time":0.3333,"angle":0},{"time":0.5,"angle":-10.43},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":12.87},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.98},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.97},{"time":0.3333,"angle":0},{"time":0.5,"angle":-20.53},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":24.18},{"time":0.3333,"angle":0},{"time":0.5,"angle":17.49},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.21},{"time":0.3333,"angle":0},{"time":0.5,"angle":23.49},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.09,"y":1.02},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":7.56},{"time":0.3333,"angle":0},{"time":0.5,"angle":-9.2},{"time":0.6667,"angle":0}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-1.48,"y":-0.05}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":15.06},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.47},{"time":0.6667,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/202201.png b/m78-all/m78-fe/public/images/character/202201.png new file mode 100644 index 000000000..b170a8a63 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/202201.png differ diff --git a/m78-all/m78-fe/public/images/character/202301.atlas b/m78-all/m78-fe/public/images/character/202301.atlas new file mode 100644 index 000000000..9eeb412e5 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/202301.atlas @@ -0,0 +1,342 @@ + +202301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_coat + rotate: false + xy: 2, 16 + size: 103, 67 + orig: 103, 67 + offset: 0, 0 + index: -1 +belt + rotate: false + xy: 463, 205 + size: 47, 20 + orig: 47, 20 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 291, 141 + size: 45, 60 + orig: 45, 60 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 191, 183 + size: 86, 71 + orig: 86, 71 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 85 + size: 187, 169 + orig: 187, 169 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 463, 227 + size: 27, 47 + orig: 27, 47 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 292, 78 + size: 28, 35 + orig: 28, 35 + offset: 0, 0 + index: -1 +l_coat + rotate: false + xy: 191, 87 + size: 48, 94 + orig: 48, 94 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 459, 177 + size: 26, 34 + orig: 26, 34 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 344, 16 + size: 28, 28 + orig: 28, 28 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 204, 14 + size: 29, 11 + orig: 29, 11 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: true + xy: 494, 149 + size: 26, 16 + orig: 26, 16 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: true + xy: 344, 46 + size: 30, 27 + orig: 30, 27 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: false + xy: 445, 120 + size: 28, 25 + orig: 28, 25 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: false + xy: 414, 119 + size: 29, 26 + orig: 29, 26 + offset: 0, 0 + index: -1 +l_eye_surprised1 + rotate: true + xy: 423, 188 + size: 28, 34 + orig: 28, 34 + offset: 0, 0 + index: -1 +l_eye_surprised2 + rotate: true + xy: 423, 158 + size: 28, 34 + orig: 28, 34 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 344, 3 + size: 30, 11 + orig: 30, 11 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 445, 108 + size: 28, 10 + orig: 28, 10 + offset: 0, 0 + index: -1 +l_hair + rotate: false + xy: 107, 17 + size: 64, 66 + orig: 64, 66 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 173, 19 + size: 29, 64 + orig: 29, 64 + offset: 0, 0 + index: -1 +l_shoulder + rotate: true + xy: 315, 40 + size: 36, 27 + orig: 36, 27 + offset: 0, 0 + index: -1 +mouth_1 + rotate: false + xy: 416, 147 + size: 30, 9 + orig: 30, 9 + offset: 0, 0 + index: -1 +mouth_2 + rotate: false + xy: 181, 2 + size: 30, 10 + orig: 30, 10 + offset: 0, 0 + index: -1 +mouth_3 + rotate: false + xy: 326, 121 + size: 28, 14 + orig: 28, 14 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 241, 78 + size: 49, 35 + orig: 49, 35 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 356, 127 + size: 17, 8 + orig: 17, 8 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 291, 115 + size: 33, 24 + orig: 33, 24 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 2, 6 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 40, 6 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 204, 27 + size: 29, 58 + orig: 29, 58 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 235, 40 + size: 41, 36 + orig: 41, 36 + offset: 0, 0 + index: -1 +r_coat + rotate: true + xy: 279, 203 + size: 51, 100 + orig: 51, 100 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 235, 2 + size: 36, 39 + orig: 36, 39 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 375, 150 + size: 39, 33 + orig: 39, 33 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 375, 134 + size: 37, 14 + orig: 37, 14 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 475, 118 + size: 27, 14 + orig: 27, 14 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: true + xy: 322, 78 + size: 35, 28 + orig: 35, 28 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: false + xy: 459, 147 + size: 33, 28 + orig: 33, 28 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: true + xy: 313, 2 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +r_eye_surprised1 + rotate: true + xy: 276, 2 + size: 36, 35 + orig: 36, 35 + offset: 0, 0 + index: -1 +r_eye_surprised2 + rotate: true + xy: 278, 40 + size: 36, 35 + orig: 36, 35 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 107, 2 + size: 35, 13 + orig: 35, 13 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 144, 2 + size: 35, 13 + orig: 35, 13 + offset: 0, 0 + index: -1 +r_hair + rotate: true + xy: 381, 218 + size: 36, 80 + orig: 36, 80 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 338, 137 + size: 35, 64 + orig: 35, 64 + offset: 0, 0 + index: -1 +r_shoulder + rotate: false + xy: 381, 185 + size: 40, 31 + orig: 40, 31 + offset: 0, 0 + index: -1 +rose + rotate: false + xy: 241, 115 + size: 48, 66 + orig: 48, 66 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/202301.json b/m78-all/m78-fe/public/images/character/202301.json new file mode 100644 index 000000000..475f8f736 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/202301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"HEhhDGUJ0dMEOKJ9/KJ/VGBorg0","spine":"3.5.25","width":187,"height":259,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":51.48,"rotation":90.47,"x":0.96,"y":48.12},{"name":"b_coat","parent":"body","length":50.36,"rotation":179.53,"x":18.8,"y":-3.85},{"name":"belt","parent":"body","length":15.19,"rotation":179.53,"x":7.6,"y":0.36},{"name":"eff_exclamation","parent":"root","length":23.39,"rotation":37.37,"x":76.31,"y":218.03},{"name":"eff_panic","parent":"root","length":24.06,"rotation":4.03,"x":87.12,"y":152.46},{"name":"eff_sad1","parent":"root","length":21.49,"rotation":-90.52,"x":-6.46,"y":117.83},{"name":"eff_sad2","parent":"root","length":21.17,"rotation":-89.65,"x":55.27,"y":109.47},{"name":"eff_star1","parent":"root","length":17.71,"rotation":23.63,"x":59.75,"y":74.38},{"name":"eff_star2","parent":"root","length":17.54,"rotation":154.92,"x":-60.92,"y":73.37},{"name":"eff_star3","parent":"root","length":15.51,"rotation":-16.46,"x":62.45,"y":37.88},{"name":"head","parent":"body","length":149.73,"rotation":-0.34,"x":44.5,"y":-1.69},{"name":"f_hair","parent":"head","length":86.64,"rotation":-147.56,"x":132.22,"y":27.76},{"name":"l_arm1","parent":"body","length":33.46,"rotation":-150.8,"x":42.06,"y":-11.47},{"name":"l_arm2","parent":"l_arm1","length":24.69,"rotation":-32.03,"x":21.79,"y":8.2},{"name":"l_eye","parent":"head","length":16.26,"rotation":3.45,"x":22.23,"y":-36.55},{"name":"l_eyebrow","parent":"head","length":17.5,"rotation":-80.12,"x":70.59,"y":-21.12},{"name":"l_hair","parent":"head","length":78.23,"rotation":-141.97,"x":121.67,"y":-3.99},{"name":"l_leg","parent":"root","length":58.23,"rotation":-90,"x":8.13,"y":58.67},{"name":"l_shoulder","parent":"l_arm1","length":19.5,"rotation":86,"x":9.26,"y":0.56},{"name":"mouth","parent":"head","length":14.41,"rotation":39.16,"x":1.97,"y":-25.02},{"name":"r_arm1","parent":"body","length":32.41,"rotation":149.49,"x":40.93,"y":16.59},{"name":"r_arm2","parent":"r_arm1","length":26.37,"rotation":29.31,"x":15.43,"y":0.33},{"name":"r_eye","parent":"head","length":16.26,"rotation":-3.71,"x":24.04,"y":20.23},{"name":"r_eyebrow","parent":"head","length":20.97,"rotation":88.02,"x":69.98,"y":7.95},{"name":"r_hair","parent":"head","length":79.95,"rotation":175.99,"x":122.44,"y":39.27},{"name":"r_leg","parent":"root","length":58.23,"rotation":-90,"x":-11.7,"y":58.67},{"name":"r_shoulder","parent":"r_arm1","length":21.5,"rotation":-113.27,"x":7.76,"y":-0.59},{"name":"rose","parent":"r_arm2","length":30.42,"rotation":90.73,"x":15.06,"y":12.02}],"slots":[{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_shoulder","bone":"l_shoulder","attachment":"l_shoulder"},{"name":"b_coat","bone":"b_coat","attachment":"b_coat"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body","attachment":"body1"},{"name":"belt","bone":"belt","attachment":"belt"},{"name":"l_coat","bone":"b_coat","attachment":"l_coat"},{"name":"r_coat","bone":"b_coat","attachment":"r_coat"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_shoulder","bone":"r_shoulder","attachment":"r_shoulder"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth_1","bone":"mouth","attachment":"mouth_1"},{"name":"rose","bone":"rose","attachment":"rose"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"}],"skins":{"default":{"b_coat":{"b_coat":{"x":36.24,"y":-5.35,"rotation":90,"width":103,"height":67}},"belt":{"belt":{"x":3.51,"y":-0.24,"rotation":90,"width":47,"height":20}},"body1":{"body1":{"x":28.09,"y":0.43,"rotation":-90.47,"width":45,"height":60}},"f_hair":{"f_hair":{"x":50.85,"y":1.42,"rotation":57.43,"width":86,"height":71}},"head":{"head":{"x":79.11,"y":14.81,"rotation":-90.13,"width":187,"height":169}},"l_arm1":{"l_arm1":{"x":21.56,"y":-1.68,"rotation":60.33,"width":27,"height":47}},"l_arm2":{"l_arm2":{"x":12.89,"y":-4.68,"rotation":92.35,"width":28,"height":35}},"l_coat":{"l_coat":{"x":18.74,"y":23.15,"rotation":90,"width":48,"height":94}},"l_eye1":{"l_eye1":{"x":21.45,"y":0.19,"rotation":-93.58,"width":26,"height":34},"l_eye2":{"x":20.75,"y":0.23,"rotation":-93.58,"width":28,"height":28},"l_eye3":{"x":17.23,"y":0.45,"rotation":-93.58,"width":29,"height":11},"l_eye_happy":{"x":17.94,"y":0.41,"rotation":-93.58,"width":26,"height":16},"l_eye_sad1":{"x":20.75,"y":0.23,"rotation":-93.58,"width":30,"height":27},"l_eye_sad2":{"x":20.05,"y":0.28,"rotation":-93.58,"width":28,"height":25},"l_eye_sad3":{"x":21.1,"y":0.21,"rotation":-93.58,"width":29,"height":26},"l_eye_surprised1":{"x":21.45,"y":0.19,"rotation":-93.58,"width":28,"height":34},"l_eye_surprised2":{"x":21.45,"y":0.19,"rotation":-93.58,"width":28,"height":34}},"l_eyebrow":{"l_eyebrow":{"x":13.02,"y":-9.99,"rotation":-10.01,"width":30,"height":11},"l_eyebrow_sad":{"x":13.02,"y":-9.99,"rotation":-10.01,"width":28,"height":10}},"l_hair":{"l_hair":{"x":50.12,"y":-2.75,"rotation":51.84,"width":64,"height":66}},"l_leg":{"l_leg":{"x":28.46,"y":2.17,"rotation":90,"width":29,"height":64}},"l_shoulder":{"l_shoulder":{"x":15.02,"y":-2.55,"rotation":-25.68,"width":36,"height":27}},"mouth_1":{"mouth_1":{"x":23.22,"y":6.2,"rotation":-129.29,"width":30,"height":9},"mouth_2":{"x":23.22,"y":6.2,"rotation":-129.29,"width":30,"height":10},"mouth_3":{"x":23.22,"y":6.2,"rotation":-129.29,"width":28,"height":14},"mouth_happy":{"x":23.22,"y":6.2,"rotation":-129.29,"width":49,"height":35},"mouth_sad":{"x":23.22,"y":6.2,"rotation":-129.29,"width":17,"height":8},"mouth_surprised":{"x":23.22,"y":6.2,"rotation":-129.29,"width":33,"height":24},"mouth_uneasy1":{"x":23.22,"y":6.2,"rotation":-129.29,"width":36,"height":8},"mouth_uneasy2":{"x":23.22,"y":6.2,"rotation":-129.29,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":26.26,"y":3.94,"rotation":120.04,"width":29,"height":58}},"r_arm2":{"r_arm2":{"x":11.13,"y":4.85,"rotation":90.73,"width":41,"height":36}},"r_coat":{"r_coat":{"x":19.74,"y":-31.35,"rotation":90,"width":51,"height":100}},"r_eye1":{"r_eye1":{"x":16.09,"y":0.21,"rotation":-86.42,"width":36,"height":39},"r_eye2":{"x":16.09,"y":0.21,"rotation":-86.42,"width":39,"height":33},"r_eye3":{"x":16.09,"y":0.21,"rotation":-86.42,"width":37,"height":14},"r_eye_happy":{"x":16.09,"y":0.21,"rotation":-86.42,"width":27,"height":14},"r_eye_sad1":{"x":16.09,"y":0.21,"rotation":-86.42,"width":35,"height":28},"r_eye_sad2":{"x":16.09,"y":0.21,"rotation":-86.42,"width":33,"height":28},"r_eye_sad3":{"x":16.09,"y":0.21,"rotation":-86.42,"width":36,"height":29},"r_eye_surprised1":{"x":16.09,"y":0.21,"rotation":-86.42,"width":36,"height":35},"r_eye_surprised2":{"x":16.09,"y":0.21,"rotation":-86.42,"width":36,"height":35}},"r_eyebrow":{"r_eyebrow":{"x":15.55,"y":10.4,"rotation":-178.15,"width":35,"height":13},"r_eyebrow_sad":{"x":15.55,"y":10.4,"rotation":-178.15,"width":35,"height":13}},"r_hair":{"r_hair":{"x":47.94,"y":-0.7,"rotation":93.88,"width":36,"height":80}},"r_leg":{"r_leg":{"x":29.46,"y":4,"rotation":90,"width":35,"height":64}},"r_shoulder":{"r_shoulder":{"x":13.05,"y":8.79,"rotation":-126.69,"width":40,"height":31}},"rose":{"rose":{"x":16.37,"y":11.02,"width":48,"height":66}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":1.3333,"name":"l_eye1"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_1"},{"time":1.3333,"name":"mouth_1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.99},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.966,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":1,"angle":9.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-8.71,"curve":"stepped"},{"time":1.3333,"angle":-8.71}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-4.93,"y":2.81},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-4.93,"y":2.81},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7333,"x":-2.99,"y":-2.11,"curve":"stepped"},{"time":1.2667,"x":-2.99,"y":-2.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7333,"x":-2.99,"y":-2.11,"curve":"stepped"},{"time":1.2667,"x":-2.99,"y":-2.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.5},{"time":0.5,"angle":0},{"time":1.1667,"angle":-8.53},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.81},{"time":0.3333,"angle":0},{"time":0.6667,"angle":-3.54},{"time":1,"angle":-4.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":1,"angle":-4.73},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-10.15},{"time":0.5,"angle":0},{"time":0.7667,"angle":7.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":4.3},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":4.3},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":17.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-19.95},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":3.06,"y":-1.48},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.92},{"time":0.5,"angle":-5.25},{"time":0.7333,"angle":2.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":3.11,"y":-0.37},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.93},{"time":0.5,"angle":0},{"time":0.8333,"angle":5.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-4.78},{"time":0.5,"angle":0},{"time":0.7333,"angle":8.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":1.67,"y":-2.36},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.92,"y":-0.24},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":1.67,"y":-2.36},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.92,"y":-0.24},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":2.86},{"time":0.7333,"angle":-3.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.56},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":2.36},{"time":0.8333,"angle":-2.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.5,"name":"l_eye1"},{"time":0.6667,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_1"},{"time":0.3333,"name":"mouth_3"},{"time":0.6667,"name":"mouth_2"},{"time":0.8333,"name":"mouth_3"},{"time":1,"name":"mouth_2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.5,"name":"r_eye1"},{"time":0.6667,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":0.5,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-5.51},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.61},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.79},{"time":0.8333,"angle":2.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.87,"y":1.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.52},{"time":0.5,"angle":0},{"time":0.8333,"angle":2.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5,"x":9.05,"y":-0.02,"curve":"stepped"},{"time":0.6333,"x":9.05,"y":-0.02},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5,"x":8.9,"y":-0.02},{"time":0.6333,"x":12,"y":-0.03},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.33},{"time":0.8333,"angle":-0.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.79},{"time":0.6667,"angle":0.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-2.62},{"time":0.8333,"angle":0.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad1"},{"time":0.1667,"name":"l_eye_sad2"},{"time":0.3333,"name":"l_eye_sad3"},{"time":0.5,"name":"l_eye_sad1"},{"time":0.6667,"name":"l_eye_sad2"},{"time":0.8333,"name":"l_eye_sad3"},{"time":1,"name":"l_eye_sad1"},{"time":1.1667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad1"},{"time":0.1667,"name":"r_eye_sad2"},{"time":0.3333,"name":"r_eye_sad3"},{"time":0.5,"name":"r_eye_sad1"},{"time":0.6667,"name":"r_eye_sad2"},{"time":0.8333,"name":"r_eye_sad3"},{"time":1,"name":"r_eye_sad1"},{"time":1.1667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-1.88},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-12.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-356.21},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.86},{"time":0.6667,"angle":-14.03},{"time":1.3333,"angle":-13.86}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-4.74},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-1.86,"y":-0.84},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-9.02},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.16,"y":-2.89},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":5.47},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.54,"y":0.13},{"time":0.6667,"x":-3.02,"y":-0.65,"curve":"stepped"},{"time":1,"x":-3.02,"y":-0.65},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.54,"y":0.13},{"time":0.6667,"x":-3.02,"y":-0.65,"curve":"stepped"},{"time":1,"x":-3.02,"y":-0.65},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.7333,"angle":2.94},{"time":0.8333,"angle":2.82},{"time":1.2333,"angle":0.88},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-0.01},{"time":0.8333,"angle":2.25},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.28},{"time":1,"angle":4.87},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":9.33},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_1"},{"time":1.3333,"name":"mouth_1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.37},{"time":0.6667,"angle":0},{"time":1,"angle":3.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.96},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.038,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.038,"y":1},{"time":1.3333,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-358.27},{"time":0.6667,"angle":0},{"time":1,"angle":-1.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.44,"y":0.1},{"time":0.6667,"x":0,"y":0},{"time":1,"x":1.57,"y":-0.1},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.941,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.932,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.38},{"time":0.6667,"angle":0},{"time":1,"angle":-4.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.77,"y":-0.12},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.59,"y":0.04},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.025,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.53},{"time":0.6667,"angle":0},{"time":1,"angle":3.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.62},{"time":0.6667,"angle":0},{"time":1,"angle":4.36},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6,"x":-3.23,"y":-0.06},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6,"x":-3.23,"y":-0.06},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":2.1},{"time":1.1,"angle":-2.54},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":2.29},{"time":1.0333,"angle":-2.68},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.9},{"time":1.1667,"angle":-1.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised1"},{"time":1,"name":"l_eye_surprised1"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised1"},{"time":1,"name":"r_eye_surprised1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0.02},{"time":0.2667,"angle":6.02},{"time":0.5,"angle":0.02},{"time":0.7333,"angle":-3.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":4.38},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":4.38},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.62},{"time":0.6667,"angle":3.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.84,"y":-0.28},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.958,"y":0.963},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-21.78},{"time":0.6667,"angle":-1.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.9},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.55,"y":1.05},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.47},{"time":0.6667,"angle":-4.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.36,"y":-0.34},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.36,"y":-0.34},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":6.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-7.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":6.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised1"},{"time":0.5,"name":"l_eye_surprised2"},{"time":1,"name":"l_eye_surprised1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1,"name":"l_eyebrow_sad"}]},"mouth_1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised1"},{"time":0.5,"name":"r_eye_surprised2"},{"time":1,"name":"r_eye_surprised1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1,"name":"r_eyebrow_sad"}]}},"bones":{"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.33},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":3.13},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":1.88},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-33.91},{"time":0.3333,"angle":-38.97},{"time":1,"angle":-33.91}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.858,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.76},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-8.42},{"time":0.3333,"angle":-4.49},{"time":0.6667,"angle":-12.23},{"time":1,"angle":-8.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.25},{"time":0.5,"angle":0},{"time":0.7667,"angle":9.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.12,"y":-0.14},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":3.12,"y":0.15},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.47},{"time":0.5,"angle":0},{"time":0.8333,"angle":2.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.73},{"time":0.5,"angle":0},{"time":0.8333,"angle":-5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0.11},{"time":0.3333,"angle":4.24},{"time":0.5,"angle":0},{"time":0.8333,"angle":4.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rose":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/202301.png b/m78-all/m78-fe/public/images/character/202301.png new file mode 100644 index 000000000..e38121389 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/202301.png differ diff --git a/m78-all/m78-fe/public/images/character/203101.atlas b/m78-all/m78-fe/public/images/character/203101.atlas new file mode 100644 index 000000000..f6f3920a1 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/203101.atlas @@ -0,0 +1,314 @@ + +203101.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 982, 91 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 362, 71 + size: 76, 55 + orig: 76, 55 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 362, 49 + size: 70, 20 + orig: 70, 20 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 440, 106 + size: 70, 20 + orig: 70, 20 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 17 + size: 144, 109 + orig: 144, 109 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 148, 2 + size: 124, 125 + orig: 124, 125 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 885, 55 + size: 26, 31 + orig: 26, 31 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 942, 21 + size: 22, 28 + orig: 22, 28 + offset: 0, 0 + index: -1 +l_arm3 + rotate: false + xy: 913, 56 + size: 27, 30 + orig: 27, 30 + offset: 0, 0 + index: -1 +l_arm4 + rotate: true + xy: 942, 45 + size: 20, 32 + orig: 20, 32 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 362, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 402, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 440, 66 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 442, 19 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 442, 19 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: true + xy: 512, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye7 + rotate: true + xy: 559, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_hair + rotate: false + xy: 325, 28 + size: 35, 98 + orig: 35, 98 + offset: 0, 0 + index: -1 +l_happyeye + rotate: true + xy: 606, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 942, 67 + size: 19, 34 + orig: 19, 34 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 487, 61 + size: 22, 7 + orig: 22, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 511, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 549, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 587, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 625, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 663, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 701, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 739, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 777, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 482, 61 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 815, 57 + size: 29, 35 + orig: 29, 35 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 913, 28 + size: 27, 26 + orig: 27, 26 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 852, 55 + size: 31, 31 + orig: 31, 31 + offset: 0, 0 + index: -1 +r_arm4 + rotate: false + xy: 487, 70 + size: 22, 34 + orig: 22, 34 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 653, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 700, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 747, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 794, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: true + xy: 794, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: true + xy: 841, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye7 + rotate: true + xy: 888, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_hair + rotate: false + xy: 275, 4 + size: 48, 122 + orig: 48, 122 + offset: 0, 0 + index: -1 +r_happyeye + rotate: true + xy: 935, 88 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 325, 5 + size: 21, 35 + orig: 21, 35 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/203101.json b/m78-all/m78-fe/public/images/character/203101.json new file mode 100644 index 000000000..de5149fb3 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/203101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"+8tLqfmU2C8T5Hm0ADcmPZp2psY","spine":"3.5.25","width":169.57,"height":238.23,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":2.93,"y":53.6},{"name":"body2","parent":"body","length":6.77,"rotation":177.8,"x":-1.89,"y":0.08},{"name":"l_arm","parent":"body","length":13.57,"rotation":174.16,"x":29.84,"y":-14.17},{"name":"bone2","parent":"l_arm","length":12.12,"rotation":-27.46,"x":18.59,"y":0.88},{"name":"eff_exclamation","parent":"root","length":22.03,"rotation":62.33,"x":56.1,"y":226.13},{"name":"eff_panic","parent":"root","length":18.48,"rotation":47.46,"x":79.82,"y":188.55},{"name":"eff_sad1","parent":"root","length":22.05,"rotation":-90.9,"x":-6.58,"y":125.99},{"name":"eff_sad2","parent":"root","length":18.04,"rotation":-90,"x":43.37,"y":112.54},{"name":"eff_star1","parent":"root","length":15.56,"rotation":33.17,"x":45.69,"y":85.91},{"name":"eff_star2","parent":"root","length":13.15,"rotation":162.52,"x":-43.2,"y":75.18},{"name":"eff_star3","parent":"root","length":11.65,"rotation":-25.29,"x":39.25,"y":54.88},{"name":"head","parent":"body","length":132.6,"x":38.84,"y":4.06},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":64.39,"y":-8.82},{"name":"hair1","parent":"head","length":38.65,"rotation":-179.27,"x":117.84,"y":-5.49},{"name":"l_hair","parent":"head","length":37.63,"rotation":177.82,"x":79.5,"y":-51.68},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":6.84,"y":44.21},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":15.17,"y":-5.92},{"name":"r_arm","parent":"body","length":21.99,"rotation":-164.95,"x":32.54,"y":23.13},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":20.35,"x":25.24,"y":1.56},{"name":"r_hair","parent":"head","length":33.95,"rotation":-175.29,"x":76.72,"y":63.8},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-7.44,"y":46.57}],"slots":[{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"png/body2","bone":"body2","attachment":"body2"},{"name":"png/body1","bone":"body","attachment":"body"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"png/f_hair1","bone":"hair1","attachment":"f_hair"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"l_arm2","bone":"bone2","attachment":"l_arm2"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"첼샤2","bone":"root"}],"skins":{"default":{"eyebrow":{"eyebrow1":{"x":1.03,"y":1.65,"rotation":-91.35,"width":70,"height":20},"eyebrow2":{"rotation":-91.35,"width":70,"height":20}},"l_arm1":{"l_arm1":{"x":7.5,"y":0.14,"rotation":89.47,"width":26,"height":31},"l_arm3":{"rotation":96.74,"width":27,"height":30}},"l_arm2":{"l_arm2":{"x":11.3,"y":0.58,"rotation":123.26,"width":22,"height":28},"l_arm4":{"rotation":124.2,"width":20,"height":32}},"l_eye":{"l_eye1":{"x":40.46,"y":-31.6,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":42.25,"y":-32.04,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":42.25,"y":-32.04,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":42.25,"y":-32.04,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":42.25,"y":-32.04,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":42.5,"y":-31.7,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":42.5,"y":-31.7,"rotation":-89.1,"width":38,"height":45},"l_eye8":{"path":"l_eye7","x":38.94,"y":-30.66,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":42.25,"y":-32.04,"rotation":-89.55,"width":38,"height":45}},"l_hair":{"l_hair":{"x":38.91,"y":-3.25,"rotation":81.09,"width":35,"height":98}},"mouth":{"mouth1":{"x":-0.64,"y":0.14,"rotation":87.75,"width":22,"height":7},"mouth2":{"x":-0.64,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":-0.64,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":-0.64,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":-0.64,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":-0.64,"y":0.14,"rotation":88.64,"width":36,"height":26},"mouth7":{"x":-0.64,"y":0.14,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":-0.64,"y":0.14,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-0.64,"y":0.14,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":26.02,"y":-19.57,"rotation":-89.55,"width":3,"height":3}},"png/body1":{"body":{"x":22.76,"y":3.29,"rotation":-89.1,"width":35,"height":40}},"png/body2":{"body2":{"x":7.19,"y":-6.58,"rotation":93.1,"width":76,"height":55}},"png/f_hair1":{"f_hair":{"x":27.53,"y":-12.59,"rotation":90.17,"width":144,"height":109}},"png/head":{"head":{"x":57.56,"y":7.21,"rotation":-89.55,"width":124,"height":125}},"png/l_leg":{"l_leg":{"x":27.84,"y":-0.71,"rotation":88.65,"width":19,"height":34}},"png/r_leg":{"r_leg":{"x":30.01,"y":-3.11,"rotation":88.73,"width":21,"height":35}},"r_arm1":{"r_arm1":{"x":11.76,"y":0.04,"rotation":74.4,"width":29,"height":35},"r_arm3":{"rotation":75.86,"width":31,"height":31}},"r_arm2":{"r_arm2":{"x":11.4,"y":-0.94,"rotation":51.59,"width":27,"height":26},"r_arm4":{"rotation":55.5,"width":22,"height":34}},"r_eye":{"r_eye1":{"x":37.5,"y":26.26,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":36.79,"y":26.25,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":36.79,"y":26.25,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":36.79,"y":26.25,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":36.79,"y":26.25,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":36.59,"y":26.54,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":36.59,"y":26.54,"rotation":-89.1,"width":38,"height":45},"r_eye8":{"path":"r_eye7","x":38.04,"y":23.99,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":36.79,"y":26.25,"rotation":-89.55,"width":38,"height":45}},"r_hair":{"r_hair":{"x":29.06,"y":-2.15,"rotation":93.82,"width":48,"height":122}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1667,"name":"l_eye7"},{"time":0.2333,"name":"l_eye3"},{"time":0.6,"name":"l_eye7"},{"time":0.6667,"name":"l_eye1"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3,"name":"mouth2"},{"time":0.3667,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.5333,"name":"mouth1"},{"time":0.6667,"name":"mouth3"},{"time":0.8333,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1667,"name":"r_eye7"},{"time":0.2333,"name":"r_eye3"},{"time":0.6,"name":"r_eye7"},{"time":0.6667,"name":"r_eye1"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.92},{"time":0.4333,"angle":0},{"time":0.6667,"angle":2.65},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.02,"y":2.67},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":-0.01,"y":4.94},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":1.02,"y":1},{"time":0.8333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.42},{"time":0.4333,"angle":-21.1},{"time":0.6667,"angle":-20.68},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.63,"y":0},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":1.63,"y":0},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":359.24},{"time":0.8333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4333,"x":1.017,"y":1.016},{"time":0.8333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1,"angle":22.86},{"time":0.4333,"angle":14.96},{"time":0.6667,"angle":44.82},{"time":0.8333,"angle":13.12}],"translate":[{"time":0,"x":-6.39,"y":-2.62},{"time":0.1,"x":-3.66,"y":-6.28},{"time":0.4333,"x":-4.17,"y":-11.46},{"time":0.6667,"x":-3.24,"y":-9.41},{"time":0.8333,"x":-6.89,"y":-4.2}]},"r_arm2":{"rotate":[{"time":0,"angle":88.59},{"time":0.1,"angle":58.04},{"time":0.4333,"angle":22.54},{"time":0.6667,"angle":24.61},{"time":0.8333,"angle":88.59}],"translate":[{"time":0,"x":-18.68,"y":-0.94},{"time":0.1,"x":-20.02,"y":-1.73},{"time":0.4333,"x":-19.47,"y":0.21},{"time":0.6667,"x":-19.45,"y":1.28},{"time":0.8333,"x":-18.68,"y":-0.94}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3,"x":-11.19,"y":0,"curve":"stepped"},{"time":0.5667,"x":-11.19,"y":0},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.19},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":0.03,"y":-1.19},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.976,"y":1},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":0.976,"y":1},{"time":0.8333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":0.03,"y":-1.43},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":0.968,"y":1},{"time":0.8333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.12},{"time":0.4333,"angle":0},{"time":0.6667,"angle":-4.12},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4333,"x":-3.07,"y":0.12},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.949,"y":1.074},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":0.949,"y":1.074},{"time":0.8333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":7.85},{"time":0.8333,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.4333,"angle":-337.47},{"time":0.8333,"angle":10.53}],"translate":[{"time":0,"x":6.17,"y":5.73}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4333,"x":0.925,"y":1},{"time":0.8333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1,"angle":-18.41},{"time":0.4333,"angle":-20.23,"curve":"stepped"},{"time":0.6667,"angle":-20.23},{"time":0.8333,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1,"x":-4.22,"y":0.18},{"time":0.4333,"x":-8.92,"y":0.62},{"time":0.6667,"x":-5.64,"y":0.93},{"time":0.8333,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":-112.89},{"time":0.1,"angle":-90.73},{"time":0.4333,"angle":-66.92},{"time":0.6667,"angle":-117.11},{"time":0.8333,"angle":-112.89}],"translate":[{"time":0,"x":-12.72,"y":7.81},{"time":0.1,"x":-12.88,"y":6.21},{"time":0.4333,"x":-12.66,"y":5.53},{"time":0.6667,"x":-9.88,"y":5.55},{"time":0.8333,"x":-12.72,"y":7.81}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":1,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.7},{"time":0.5,"angle":0},{"time":0.7333,"angle":-6.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.89,"y":-5.46},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-1.23,"y":-0.72},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.044,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.2},{"time":0.5,"angle":0},{"time":0.7333,"angle":-5.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.28,"y":-0.16},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.44,"y":3.29},{"time":1,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.56,"y":-1.09},{"time":0.2667,"x":1.66,"y":-1.07},{"time":0.5,"x":0.56,"y":-1.09},{"time":0.7333,"x":1.76,"y":-1.08},{"time":1,"x":0.56,"y":-1.09}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.028,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.016,"y":1},{"time":1,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":-9.21,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":6.15},{"time":0.2667,"angle":-2.51},{"time":0.5,"angle":6.15},{"time":0.7333,"angle":12.76},{"time":1,"angle":6.15}],"translate":[{"time":0,"x":-0.04,"y":2.33,"curve":"stepped"},{"time":0.2667,"x":-0.04,"y":2.33,"curve":"stepped"},{"time":0.5,"x":-0.04,"y":2.33,"curve":"stepped"},{"time":0.7333,"x":-0.04,"y":2.33,"curve":"stepped"},{"time":1,"x":-0.04,"y":2.33}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.089,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.089,"y":1},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":17.17},{"time":0.2667,"angle":84.92},{"time":0.5,"angle":83.8},{"time":0.7333,"angle":74.92},{"time":1,"angle":17.17}],"translate":[{"time":0,"x":-0.27,"y":-2.67,"curve":"stepped"},{"time":0.2667,"x":-0.27,"y":-2.67,"curve":"stepped"},{"time":0.5,"x":-0.27,"y":-2.67,"curve":"stepped"},{"time":0.7333,"x":-0.27,"y":-2.67,"curve":"stepped"},{"time":1,"x":-0.27,"y":-2.67}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-355.19},{"time":0.5,"angle":0},{"time":0.7333,"angle":-356.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.04,"y":-0.61},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-0.73,"y":2.98},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.888,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":0.926,"y":1},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-1.25},{"time":0.2667,"angle":-346.09},{"time":0.5,"angle":-1.25},{"time":0.7333,"angle":-2.96},{"time":1,"angle":-1.25}],"translate":[{"time":0,"x":2.34,"y":-0.43,"curve":"stepped"},{"time":0.2667,"x":2.34,"y":-0.43,"curve":"stepped"},{"time":0.5,"x":2.34,"y":-0.43,"curve":"stepped"},{"time":0.7333,"x":2.34,"y":-0.43,"curve":"stepped"},{"time":1,"x":2.34,"y":-0.43}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.058,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.058,"y":1},{"time":1,"x":1,"y":1}]},"bone2":{"rotate":[{"time":0,"angle":-11.95},{"time":0.2667,"angle":-82.59},{"time":0.5,"angle":-91.69},{"time":0.7333,"angle":-68.69},{"time":1,"angle":-11.95}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":352.36},{"time":0.5,"angle":0},{"time":0.7333,"angle":7.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.964,"y":0.936},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.038,"y":0.917},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.2667,"angle":-352.99},{"time":0.5,"angle":10.53},{"time":0.7333,"angle":-341.14},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":2.36,"y":2.43}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.938,"y":0.879},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.001,"y":1.007},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":0.7,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye2"},{"time":0.3667,"name":"l_eye1"},{"time":0.4333,"name":"l_eye2"},{"time":0.4667,"name":"l_happyeye"},{"time":1,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1667,"name":"mouth3"},{"time":0.4333,"name":"mouth4"},{"time":0.8333,"name":"mouth3"},{"time":1,"name":"mouth2"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye2"},{"time":0.3667,"name":"r_eye1"},{"time":0.4333,"name":"r_eye2"},{"time":0.4667,"name":"r_happyeye"},{"time":1,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-16.32},{"time":0.3333,"angle":-13.24},{"time":0.5,"angle":-14.57},{"time":0.6667,"angle":-16.32},{"time":0.8333,"angle":-13.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.3333,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.5,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.6667,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.8333,"x":0.1,"y":0.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.008,"y":1,"curve":"stepped"},{"time":0.5,"x":1.008,"y":1,"curve":"stepped"},{"time":0.6667,"x":1.008,"y":1,"curve":"stepped"},{"time":0.8333,"x":1.008,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":-5.46},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":-1.62},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.7,"y":0.02},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-1.57,"y":-0.18},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":1.31,"y":0.02,"curve":"stepped"},{"time":0.5,"x":1.31,"y":0.02,"curve":"stepped"},{"time":1,"x":1.31,"y":0.02}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.038,"y":1},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":46.27},{"time":0.4333,"angle":53.02},{"time":0.8333,"angle":61.86},{"time":1,"angle":13.12}],"translate":[{"time":0,"x":-3.15,"y":1.67},{"time":0.1667,"x":-0.2,"y":0.1},{"time":0.4333,"x":-2.16,"y":0.22},{"time":0.8333,"x":-3.49,"y":-0.06},{"time":1,"x":-3.15,"y":1.67}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":88.24},{"time":0.4333,"angle":73.75},{"time":0.8333,"angle":67.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.65,"y":-5.07},{"time":0.4333,"x":-1.91,"y":-3.61},{"time":0.8333,"x":-1.65,"y":-5.07},{"time":1,"x":0,"y":0}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-9.43},{"time":0.4333,"angle":0},{"time":0.8333,"angle":-6.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.91,"y":0.94},{"time":0.4333,"x":0,"y":0},{"time":0.8333,"x":-0.74,"y":0.39},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4333,"x":1.021,"y":1.021},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-14.84},{"time":0.1667,"angle":-6.4},{"time":0.4333,"angle":-22.09},{"time":0.8333,"angle":-30.4},{"time":1,"angle":-14.84}],"translate":[{"time":0,"x":-3.84,"y":1.84},{"time":0.1667,"x":9.68,"y":-2.19},{"time":0.4333,"x":6.5,"y":-3.04},{"time":0.8333,"x":6.13,"y":-4.66},{"time":1,"x":-3.84,"y":1.84}]},"bone2":{"rotate":[{"time":0,"angle":11.45},{"time":0.1667,"angle":-114.22},{"time":0.4333,"angle":-129.41},{"time":0.8333,"angle":-96.05},{"time":1,"angle":11.45}],"translate":[{"time":0,"x":-4.08,"y":6.26},{"time":0.1667,"x":-2.68,"y":7.81},{"time":0.4333,"x":-1.54,"y":4.69},{"time":0.8333,"x":-6.2,"y":7.55},{"time":1,"x":-4.08,"y":6.26}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":7.56},{"time":0.4333,"angle":3.69},{"time":0.8333,"angle":4.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":2.62,"y":0.48}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":-337.5},{"time":0.4333,"angle":-341.65},{"time":0.8333,"angle":-347.64},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":4.74,"y":4.89}]},"eyebrow":{"translate":[{"time":0,"x":-7.49,"y":4.68,"curve":"stepped"},{"time":0.3,"x":-7.49,"y":4.68},{"time":0.3333,"x":2.13,"y":0},{"time":0.4,"x":3.46,"y":0},{"time":0.4667,"x":-7.49,"y":4.68,"curve":"stepped"},{"time":0.7,"x":-7.49,"y":4.68}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm4"},{"time":0.6667,"name":"l_arm4"},{"time":1.3333,"name":"l_arm4"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5.42},{"time":0.3333,"angle":-14.01},{"time":0.6667,"angle":-12.25},{"time":1,"angle":-14.94},{"time":1.3333,"angle":-5.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.3333,"angle":-18.91,"curve":[0.37,0.82,0.779,1]},{"time":0.6667,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":1,"angle":-6.84},{"time":1.3333,"angle":-13.5}],"translate":[{"time":0,"x":0.08,"y":1.22,"curve":[0.084,0.53,0.517,0.83]},{"time":0.3333,"x":-0.65,"y":-2.39,"curve":[0.37,0.82,0.779,1]},{"time":0.6667,"x":0.08,"y":1.22,"curve":[0.084,0.53,0.517,0.83]},{"time":1,"x":0.08,"y":-1.19,"curve":[0.37,0.82,0.779,1]},{"time":1.3333,"x":0.08,"y":1.22}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-6.68,"y":3.48},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":2.15},{"time":0.6667,"angle":3.61},{"time":1.3333,"angle":2.15}],"translate":[{"time":0,"x":4.84,"y":1.51},{"time":0.6667,"x":6.94,"y":2.97},{"time":1.3333,"x":4.84,"y":1.51}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.058,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.01,"y":0},{"time":0.6667,"x":0,"y":0},{"time":1,"x":3.01,"y":0},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":7.08},{"time":0.6667,"angle":9.04},{"time":1.3333,"angle":7.08}],"translate":[{"time":0,"x":-2.22,"y":-2.78},{"time":0.6667,"x":-1.99,"y":-3.79},{"time":1.3333,"x":-2.22,"y":-2.78}]},"r_arm2":{"rotate":[{"time":0,"angle":-5.35},{"time":0.6667,"angle":-19.02},{"time":1.3333,"angle":-5.35}],"translate":[{"time":0,"x":-27.69,"y":8.61},{"time":0.6667,"x":-25.99,"y":13.29},{"time":1.3333,"x":-27.69,"y":8.61}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.01,"y":-0.42},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.01,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.99},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.99},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.977,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-347.15},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":6.7},{"time":0.6667,"angle":14.41},{"time":1.3333,"angle":6.7}],"translate":[{"time":0,"x":-5.72,"y":1.79}]},"l_hair":{"rotate":[{"time":0,"angle":-342.03},{"time":0.6667,"angle":-334.73},{"time":1.3333,"angle":-342.03}],"translate":[{"time":0,"x":14.67,"y":8.58,"curve":"stepped"},{"time":0.6667,"x":14.67,"y":8.58,"curve":"stepped"},{"time":1.3333,"x":14.67,"y":8.58}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.6667,"angle":-6.13},{"time":1.3333,"angle":-13.78}],"translate":[{"time":0,"x":-0.99,"y":-3.05},{"time":0.6667,"x":1.95,"y":-2.36},{"time":1.3333,"x":-0.99,"y":-3.05}]},"bone2":{"rotate":[{"time":0,"angle":-1.9},{"time":0.6667,"angle":8.32},{"time":1.3333,"angle":-1.9}],"translate":[{"time":0,"x":-24.38,"y":2.44},{"time":0.6667,"x":-23.46,"y":-1.3},{"time":1.3333,"x":-24.38,"y":2.44}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.38},{"time":0.6667,"angle":0},{"time":1,"angle":3.04},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":2.67},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":4.94},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.03,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.03,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.99},{"time":0.6667,"angle":0},{"time":1,"angle":1.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.51,"y":0.12},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.33,"y":-0.05},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.1},{"time":0.6667,"angle":0},{"time":1,"angle":0.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.91,"y":0.03},{"time":0.6667,"x":0.11,"y":0},{"time":1,"x":1.01,"y":-0.16},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.062,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":5.88},{"time":0.6667,"angle":13.12},{"time":1,"angle":8.6},{"time":1.3333,"angle":13.12}],"translate":[{"time":0,"x":-1.21,"y":-0.63}]},"r_arm2":{"rotate":[{"time":0,"angle":-11.81},{"time":0.3333,"angle":0.94},{"time":0.6667,"angle":-11.81},{"time":1,"angle":-2.57},{"time":1.3333,"angle":-11.81}],"translate":[{"time":0,"x":1.09,"y":-0.56}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-6.82,"y":-0.21},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.95},{"time":0.6667,"angle":0},{"time":1,"angle":-354.3},{"time":1.3333,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.016,"y":0.987},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.984,"y":1.062},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.5},{"time":0.6667,"angle":0},{"time":1,"angle":354.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":3.51,"y":2.5}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":-344.84},{"time":0.6667,"angle":10.53},{"time":1,"angle":-343.02},{"time":1.3333,"angle":10.53}],"translate":[{"time":0,"x":6.62,"y":6.72}]},"l_arm":{"rotate":[{"time":0,"angle":-3.09},{"time":0.3333,"angle":3.42},{"time":0.6667,"angle":-3.09},{"time":1,"angle":5.69},{"time":1.3333,"angle":-3.09}],"translate":[{"time":0,"x":-0.61,"y":-0.01}]},"bone2":{"rotate":[{"time":0,"angle":8.21},{"time":0.3333,"angle":-3.84},{"time":0.6667,"angle":8.21},{"time":1,"angle":-8.65},{"time":1.3333,"angle":8.21}],"translate":[{"time":0,"x":1.35,"y":2.19}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"},{"time":0.5,"name":"mouth6"},{"time":0.6667,"name":"mouth8"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.1,"curve":"stepped"},{"time":0.3333,"angle":-13.1,"curve":"stepped"},{"time":0.5,"angle":-13.1},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":1.73,"y":4.04},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0667,"angle":0},{"time":0.1667,"angle":-3.29},{"time":0.3333,"angle":0},{"time":0.5,"angle":-7.46},{"time":0.6333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0667,"x":0,"y":0},{"time":0.1667,"x":1.3,"y":1.29},{"time":0.3333,"x":2.17,"y":0},{"time":0.5,"x":1.44,"y":0.96},{"time":0.6333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":3.93,"y":0.05},{"time":0.3333,"x":4.5,"y":-0.81},{"time":0.6667,"x":3.93,"y":0.05}],"scale":[{"time":0,"x":1.055,"y":1},{"time":0.3333,"x":1.068,"y":1},{"time":0.6667,"x":1.055,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.07},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.12},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.48,"y":0.66},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.46,"y":-0.13},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.78},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":-339.64},{"time":0.6667,"angle":10.53}],"translate":[{"time":0,"x":2.64,"y":4.93,"curve":"stepped"},{"time":0.3333,"x":2.64,"y":4.93,"curve":"stepped"},{"time":0.6667,"x":2.64,"y":4.93}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":0.17},{"time":0.6667,"angle":13.12}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.3333,"angle":-11.48},{"time":0.6667,"angle":-13.78}]},"r_arm2":{"rotate":[{"time":0,"angle":41.79},{"time":0.3333,"angle":46.54},{"time":0.6667,"angle":41.79}]},"bone2":{"rotate":[{"time":0,"angle":-67.72},{"time":0.3333,"angle":-38.41},{"time":0.6667,"angle":-67.72}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.5,"name":"mouth1"},{"time":0.5333,"name":"mouth2"},{"time":0.5667,"name":"mouth3"},{"time":0.6333,"name":"mouth1"},{"time":0.6667,"name":"mouth2"},{"time":0.7,"name":"mouth3"},{"time":0.7333,"name":"mouth1"},{"time":0.9,"name":"mouth1"},{"time":0.9333,"name":"mouth2"},{"time":0.9667,"name":"mouth3"},{"time":1.0333,"name":"mouth1"},{"time":1.0667,"name":"mouth2"},{"time":1.1,"name":"mouth3"},{"time":1.1333,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.38},{"time":0.6667,"angle":0},{"time":1,"angle":3.04},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":2.67},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":4.94},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.03,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.03,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.99},{"time":0.6667,"angle":0},{"time":1,"angle":1.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.51,"y":0.12},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.33,"y":-0.05},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.1},{"time":0.6667,"angle":0},{"time":1,"angle":0.37},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.044,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":5.88},{"time":0.6667,"angle":13.12},{"time":1,"angle":8.6},{"time":1.3333,"angle":13.12}],"translate":[{"time":0,"x":-1.21,"y":-0.63}]},"r_arm2":{"rotate":[{"time":0,"angle":-11.81},{"time":0.3333,"angle":0.94},{"time":0.6667,"angle":-11.81},{"time":1,"angle":-2.57},{"time":1.3333,"angle":-11.81}],"translate":[{"time":0,"x":1.09,"y":-0.56}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-6.82,"y":-0.21},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.95},{"time":0.6667,"angle":0},{"time":1,"angle":-354.3},{"time":1.3333,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.016,"y":0.987},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.984,"y":1.062},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.18},{"time":0.6667,"angle":0},{"time":1,"angle":-4.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":3.51,"y":2.5}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":-345.17},{"time":0.6667,"angle":10.53},{"time":1,"angle":-345.8},{"time":1.3333,"angle":10.53}],"translate":[{"time":0,"x":6.62,"y":6.72}]},"l_arm":{"rotate":[{"time":0,"angle":-3.09},{"time":0.3333,"angle":3.42},{"time":0.6667,"angle":-3.09},{"time":1,"angle":5.69},{"time":1.3333,"angle":-3.09}],"translate":[{"time":0,"x":-0.61,"y":-0.01}]},"bone2":{"rotate":[{"time":0,"angle":8.21},{"time":0.3333,"angle":-3.84},{"time":0.6667,"angle":8.21},{"time":1,"angle":-8.65},{"time":1.3333,"angle":8.21}],"translate":[{"time":0,"x":1.35,"y":2.19}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye5"},{"time":0.2667,"name":"l_eye3"},{"time":0.3333,"name":"l_eye5"},{"time":0.6667,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1,"name":"mouth7"},{"time":0.2,"name":"mouth5"},{"time":0.3,"name":"mouth7"},{"time":0.4,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.6,"name":"mouth5"},{"time":0.6667,"name":"mouth7"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.3333,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"},{"time":0.2667,"name":"r_eye3"},{"time":0.3333,"name":"r_eye6"},{"time":0.6667,"name":"r_eye5"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.02},{"time":0.3333,"angle":0},{"time":0.5,"angle":-3.35},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.98},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.32},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.63,"y":1.33},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.48,"y":0.39},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6667,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.2667,"x":-8.89,"y":0.02},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.98},{"time":0.3333,"angle":0},{"time":0.5,"angle":-3.64},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0.92,"y":-0.04,"curve":"stepped"},{"time":0.1667,"x":0.92,"y":-0.04,"curve":"stepped"},{"time":0.3333,"x":0.92,"y":-0.04},{"time":0.5,"x":0.81,"y":1.1},{"time":0.6667,"x":0.92,"y":-0.04}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.959,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.926,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.53},{"time":0.3333,"angle":0},{"time":0.5,"angle":5.44},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":2.58,"y":-1.42,"curve":"stepped"},{"time":0.1667,"x":2.58,"y":-1.42,"curve":"stepped"},{"time":0.3333,"x":2.58,"y":-1.42,"curve":"stepped"},{"time":0.5,"x":2.58,"y":-1.42,"curve":"stepped"},{"time":0.6667,"x":2.58,"y":-1.42}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":-351.98},{"time":0.3333,"angle":10.53},{"time":0.5,"angle":-345.68},{"time":0.6667,"angle":10.53}],"translate":[{"time":0,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.1667,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.3333,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.5,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.6667,"x":3.04,"y":4.94}]},"r_arm":{"rotate":[{"time":0,"angle":-9.16},{"time":0.3333,"angle":7.72},{"time":0.6667,"angle":-9.16}],"translate":[{"time":0,"x":-9.17,"y":-5.67,"curve":"stepped"},{"time":0.3333,"x":-9.17,"y":-5.67,"curve":"stepped"},{"time":0.6667,"x":-9.17,"y":-5.67}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.3333,"angle":-18.55},{"time":0.6667,"angle":-13.78}],"translate":[{"time":0,"x":-5.55,"y":1.75,"curve":"stepped"},{"time":0.3333,"x":-5.55,"y":1.75,"curve":"stepped"},{"time":0.6667,"x":-5.55,"y":1.75}]},"r_arm2":{"rotate":[{"time":0,"angle":135.26},{"time":0.3333,"angle":123.03},{"time":0.6667,"angle":135.26}],"translate":[{"time":0,"x":-16.58,"y":0.52,"curve":"stepped"},{"time":0.3333,"x":-16.58,"y":0.52,"curve":"stepped"},{"time":0.6667,"x":-16.58,"y":0.52}]},"bone2":{"rotate":[{"time":0,"angle":-122.96},{"time":0.3333,"angle":-113.44},{"time":0.6667,"angle":-122.96}],"translate":[{"time":0,"x":-13.57,"y":4.74,"curve":"stepped"},{"time":0.3333,"x":-13.57,"y":4.74,"curve":"stepped"},{"time":0.6667,"x":-13.57,"y":4.74}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/203101.png b/m78-all/m78-fe/public/images/character/203101.png new file mode 100644 index 000000000..7000057f7 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/203101.png differ diff --git a/m78-all/m78-fe/public/images/character/203201.atlas b/m78-all/m78-fe/public/images/character/203201.atlas new file mode 100644 index 000000000..33358ae5d --- /dev/null +++ b/m78-all/m78-fe/public/images/character/203201.atlas @@ -0,0 +1,314 @@ + +203201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: true + xy: 159, 119 + size: 47, 38 + orig: 47, 38 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 49, 58 + size: 75, 56 + orig: 75, 56 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 116 + size: 155, 138 + orig: 155, 138 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 89, 2 + size: 25, 31 + orig: 25, 31 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 488, 227 + size: 22, 27 + orig: 22, 27 + offset: 0, 0 + index: -1 +l_arm_uneasy1 + rotate: false + xy: 207, 222 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +l_arm_uneasy2 + rotate: true + xy: 207, 166 + size: 20, 32 + orig: 20, 32 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 159, 168 + size: 46, 86 + orig: 46, 86 + offset: 0, 0 + index: -1 +l_eye + rotate: true + xy: 88, 29 + size: 27, 32 + orig: 27, 32 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 122, 25 + size: 28, 25 + orig: 28, 25 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 241, 134 + size: 25, 10 + orig: 25, 10 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 2, 2 + size: 26, 21 + orig: 26, 21 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 225, 135 + size: 29, 14 + orig: 29, 14 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 241, 188 + size: 25, 31 + orig: 25, 31 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: true + xy: 126, 52 + size: 25, 31 + orig: 25, 31 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 122, 5 + size: 18, 26 + orig: 18, 26 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 488, 217 + size: 22, 8 + orig: 22, 8 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 375, 235 + size: 19, 38 + orig: 19, 38 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 152, 27 + size: 23, 7 + orig: 23, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 268, 196 + size: 23, 11 + orig: 23, 11 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 199, 118 + size: 24, 16 + orig: 24, 16 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 49, 29 + size: 37, 27 + orig: 37, 27 + offset: 0, 0 + index: -1 +mouth_sad1 + rotate: false + xy: 30, 4 + size: 11, 4 + orig: 11, 4 + offset: 0, 0 + index: -1 +mouth_sad2 + rotate: false + xy: 30, 10 + size: 17, 13 + orig: 17, 13 + offset: 0, 0 + index: -1 +mouth_surprised1 + rotate: false + xy: 281, 205 + size: 18, 15 + orig: 18, 15 + offset: 0, 0 + index: -1 +mouth_surprised2 + rotate: false + xy: 301, 210 + size: 18, 10 + orig: 18, 10 + offset: 0, 0 + index: -1 +mouth_surprised3 + rotate: false + xy: 339, 220 + size: 23, 4 + orig: 23, 4 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 413, 224 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 375, 225 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 126, 79 + size: 29, 35 + orig: 29, 35 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 241, 160 + size: 26, 26 + orig: 26, 26 + offset: 0, 0 + index: -1 +r_arm_uneasy1 + rotate: false + xy: 207, 188 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +r_arm_uneasy2 + rotate: true + xy: 453, 232 + size: 22, 33 + orig: 22, 33 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 2, 25 + size: 45, 89 + orig: 45, 89 + offset: 0, 0 + index: -1 +r_eye + rotate: false + xy: 241, 221 + size: 30, 33 + orig: 30, 33 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 339, 226 + size: 34, 28 + orig: 34, 28 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 451, 218 + size: 35, 12 + orig: 35, 12 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 49, 2 + size: 38, 25 + orig: 38, 25 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 241, 146 + size: 32, 12 + orig: 32, 12 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 273, 222 + size: 31, 32 + orig: 31, 32 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: false + xy: 306, 222 + size: 31, 32 + orig: 31, 32 + offset: 0, 0 + index: -1 +r_eyeball + rotate: false + xy: 199, 136 + size: 24, 28 + orig: 24, 28 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 321, 212 + size: 16, 8 + orig: 16, 8 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 415, 234 + size: 20, 36 + orig: 20, 36 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/203201.json b/m78-all/m78-fe/public/images/character/203201.json new file mode 100644 index 000000000..d3173964d --- /dev/null +++ b/m78-all/m78-fe/public/images/character/203201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"TBPUYRjygLdyUol0IwBKqvgaOU8","spine":"3.5.25","width":155,"height":297.12,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":26.08,"rotation":-88.92,"x":2.64,"y":85.42},{"name":"body2","parent":"body1","length":34.45,"rotation":-2.72,"x":28.04,"y":-0.53},{"name":"eff_exclamation","parent":"root","length":30.41,"rotation":43.07,"x":71.07,"y":227.77},{"name":"eff_panic","parent":"root","length":20.97,"rotation":7.94,"x":82.18,"y":160.63},{"name":"eff_sad1","parent":"root","length":17.56,"rotation":-91.93,"x":-19.14,"y":120.46},{"name":"eff_sad2","parent":"root","length":14.75,"rotation":-92.66,"x":36.73,"y":117.36},{"name":"eff_star1","parent":"root","length":18.51,"rotation":7.5,"x":57.06,"y":64.52},{"name":"eff_star2","parent":"root","length":19.47,"rotation":172.87,"x":-49.2,"y":64.52},{"name":"eff_star3","parent":"root","length":14.91,"rotation":-24.9,"x":55.61,"y":22.01},{"name":"head","parent":"body1","length":128.96,"rotation":-179.33,"x":-5.39,"y":1.09},{"name":"l_arm1","parent":"body1","length":16.91,"rotation":-9.45,"x":4.77,"y":18.12},{"name":"l_arm2","parent":"l_arm1","length":22,"rotation":-18.2,"x":17.95,"y":-0.34},{"name":"l_ear","parent":"head","length":81.26,"rotation":-16.12,"x":120.91,"y":-21.9},{"name":"l_eye","parent":"head","length":11.53,"rotation":138.45,"x":61.28,"y":-40.27},{"name":"l_eyeball","parent":"head","length":20.67,"rotation":-3.11,"x":20.77,"y":-29.18},{"name":"l_leg","parent":"root","length":30.52,"rotation":-88.15,"x":6.57,"y":31.79},{"name":"mouth1","parent":"head","length":13.78,"rotation":33.08,"x":-3.75,"y":-25.97},{"name":"r_arm1","parent":"body1","length":25.57,"rotation":10.01,"x":-0.89,"y":-21.14},{"name":"r_arm2","parent":"r_arm1","length":23.91,"rotation":25.54,"x":24.03,"y":-0.2},{"name":"r_ear","parent":"head","length":81.65,"rotation":10.78,"x":123.75,"y":22.8},{"name":"r_eye","parent":"head","length":12.83,"rotation":-149.28,"x":64.65,"y":37.9},{"name":"r_eyeball","parent":"head","length":21.36,"rotation":6.19,"x":20.96,"y":25.45},{"name":"r_leg","parent":"root","length":30.91,"rotation":-76.18,"x":-14.58,"y":31.3}],"slots":[{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm_uneasy1"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm_uneasy2"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm_uneasy1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm_uneasy2"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"mouth1","bone":"mouth1","attachment":"mouth1"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye"},{"name":"r_eyeball","bone":"r_eyeball","attachment":"r_eyeball"},{"name":"l_eyeball","bone":"l_eyeball","attachment":"l_eyeball"}],"skins":{"default":{"body1":{"body1":{"x":6.75,"y":-2.74,"rotation":87.91,"width":47,"height":38}},"body2":{"body2":{"x":12.74,"y":-5.18,"rotation":91.64,"width":75,"height":56}},"head":{"head":{"x":64.75,"y":8.98,"rotation":-91.75,"width":155,"height":138}},"l_arm1":{"l_arm1":{"x":6.06,"y":-2.24,"rotation":98.37,"width":25,"height":31},"l_arm_uneasy1":{"x":6.06,"y":-2.24,"rotation":98.37,"width":32,"height":32}},"l_arm2":{"l_arm2":{"x":10.84,"y":-0.64,"rotation":116.57,"width":22,"height":27},"l_arm_uneasy2":{"x":12.39,"y":0.56,"rotation":-106.86,"width":20,"height":32}},"l_ear":{"l_ear":{"x":41.34,"y":1.05,"rotation":-75.63,"width":46,"height":86}},"l_eye":{"l_eye":{"x":23.72,"y":9.2,"rotation":129.81,"width":27,"height":32},"l_eye2":{"x":25.54,"y":10.08,"rotation":129.81,"width":28,"height":25},"l_eye3":{"x":25.54,"y":10.08,"rotation":129.81,"width":25,"height":10},"l_eye_happy":{"x":28.82,"y":11.53,"rotation":129.81,"width":26,"height":21},"l_eye_sad":{"x":26.24,"y":10.02,"rotation":129.81,"width":29,"height":14},"l_eye_surprised":{"x":23.02,"y":9.26,"rotation":129.81,"width":25,"height":31},"l_eye_uneasy":{"x":23.02,"y":9.26,"rotation":129.81,"width":25,"height":31}},"l_eyeball":{"l_eyeball":{"x":15.21,"y":1.84,"rotation":-88.64,"width":18,"height":26},"l_eyebrow_sad":{"x":23.1,"y":2.03,"rotation":-88.64,"width":22,"height":8}},"l_leg":{"l_leg":{"x":14.09,"y":-1.65,"rotation":88.15,"width":19,"height":38}},"mouth1":{"mouth1":{"x":28.71,"y":9.39,"rotation":-124.82,"width":23,"height":7},"mouth2":{"x":26.29,"y":11.08,"rotation":-124.82,"width":23,"height":11},"mouth3":{"x":29.52,"y":8.83,"rotation":-124.82,"width":24,"height":16},"mouth_happy":{"x":29.59,"y":12.38,"rotation":-124.82,"width":37,"height":27},"mouth_sad1":{"x":24.53,"y":5.11,"rotation":-124.82,"width":11,"height":4},"mouth_sad2":{"x":24.85,"y":7.29,"rotation":-124.82,"width":17,"height":13},"mouth_surprised1":{"x":23.6,"y":6.36,"rotation":-124.82,"width":18,"height":15},"mouth_surprised2":{"x":24,"y":6.08,"rotation":-124.82,"width":18,"height":10},"mouth_surprised3":{"x":24.16,"y":7.16,"rotation":-124.82,"width":23,"height":4},"mouth_uneasy1":{"x":28.71,"y":9.39,"rotation":-124.82,"width":36,"height":8},"mouth_uneasy2":{"x":28.71,"y":9.39,"rotation":-124.82,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":13.37,"y":-0.87,"rotation":78.91,"width":29,"height":35},"r_arm_uneasy1":{"x":13.37,"y":-0.87,"rotation":78.91,"width":32,"height":32}},"r_arm2":{"r_arm2":{"x":12.94,"y":-0.73,"rotation":53.37,"width":26,"height":26},"r_arm_uneasy2":{"x":13.86,"y":0.5,"rotation":-68.39,"width":22,"height":33}},"r_ear":{"r_ear":{"x":38.45,"y":0.42,"rotation":-102.53,"width":45,"height":89}},"r_eye":{"r_eye":{"x":27.92,"y":-3.77,"rotation":57.53,"width":30,"height":33},"r_eye2":{"x":30.24,"y":-3.79,"rotation":57.53,"width":34,"height":28},"r_eye3":{"x":30.24,"y":-3.79,"rotation":57.53,"width":35,"height":12},"r_eye_happy":{"x":34.77,"y":1.49,"rotation":57.53,"width":38,"height":25},"r_eye_sad":{"x":33.53,"y":-4.13,"rotation":57.53,"width":32,"height":12},"r_eye_surprised":{"x":27.49,"y":-2.62,"rotation":57.53,"width":31,"height":32},"r_eye_uneasy":{"x":27.49,"y":-2.62,"rotation":57.53,"width":31,"height":32}},"r_eyeball":{"r_eyeball":{"x":14.62,"y":-2.04,"rotation":-97.94,"width":24,"height":28},"r_eyebrow_sad":{"x":24.57,"y":-3.43,"rotation":-97.94,"width":16,"height":8}},"r_leg":{"r_leg":{"x":14.89,"y":-0.33,"rotation":76.18,"width":20,"height":36}}}},"animations":{"action":{"slots":{"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0.1667,"name":"l_eye2"},{"time":0.2333,"name":"l_eye3"},{"time":0.5667,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0.1667,"name":null},{"time":0.5667,"name":"l_eyeball"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth3"},{"time":0.3333,"name":"mouth1"},{"time":0.6667,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0.1667,"name":"r_eye2"},{"time":0.2333,"name":"r_eye3"},{"time":0.5667,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0.1667,"name":null},{"time":0.5667,"name":"r_eyeball"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.37},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.93,"y":-5.62},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":347.31},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.54,"y":0.16},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.05},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.52,"y":2.26},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.28,"curve":"stepped"},{"time":0.5,"angle":11.28},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.1,"y":-0.5,"curve":"stepped"},{"time":0.5,"x":1.1,"y":-0.5},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":77.45},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.06,"y":0.21,"curve":"stepped"},{"time":0.5,"x":2.06,"y":0.21},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-115.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":2.99},{"time":0.3333,"angle":-35.53},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-0.21},{"time":0.3333,"angle":-25.36},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"happy":{"slots":{"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.7667,"name":"mouth1"},{"time":1,"name":"mouth_happy"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":6.3,"y":-0.09},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-5.72,"y":-2.55},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.63},{"time":0.5,"angle":2.44},{"time":0.7667,"angle":355.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":1.03,"y":-0.02},{"time":0.2667,"x":1.85,"y":-0.03},{"time":0.5,"x":1.49,"y":0.47},{"time":0.7667,"x":1.89,"y":-0.04},{"time":1,"x":1.03,"y":-0.02}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.52},{"time":0.5,"angle":0},{"time":0.7667,"angle":-7.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.028,"y":1.028},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.01,"y":1.01},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-37.5},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":9.37,"y":1.72},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-12.26},{"time":0.5,"angle":0},{"time":0.7667,"angle":17.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":5.95,"y":-0.3},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm1":{"rotate":[{"time":0,"angle":-90.79},{"time":0.2667,"angle":-53.12},{"time":0.5,"angle":-95.9},{"time":0.7667,"angle":-54.07},{"time":1,"angle":-90.79}],"translate":[{"time":0,"x":5.19,"y":8.36},{"time":0.2667,"x":5.62,"y":4.89},{"time":0.5,"x":4.25,"y":6.97},{"time":0.7667,"x":3.44,"y":6.64},{"time":1,"x":5.19,"y":8.36}]},"r_arm2":{"rotate":[{"time":0,"angle":-24.32},{"time":0.2667,"angle":-11.88},{"time":0.5,"angle":-28.03},{"time":0.7667,"angle":-35.16},{"time":1,"angle":-24.32}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.2,"y":0.91},{"time":0.5,"x":1.28,"y":0.9},{"time":0.7667,"x":0.07,"y":0.56},{"time":1,"x":0,"y":0}]},"l_arm1":{"rotate":[{"time":0,"angle":85.22},{"time":0.2667,"angle":37.95},{"time":0.5,"angle":86.43},{"time":0.7667,"angle":48.54},{"time":1,"angle":85.22}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.46,"y":-1.99},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.45,"y":-2.48},{"time":1,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":30.59},{"time":0.2667,"angle":19.57},{"time":0.5,"angle":40.48},{"time":0.7667,"angle":28.31},{"time":1,"angle":30.59}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":17.63},{"time":0.3667,"angle":8.99},{"time":0.5,"angle":0},{"time":0.7667,"angle":-24.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":16.79},{"time":0.5,"angle":0},{"time":0.7333,"angle":-16.96},{"time":0.8667,"angle":-9.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"joy":{"slots":{"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.5,"name":"l_eye"},{"time":0.7333,"name":"l_eye"},{"time":0.8,"name":"l_eye2"},{"time":0.8667,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.5,"name":"l_eyeball"},{"time":0.7333,"name":"l_eyeball"},{"time":0.8,"name":null},{"time":0.8667,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.4333,"name":"mouth1"},{"time":0.8333,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.5,"name":"r_eye"},{"time":0.7333,"name":"r_eye"},{"time":0.8,"name":"r_eye2"},{"time":0.8667,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.5,"name":"r_eyeball"},{"time":0.7333,"name":"r_eyeball"},{"time":0.8,"name":null},{"time":0.8667,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-10.64},{"time":0.5,"angle":9.13},{"time":1,"angle":-10.64}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-5.52},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-4.97},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":352.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":23.37},{"time":0.5,"angle":-22.81},{"time":1,"angle":23.37}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1.03,"y":1.03},{"time":0.2667,"x":0.985,"y":0.985},{"time":0.5,"x":1.048,"y":1.048},{"time":0.7667,"x":0.985,"y":0.985},{"time":1,"x":1.03,"y":1.03}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-9.07},{"time":0.5,"angle":-43.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":24.21},{"time":0.3,"angle":25.32},{"time":0.5,"angle":-42.95},{"time":0.7333,"angle":-30.55},{"time":1,"angle":24.21}],"translate":[{"time":0,"x":1.03,"y":-2.1},{"time":0.3,"x":1,"y":-2.8},{"time":0.5,"x":1.31,"y":1.34},{"time":1,"x":1.03,"y":-2.1}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":36.8},{"time":0.5,"angle":-2.89},{"time":0.7333,"angle":3.97},{"time":1,"angle":36.8}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":36.43},{"time":0.5,"angle":-36.75},{"time":0.7333,"angle":-49.71},{"time":1,"angle":36.43}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":-12.28},{"time":0.1667,"angle":-12.52},{"time":0.5,"angle":16.69},{"time":0.6667,"angle":-1.72},{"time":1,"angle":-12.28}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-8.75},{"time":0.1667,"angle":-7.56},{"time":0.5,"angle":10.91},{"time":0.6667,"angle":-4.93},{"time":1,"angle":-8.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7,"angle":-0.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad1"},{"time":0.3333,"name":"mouth_sad2"},{"time":1,"name":"mouth_sad1"},{"time":1.3333,"name":"mouth_sad1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.97},{"time":0.6667,"angle":0},{"time":1,"angle":-5.44},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-3.37},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-3.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":356.34},{"time":0.3333,"angle":346.96},{"time":0.6667,"angle":353.86},{"time":1,"angle":347.96},{"time":1.3333,"angle":356.34}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.79,"y":0.12},{"time":0.6667,"x":1.19,"y":-0.02},{"time":1,"x":1.19,"y":0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.87},{"time":0.6667,"angle":0},{"time":1,"angle":-3.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":16.11},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":1.1,"y":-0.22},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":-40.89},{"time":0.4,"angle":-49.08},{"time":0.6667,"angle":-22.08},{"time":1,"angle":-34.03},{"time":1.3333,"angle":-40.89}],"translate":[{"time":0,"x":-0.14,"y":-4.57,"curve":"stepped"},{"time":0.6667,"x":-0.14,"y":-4.57,"curve":"stepped"},{"time":1.3333,"x":-0.14,"y":-4.57}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-28.16},{"time":0.4,"angle":-28.03},{"time":0.6667,"angle":-22.22},{"time":1.1,"angle":-27.68},{"time":1.3333,"angle":-28.16}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":0.56,"y":0.02},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":2.09,"y":-1.29},{"time":0.4,"x":-2.24,"y":1.02,"curve":"stepped"},{"time":1.1333,"x":-2.24,"y":1.02},{"time":1.3333,"x":2.09,"y":-1.29}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":2.35,"y":-9.13},{"time":0.4,"x":-3.29,"y":-13.99,"curve":"stepped"},{"time":1.1333,"x":-3.29,"y":-13.99},{"time":1.3333,"x":2.35,"y":-9.13}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-0.93,"y":0.69,"curve":"stepped"},{"time":1.1333,"x":-0.93,"y":0.69},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-0.69,"y":-0.93,"curve":"stepped"},{"time":1.1333,"x":-0.69,"y":-0.93},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.4667,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.3333,"name":null},{"time":0.4667,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.4667,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.3333,"name":null},{"time":0.4667,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.3333,"angle":-5.35},{"time":0.6667,"angle":0,"curve":[0.25,0,0.75,1]},{"time":1,"angle":6.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.36,"y":-2.76},{"time":0.6667,"x":0,"y":0.05},{"time":1,"x":-4.5,"y":-2.21},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.021,"y":1},{"time":0.6667,"x":1,"y":1},{"time":0.9667,"x":1.012,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":2.49,"curve":[0.693,0,1,0.79]},{"time":0.3333,"angle":-0.06},{"time":0.6667,"angle":351.91},{"time":1,"angle":349.67},{"time":1.3333,"angle":2.49}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.625,0.5]},{"time":0.6667,"angle":-2.33},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.38,"y":-1.19},{"time":0.6667,"x":-0.42,"y":0.73},{"time":1,"x":0.61,"y":1.22},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.625,0.5]},{"time":0.3333,"x":1.005,"y":1.005,"curve":[0.375,0.5,0.75,1]},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.019,"y":1.019},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.81},{"time":0.6667,"angle":0},{"time":1,"angle":7.35},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":9.11},{"time":0.3333,"angle":15.84},{"time":0.6667,"angle":6.24},{"time":1,"angle":-1.25},{"time":1.3333,"angle":9.11}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.92},{"time":0.6667,"angle":0},{"time":1,"angle":3.64},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-13.19},{"time":0.3333,"angle":-5.15},{"time":0.6667,"angle":-6.58},{"time":1,"angle":-12.91},{"time":1.3333,"angle":-13.19}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":20.73},{"time":0.6667,"angle":0},{"time":1,"angle":-14.43},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.087,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.914,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":14.68},{"time":0.6667,"angle":-7.86},{"time":1,"angle":-22.05},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3,"x":1.087,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.894,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}},"drawOrder":[{"time":0}]},"surprised":{"slots":{"body1":{"attachment":[{"time":0,"name":"body1"},{"time":1,"name":"body1"}]},"body2":{"attachment":[{"time":0,"name":"body2"},{"time":1,"name":"body2"}]},"head":{"attachment":[{"time":0,"name":"head"},{"time":1,"name":"head"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm_uneasy1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm_uneasy2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised3"},{"time":0.1667,"name":"mouth_surprised3"},{"time":0.2,"name":"mouth_surprised2"},{"time":0.2333,"name":"mouth_surprised1"},{"time":1,"name":"mouth_surprised3"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm_uneasy1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm_uneasy2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.97},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-5.57},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-4.44},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.64,"y":0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.04,"y":0.02},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.04,"y":0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.89,"y":0.02},{"time":0.1667,"x":-3.28,"y":0.02},{"time":0.5,"x":0.11,"y":0},{"time":1,"x":-0.89,"y":0.02}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":121.8},{"time":0.5,"angle":114.18},{"time":1,"angle":121.8}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.89,"y":0.02},{"time":0.1667,"x":-3.28,"y":0.02},{"time":0.5,"x":0.11,"y":0},{"time":1,"x":-0.89,"y":0.02}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-141.53},{"time":0.5,"angle":-138.99},{"time":1,"angle":-141.53}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":-4.38},{"time":0.2667,"angle":18.75},{"time":0.5,"angle":-10.69},{"time":0.7667,"angle":1.06},{"time":1,"angle":-4.38}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.073,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-1.92},{"time":0.2667,"angle":-8.49},{"time":0.5,"angle":20.35},{"time":0.7667,"angle":-11.26},{"time":1,"angle":-1.92}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.083,"y":1},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0},{"time":0.5},{"time":1}]},"uneasy":{"slots":{"l_arm1":{"attachment":[{"time":0,"name":"l_arm_uneasy1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm_uneasy2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.5,"name":"l_eye_uneasy"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye_uneasy"},{"time":0.7,"name":"l_eye_uneasy"},{"time":0.7667,"name":"l_eye3"},{"time":0.8333,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm_uneasy1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm_uneasy2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.5,"name":"r_eye_uneasy"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye_uneasy"},{"time":0.7,"name":"r_eye_uneasy"},{"time":0.7667,"name":"r_eye3"},{"time":0.8333,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1,"name":"r_eyebrow_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-4.43},{"time":0.5,"angle":3.51},{"time":1,"angle":-4.43}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-3.52},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.76},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.71},{"time":0.5,"angle":0},{"time":0.7667,"angle":358.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":1.76,"y":0.1},{"time":0.2667,"x":3.56,"y":0.08},{"time":0.5,"x":1.76,"y":0.1},{"time":0.7667,"x":4.22,"y":0.09},{"time":1,"x":1.76,"y":0.1}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":-0.88},{"time":0.5,"angle":5.91},{"time":1,"angle":-0.88}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-2.8,"y":-0.01},{"time":0.5,"x":0,"y":0},{"time":0.7,"x":-1.4,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":116.2},{"time":0.2667,"angle":130.53},{"time":0.5,"angle":116.2},{"time":0.7667,"angle":124.49},{"time":1,"angle":116.2}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-1.4,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7,"x":-0.7,"y":0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-140.18},{"time":0.2667,"angle":-155.02},{"time":0.5,"angle":-140.18},{"time":0.7667,"angle":-150.57},{"time":1,"angle":-140.18}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":-1.86},{"time":0.1667,"angle":-4.31},{"time":0.5,"angle":4.64},{"time":0.6667,"angle":6.88},{"time":1,"angle":-1.86}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-1.79},{"time":0.1667,"angle":-0.14},{"time":0.5,"angle":8.08},{"time":0.6667,"angle":8.84},{"time":1,"angle":-1.79}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":10.01,"y":-2.26,"curve":"stepped"},{"time":1,"x":10.01,"y":-2.26}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":9.64,"y":-6.98,"curve":"stepped"},{"time":1,"x":9.64,"y":-6.98}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/203201.png b/m78-all/m78-fe/public/images/character/203201.png new file mode 100644 index 000000000..cb1966911 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/203201.png differ diff --git a/m78-all/m78-fe/public/images/character/203301.atlas b/m78-all/m78-fe/public/images/character/203301.atlas new file mode 100644 index 000000000..ac24fa632 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/203301.atlas @@ -0,0 +1,300 @@ + +203301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +blue_feather + rotate: false + xy: 339, 206 + size: 75, 48 + orig: 75, 48 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 257, 209 + size: 80, 45 + orig: 80, 45 + offset: 0, 0 + index: -1 +body2 + rotate: true + xy: 163, 2 + size: 72, 59 + orig: 72, 59 + offset: 0, 0 + index: -1 +braid + rotate: false + xy: 222, 79 + size: 24, 83 + orig: 24, 83 + offset: 0, 0 + index: -1 +hair_band + rotate: false + xy: 2, 41 + size: 159, 54 + orig: 159, 54 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 97 + size: 159, 157 + orig: 159, 157 + offset: 0, 0 + index: -1 +l_arm + rotate: false + xy: 460, 207 + size: 35, 29 + orig: 35, 29 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 133, 5 + size: 28, 34 + orig: 28, 34 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 295, 141 + size: 30, 29 + orig: 30, 29 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 416, 238 + size: 88, 16 + orig: 88, 16 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 2, 14 + size: 87, 25 + orig: 87, 25 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: false + xy: 327, 143 + size: 30, 27 + orig: 30, 27 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: true + xy: 248, 93 + size: 30, 17 + orig: 30, 17 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 224, 2 + size: 27, 34 + orig: 27, 34 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 401, 170 + size: 27, 34 + orig: 27, 34 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 28, 2 + size: 19, 10 + orig: 19, 10 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 257, 167 + size: 34, 40 + orig: 34, 40 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 295, 131 + size: 24, 8 + orig: 24, 8 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 495, 176 + size: 24, 13 + orig: 24, 13 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 91, 2 + size: 25, 12 + orig: 25, 12 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 91, 16 + size: 40, 23 + orig: 40, 23 + offset: 0, 0 + index: -1 +mouth_sad1 + rotate: true + xy: 118, 2 + size: 12, 7 + orig: 12, 7 + offset: 0, 0 + index: -1 +mouth_sad2 + rotate: true + xy: 496, 155 + size: 19, 14 + orig: 19, 14 + offset: 0, 0 + index: -1 +mouth_suprised1 + rotate: false + xy: 401, 152 + size: 19, 16 + orig: 19, 16 + offset: 0, 0 + index: -1 +mouth_surprised2 + rotate: false + xy: 422, 155 + size: 20, 13 + orig: 20, 13 + offset: 0, 0 + index: -1 +mouth_surprised3 + rotate: true + xy: 392, 146 + size: 24, 7 + orig: 24, 7 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 49, 4 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 458, 165 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +pink_feather + rotate: false + xy: 163, 76 + size: 57, 86 + orig: 57, 86 + offset: 0, 0 + index: -1 +r_arm + rotate: false + xy: 430, 170 + size: 26, 36 + orig: 26, 36 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 293, 172 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 458, 175 + size: 35, 30 + orig: 35, 30 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 248, 125 + size: 37, 14 + orig: 37, 14 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 416, 208 + size: 42, 28 + orig: 42, 28 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: true + xy: 264, 130 + size: 35, 29 + orig: 35, 29 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 497, 202 + size: 34, 13 + orig: 34, 13 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: true + xy: 327, 172 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: true + xy: 364, 172 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 2, 2 + size: 24, 10 + orig: 24, 10 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 224, 38 + size: 20, 39 + orig: 20, 39 + offset: 0, 0 + index: -1 +wand + rotate: false + xy: 163, 164 + size: 92, 90 + orig: 92, 90 + offset: 0, 0 + index: -1 +wand1 + rotate: true + xy: 359, 145 + size: 25, 31 + orig: 25, 31 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/203301.json b/m78-all/m78-fe/public/images/character/203301.json new file mode 100644 index 000000000..cc35df8d6 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/203301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"vEUXJwC094wnSe9qA7VMYN1Og/8","spine":"3.5.25","width":235,"height":281,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":32.63,"rotation":88.62,"x":1.56,"y":58.09},{"name":"head","parent":"body1","length":139.13,"rotation":0.89,"x":32.62,"y":0.39},{"name":"blue_feather","parent":"head","length":80.93,"rotation":65.2,"x":93.81,"y":60.14},{"name":"body2","parent":"body1","length":42.05,"rotation":-179.16,"x":0.38,"y":0.4},{"name":"braid","parent":"head","length":71.35,"rotation":176.06,"x":80.88,"y":56.1},{"name":"eff_exclamation","parent":"root","length":24.56,"rotation":48.92,"x":73.53,"y":208.67},{"name":"eff_panic","parent":"root","length":31.67,"rotation":19.25,"x":82.55,"y":157.89},{"name":"eff_sad1","parent":"root","length":18.88,"rotation":-91.91,"x":-17.51,"y":128.35},{"name":"eff_sad2","parent":"root","length":20.77,"rotation":-91.74,"x":39.73,"y":121.44},{"name":"eff_star1","parent":"root","length":18.82,"rotation":33.69,"x":47.43,"y":78.62},{"name":"eff_star2","parent":"root","length":21.19,"rotation":164.41,"x":-50.82,"y":80.52},{"name":"eff_star3","parent":"root","length":13.03,"rotation":-10.49,"x":47.9,"y":35.43},{"name":"hair_band","parent":"head","length":33.3,"rotation":-167.94,"x":114.79,"y":-3.74},{"name":"l_arm","parent":"body1","length":34.92,"rotation":-127.68,"x":13.47,"y":-20.51},{"name":"l_eye","parent":"head","length":16.9,"rotation":1.82,"x":23.09,"y":-34.39},{"name":"l_eyebrow","parent":"head","length":17.79,"rotation":-83.17,"x":61.91,"y":-24.24},{"name":"l_leg","parent":"root","length":35.39,"rotation":-88.09,"x":-8.26,"y":35.69},{"name":"mouth","parent":"head","length":15.37,"rotation":32.96,"x":-0.57,"y":-25.55},{"name":"pink_feather","parent":"head","length":89.64,"rotation":23.45,"x":103.31,"y":52.75},{"name":"r_arm","parent":"body1","length":34.82,"rotation":153.08,"x":14.28,"y":27.47},{"name":"r_eye","parent":"head","length":15.72,"rotation":-0.95,"x":22.99,"y":23.38},{"name":"r_eyebrow","parent":"head","length":18.68,"rotation":75.86,"x":59.67,"y":8.37},{"name":"r_leg","parent":"root","length":34.19,"rotation":-89.34,"x":7.06,"y":34.51},{"name":"wand","parent":"l_arm","length":70.06,"rotation":82.24,"x":28.18,"y":-0.42},{"name":"wand1","parent":"wand","length":34.01,"rotation":-99.49,"x":55.28,"y":1.48}],"slots":[{"name":"l_arm","bone":"l_arm","attachment":"l_arm"},{"name":"wand1","bone":"wand1","attachment":"wand1"},{"name":"wand","bone":"wand","attachment":"wand"},{"name":"l_leg","bone":"r_leg","attachment":"l_leg"},{"name":"r_leg","bone":"l_leg","attachment":"r_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"r_arm","bone":"r_arm","attachment":"r_arm"},{"name":"blue_feather","bone":"blue_feather","attachment":"blue_feather"},{"name":"pink_feather","bone":"pink_feather","attachment":"pink_feather"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth_happy"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_happy"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_happy"},{"name":"l_eyebrow_sad","bone":"l_eyebrow"},{"name":"r_eyebrow_sad","bone":"r_eyebrow"},{"name":"braid","bone":"braid","attachment":"braid"},{"name":"hair_band","bone":"hair_band","attachment":"hair_band"}],"skins":{"default":{"blue_feather":{"blue_feather":{"x":35.03,"y":1.39,"rotation":-154.71,"width":75,"height":48}},"body1":{"body1":{"x":19.1,"y":2.18,"rotation":-88.62,"width":80,"height":45}},"body2":{"body2":{"x":13.27,"y":-2.2,"rotation":90.54,"width":72,"height":59}},"braid":{"braid":{"x":38.84,"y":1.3,"rotation":94.42,"width":24,"height":83}},"hair_band":{"hair_band":{"x":23.33,"y":-14.3,"rotation":78.42,"width":159,"height":54}},"head":{"head":{"x":74.47,"y":7.24,"rotation":-89.51,"width":159,"height":157}},"l_arm":{"l_arm":{"x":18.28,"y":-0.38,"rotation":39.06,"width":35,"height":29}},"l_eye1":{"l_eye1":{"x":18.2,"y":-1.73,"rotation":-91.33,"width":28,"height":34},"l_eye2":{"x":18.2,"y":-1.73,"rotation":-91.33,"width":30,"height":29},"l_eye3":{"x":14.62,"y":30.2,"rotation":-91.33,"width":88,"height":16},"l_eye_happy":{"x":14.59,"y":29.02,"rotation":-91.33,"width":87,"height":25},"l_eye_sad1":{"x":17.02,"y":-1.7,"rotation":-91.33,"width":30,"height":27},"l_eye_sad2":{"x":18.2,"y":-1.73,"rotation":-91.33,"width":30,"height":17},"l_eye_uneasy1":{"x":18.2,"y":-1.73,"rotation":-91.33,"width":27,"height":34},"l_eye_uneasy2":{"x":18.2,"y":-1.73,"rotation":-91.33,"width":27,"height":34}},"l_eyebrow_sad":{"l_eyebrow_sad":{"x":7.62,"y":-9.57,"rotation":-6.34,"width":19,"height":10}},"l_leg":{"l_leg":{"x":16.7,"y":-6.41,"rotation":89.34,"width":34,"height":40}},"mouth1":{"mouth1":{"x":26.12,"y":7.86,"rotation":-122.47,"width":24,"height":8},"mouth2":{"x":26.12,"y":7.86,"rotation":-122.47,"width":24,"height":13},"mouth3":{"x":26.12,"y":7.86,"rotation":-122.47,"width":25,"height":12},"mouth_happy":{"x":26.12,"y":7.86,"rotation":-122.47,"width":40,"height":23},"mouth_sad1":{"x":26.12,"y":7.86,"rotation":-122.47,"width":12,"height":7},"mouth_sad2":{"x":26.12,"y":7.86,"rotation":-122.47,"width":19,"height":14},"mouth_suprised1":{"x":26.12,"y":7.86,"rotation":-122.47,"width":19,"height":16},"mouth_surprised2":{"x":26.12,"y":7.86,"rotation":-122.47,"width":20,"height":13},"mouth_surprised3":{"x":26.12,"y":7.86,"rotation":-122.47,"width":24,"height":7},"mouth_uneasy1":{"x":26.12,"y":7.86,"rotation":-122.47,"width":36,"height":8},"mouth_uneasy2":{"x":26.12,"y":7.86,"rotation":-122.47,"width":36,"height":8}},"pink_feather":{"pink_feather":{"x":43.75,"y":-2.54,"rotation":-112.97,"width":57,"height":86}},"r_arm":{"r_arm":{"x":18.89,"y":-0.73,"rotation":118.3,"width":26,"height":36}},"r_eye1":{"r_eye1":{"x":18.34,"y":0.38,"rotation":-88.57,"width":32,"height":35},"r_eye2":{"x":18.34,"y":0.38,"rotation":-88.57,"width":35,"height":30},"r_eye3":{"x":18.34,"y":0.38,"rotation":-88.57,"width":37,"height":14},"r_eye_happy":{"x":18.51,"y":-6.3,"rotation":-88.57,"width":42,"height":28},"r_eye_sad1":{"x":18.34,"y":0.38,"rotation":-88.57,"width":35,"height":29},"r_eye_sad2":{"x":17,"y":0.35,"rotation":-88.57,"width":34,"height":13},"r_eye_uneasy1":{"x":18.34,"y":0.38,"rotation":-88.57,"width":32,"height":35},"r_eye_uneasy2":{"x":18.34,"y":0.38,"rotation":-88.57,"width":32,"height":35}},"r_eyebrow_sad":{"r_eyebrow_sad":{"x":8.23,"y":9.08,"rotation":-165.38,"width":24,"height":10}},"r_leg":{"r_leg":{"x":18.44,"y":-0.51,"rotation":88.09,"width":20,"height":39}},"wand":{"wand":{"x":14.58,"y":-0.3,"rotation":-43.18,"width":92,"height":90}},"wand1":{"wand1":{"x":18.87,"y":1.89,"rotation":56.31,"width":25,"height":31}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.5,"name":"mouth3"},{"time":1,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.01},{"time":0.3333,"angle":-1.92},{"time":0.5,"angle":-5.98},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-5.98},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":356.78},{"time":0.3333,"angle":1},{"time":0.5,"angle":4.01},{"time":0.6667,"angle":0},{"time":0.8333,"angle":6.12},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-22.92},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":19.89},{"time":0.6667,"angle":9.07},{"time":0.8333,"angle":15.01},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":-1.9,"y":-3.12},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":6.77},{"time":0.5,"angle":-15.44,"curve":"stepped"},{"time":0.8333,"angle":-15.44},{"time":1.1,"angle":-10.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.02},{"time":0.6667,"angle":-3.87},{"time":0.8333,"angle":0.79},{"time":1,"angle":-4.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":4.53},{"time":0.6667,"angle":-5.11},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":9.59},{"time":0.6667,"angle":-5.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-3.73},{"time":0.6667,"angle":3.54},{"time":0.8333,"angle":-1.43},{"time":1.1,"angle":2.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-37.05},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-33.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand1":{"rotate":[{"time":0,"angle":-28.97},{"time":0.3333,"angle":-43},{"time":0.5667,"angle":21.85},{"time":0.7333,"angle":-2.34},{"time":0.9,"angle":5.08},{"time":1.3333,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.44},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-4.03},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-3.35},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":351.81},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3,"x":0.9,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.931,"y":1},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.8,"angle":20.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.8,"x":1.023,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-19.41},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":19.37},{"time":0.7333,"angle":17.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-17.58},{"time":0.5,"angle":0},{"time":0.7667,"angle":-23.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.71},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.41,"y":-0.05},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-0.26,"y":-0.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":30.47},{"time":0.6667,"angle":-2.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":35.77},{"time":0.7667,"angle":-24.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-17.13},{"time":0.5,"angle":-6.94},{"time":0.7667,"angle":-349.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-27.73},{"time":0.6667,"angle":-18.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand1":{"rotate":[{"time":0,"angle":-28.97},{"time":0.3333,"angle":-31.95},{"time":0.6667,"angle":-1.3},{"time":1,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":1,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":1.47},{"time":0.5,"angle":0},{"time":0.7333,"angle":-2.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-2.08},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":-2.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":358},{"time":0.5,"angle":0},{"time":0.7333,"angle":358.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":7.09},{"time":0.5,"angle":0},{"time":0.8,"angle":-6.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-3.38},{"time":0.5,"angle":0},{"time":0.7333,"angle":8.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":3.94},{"time":0.5,"angle":0},{"time":0.8,"angle":-4.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":4.3},{"time":0.7,"angle":-1.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":3.87},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand1":{"rotate":[{"time":0,"angle":-28.97},{"time":0.4333,"angle":-4.03},{"time":0.7667,"angle":-5.9},{"time":1,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad2"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad1"},{"time":1.3333,"name":"mouth_sad1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad2"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"mouth":{"rotate":[{"time":0,"angle":0.32,"curve":"stepped"},{"time":0.6667,"angle":0.32,"curve":"stepped"},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0.32,"curve":"stepped"},{"time":0.6667,"angle":0.32,"curve":"stepped"},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0.32,"curve":"stepped"},{"time":0.6667,"angle":0.32,"curve":"stepped"},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0.32},{"time":0.3333,"angle":1.7},{"time":0.6667,"angle":0.32},{"time":1,"angle":-1.64},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-1.78,"curve":"stepped"},{"time":1,"x":0,"y":-1.78},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0.32},{"time":0.3333,"angle":358.55},{"time":0.6667,"angle":0.32},{"time":1,"angle":2.21},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.59,"y":0,"curve":"stepped"},{"time":1,"x":0.59,"y":0},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0.32,"curve":"stepped"},{"time":0.6667,"angle":0.32,"curve":"stepped"},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0.32,"curve":"stepped"},{"time":0.6667,"angle":0.32,"curve":"stepped"},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0.32},{"time":0.3333,"angle":-40.05,"curve":"stepped"},{"time":1,"angle":-40.05},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":19.5},{"time":0.5,"angle":26.12},{"time":1,"angle":24.5},{"time":1.3333,"angle":19.5}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-6.94},{"time":0.5,"angle":-13.69,"curve":"stepped"},{"time":0.8333,"angle":-13.69},{"time":1.3333,"angle":-6.94}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.37,"y":-0.02,"curve":"stepped"},{"time":0.8333,"x":-2.37,"y":-0.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0.32,"curve":"stepped"},{"time":0.6667,"angle":0.32,"curve":"stepped"},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":104.71},{"time":0.3333,"angle":96.57},{"time":0.9,"angle":93.28},{"time":1.3333,"angle":104.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":27.71},{"time":0.2667,"angle":24.43},{"time":0.8333,"angle":36.07},{"time":1.3333,"angle":27.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0.32},{"time":0.5,"angle":-352.74},{"time":1.3333,"angle":0.32}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":-30.13},{"time":0.6667,"angle":-27.61},{"time":1.3333,"angle":-30.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand1":{"rotate":[{"time":0,"angle":-28.97},{"time":0.2667,"angle":29.22},{"time":0.6667,"angle":-6.98},{"time":1,"angle":45.91},{"time":1.3333,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"translate":[{"time":0,"x":2.85,"y":-0.01},{"time":0.5,"x":1.71,"y":0.1,"curve":"stepped"},{"time":1,"x":1.71,"y":0.1},{"time":1.3333,"x":2.85,"y":-0.01}]},"l_eyebrow":{"translate":[{"time":0,"x":2.85,"y":-0.01},{"time":0.5,"x":1.71,"y":0.1,"curve":"stepped"},{"time":1,"x":1.71,"y":0.1},{"time":1.3333,"x":2.85,"y":-0.01}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.92},{"time":0.6667,"angle":0},{"time":1,"angle":-4.54},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.27},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.27},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1.043,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.6667,"x":1.043,"y":1},{"time":1,"x":0.978,"y":1},{"time":1.3333,"x":1.043,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.97},{"time":0.6667,"angle":0},{"time":1,"angle":358.25},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.071,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.001,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.83},{"time":0.6667,"angle":0},{"time":1,"angle":8.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.15},{"time":0.6667,"angle":0},{"time":1,"angle":-10.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.5},{"time":0.6667,"angle":0},{"time":1,"angle":-2.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":9.47},{"time":0.6667,"angle":0},{"time":1,"angle":-7.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.43},{"time":0.6667,"angle":0},{"time":1.0667,"angle":-8.47},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-10.68},{"time":0.6667,"angle":0},{"time":1.0667,"angle":-346.35},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand1":{"rotate":[{"time":0,"angle":-28.97},{"time":0.5,"angle":-33.94},{"time":1,"angle":-9.42},{"time":1.3333,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_suprised1"},{"time":0.5,"name":"mouth_surprised3"},{"time":0.5667,"name":"mouth_suprised1"},{"time":1,"name":"mouth_suprised1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"wand1":{"rotate":[{"time":0,"angle":-28.97,"curve":"stepped"},{"time":0.3333,"angle":-28.97},{"time":0.5,"angle":-20.15},{"time":0.6667,"angle":-33.24},{"time":0.8333,"angle":-14.69},{"time":1,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.47},{"time":0.5,"angle":1.21},{"time":0.6667,"angle":-1.91},{"time":0.8333,"angle":0.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-17.89},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-17.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.35},{"time":0.5,"angle":18.41},{"time":0.6667,"angle":-13.35},{"time":0.8333,"angle":18.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":5.43},{"time":0.6667,"angle":-0.39},{"time":0.8333,"angle":3.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":2.26},{"time":0.6667,"angle":-6.15},{"time":0.8333,"angle":-0.35},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.02},{"time":0.5,"angle":3.53},{"time":0.6667,"angle":-4.34},{"time":0.8333,"angle":-2.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.3,"name":"l_eye_uneasy2"},{"time":0.5,"name":"l_eye_uneasy1"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.3333,"name":"r_eye_uneasy2"},{"time":0.5,"name":"r_eye_uneasy1"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"wand1":{"rotate":[{"time":0,"angle":-28.97},{"time":0.5,"angle":-47.03},{"time":1,"angle":-28.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":4.5},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.7},{"time":0.5,"angle":0},{"time":0.7333,"angle":357.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":6.69},{"time":0.5,"angle":-0.2},{"time":0.7667,"angle":-6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.97},{"time":0.3333,"angle":3.31},{"time":0.5,"angle":-20.99},{"time":0.6667,"angle":-0.19},{"time":0.8333,"angle":-22.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair_band":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pink_feather":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":5.7},{"time":0.6667,"angle":-0.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"blue_feather":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.44},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":9.61,"curve":"stepped"},{"time":0.4333,"angle":9.61},{"time":0.6,"angle":-2.46,"curve":"stepped"},{"time":0.8,"angle":-2.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/203301.png b/m78-all/m78-fe/public/images/character/203301.png new file mode 100644 index 000000000..43e014a4a Binary files /dev/null and b/m78-all/m78-fe/public/images/character/203301.png differ diff --git a/m78-all/m78-fe/public/images/character/204101.atlas b/m78-all/m78-fe/public/images/character/204101.atlas new file mode 100644 index 000000000..34054e092 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/204101.atlas @@ -0,0 +1,335 @@ + +204101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +belt + rotate: false + xy: 357, 181 + size: 64, 36 + orig: 64, 36 + offset: 0, 0 + index: -1 +body + rotate: false + xy: 2, 2 + size: 56, 58 + orig: 56, 58 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 362, 219 + size: 88, 12 + orig: 88, 12 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 362, 233 + size: 85, 19 + orig: 85, 19 + offset: 0, 0 + index: -1 +f_hair1 + rotate: false + xy: 172, 189 + size: 112, 63 + orig: 112, 63 + offset: 0, 0 + index: -1 +hat + rotate: false + xy: 2, 62 + size: 167, 61 + orig: 167, 61 + offset: 0, 0 + index: -1 +hat_l + rotate: true + xy: 286, 188 + size: 29, 69 + orig: 29, 69 + offset: 0, 0 + index: -1 +hat_r + rotate: true + xy: 286, 219 + size: 33, 74 + orig: 33, 74 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 125 + size: 168, 127 + orig: 168, 127 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 333, 148 + size: 30, 28 + orig: 30, 28 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 219, 95 + size: 26, 44 + orig: 26, 44 + offset: 0, 0 + index: -1 +l_arm3 + rotate: false + xy: 423, 180 + size: 43, 37 + orig: 43, 37 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 286, 148 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 125, 15 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 172, 101 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: true + xy: 171, 61 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: true + xy: 165, 21 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 247, 101 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 287, 101 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye2 + rotate: false + xy: 218, 48 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 172, 141 + size: 46, 66 + orig: 46, 66 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 258, 54 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 298, 54 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: true + xy: 212, 8 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 363, 153 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 418, 95 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 446, 92 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 484, 82 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 418, 64 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 456, 54 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: true + xy: 484, 44 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 247, 95 + size: 5, 4 + orig: 5, 4 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 426, 23 + size: 29, 29 + orig: 29, 29 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 306, 9 + size: 38, 43 + orig: 38, 43 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 240, 148 + size: 44, 39 + orig: 44, 39 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 259, 14 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 327, 101 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 338, 54 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 346, 7 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 367, 106 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 378, 59 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 386, 12 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye2 + rotate: false + xy: 468, 207 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 60, 16 + size: 44, 63 + orig: 44, 63 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 468, 160 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 407, 133 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: true + xy: 447, 120 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/204101.json b/m78-all/m78-fe/public/images/character/204101.json new file mode 100644 index 000000000..447e98dfa --- /dev/null +++ b/m78-all/m78-fe/public/images/character/204101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"y5JRzgSFwrDyi5XOp/VIXKWEp/Q","spine":"3.5.25","width":169.23,"height":239.52,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":-1,"y":50.03},{"name":"belt","parent":"body","length":6.77,"rotation":0.9,"x":-4.78,"y":-8.39},{"name":"r_arm","parent":"body","length":21.99,"rotation":133.85,"x":31.86,"y":19.58},{"name":"bone2","parent":"r_arm","length":21.46,"rotation":66.96,"x":21.99,"y":0.06},{"name":"eff_exclamation","parent":"root","length":27,"rotation":56.52,"x":53.37,"y":231.89},{"name":"eff_panic","parent":"root","length":18.46,"rotation":32.53,"x":74.87,"y":211.05},{"name":"eff_sad1","parent":"root","length":18.11,"rotation":-91.82,"x":-11.65,"y":108.42},{"name":"eff_sad2","parent":"root","length":20.01,"rotation":-93.15,"x":40.05,"y":110.24},{"name":"eff_star1","parent":"root","length":21.9,"rotation":21.88,"x":55.86,"y":71.08},{"name":"eff_star2","parent":"root","length":17.51,"rotation":164.59,"x":-102.68,"y":117.31},{"name":"eff_star3","parent":"root","length":19.14,"rotation":-151.65,"x":-57.75,"y":58.56},{"name":"head","parent":"body","length":132.6,"x":40.97,"y":0.93},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":62.51,"y":-12.7},{"name":"hair1","parent":"head","length":38.65,"rotation":-171.51,"x":108.49,"y":-6.76},{"name":"hat","parent":"head","length":36.14,"rotation":29.55,"x":113.08,"y":-8.14},{"name":"hat2","parent":"head","length":73.6,"rotation":-179.57,"x":73.13,"y":69.28},{"name":"hat3","parent":"head","length":60.63,"rotation":-179.1,"x":60.83,"y":-61.49},{"name":"l_arm","parent":"body","length":24.14,"rotation":-139.27,"x":36.76,"y":-10.63},{"name":"l_arm2","parent":"l_arm","length":32.56,"rotation":-19.54,"x":17.55,"y":1.58},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":10.44,"y":49.93},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":17.75,"y":-6.85},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-13.86,"y":44.45}],"slots":[{"name":"png/l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"png/body","bone":"body","attachment":"body"},{"name":"hat_l","bone":"hat3","attachment":"hat_l"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"png/f_hair1","bone":"hair1","attachment":"f_hair1"},{"name":"png/hat","bone":"hat","attachment":"hat"},{"name":"belt","bone":"belt","attachment":"belt"},{"name":"hat2","bone":"hat2","attachment":"hat_r"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"bone2","bone":"bone2","attachment":"r_arm2"}],"skins":{"default":{"belt":{"belt":{"x":-6.2,"y":12.69,"rotation":-90,"width":64,"height":36}},"bone2":{"r_arm2":{"x":11.72,"y":3.07,"rotation":70.09,"width":38,"height":43},"r_arm3":{"rotation":70.09,"width":44,"height":39}},"eyebrow":{"eyebrow1":{"x":1.03,"y":1.65,"rotation":-91.35,"width":88,"height":12},"eyebrow2":{"rotation":-91.35,"width":85,"height":19}},"hat2":{"hat_r":{"x":56.93,"y":3.29,"rotation":90.47,"width":33,"height":74}},"hat_l":{"hat_l":{"x":34.96,"y":0.85,"rotation":90,"width":29,"height":69}},"l_arm2":{"l_arm2":{"x":13.98,"y":-2.24,"rotation":69.72,"width":26,"height":44},"l_arm3":{"x":13.17,"y":6.51,"rotation":69.72,"width":43,"height":37}},"l_eye":{"l_eye1":{"x":44.07,"y":-38.39,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":46.79,"y":-40.16,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":46.79,"y":-40.16,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":46.79,"y":-40.16,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":46.79,"y":-40.16,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":44.37,"y":-38.05,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":44.37,"y":-38.05,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":44.07,"y":-38.39,"rotation":-89.55,"width":38,"height":45},"l_happyeye2":{"x":44.01,"y":-34.49,"rotation":-89.55,"width":38,"height":45},"l_sadeye1":{"x":44.06,"y":-38.39,"rotation":-89.55,"width":38,"height":45},"l_sadeye2":{"x":44.06,"y":-38.39,"rotation":-89.55,"width":38,"height":45},"l_sadeye3":{"x":44.07,"y":-38.39,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":1.53,"y":0.39,"rotation":87.75,"width":36,"height":26},"mouth7":{"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":28.1,"y":-25.65,"rotation":-89.55,"width":5,"height":4}},"png/body":{"body":{"x":18.76,"y":1.42,"rotation":-89.1,"width":56,"height":58}},"png/f_hair1":{"f_hair1":{"x":25.93,"y":-8.88,"rotation":81.96,"width":112,"height":63}},"png/hat":{"hat":{"x":8.81,"y":11.86,"rotation":-119.1,"width":167,"height":61}},"png/head":{"head":{"x":50.02,"y":4.51,"rotation":-89.55,"width":168,"height":127}},"png/l_arm1":{"l_arm1":{"x":11.91,"y":-1.52,"rotation":50.18,"width":30,"height":28}},"png/l_leg":{"l_leg":{"x":19.35,"y":1.44,"rotation":88.65,"width":46,"height":66}},"png/r_leg":{"r_leg":{"x":15.03,"y":0.34,"rotation":88.73,"width":44,"height":63}},"r_arm1":{"r_arm1":{"x":10.43,"y":1.1,"rotation":137.05,"width":29,"height":29}},"r_eye":{"r_eye1":{"x":40.81,"y":18.64,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":41.4,"y":15.83,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":41.4,"y":15.83,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":41.4,"y":15.83,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":41.4,"y":15.83,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":40.66,"y":19.64,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":40.81,"y":18.64,"rotation":-89.55,"width":38,"height":45},"r_happyeye2":{"x":41.38,"y":15.05,"rotation":-89.1,"width":38,"height":45},"r_sadeye1":{"x":40.81,"y":18.64,"rotation":-89.55,"width":38,"height":45},"r_sadeye2":{"x":40.81,"y":18.64,"rotation":-89.55,"width":38,"height":45},"r_sadeye3":{"x":40.81,"y":18.64,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm2"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.6667,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.3667,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.4667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.3667,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.4667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.24},{"time":0.3333,"angle":-15.4},{"time":0.5,"angle":-13.24},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.88,"y":0.32},{"time":0.3333,"x":2.88,"y":1.04},{"time":0.5,"x":2.88,"y":0.32},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.046,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.046,"y":1,"curve":"stepped"},{"time":0.5,"x":1.046,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.48},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.19},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.46,"y":-0.06},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.68,"y":-0.09},{"time":0.6667,"x":0,"y":0}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":345.74},{"time":0.3333,"angle":346.64},{"time":0.5,"angle":345.74},{"time":0.6667,"angle":0}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":15.72},{"time":0.3333,"angle":12.72},{"time":0.5,"angle":15.72},{"time":0.6667,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.56},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.77},{"time":0.6667,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-41.91,"curve":"stepped"},{"time":0.3333,"angle":-41.91,"curve":"stepped"},{"time":0.5,"angle":-41.91},{"time":0.6667,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":44.4,"curve":"stepped"},{"time":0.3333,"angle":44.4,"curve":"stepped"},{"time":0.5,"angle":44.4},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-86.33,"curve":"stepped"},{"time":0.3333,"angle":-86.33,"curve":"stepped"},{"time":0.5,"angle":-86.33},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.3667,"x":-2.78,"y":-0.09},{"time":0.4,"x":-6.82,"y":-0.21},{"time":0.4667,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-34.41},{"time":0.3333,"angle":-38.4},{"time":0.5,"angle":-36.58},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.19},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.976,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1}]},"hat":{"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":36.75,"curve":"stepped"},{"time":0.3333,"angle":36.75,"curve":"stepped"},{"time":0.5,"angle":36.75},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":8.12,"y":-1.24,"curve":"stepped"},{"time":0.3333,"x":8.12,"y":-1.24,"curve":"stepped"},{"time":0.5,"x":8.12,"y":-1.24},{"time":0.6667,"x":0,"y":0}]}}},"happy":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm3"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":0.6667,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye5"},{"time":0.3333,"name":"l_happyeye"},{"time":0.6667,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.1667,"name":"mouth4"},{"time":0.3333,"name":"mouth4"},{"time":0.5,"name":"mouth2"},{"time":0.6667,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"},{"time":0.3333,"name":"r_happyeye"},{"time":0.6667,"name":"r_eye5"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-14.15},{"time":0.3333,"angle":0},{"time":0.5,"angle":9.54},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.1,"y":0.91},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.87,"y":1.98},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.03,"y":1.03},{"time":0.3333,"x":0.977,"y":1},{"time":0.5,"x":1.03,"y":1.03},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":1.19},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.35,"y":-0.16},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.36,"y":3.29},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.05},{"time":0.3333,"angle":0},{"time":0.5,"angle":350.31},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.8,"y":0.47},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.78,"y":-1.16},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.43},{"time":0.1667,"angle":44},{"time":0.3333,"angle":-23.14},{"time":0.5,"angle":53.9},{"time":0.6667,"angle":2.43}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.2,"y":0.91},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0.66},{"time":0.1667,"angle":-18.28},{"time":0.3333,"angle":-19.7},{"time":0.5,"angle":-4.39},{"time":0.6667,"angle":0.66}],"translate":[{"time":0,"x":4.16,"y":2.86},{"time":0.1667,"x":1.17,"y":1.06},{"time":0.3333,"x":4.73,"y":1.41},{"time":0.5,"x":0.84,"y":0.66},{"time":0.6667,"x":4.16,"y":2.86}]},"eyebrow":{"translate":[{"time":0,"x":-8.88,"y":0.07},{"time":0.1667,"x":-5.06,"y":0.19},{"time":0.3333,"x":-8.88,"y":0.07},{"time":0.5,"x":-5.06,"y":0.19},{"time":0.6667,"x":-8.88,"y":0.07}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-30.88},{"time":0.3333,"angle":0},{"time":0.5,"angle":-21.52},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":22.73},{"time":0.3333,"angle":0},{"time":0.5,"angle":58.48},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-9.39,"y":0.34},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":331.19},{"time":0.3333,"angle":0},{"time":0.5,"angle":338.74},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.6,"y":-2.64},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.93,"y":-4.44},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":23.83},{"time":0.3333,"angle":0},{"time":0.5,"angle":48.14},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":4.6,"y":8.34},{"time":0.6667,"x":0,"y":0}]},"hat":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.97,"y":0.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.9,"y":0.62},{"time":0.6667,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":1.01},{"time":0.1667,"angle":-24.83},{"time":0.3333,"angle":36.52},{"time":0.5,"angle":-54.71},{"time":0.6667,"angle":1.01}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.53,"y":4.52},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":-5.5},{"time":0.1667,"angle":-1.81},{"time":0.3333,"angle":11.48},{"time":0.5,"angle":11.52},{"time":0.6667,"angle":-5.5}],"translate":[{"time":0,"x":5.52,"y":-1.59},{"time":0.1667,"x":3.9,"y":-2.33},{"time":0.3333,"x":11.72,"y":1.91},{"time":0.5,"x":5.12,"y":1.45},{"time":0.6667,"x":5.52,"y":-1.59}]},"belt":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.47},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.96},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.37,"y":1.01},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.19,"y":-0.68},{"time":0.6667,"x":0,"y":0}]},"root":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":8.39,"y":27.68},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":8.15,"y":26.7},{"time":0.6667,"x":0,"y":0}]}}},"joy":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm3"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":0.6667,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye1"},{"time":0.5,"name":"l_eye1"},{"time":0.6667,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.1667,"name":"mouth2"},{"time":0.3333,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.6667,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye1"},{"time":0.5,"name":"r_eye1"},{"time":0.6667,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.28},{"time":0.3333,"angle":0},{"time":0.5,"angle":14.83},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.1,"y":0.91},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.87,"y":0.54},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":350.1},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.21},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.8,"y":0.47},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.78,"y":-1.16},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.94},{"time":0.1667,"angle":13.13},{"time":0.3333,"angle":2.94},{"time":0.5,"angle":37.36},{"time":0.6667,"angle":2.94}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-18.28},{"time":0.3333,"angle":0},{"time":0.5,"angle":-15.43},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":1.87,"y":2.25},{"time":0.1667,"x":1.17,"y":1.06},{"time":0.3333,"x":1.87,"y":2.25},{"time":0.5,"x":1.17,"y":1.06},{"time":0.6667,"x":1.87,"y":2.25}]},"eyebrow":{"translate":[{"time":0,"x":-9.2,"y":0.06,"curve":"stepped"},{"time":0.1667,"x":-9.2,"y":0.06,"curve":"stepped"},{"time":0.3,"x":-9.2,"y":0.06},{"time":0.3333,"x":-5.06,"y":0.19,"curve":"stepped"},{"time":0.5,"x":-5.06,"y":0.19,"curve":"stepped"},{"time":0.6333,"x":-5.06,"y":0.19},{"time":0.6667,"x":-9.2,"y":0.06}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-28.04},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.75},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.46},{"time":0.3333,"angle":0},{"time":0.5,"angle":48.56},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.98,"y":4.99},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.878,"y":1},{"time":0.6667,"x":1,"y":1}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":345.45},{"time":0.3333,"angle":2.67},{"time":0.5,"angle":352.08},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.6,"y":-2.64},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":9.69},{"time":0.3333,"angle":354.25},{"time":0.5,"angle":26.66},{"time":0.6667,"angle":0}]},"hat":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":4.78,"y":0.59},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.06,"y":-0.17},{"time":0.6667,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":1.01},{"time":0.1667,"angle":-15.01},{"time":0.3333,"angle":1.01,"curve":"stepped"},{"time":0.5,"angle":1.01,"curve":"stepped"},{"time":0.6667,"angle":1.01}]},"bone2":{"rotate":[{"time":0,"angle":0.54},{"time":0.1667,"angle":0.35},{"time":0.3333,"angle":0.54},{"time":0.5,"angle":1.01,"curve":"stepped"},{"time":0.6667,"angle":1.01}],"translate":[{"time":0,"x":8.47,"y":-0.9},{"time":0.1667,"x":6.1,"y":-0.82},{"time":0.3333,"x":8.47,"y":-0.9},{"time":0.5,"x":5.12,"y":1.45},{"time":0.6667,"x":8.47,"y":-0.9}]},"belt":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.47},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.96},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.59,"y":0},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.19,"y":-0.68},{"time":0.6667,"x":0,"y":0}]}}},"sad":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.3333,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"},{"time":1,"name":"r_arm3"},{"time":1.3333,"name":"r_arm3"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1.3333,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye3"},{"time":0.0667,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye3"},{"time":0.2667,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye3"},{"time":0.4667,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye3"},{"time":0.6667,"name":"l_sadeye2"},{"time":0.7333,"name":"l_sadeye3"},{"time":0.8,"name":"l_sadeye3"},{"time":0.8667,"name":"l_sadeye2"},{"time":0.9333,"name":"l_sadeye3"},{"time":1,"name":"l_sadeye3"},{"time":1.0667,"name":"l_sadeye2"},{"time":1.1333,"name":"l_sadeye3"},{"time":1.2,"name":"l_sadeye3"},{"time":1.2667,"name":"l_sadeye2"},{"time":1.3333,"name":"l_sadeye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye3"},{"time":0.0667,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye3"},{"time":0.2667,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye3"},{"time":0.4667,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye3"},{"time":0.6667,"name":"r_sadeye2"},{"time":0.7333,"name":"r_sadeye3"},{"time":0.8,"name":"r_sadeye3"},{"time":0.8667,"name":"r_sadeye2"},{"time":0.9333,"name":"r_sadeye3"},{"time":1,"name":"r_sadeye3"},{"time":1.0667,"name":"r_sadeye2"},{"time":1.1333,"name":"r_sadeye3"},{"time":1.2,"name":"r_sadeye3"},{"time":1.2667,"name":"r_sadeye2"},{"time":1.3333,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-12.25},{"time":0.6667,"angle":-15.19},{"time":1.3333,"angle":-12.25}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"x":1.01,"y":1.01,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"angle":-16.23,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"angle":-13.5,"curve":[0.073,0.87,0.75,1]},{"time":1,"angle":-16.06,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"angle":-13.5}],"translate":[{"time":0,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.3333,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.6667,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1.3333,"x":-5.11,"y":1.22}]},"l_arm":{"rotate":[{"time":0,"angle":-37.24},{"time":0.6667,"angle":-19.94},{"time":1.3333,"angle":-37.24}],"translate":[{"time":0,"x":-4.01,"y":-10.42,"curve":"stepped"},{"time":0.6667,"x":-4.01,"y":-10.42,"curve":"stepped"},{"time":1.3333,"x":-4.01,"y":-10.42}]},"eyebrow":{"translate":[{"time":0,"x":-7.39,"y":2.39}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":5.3},{"time":1.3333,"angle":0}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.43},{"time":0.6667,"angle":0},{"time":1,"angle":-0.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":38.88},{"time":0.6667,"angle":-301.85},{"time":1.3333,"angle":38.88}],"translate":[{"time":0,"x":-2.68,"y":-2.09,"curve":"stepped"},{"time":0.6667,"x":-2.68,"y":-2.09,"curve":"stepped"},{"time":1.3333,"x":-2.68,"y":-2.09}]},"bone2":{"rotate":[{"time":0,"angle":21.68,"curve":"stepped"},{"time":0.3333,"angle":21.68},{"time":0.6667,"angle":6.43},{"time":1,"angle":21.68,"curve":"stepped"},{"time":1.3333,"angle":21.68}],"translate":[{"time":0,"x":9.57,"y":4.43,"curve":"stepped"},{"time":0.3333,"x":9.57,"y":4.43},{"time":0.6667,"x":10.89,"y":0.39},{"time":1,"x":9.57,"y":4.43,"curve":"stepped"},{"time":1.3333,"x":9.57,"y":4.43}]},"l_arm2":{"rotate":[{"time":0,"angle":-1.92,"curve":"stepped"},{"time":0.3333,"angle":-1.92},{"time":0.6667,"angle":-10.88},{"time":1,"angle":-1.92,"curve":"stepped"},{"time":1.3333,"angle":-1.92}],"translate":[{"time":0,"x":-2.05,"y":3.45,"curve":"stepped"},{"time":0.3333,"x":-2.05,"y":3.45,"curve":"stepped"},{"time":0.6667,"x":-2.05,"y":3.45,"curve":"stepped"},{"time":1,"x":-2.05,"y":3.45,"curve":"stepped"},{"time":1.3333,"x":-2.05,"y":3.45}]},"hat2":{"rotate":[{"time":0,"angle":20.3},{"time":0.6667,"angle":28.25},{"time":1.3333,"angle":20.3}],"translate":[{"time":0,"x":-11.58,"y":13.87,"curve":"stepped"},{"time":0.6667,"x":-11.58,"y":13.87,"curve":"stepped"},{"time":1.3333,"x":-11.58,"y":13.87}]},"hat3":{"rotate":[{"time":0,"angle":18.56},{"time":0.6667,"angle":24.92},{"time":1.3333,"angle":18.56}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.01,"y":-0.42},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.01,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.99},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.99},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.977,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"eff_sad1":{"translate":[{"time":0,"x":19.34,"y":4.37}]},"eff_sad2":{"translate":[{"time":0,"x":12.48,"y":-18.72}]}}},"stand":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm2"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":-1.13},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.75},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.03,"y":1.02},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.01,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.48},{"time":0.6667,"angle":0},{"time":1,"angle":4.19},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.46,"y":-0.06},{"time":0.6667,"x":0,"y":0},{"time":1,"x":2.68,"y":-0.09},{"time":1.3333,"x":0,"y":0}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":352.12},{"time":0.6667,"angle":0.43},{"time":1,"angle":350.39},{"time":1.3333,"angle":0}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.76},{"time":0.6667,"angle":356},{"time":1,"angle":7.49},{"time":1.3333,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.56},{"time":0.6667,"angle":0},{"time":1,"angle":-4.77},{"time":1.3333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.57},{"time":0.6667,"angle":0},{"time":1,"angle":-3.03},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.15},{"time":0.6667,"angle":0},{"time":1,"angle":1.94},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":1,"angle":3.79},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.09},{"time":0.7333,"x":-6.82,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"hat":{"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]}}},"surprised":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm2"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.8333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":7.59},{"time":0.4,"angle":6.29},{"time":0.6,"angle":7.59},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-0.02,"y":10.88},{"time":0.4,"x":-0.02,"y":7.36},{"time":0.6,"x":-0.02,"y":10.88},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2,"x":1.046,"y":1,"curve":"stepped"},{"time":0.4,"x":1.046,"y":1,"curve":"stepped"},{"time":0.6,"x":1.046,"y":1},{"time":0.8333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-2.48},{"time":0.4,"angle":0},{"time":0.6,"angle":4.19},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":0.46,"y":-0.06},{"time":0.4,"x":0,"y":0},{"time":0.6,"x":2.68,"y":-0.09},{"time":0.8333,"x":0,"y":0}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":347.83},{"time":0.4,"angle":351.19},{"time":0.6,"angle":347.83},{"time":0.8333,"angle":0}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":350.19},{"time":0.4,"angle":356},{"time":0.6,"angle":350.19},{"time":0.8333,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":347.7},{"time":0.4,"angle":349.65},{"time":0.6,"angle":347.7},{"time":0.8333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":24.93},{"time":0.2,"angle":-251.03},{"time":0.4,"angle":-249.66},{"time":0.6,"angle":-251.03},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":38.66},{"time":0.4,"angle":47.24},{"time":0.6,"angle":38.66},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":-17.76},{"time":0.2,"angle":18.12},{"time":0.4,"angle":11.03},{"time":0.6,"angle":26.97},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":6.03,"y":0.1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2,"angle":0,"curve":"stepped"},{"time":0.6,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2,"x":0.991,"y":1},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":23.47},{"time":0.4,"angle":27.98},{"time":0.6,"angle":23.47},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":0.03,"y":2.08},{"time":0.4,"x":-2.31,"y":4.43},{"time":0.6,"x":0.03,"y":2.08},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2,"x":0.968,"y":1},{"time":0.4,"x":1,"y":1},{"time":0.6,"x":0.968,"y":1},{"time":0.8333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.58,"y":-6.79}]},"hat":{"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":-5.08},{"time":0.2,"angle":8.51},{"time":0.4,"angle":34.16},{"time":0.6,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}]},"belt":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-2.14},{"time":0.4,"angle":-3.58},{"time":0.6,"angle":-2.14},{"time":0.8333,"angle":0}]}}},"talk":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm2"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0.4333,"name":"mouth1"},{"time":0.4667,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.5667,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6333,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":0.8333,"name":"mouth1"},{"time":0.8667,"name":"mouth2"},{"time":0.9,"name":"mouth3"},{"time":0.9667,"name":"mouth1"},{"time":1,"name":"mouth2"},{"time":1.0333,"name":"mouth3"},{"time":1.0667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":-1.13},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.75},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.979,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.23},{"time":0.6667,"angle":0},{"time":1,"angle":5.5},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":354.97},{"time":0.6667,"angle":3.11},{"time":1,"angle":356.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.24},{"time":0.6667,"angle":357.34},{"time":1,"angle":5.84},{"time":1.3333,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.56},{"time":0.6667,"angle":0},{"time":1,"angle":-4.77},{"time":1.3333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.48},{"time":0.6667,"angle":0},{"time":1,"angle":-1.84},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.15},{"time":0.6667,"angle":0},{"time":1,"angle":1.94},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.94},{"time":0.6667,"angle":0},{"time":1,"angle":4.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.09},{"time":0.7333,"x":-6.82,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":0.3},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.008,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.008,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":0.3},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.014,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.014,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]}}},"uneasy":{"slots":{"bone2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":0.6667,"name":"r_arm2"}]},"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.6667,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.3333,"name":"l_eye4"},{"time":0.6667,"name":"l_eye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.3333,"name":"r_eye4"},{"time":0.6667,"name":"r_eye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.99},{"time":0.3333,"angle":0},{"time":0.5,"angle":-7.96},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.56,"y":1.42},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":3.18,"y":2.53},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.04},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.02},{"time":0.5667,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":-2.13,"curve":"stepped"},{"time":0.6667,"angle":-2.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":-7.56,"curve":"stepped"},{"time":0.6667,"angle":-7.56}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":-6.91,"y":0.11,"curve":"stepped"},{"time":0.3,"x":-6.91,"y":0.11},{"time":0.3333,"x":-3,"y":0.24,"curve":"stepped"},{"time":0.6333,"x":-3,"y":0.24},{"time":0.6667,"x":-6.91,"y":0.11}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":40.47},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.64},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1}]},"bone2":{"rotate":[{"time":0,"angle":-16.34,"curve":"stepped"},{"time":0.6667,"angle":-16.34}],"translate":[{"time":0,"x":-0.33,"y":0.31,"curve":"stepped"},{"time":0.6667,"x":-0.33,"y":0.31}]},"r_arm":{"rotate":[{"time":0,"angle":27.14,"curve":"stepped"},{"time":0.6667,"angle":27.14}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}]},"hat2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":355.05},{"time":0.3333,"angle":360},{"time":0.5,"angle":2.17},{"time":0.6667,"angle":0}]},"hat3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":354.43},{"time":0.3333,"angle":0},{"time":0.5,"angle":2.47},{"time":0.6667,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/204101.png b/m78-all/m78-fe/public/images/character/204101.png new file mode 100644 index 000000000..254aac4aa Binary files /dev/null and b/m78-all/m78-fe/public/images/character/204101.png differ diff --git a/m78-all/m78-fe/public/images/character/204301.atlas b/m78-all/m78-fe/public/images/character/204301.atlas new file mode 100644 index 000000000..dc17b15ee --- /dev/null +++ b/m78-all/m78-fe/public/images/character/204301.atlas @@ -0,0 +1,349 @@ + +204301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +belt + rotate: false + xy: 340, 167 + size: 62, 23 + orig: 62, 23 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 170, 100 + size: 65, 70 + orig: 65, 70 + offset: 0, 0 + index: -1 +eyebrow + rotate: true + xy: 166, 2 + size: 91, 15 + orig: 91, 15 + offset: 0, 0 + index: -1 +eyebrow_sad + rotate: false + xy: 249, 163 + size: 86, 20 + orig: 86, 20 + offset: 0, 0 + index: -1 +eyebrow_surprised + rotate: true + xy: 143, 2 + size: 91, 21 + orig: 91, 21 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 15 + size: 139, 78 + orig: 139, 78 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 95 + size: 166, 159 + orig: 166, 159 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 447, 92 + size: 31, 30 + orig: 31, 30 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 231, 43 + size: 55, 38 + orig: 55, 38 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 249, 185 + size: 69, 89 + orig: 69, 89 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 480, 143 + size: 30, 42 + orig: 30, 42 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 368, 122 + size: 36, 43 + orig: 36, 43 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 347, 22 + size: 29, 16 + orig: 29, 16 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 276, 98 + size: 48, 17 + orig: 48, 17 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 370, 84 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: false + xy: 183, 2 + size: 30, 27 + orig: 30, 27 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: false + xy: 482, 71 + size: 28, 25 + orig: 28, 25 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: true + xy: 451, 127 + size: 29, 26 + orig: 29, 26 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: true + xy: 326, 85 + size: 30, 42 + orig: 30, 42 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: true + xy: 326, 85 + size: 30, 42 + orig: 30, 42 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: true + xy: 316, 53 + size: 30, 42 + orig: 30, 42 + offset: 0, 0 + index: -1 +l_hair + rotate: false + xy: 237, 100 + size: 37, 61 + orig: 37, 61 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 480, 187 + size: 30, 67 + orig: 30, 67 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 479, 98 + size: 31, 9 + orig: 31, 9 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 342, 7 + size: 30, 13 + orig: 30, 13 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 309, 4 + size: 31, 16 + orig: 31, 16 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 410, 165 + size: 48, 31 + orig: 48, 31 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 215, 18 + size: 14, 11 + orig: 14, 11 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 374, 6 + size: 30, 19 + orig: 30, 19 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 271, 46 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 2, 5 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 479, 109 + size: 32, 31 + orig: 32, 31 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 406, 125 + size: 38, 43 + orig: 38, 43 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 170, 172 + size: 77, 82 + orig: 77, 82 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 231, 2 + size: 39, 37 + orig: 39, 37 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 330, 117 + size: 44, 36 + orig: 44, 36 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 460, 158 + size: 38, 18 + orig: 38, 18 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 360, 57 + size: 42, 25 + orig: 42, 25 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 271, 56 + size: 43, 40 + orig: 43, 40 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: false + xy: 365, 27 + size: 35, 28 + orig: 35, 28 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: false + xy: 447, 62 + size: 33, 28 + orig: 33, 28 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: false + xy: 309, 22 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: true + xy: 270, 2 + size: 39, 37 + orig: 39, 37 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: true + xy: 270, 2 + size: 39, 37 + orig: 39, 37 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 406, 86 + size: 39, 37 + orig: 39, 37 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 183, 31 + size: 46, 67 + orig: 46, 67 + offset: 0, 0 + index: -1 +sword + rotate: false + xy: 410, 198 + size: 68, 56 + orig: 68, 56 + offset: 0, 0 + index: -1 +tail + rotate: false + xy: 340, 192 + size: 68, 62 + orig: 68, 62 + offset: 0, 0 + index: -1 +top_hair + rotate: false + xy: 276, 117 + size: 52, 44 + orig: 52, 44 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/204301.json b/m78-all/m78-fe/public/images/character/204301.json new file mode 100644 index 000000000..1322a7f3d --- /dev/null +++ b/m78-all/m78-fe/public/images/character/204301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"sACpQMbC5FV/5T8Hhhpu3ZdxOJU","spine":"3.5.25","width":177,"height":263,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":47.56,"rotation":90.87,"x":3.64,"y":47.54},{"name":"belt","parent":"body1","length":10.33,"rotation":-170.75,"x":3.7,"y":4.3},{"name":"bone","parent":"body1","length":76.94,"rotation":94.54,"x":-0.84,"y":16.35},{"name":"eff_exclamation","parent":"root","length":30.13,"rotation":36.18,"x":84.96,"y":217.06},{"name":"eff_panic","parent":"root","length":25.8,"rotation":13.84,"x":90.77,"y":167.33},{"name":"eff_sad1","parent":"root","length":20.46,"rotation":-91.97,"x":-9.94,"y":114.07},{"name":"eff_sad2","parent":"root","length":15.51,"rotation":-90,"x":40.71,"y":112.04},{"name":"eff_star1","parent":"root","length":24.94,"rotation":21.34,"x":63.9,"y":79.84},{"name":"eff_star2","parent":"root","length":22.85,"rotation":162.43,"x":-56.25,"y":81.3},{"name":"eff_star3","parent":"root","length":20.95,"rotation":-14.04,"x":55.19,"y":28.3},{"name":"head","parent":"body1","length":141.94,"rotation":-0.87,"x":43.94,"y":0.78},{"name":"eyebrow","parent":"head","length":19.98,"rotation":-177.92,"x":80.95,"y":-12.71},{"name":"f_hair","parent":"head","length":63.53,"rotation":-179.67,"x":119.07,"y":-3.27},{"name":"l_arm1","parent":"body1","length":27.8,"rotation":-131.64,"x":36.92,"y":-7.1},{"name":"l_arm2","parent":"l_arm1","length":41.08,"rotation":15.1,"x":18.03,"y":0.21},{"name":"l_ear","parent":"head","length":66.43,"rotation":-30.91,"x":88.21,"y":-37.39},{"name":"l_eye","parent":"head","length":19.98,"rotation":2.08,"x":22.87,"y":-38.48},{"name":"l_hair","parent":"head","length":42.01,"rotation":-167.52,"x":97.29,"y":-51.18},{"name":"l_leg","parent":"root","length":49.74,"rotation":-89.16,"x":12.36,"y":50.8},{"name":"mouth","parent":"head","length":13.12,"rotation":14.42,"x":-1.82,"y":-15.25},{"name":"r_arm1","parent":"body1","length":27.21,"rotation":133.04,"x":38.02,"y":17.21},{"name":"r_arm2","parent":"r_arm1","length":33.82,"rotation":65.41,"x":23.89,"y":-0.83},{"name":"r_ear","parent":"head","length":75.21,"rotation":44.41,"x":87.12,"y":34.85},{"name":"r_eye","parent":"head","length":19.62,"rotation":-2.12,"x":19.6,"y":20.69},{"name":"r_leg","parent":"root","length":51.73,"rotation":-94.83,"x":-7.61,"y":51.53},{"name":"sword","parent":"body1","length":53.75,"rotation":127.54,"x":-3.7,"y":18.94},{"name":"top_hair","parent":"head","length":52.77,"rotation":25.68,"x":127.42,"y":-0.73}],"slots":[{"name":"tail","bone":"bone","attachment":"tail"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"belt","bone":"belt","attachment":"belt"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"sword","bone":"sword","attachment":"sword"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"top_hair","bone":"top_hair","attachment":"top_hair"}],"skins":{"default":{"belt":{"belt":{"x":4.8,"y":-1.92,"rotation":79.88,"width":62,"height":23}},"body1":{"body1":{"x":18.09,"y":1.63,"rotation":-90.87,"width":65,"height":70}},"eyebrow":{"eyebrow":{"x":19.04,"y":-7.85,"rotation":87.92,"width":91,"height":15},"eyebrow_sad":{"x":19.04,"y":-7.85,"rotation":87.92,"width":86,"height":20},"eyebrow_surprised":{"x":19.04,"y":-7.85,"rotation":87.92,"width":91,"height":21}},"f_hair":{"f_hair":{"x":32.84,"y":-14.91,"rotation":89.67,"width":139,"height":78}},"head":{"head":{"x":66.64,"y":12.95,"rotation":-90,"width":166,"height":159}},"l_arm1":{"l_arm1":{"x":14.61,"y":0.76,"rotation":40.76,"width":31,"height":30}},"l_arm2":{"l_arm2":{"x":17.83,"y":-0.7,"rotation":25.66,"width":55,"height":38}},"l_ear":{"l_ear":{"x":19.32,"y":5.55,"rotation":-59.09,"width":69,"height":89}},"l_eye1":{"l_eye1":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":30,"height":42},"l_eye2":{"x":18.43,"y":1.58,"rotation":-92.08,"width":36,"height":43},"l_eye3":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":29,"height":16},"l_eye_happy":{"x":17.7,"y":11.41,"rotation":-92.08,"width":48,"height":17},"l_eye_sad":{"x":24.95,"y":0.98,"rotation":-92.08,"width":36,"height":34},"l_eye_sad1":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":30,"height":27},"l_eye_sad2":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":28,"height":25},"l_eye_sad3":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":29,"height":26},"l_eye_surprised":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":30,"height":42},"l_eye_uneasy1":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":30,"height":42},"l_eye_uneasy2":{"x":17.27,"y":-0.2,"rotation":-92.08,"width":30,"height":42}},"l_hair":{"l_hair":{"x":26.52,"y":5.77,"rotation":77.52,"width":37,"height":61}},"l_leg":{"l_leg":{"x":19.68,"y":-1.4,"rotation":89.16,"width":30,"height":67}},"mouth1":{"mouth1":{"x":21.26,"y":4.55,"rotation":-104.42,"width":31,"height":9},"mouth2":{"x":21.26,"y":4.55,"rotation":-104.42,"width":30,"height":13},"mouth3":{"x":21.26,"y":4.55,"rotation":-104.42,"width":31,"height":16},"mouth_happy":{"x":21.26,"y":4.55,"rotation":-104.42,"width":48,"height":31},"mouth_sad":{"x":21.26,"y":4.55,"rotation":-104.42,"width":14,"height":11},"mouth_surprised":{"x":21.26,"y":4.55,"rotation":-104.42,"width":30,"height":19},"mouth_uneasy1":{"x":21.26,"y":4.55,"rotation":-104.42,"width":36,"height":8},"mouth_uneasy2":{"x":21.26,"y":4.55,"rotation":-104.42,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":16.13,"rotation":136.08,"width":32,"height":31}},"r_arm2":{"r_arm2":{"x":12.3,"y":1.17,"rotation":70.67,"width":38,"height":43}},"r_ear":{"r_ear":{"x":28.03,"y":-1.42,"rotation":-134.41,"width":77,"height":82}},"r_eye1":{"r_eye1":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":39,"height":37},"r_eye2":{"x":22.01,"y":-3.97,"rotation":-87.88,"width":44,"height":36},"r_eye3":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":38,"height":18},"r_eye_happy":{"x":19.85,"y":-4.41,"rotation":-87.88,"width":42,"height":25},"r_eye_sad":{"x":26.33,"y":-2.72,"rotation":-87.88,"width":43,"height":40},"r_eye_sad1":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":35,"height":28},"r_eye_sad2":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":33,"height":28},"r_eye_sad3":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":36,"height":29},"r_eye_surprised":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":39,"height":37},"r_eye_uneasy1":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":39,"height":37},"r_eye_uneasy2":{"x":20.11,"y":-1.5,"rotation":-87.88,"width":39,"height":37}},"r_leg":{"r_leg":{"x":20.12,"y":4.56,"rotation":94.83,"width":46,"height":67}},"sword":{"sword":{"x":16.16,"y":-1.4,"rotation":141.58,"width":68,"height":56}},"tail":{"tail":{"x":26.8,"y":-14.75,"rotation":174.59,"width":68,"height":62}},"top_hair":{"top_hair":{"x":27.6,"y":11.89,"rotation":-115.68,"width":52,"height":44}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1.3333,"name":"eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6667,"name":"mouth2"},{"time":0.7667,"name":"mouth1"},{"time":0.8667,"name":"mouth3"},{"time":0.9667,"name":"mouth2"},{"time":1.0333,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":20.42},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":356.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":6.73},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.52},{"time":0.6667,"angle":0},{"time":1,"angle":8.72},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-12.2},{"time":0.6667,"angle":0},{"time":1,"angle":-12.26},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":20.45},{"time":0.6667,"angle":22.44},{"time":1,"angle":20.45},{"time":1.3333,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":-34.44},{"time":0.6667,"angle":-32.45},{"time":1,"angle":-34.44},{"time":1.3333,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":22},{"time":0.6667,"angle":0},{"time":1,"angle":22},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.55},{"time":0.6667,"angle":0},{"time":1,"angle":5.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.42,"y":0.02},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.42,"y":0.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.59},{"time":0.6667,"angle":0},{"time":1,"angle":-1.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.13},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.13},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.02},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1,"name":"eyebrow"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":15.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-7.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":353.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":15.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.24},{"time":0.5,"angle":0},{"time":0.7667,"angle":-7.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-12.68},{"time":0.5,"angle":0},{"time":0.7667,"angle":12.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":6.4},{"time":0.5,"angle":0},{"time":0.8,"angle":-5.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.2333,"angle":-1.59},{"time":0.5,"angle":4.22},{"time":0.7333,"angle":9.78},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09},{"time":0.2333,"angle":-1.59},{"time":0.5,"angle":-23.53},{"time":0.7333,"angle":-3.18},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":8.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.73},{"time":0.5,"angle":0},{"time":0.8333,"angle":-3.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":6.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-5.57},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.8},{"time":0.5,"angle":0},{"time":0.7667,"angle":-6.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.1},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.8},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1,"name":"eyebrow"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.3,"name":"mouth2"},{"time":0.3333,"name":"mouth1"},{"time":0.4333,"name":"mouth2"},{"time":0.4667,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":12.06},{"time":0.7,"angle":-1.18},{"time":1,"angle":0}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":-6.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":353.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":4.96},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-8.22},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.39},{"time":0.5,"angle":0},{"time":0.7667,"angle":5.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.31},{"time":0.5,"angle":0},{"time":0.7333,"angle":-2.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":32.99},{"time":0.6667,"angle":9.99},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09},{"time":0.2333,"angle":13.06},{"time":0.5,"angle":0},{"time":0.7667,"angle":13.25},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.46,"y":-1.51},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":2.09,"y":-0.18},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":2.78,"y":0.3},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":3.51},{"time":0.7667,"angle":-1.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.14},{"time":0.6667,"angle":-3.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.63},{"time":0.5,"angle":0},{"time":0.7667,"angle":-8.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.18},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.18},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_sad"},{"time":1.3333,"name":"eyebrow_sad"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad1"},{"time":0.1667,"name":"l_eye_sad2"},{"time":0.3333,"name":"l_eye_sad3"},{"time":0.5,"name":"l_eye_sad1"},{"time":0.6667,"name":"l_eye_sad2"},{"time":0.8333,"name":"l_eye_sad3"},{"time":1,"name":"l_eye_sad1"},{"time":1.1667,"name":"l_eye_sad3"},{"time":1.3333,"name":"l_eye_sad1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad1"},{"time":0.1667,"name":"r_eye_sad2"},{"time":0.3333,"name":"r_eye_sad3"},{"time":0.5,"name":"r_eye_sad1"},{"time":0.6667,"name":"r_eye_sad2"},{"time":0.8333,"name":"r_eye_sad3"},{"time":1,"name":"r_eye_sad1"},{"time":1.1667,"name":"r_eye_sad3"},{"time":1.3333,"name":"r_eye_sad1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-3.66},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-3.02,"y":-0.43,"curve":"stepped"},{"time":1,"x":-3.02,"y":-0.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":29.13},{"time":0.8333,"angle":47.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":3.22},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":6.99},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":11.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":11.09},{"time":0.8667,"angle":8.05},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-9.51},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-2.44,"y":0.04},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.6667,"angle":1.37},{"time":1.3333,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09},{"time":0.6667,"angle":310.83},{"time":1.3333,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-65.77},{"time":0.3333,"angle":-69.71},{"time":0.6667,"angle":-60.72},{"time":1.3333,"angle":-65.77}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":36.9},{"time":0.8333,"angle":35.71},{"time":1.3333,"angle":36.9}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.22,"y":0.02},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.21},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1.3333,"name":"eyebrow"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.89},{"time":0.6667,"angle":0},{"time":1,"angle":16.17},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.05},{"time":1,"angle":-1.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":356.26},{"time":1,"angle":2.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.31},{"time":1,"angle":-4.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.89},{"time":0.6667,"angle":0},{"time":1,"angle":-6.36},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.89},{"time":0.6667,"angle":0},{"time":1,"angle":7.58},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":-9.15},{"time":0.6667,"angle":-25.09},{"time":1,"angle":-13.19},{"time":1.3333,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":-32.2},{"time":0.6667,"angle":-25.09},{"time":1,"angle":-27.04},{"time":1.3333,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.57,"y":0.06},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.14,"y":-0.15},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.89},{"time":0.6667,"angle":0},{"time":1,"angle":-6.53},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.87},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.87},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_surprised"},{"time":1,"name":"eyebrow_surprised"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.35},{"time":0.5,"angle":0},{"time":0.7333,"angle":-0.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":2.44},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":1.22},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.79},{"time":0.6667,"angle":-3.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5667,"angle":4.98},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-8.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.37},{"time":0.6667,"angle":0.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-1.83,"y":0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.5,"angle":0},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09,"curve":"stepped"},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.83,"y":-0.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.83,"y":-0.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.22,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.22,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1,"name":"eyebrow"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.4667,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":0.9667,"name":"r_eye_uneasy1"},{"time":1,"name":"r_eye_uneasy1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.31},{"time":0.7333,"angle":-4.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bone":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":3.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-8.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":63.77},{"time":0.5,"angle":60.96},{"time":0.6667,"angle":70.89},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-25.09},{"time":0.3333,"angle":29.37},{"time":0.6667,"angle":20.93},{"time":1,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.66,"y":-0.12,"curve":"stepped"},{"time":0.6667,"x":3.66,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-22.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.66,"y":-0.12,"curve":"stepped"},{"time":0.6667,"x":3.66,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sword":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-9.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"belt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/204301.png b/m78-all/m78-fe/public/images/character/204301.png new file mode 100644 index 000000000..ee7b6963c Binary files /dev/null and b/m78-all/m78-fe/public/images/character/204301.png differ diff --git a/m78-all/m78-fe/public/images/character/205101.atlas b/m78-all/m78-fe/public/images/character/205101.atlas new file mode 100644 index 000000000..da7a2128e --- /dev/null +++ b/m78-all/m78-fe/public/images/character/205101.atlas @@ -0,0 +1,307 @@ + +205101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 2, 7 + size: 84, 92 + orig: 84, 92 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 156, 103 + size: 90, 20 + orig: 90, 20 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 249, 201 + size: 90, 20 + orig: 90, 20 + offset: 0, 0 + index: -1 +eyebrow3 + rotate: false + xy: 365, 234 + size: 90, 20 + orig: 90, 20 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 156, 125 + size: 91, 129 + orig: 91, 129 + offset: 0, 0 + index: -1 +glasses + rotate: false + xy: 249, 223 + size: 114, 31 + orig: 114, 31 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 93 + size: 152, 161 + orig: 152, 161 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 457, 199 + size: 40, 29 + orig: 40, 29 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 407, 166 + size: 26, 29 + orig: 26, 29 + offset: 0, 0 + index: -1 +l_arm3 + rotate: false + xy: 257, 2 + size: 27, 30 + orig: 27, 30 + offset: 0, 0 + index: -1 +l_arm4 + rotate: true + xy: 341, 201 + size: 20, 32 + orig: 20, 32 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 96, 46 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 249, 154 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 289, 154 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: true + xy: 96, 6 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: true + xy: 96, 6 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 136, 46 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 176, 56 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 216, 56 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 249, 128 + size: 24, 51 + orig: 24, 51 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 297, 43 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 369, 166 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 349, 116 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 377, 128 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: true + xy: 329, 76 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 325, 38 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: true + xy: 357, 78 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: true + xy: 385, 90 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 405, 128 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 2, 2 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 230, 8 + size: 25, 46 + orig: 25, 46 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 422, 200 + size: 33, 32 + orig: 33, 32 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 296, 81 + size: 31, 31 + orig: 31, 31 + offset: 0, 0 + index: -1 +r_arm4 + rotate: false + xy: 413, 92 + size: 22, 34 + orig: 22, 34 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 143, 6 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 190, 9 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 256, 81 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 257, 34 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 257, 34 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 329, 154 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye7 + rotate: true + xy: 302, 114 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: true + xy: 375, 194 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 457, 230 + size: 24, 51 + orig: 24, 51 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/205101.json b/m78-all/m78-fe/public/images/character/205101.json new file mode 100644 index 000000000..83091047a --- /dev/null +++ b/m78-all/m78-fe/public/images/character/205101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"E5tuiSo/UGPUMIvE1rxdb/EVDis","spine":"3.5.25","width":153.26,"height":239.12,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":0.2,"y":30.32},{"name":"l_arm","parent":"body","length":13.57,"rotation":174.16,"x":50.98,"y":-15.69},{"name":"bone2","parent":"l_arm","length":12.12,"rotation":-22.49,"x":15.12,"y":3.32},{"name":"eff_exclamation","parent":"root","length":22.03,"rotation":62.33,"x":61.57,"y":244.83},{"name":"eff_panic","parent":"root","length":18.48,"rotation":47.46,"x":88.02,"y":192.66},{"name":"eff_sad1","parent":"root","length":22.05,"rotation":-90.9,"x":0.48,"y":130.43},{"name":"eff_sad2","parent":"root","length":18.04,"rotation":-90,"x":43.19,"y":114.49},{"name":"eff_star1","parent":"root","length":15.56,"rotation":33.17,"x":62.56,"y":95.48},{"name":"eff_star2","parent":"root","length":13.15,"rotation":162.52,"x":-38.19,"y":60.58},{"name":"eff_star3","parent":"root","length":11.65,"rotation":-25.29,"x":36.52,"y":46.22},{"name":"head","parent":"body","length":132.6,"x":61.68,"y":3.02},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":68.96,"y":-11.48},{"name":"glasses","parent":"head","length":18.67,"rotation":-175.5,"x":51.21,"y":-11.76},{"name":"hair1","parent":"head","length":38.65,"rotation":123.17,"x":106.88,"y":-16.48},{"name":"l_hair","parent":"head","length":37.63,"rotation":177.82,"x":87.71,"y":-53.29},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":6.8,"y":38.61},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":14.33,"y":-8.7},{"name":"r_arm","parent":"body","length":21.99,"rotation":-164.95,"x":51.66,"y":19.13},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":24.59,"x":18.09,"y":0.97},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-5.87,"y":38.54}],"slots":[{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"png/body1","bone":"body","attachment":"body"},{"name":"l_hair","bone":"l_hair"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"png/f_hair1","bone":"hair1","attachment":"f_hair"},{"name":"glasses","bone":"glasses","attachment":"glasses"},{"name":"l_arm2","bone":"bone2","attachment":"l_arm2"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"}],"skins":{"default":{"eyebrow":{"eyebrow1":{"x":2.65,"y":6.22,"rotation":-91.35,"width":90,"height":20},"eyebrow2":{"x":2.65,"y":6.21,"rotation":-91.35,"width":90,"height":20},"eyebrow3":{"x":2.6,"y":6.23,"rotation":-90.9,"width":90,"height":20}},"glasses":{"glasses":{"x":10.76,"y":-9.6,"rotation":86.4,"width":114,"height":31}},"l_arm1":{"l_arm1":{"x":7.49,"y":-1.24,"rotation":89.47,"width":40,"height":29},"l_arm3":{"rotation":96.74,"width":27,"height":30}},"l_arm2":{"l_arm2":{"x":11.3,"y":0.58,"rotation":123.26,"width":26,"height":29},"l_arm4":{"rotation":124.2,"width":20,"height":32}},"l_eye":{"l_eye1":{"x":44.49,"y":-33.36,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":44.49,"y":-33.36,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":44.49,"y":-33.36,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":43.44,"y":-32.15,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":43.16,"y":-31.61,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":43.7,"y":-32.35,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":43.97,"y":-32.08,"rotation":-89.1,"width":38,"height":45},"l_eye8":{"path":"l_eye7","x":43.38,"y":-32.33,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":44.54,"y":-33.47,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":-3.1,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":-3.1,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":-3.1,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":-3.1,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":-3.1,"y":0.14,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":-3.1,"y":0.14,"rotation":88.64,"width":36,"height":26},"mouth7":{"x":-3.1,"y":0.14,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":-3.1,"y":0.14,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-3.1,"y":0.14,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":28.5,"y":-20.18,"rotation":-89.55,"width":3,"height":3}},"png/body1":{"body":{"x":26.05,"y":-0.17,"rotation":-89.1,"width":84,"height":92}},"png/f_hair1":{"f_hair":{"x":53.51,"y":14.67,"rotation":147.74,"width":91,"height":129}},"png/head":{"head":{"x":65.77,"y":5.6,"rotation":-89.55,"width":152,"height":161}},"png/l_leg":{"l_leg":{"x":12.5,"y":-0.66,"rotation":88.65,"width":24,"height":51}},"png/r_leg":{"r_leg":{"x":13.11,"y":-2.73,"rotation":88.73,"width":24,"height":51}},"r_arm1":{"r_arm1":{"x":11.76,"y":0.04,"rotation":74.4,"width":25,"height":46},"r_arm3":{"rotation":75.86,"width":31,"height":31}},"r_arm2":{"r_arm2":{"x":11.4,"y":-0.94,"rotation":51.59,"width":33,"height":32},"r_arm4":{"rotation":55.5,"width":22,"height":34}},"r_eye":{"r_eye1":{"x":43.15,"y":23.13,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":43.15,"y":23.12,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":43.15,"y":23.12,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":41.09,"y":17.17,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":40.8,"y":16.61,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":40.34,"y":17.23,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":41.97,"y":16.18,"rotation":-89.1,"width":38,"height":45},"r_eye8":{"path":"r_eye7","x":43.9,"y":18.09,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":44.32,"y":16.56,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1667,"name":"l_eye3"},{"time":0.6667,"name":"l_eye1"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3,"name":"mouth2"},{"time":0.3667,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.5333,"name":"mouth1"},{"time":0.6667,"name":"mouth3"},{"time":0.8333,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1667,"name":"r_eye3"},{"time":0.6667,"name":"r_eye1"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.92},{"time":0.4333,"angle":0},{"time":0.6667,"angle":2.65},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.02,"y":2.67},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":-0.01,"y":4.94},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":1.02,"y":1},{"time":0.8333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":11.52},{"time":0.4333,"angle":2.56},{"time":0.6667,"angle":1.97},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.63,"y":0},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":1.63,"y":0},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-5.85},{"time":0.8333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4333,"x":1.017,"y":1.016},{"time":0.8333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":317.71}],"translate":[{"time":0,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":6.23}],"translate":[{"time":0,"x":-1.98,"y":0.59}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1333,"x":0,"y":0},{"time":0.1667,"x":-3.99,"y":-0.13,"curve":"stepped"},{"time":0.6333,"x":-3.99,"y":-0.13},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.19},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":0.03,"y":-1.19},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.976,"y":1},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":0.976,"y":1},{"time":0.8333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":0.03,"y":-1.43},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.4333,"x":1,"y":1},{"time":0.6667,"x":0.968,"y":1},{"time":0.8333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.4333,"angle":-337.47},{"time":0.8333,"angle":10.53}],"translate":[{"time":0,"x":6.17,"y":5.73}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4333,"x":0.925,"y":1},{"time":0.8333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-347.74}],"translate":[{"time":0,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":-103.88}],"translate":[{"time":0,"x":-2.52,"y":-1.05}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":0.6667,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":7.09},{"time":0.5,"angle":0},{"time":0.7333,"angle":-10.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1,"y":-2.11},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-0.26,"y":-1.73},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.044,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.2},{"time":0.5,"angle":0},{"time":0.7333,"angle":-5.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.56,"y":-1.09},{"time":0.2667,"x":1.66,"y":-1.07},{"time":0.5,"x":0.56,"y":-1.09},{"time":0.7333,"x":1.76,"y":-1.08},{"time":1,"x":0.56,"y":-1.09}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.028,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.016,"y":1},{"time":1,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":-9.21,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-12.74}],"translate":[{"time":0,"x":-1.92,"y":0.53}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":43.16}],"translate":[{"time":0,"x":-1.82,"y":3.16}]},"l_arm":{"rotate":[{"time":0,"angle":-351.91}],"translate":[{"time":0,"x":3.51,"y":3.26}]},"bone2":{"rotate":[{"time":0,"angle":-32.19}],"translate":[{"time":0,"x":1.03,"y":0.81}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.2667,"angle":-352.99},{"time":0.5,"angle":10.53},{"time":0.7333,"angle":-341.14},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":2.36,"y":2.43}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.938,"y":0.879},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.001,"y":1.007},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":0.7,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"},{"time":1,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5333,"name":"l_happyeye"},{"time":1,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.3333,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":0.6667,"name":"mouth3"},{"time":1,"name":"mouth2"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5333,"name":"r_happyeye"},{"time":1,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-3.4},{"time":0.2333,"angle":-13.24},{"time":0.5,"angle":-14.57},{"time":0.7667,"angle":-16.32},{"time":1,"angle":-3.4}],"translate":[{"time":0,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.2333,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.5,"x":0.1,"y":0.91,"curve":"stepped"},{"time":0.7667,"x":0.1,"y":0.91,"curve":"stepped"},{"time":1,"x":0.1,"y":0.91}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.05,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":-5.46},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":-1.62},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.7,"y":0.02},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-1.57,"y":-0.18},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":1.31,"y":0.02,"curve":"stepped"},{"time":0.5,"x":1.31,"y":0.02,"curve":"stepped"},{"time":1,"x":1.31,"y":0.02}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.038,"y":1},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.5,"angle":24.37},{"time":1,"angle":13.12}],"translate":[{"time":0,"x":1.06,"y":-0.05},{"time":0.5,"x":3.29,"y":-1.37},{"time":1,"x":1.06,"y":-0.05}]},"r_arm2":{"rotate":[{"time":0,"angle":112.19},{"time":0.5,"angle":86.1},{"time":1,"angle":112.19}],"translate":[{"time":0,"x":-3.75,"y":-0.09,"curve":"stepped"},{"time":0.5,"x":-3.75,"y":-0.09,"curve":"stepped"},{"time":1,"x":-3.75,"y":-0.09}]},"l_arm":{"rotate":[{"time":0,"angle":-351.12,"curve":"stepped"},{"time":1,"angle":-351.12}],"translate":[{"time":0,"x":3.55,"y":7.05},{"time":0.5,"x":5.42,"y":7.09},{"time":1,"x":3.55,"y":7.05}]},"bone2":{"rotate":[{"time":0,"angle":-54.2}],"translate":[{"time":0,"x":-3.2,"y":-1.06}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":-337.5},{"time":0.4333,"angle":-341.65},{"time":0.8333,"angle":-347.64},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":4.74,"y":4.89}]},"eyebrow":{"translate":[{"time":0,"x":2.13,"y":0,"curve":"stepped"},{"time":0.3333,"x":2.13,"y":0},{"time":0.4,"x":3.9,"y":0.04},{"time":0.5,"x":2.13,"y":0,"curve":"stepped"},{"time":0.5333,"x":2.13,"y":0,"curve":"stepped"},{"time":0.7,"x":2.13,"y":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"},{"time":1.3333,"name":"eyebrow2"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1.3333,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5.42},{"time":0.6667,"angle":0.49},{"time":1.3333,"angle":-5.42}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-0.58,"y":0,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.3333,"angle":-16.69,"curve":[0.37,0.82,0.779,1]},{"time":0.6667,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":1,"angle":-5.49},{"time":1.3333,"angle":-13.5}],"translate":[{"time":0,"x":-3.03,"y":3.71}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-2.45,"y":3.61},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":-0.35},{"time":0.6667,"angle":6.14},{"time":1.3333,"angle":-0.35}],"translate":[{"time":0,"x":4.84,"y":1.51},{"time":0.6667,"x":6.94,"y":2.97},{"time":1.3333,"x":4.84,"y":1.51}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.01,"y":0},{"time":0.6667,"x":0,"y":0},{"time":1,"x":3.01,"y":0},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":319.84}],"translate":[{"time":0,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":120.85},{"time":0.6667,"angle":127.26},{"time":1.3333,"angle":120.85}],"translate":[{"time":0,"x":-4.8,"y":0.29},{"time":0.6667,"x":-4.57,"y":-1.47},{"time":1.3333,"x":-4.8,"y":0.29}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.01,"y":-0.42},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.01,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.99},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.99},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.977,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":-342.03},{"time":0.6667,"angle":-334.73},{"time":1.3333,"angle":-342.03}],"translate":[{"time":0,"x":14.67,"y":8.58,"curve":"stepped"},{"time":0.6667,"x":14.67,"y":8.58,"curve":"stepped"},{"time":1.3333,"x":14.67,"y":8.58}]},"l_arm":{"rotate":[{"time":0,"angle":-349.52}],"translate":[{"time":0,"x":2.89,"y":0.32}]},"bone2":{"rotate":[{"time":0,"angle":-109.68},{"time":0.6667,"angle":-118.22},{"time":1.3333,"angle":-109.68}],"translate":[{"time":0,"x":-2.05,"y":-0.62},{"time":0.6667,"x":-4.31,"y":-0.69},{"time":1.3333,"x":-2.05,"y":-0.62}]},"glasses":{"translate":[{"time":0,"x":-3.57,"y":-0.09},{"time":0.6667,"x":-6.52,"y":0.34},{"time":1.3333,"x":-3.57,"y":-0.09}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":1.3333,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.66},{"time":0.6667,"angle":0},{"time":1,"angle":1.9},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":1.54},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":3.24},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.89},{"time":0.6667,"angle":0},{"time":1,"angle":4.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.51,"y":0.12},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.33,"y":-0.05},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.57},{"time":0.6667,"angle":0},{"time":1,"angle":-1.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.91,"y":0.03},{"time":0.6667,"x":0.11,"y":0},{"time":1,"x":1.01,"y":-0.16},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.062,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":4.38},{"time":0.6667,"angle":13.12},{"time":1,"angle":4.53},{"time":1.3333,"angle":13.12}],"translate":[{"time":0,"x":-1.21,"y":-0.63}]},"r_arm2":{"rotate":[{"time":0,"angle":-11.81},{"time":0.3333,"angle":0.94},{"time":0.6667,"angle":-11.81},{"time":1,"angle":-2.57},{"time":1.3333,"angle":-11.81}],"translate":[{"time":0,"x":1.09,"y":-0.56}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-4.93,"y":-0.15},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":-344.84},{"time":0.6667,"angle":10.53},{"time":1,"angle":-343.02},{"time":1.3333,"angle":10.53}],"translate":[{"time":0,"x":6.62,"y":6.72}]},"l_arm":{"rotate":[{"time":0,"angle":-3.09},{"time":0.3333,"angle":3.78},{"time":0.6667,"angle":-3.09},{"time":1,"angle":-352.47},{"time":1.3333,"angle":-3.09}]},"bone2":{"rotate":[{"time":0,"angle":8.21},{"time":0.3333,"angle":2.09},{"time":0.6667,"angle":8.21},{"time":1,"angle":-3.43},{"time":1.3333,"angle":8.21}],"translate":[{"time":0,"x":1.35,"y":2.19},{"time":0.3333,"x":1.87,"y":0.83},{"time":0.6667,"x":1.35,"y":2.19},{"time":1,"x":1.71,"y":0.77},{"time":1.3333,"x":1.35,"y":2.19}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"},{"time":0.5,"name":"mouth6"},{"time":0.6667,"name":"mouth8"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.1,"curve":"stepped"},{"time":0.3333,"angle":-13.1,"curve":"stepped"},{"time":0.5,"angle":-13.1},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":1.16,"y":1.76},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0667,"angle":0},{"time":0.1667,"angle":-3.29},{"time":0.3333,"angle":0},{"time":0.5,"angle":-7.46},{"time":0.6333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0667,"x":0,"y":0},{"time":0.1667,"x":1.3,"y":1.29},{"time":0.3333,"x":2.17,"y":0},{"time":0.5,"x":1.44,"y":0.96},{"time":0.6333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.39},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":3.93,"y":0.05},{"time":0.3333,"x":4.5,"y":-0.81},{"time":0.6667,"x":3.93,"y":0.05}],"scale":[{"time":0,"x":1.055,"y":1},{"time":0.3333,"x":1.068,"y":1},{"time":0.6667,"x":1.055,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":-339.64},{"time":0.6667,"angle":10.53}],"translate":[{"time":0,"x":2.64,"y":4.93,"curve":"stepped"},{"time":0.3333,"x":2.64,"y":4.93,"curve":"stepped"},{"time":0.6667,"x":2.64,"y":4.93}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":0.17},{"time":0.6667,"angle":13.12}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.3333,"angle":-28.73},{"time":0.6667,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.56,"y":-2.26},{"time":0.6667,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":95.55},{"time":0.3333,"angle":115.55},{"time":0.6667,"angle":95.55}],"translate":[{"time":0,"x":-2.42,"y":2.67},{"time":0.3333,"x":-6.24,"y":1.06},{"time":0.6667,"x":-2.42,"y":2.67}]},"bone2":{"rotate":[{"time":0,"angle":-119.49},{"time":0.3333,"angle":-118.67},{"time":0.6667,"angle":-119.49}],"translate":[{"time":0,"x":-2.86,"y":1.63},{"time":0.3333,"x":-4.33,"y":-1.12},{"time":0.6667,"x":-2.86,"y":1.63}]},"glasses":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.23},{"time":0.3333,"angle":354.48},{"time":0.5,"angle":-3.23},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.42,"y":-2.52},{"time":0.3333,"x":-1.92,"y":-1.64},{"time":0.5,"x":1.42,"y":-2.52},{"time":0.6667,"x":0,"y":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.5,"name":"mouth1"},{"time":0.5333,"name":"mouth2"},{"time":0.5667,"name":"mouth3"},{"time":0.6333,"name":"mouth1"},{"time":0.6667,"name":"mouth2"},{"time":0.7,"name":"mouth3"},{"time":0.7333,"name":"mouth1"},{"time":0.9,"name":"mouth1"},{"time":0.9333,"name":"mouth2"},{"time":0.9667,"name":"mouth3"},{"time":1.0333,"name":"mouth1"},{"time":1.0667,"name":"mouth2"},{"time":1.1,"name":"mouth3"},{"time":1.1333,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.38},{"time":0.6667,"angle":0},{"time":1,"angle":3.04},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":2.67},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":4.94},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.03,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.03,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.99},{"time":0.6667,"angle":0},{"time":1,"angle":1.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.51,"y":0.12},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.33,"y":-0.05},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.1},{"time":0.6667,"angle":0},{"time":1,"angle":0.37},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.044,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":5.88},{"time":0.6667,"angle":13.12},{"time":1,"angle":8.6},{"time":1.3333,"angle":13.12}],"translate":[{"time":0,"x":-1.21,"y":-0.63}]},"r_arm2":{"rotate":[{"time":0,"angle":-11.81},{"time":0.3333,"angle":0.94},{"time":0.6667,"angle":-11.81},{"time":1,"angle":-2.57},{"time":1.3333,"angle":-11.81}],"translate":[{"time":0,"x":1.09,"y":-0.56}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-6.82,"y":-0.21},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":-345.17},{"time":0.6667,"angle":10.53},{"time":1,"angle":-345.8},{"time":1.3333,"angle":10.53}],"translate":[{"time":0,"x":6.62,"y":6.72}]},"l_arm":{"rotate":[{"time":0,"angle":-3.09},{"time":0.3333,"angle":3.42},{"time":0.6667,"angle":-3.09},{"time":1,"angle":5.69},{"time":1.3333,"angle":-3.09}],"translate":[{"time":0,"x":1.3,"y":1.12}]},"bone2":{"rotate":[{"time":0,"angle":8.21},{"time":0.3333,"angle":-3.84},{"time":0.6667,"angle":8.21},{"time":1,"angle":-8.65},{"time":1.3333,"angle":8.21}],"translate":[{"time":0,"x":1.54,"y":1.11}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_arm1":{"attachment":[{"time":0,"name":"l_arm1"},{"time":0.3333,"name":"l_arm1"},{"time":0.6667,"name":"l_arm1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye5"},{"time":0.3333,"name":"l_eye5"},{"time":0.6667,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1,"name":"mouth7"},{"time":0.2,"name":"mouth5"},{"time":0.3,"name":"mouth7"},{"time":0.4,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.6,"name":"mouth5"},{"time":0.6667,"name":"mouth7"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"},{"time":0.3333,"name":"r_arm1"},{"time":0.6667,"name":"r_arm1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"},{"time":0.3333,"name":"r_eye5"},{"time":0.6667,"name":"r_eye5"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.43},{"time":0.3333,"angle":0},{"time":0.5,"angle":-3.35},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.98},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.32},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.63,"y":1.33},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.48,"y":0.39},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.72},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6667,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":-351.98},{"time":0.3333,"angle":10.53},{"time":0.5,"angle":-345.68},{"time":0.6667,"angle":10.53}],"translate":[{"time":0,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.1667,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.3333,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.5,"x":3.04,"y":4.94,"curve":"stepped"},{"time":0.6667,"x":3.04,"y":4.94}]},"r_arm":{"rotate":[{"time":0,"angle":-9.16},{"time":0.3333,"angle":338.45},{"time":0.6667,"angle":-9.16}],"translate":[{"time":0,"x":2.15,"y":0.35,"curve":"stepped"},{"time":0.3333,"x":2.15,"y":0.35,"curve":"stepped"},{"time":0.6667,"x":2.15,"y":0.35}]},"l_arm":{"rotate":[{"time":0,"angle":-5.65},{"time":0.3333,"angle":-350.96},{"time":0.6667,"angle":-5.65}],"translate":[{"time":0,"x":2.52,"y":-1.04,"curve":"stepped"},{"time":0.3333,"x":2.52,"y":-1.04,"curve":"stepped"},{"time":0.6667,"x":2.52,"y":-1.04}]},"r_arm2":{"rotate":[{"time":0,"angle":135.26},{"time":0.3333,"angle":116.91},{"time":0.6667,"angle":135.26}],"translate":[{"time":0,"x":-5.5,"y":-1.18}]},"bone2":{"rotate":[{"time":0,"angle":-129.25},{"time":0.3333,"angle":-115.89},{"time":0.6667,"angle":-129.25}],"translate":[{"time":0,"x":-4.83,"y":0.03}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/205101.png b/m78-all/m78-fe/public/images/character/205101.png new file mode 100644 index 000000000..612d559ae Binary files /dev/null and b/m78-all/m78-fe/public/images/character/205101.png differ diff --git a/m78-all/m78-fe/public/images/character/205301.atlas b/m78-all/m78-fe/public/images/character/205301.atlas new file mode 100644 index 000000000..f6eeb2526 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/205301.atlas @@ -0,0 +1,307 @@ + +205301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: false + xy: 2, 11 + size: 48, 50 + orig: 48, 50 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 117, 36 + size: 76, 60 + orig: 76, 60 + offset: 0, 0 + index: -1 +eyebrow + rotate: true + xy: 487, 119 + size: 89, 9 + orig: 89, 9 + offset: 0, 0 + index: -1 +eyebrow_happy + rotate: true + xy: 473, 118 + size: 90, 12 + orig: 90, 12 + offset: 0, 0 + index: -1 +glass + rotate: false + xy: 2, 63 + size: 113, 33 + orig: 113, 33 + offset: 0, 0 + index: -1 +hat1 + rotate: false + xy: 2, 98 + size: 200, 156 + orig: 200, 156 + offset: 0, 0 + index: -1 +hat2 + rotate: true + xy: 367, 58 + size: 196, 104 + orig: 196, 104 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 204, 101 + size: 153, 161 + orig: 153, 161 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 473, 210 + size: 44, 37 + orig: 44, 37 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 473, 47 + size: 34, 22 + orig: 34, 22 + offset: 0, 0 + index: -1 +l_eye + rotate: false + xy: 104, 2 + size: 38, 32 + orig: 38, 32 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 253, 66 + size: 34, 33 + orig: 34, 33 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 326, 59 + size: 28, 11 + orig: 28, 11 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 263, 37 + size: 30, 27 + orig: 30, 27 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 325, 35 + size: 24, 22 + orig: 24, 22 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: false + xy: 310, 12 + size: 22, 21 + orig: 22, 21 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: true + xy: 286, 12 + size: 23, 22 + orig: 23, 22 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 397, 41 + size: 15, 19 + orig: 15, 19 + offset: 0, 0 + index: -1 +l_eyeball2 + rotate: false + xy: 376, 39 + size: 19, 17 + orig: 19, 17 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 214, 2 + size: 31, 10 + orig: 31, 10 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 217, 43 + size: 18, 44 + orig: 18, 44 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 295, 37 + size: 19, 5 + orig: 19, 5 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 104, 45 + size: 16, 11 + orig: 16, 11 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 334, 11 + size: 22, 22 + orig: 22, 22 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 418, 46 + size: 18, 10 + orig: 18, 10 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 2, 2 + size: 10, 7 + orig: 10, 7 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 257, 2 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: true + xy: 247, 5 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 217, 63 + size: 34, 36 + orig: 34, 36 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 289, 69 + size: 35, 30 + orig: 35, 30 + offset: 0, 0 + index: -1 +r_eye + rotate: false + xy: 52, 28 + size: 50, 33 + orig: 50, 33 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 473, 71 + size: 45, 35 + orig: 45, 35 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 498, 168 + size: 40, 12 + orig: 40, 12 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 326, 72 + size: 35, 27 + orig: 35, 27 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 295, 44 + size: 28, 23 + orig: 28, 23 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: false + xy: 257, 12 + size: 27, 23 + orig: 27, 23 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: false + xy: 52, 2 + size: 29, 24 + orig: 29, 24 + offset: 0, 0 + index: -1 +r_eyeball + rotate: false + xy: 83, 5 + size: 19, 21 + orig: 19, 21 + offset: 0, 0 + index: -1 +r_eyeball2 + rotate: false + xy: 351, 39 + size: 23, 17 + orig: 23, 17 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 498, 127 + size: 39, 12 + orig: 39, 12 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 195, 51 + size: 20, 45 + orig: 20, 45 + offset: 0, 0 + index: -1 +ribbon + rotate: false + xy: 214, 14 + size: 31, 27 + orig: 31, 27 + offset: 0, 0 + index: -1 +umbrella + rotate: true + xy: 144, 5 + size: 29, 68 + orig: 29, 68 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/205301.json b/m78-all/m78-fe/public/images/character/205301.json new file mode 100644 index 000000000..d0f275d00 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/205301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"0Xi804vPCtkvYMq1YOHMoYrUanE","spine":"3.5.25","width":200.62,"height":265.57,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":34,"rotation":-88.12,"x":-0.14,"y":88.03},{"name":"body2","parent":"body1","length":44.01,"rotation":-2.6,"x":34.53,"y":-0.57},{"name":"eff_exclamationi","parent":"root","length":21.4,"rotation":29.93,"x":84.27,"y":238.91},{"name":"eff_panic","parent":"root","length":19.38,"rotation":-16.86,"x":99.44,"y":160.79},{"name":"eff_sad1","parent":"root","length":16.64,"rotation":-89.73,"x":-19.56,"y":119.26},{"name":"eff_sad2","parent":"root","length":13.12,"rotation":-90.57,"x":31.62,"y":119.96},{"name":"eff_star1","parent":"root","length":20.23,"x":71.91,"y":67.5},{"name":"eff_star2","parent":"root","length":21.36,"rotation":178.49,"x":-62.41,"y":63},{"name":"eff_star3","parent":"root","length":15.83,"rotation":-16.5,"x":70.22,"y":27.03},{"name":"head","parent":"body1","length":121.43,"rotation":178.12,"x":-6.11,"y":0.76},{"name":"eyebrow","parent":"head","length":12.81,"rotation":-180,"x":74.08,"y":-7.8},{"name":"glass","parent":"head","length":17.82,"x":28.41,"y":-8.35},{"name":"hat","parent":"head","length":78.35,"rotation":29.85,"x":81.32,"y":8.35},{"name":"l_arm1","parent":"body1","length":16.94,"rotation":25.53,"x":5.47,"y":13.75},{"name":"l_arm2","parent":"l_arm1","length":20,"rotation":49.72,"x":17.45,"y":0.99},{"name":"l_eye","parent":"head","length":15.7,"rotation":152.53,"x":59.6,"y":-44},{"name":"l_eyeball","parent":"head","length":11.15,"rotation":2.86,"x":20.61,"y":-30.08},{"name":"l_eyebrow","parent":"head","length":16.64,"rotation":-78.69,"x":66.56,"y":-18.07},{"name":"l_leg","parent":"root","length":36.21,"rotation":-90.88,"x":7.66,"y":37.9},{"name":"mouth","parent":"head","length":12.6,"rotation":45,"x":-1.67,"y":-19.49},{"name":"r_arm1","parent":"body1","length":18.19,"rotation":-41.91,"x":5.06,"y":-15.77},{"name":"r_arm2","parent":"r_arm1","length":24.82,"rotation":-4.06,"x":20.97,"y":0.15},{"name":"r_eye","parent":"head","length":14.72,"rotation":-150.52,"x":56.26,"y":38.43},{"name":"r_eyeball","parent":"head","length":11.71,"rotation":2.73,"x":15.04,"y":21.72},{"name":"r_eyebrow","parent":"head","length":16.46,"rotation":82.41,"x":66.02,"y":5.87},{"name":"r_leg","parent":"root","length":38.43,"rotation":-90,"x":-9.05,"y":39.57},{"name":"ribbon","parent":"head","length":16.63,"rotation":176.19,"x":15.64,"y":4.96},{"name":"umbrella","parent":"l_arm2","length":59.62,"rotation":-78.73,"x":14.1,"y":-4.2}],"slots":[{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"hat2","bone":"hat","attachment":"hat2"},{"name":"head","bone":"head","attachment":"head"},{"name":"umbrella","bone":"umbrella","attachment":"umbrella"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow"},{"name":"r_eyebrow_sad","bone":"r_eyebrow"},{"name":"l_eyebrow_sad","bone":"l_eyebrow"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"l_eyeball","bone":"l_eyeball","attachment":"l_eyeball"},{"name":"r_eyeball","bone":"r_eyeball","attachment":"r_eyeball"},{"name":"glass","bone":"glass","attachment":"glass"},{"name":"hat1","bone":"hat","attachment":"hat1"},{"name":"ribbon","bone":"ribbon","attachment":"ribbon"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"}],"skins":{"default":{"body1":{"body1":{"x":12.71,"y":-3.36,"rotation":88.12,"width":48,"height":50}},"body2":{"body2":{"x":18.91,"y":-1.29,"rotation":90.73,"width":76,"height":60}},"eyebrow":{"eyebrow":{"x":12.95,"y":-3.88,"rotation":90,"width":89,"height":9},"eyebrow_happy":{"x":12.95,"y":-3.88,"rotation":90,"width":90,"height":12}},"glass":{"glass":{"x":5.75,"y":8.01,"rotation":-90,"width":113,"height":33}},"hat1":{"hat1":{"x":7.95,"y":-7.14,"rotation":-119.85,"width":200,"height":156}},"hat2":{"hat2":{"x":-16.1,"y":3.64,"rotation":-119.85,"width":196,"height":104}},"head":{"head":{"x":63.6,"y":8.08,"rotation":-90,"width":153,"height":161}},"l_arm1":{"l_arm1":{"x":10.53,"y":-2.32,"rotation":62.59,"width":44,"height":37}},"l_arm2":{"l_arm2":{"x":10.13,"y":1.68,"rotation":12.87,"width":34,"height":22}},"l_eye":{"l_eye":{"x":21.14,"y":4.64,"rotation":117.47,"width":38,"height":32},"l_eye2":{"x":21.41,"y":1.61,"rotation":114.58,"width":34,"height":33},"l_eye3":{"x":28.62,"y":-0.35,"rotation":114.58,"width":28,"height":11},"l_eye_happy":{"x":28.62,"y":-0.35,"rotation":114.58,"width":30,"height":27},"l_eye_sad":{"x":28.62,"y":-0.35,"rotation":114.58,"width":24,"height":22},"l_eye_sad2":{"x":28.62,"y":-0.35,"rotation":114.58,"width":22,"height":21},"l_eye_sad3":{"x":28.62,"y":-0.35,"rotation":114.58,"width":23,"height":22}},"l_eyeball":{"l_eyeball":{"x":13.23,"y":-0.18,"rotation":-92.86,"width":15,"height":19},"l_eyeball2":{"x":10.8,"y":2.05,"rotation":-92.86,"width":19,"height":17}},"l_eyebrow_sad":{"l_eyebrow_sad":{"x":14.42,"y":-5.16,"rotation":-11.31,"width":31,"height":10}},"l_leg":{"l_leg":{"x":17.08,"y":-1.96,"rotation":90.88,"width":18,"height":44}},"mouth1":{"mouth1":{"x":19.34,"y":4.06,"rotation":-135,"width":19,"height":5},"mouth2":{"x":19.34,"y":4.06,"rotation":-135,"width":16,"height":11},"mouth3":{"x":14.6,"y":6.01,"rotation":-135,"width":22,"height":22},"mouth_happy":{"x":20.45,"y":2.95,"rotation":-135,"width":18,"height":10},"mouth_sad":{"x":16.27,"y":1,"rotation":-135,"width":10,"height":7},"mouth_uneasy1":{"x":19.34,"y":4.06,"rotation":-135,"width":36,"height":8},"mouth_uneasy2":{"x":19.34,"y":4.06,"rotation":-135,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":7.35,"y":0.47,"rotation":130.03,"width":34,"height":36}},"r_arm2":{"r_arm2":{"x":14.42,"y":-1.33,"rotation":134.09,"width":35,"height":30}},"r_eye":{"r_eye":{"x":24.6,"y":-0.12,"rotation":60.52,"width":50,"height":33},"r_eye2":{"x":23.17,"y":5.02,"rotation":60.52,"width":45,"height":35},"r_eye3":{"x":29.42,"y":1.49,"rotation":60.52,"width":40,"height":12},"r_eye_happy":{"x":27.36,"y":5.56,"rotation":60.52,"width":35,"height":27},"r_eye_sad":{"x":27.36,"y":5.56,"rotation":60.52,"width":28,"height":23},"r_eye_sad2":{"x":27.36,"y":5.56,"rotation":60.52,"width":27,"height":23},"r_eye_sad3":{"x":27.36,"y":5.56,"rotation":60.52,"width":29,"height":24}},"r_eyeball":{"r_eyeball":{"x":18.54,"y":1.06,"rotation":-92.73,"width":19,"height":21},"r_eyeball2":{"x":13.37,"y":-0.93,"rotation":-92.73,"width":23,"height":17}},"r_eyebrow_sad":{"r_eyebrow_sad":{"x":14.33,"y":5.2,"rotation":-172.41,"width":39,"height":12}},"r_leg":{"r_leg":{"x":18.72,"y":0.08,"rotation":90,"width":20,"height":45}},"ribbon":{"ribbon":{"x":27.03,"y":6.23,"rotation":93.81,"width":31,"height":27}},"umbrella":{"umbrella":{"x":27.45,"y":0.17,"rotation":91.61,"width":29,"height":68}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1,"name":"eyebrow"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.4333,"name":"l_eye2"},{"time":0.5,"name":"l_eye_happy"},{"time":0.5667,"name":"l_eye"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.4333,"name":"l_eyeball2"},{"time":0.5,"name":null},{"time":0.5667,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth3"},{"time":0.8,"name":"mouth2"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.4333,"name":"r_eye2"},{"time":0.5,"name":"r_eye_happy"},{"time":0.5667,"name":"r_eye"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.4333,"name":"r_eyeball2"},{"time":0.5,"name":null},{"time":0.5667,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.03},{"time":0.5,"angle":-2.61,"curve":"stepped"},{"time":0.8333,"angle":-2.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-357.06},{"time":0.6667,"angle":-1.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.21},{"time":0.5,"angle":5.05,"curve":"stepped"},{"time":0.8333,"angle":5.05},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":41.86},{"time":0.5,"angle":22.9},{"time":0.6667,"angle":23.56},{"time":0.8333,"angle":10.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-26.85},{"time":0.3333,"angle":-18.94},{"time":0.5,"angle":-38.33},{"time":0.6667,"angle":6.93},{"time":0.8333,"angle":-10.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.84},{"time":0.6667,"angle":-8.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.22},{"time":0.6667,"angle":-11.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.17},{"time":0.3333,"angle":-28.83},{"time":0.5,"angle":16.22},{"time":0.6667,"angle":-27.27},{"time":0.8333,"angle":0.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.01,"curve":"stepped"},{"time":0.3333,"angle":2.01},{"time":0.5,"angle":-3.82},{"time":0.6667,"angle":-5.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":-0.06},{"time":0.8333,"x":-2.1,"y":-0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.41,"y":-0.7},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.58},{"time":0.5,"angle":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_happy"},{"time":1,"name":"eyebrow_happy"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":3.46},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":-1.61,"y":2.15},{"time":0.5,"x":0,"y":-1.61},{"time":0.7667,"x":5.37,"y":1.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-356.31},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":1.038,"y":1.038},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.037,"y":1.037},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":3.56},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":1.012,"y":1.012},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.008,"y":1.008},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":14.72},{"time":0.5,"angle":0},{"time":0.7667,"angle":21.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-24.07},{"time":0.5,"angle":0},{"time":0.7667,"angle":-24.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.01},{"time":0.5,"angle":0},{"time":0.8667,"angle":-8.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":12.32},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-13.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":15.53},{"time":0.5,"angle":0},{"time":0.7667,"angle":5.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.07},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.57,"y":0.95},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":1.09,"y":-0.87},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":4.2,"y":-0.46},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":2.49,"y":0.39},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.35},{"time":0.6667,"angle":-0.71}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":0.6667,"name":"eyebrow_happy"},{"time":1,"name":"eyebrow"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.6667,"name":"l_eye_happy"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.6667,"name":null},{"time":1,"name":"l_eyeball"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.6667,"name":"r_eye_happy"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.6667,"name":null},{"time":1,"name":"r_eyeball"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-5.07},{"time":0.5,"angle":5.84},{"time":1,"angle":-5.07}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-358.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.04},{"time":0.5,"angle":0},{"time":0.6667,"angle":2.69},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":8.74},{"time":0.5,"angle":6.48},{"time":1,"angle":8.74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-23.03},{"time":0.5,"angle":2.2},{"time":0.7667,"angle":-15.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.25},{"time":0.5,"angle":0},{"time":0.8333,"angle":-14.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.38,"y":-0.51},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-0.19,"y":-0.25},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":10.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.11},{"time":0.5,"angle":0},{"time":0.8333,"angle":-3.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.23},{"time":0.8333,"angle":-2.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":1.58,"y":0.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.07},{"time":0.6667,"angle":0.16},{"time":1,"angle":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.1667,"name":"l_eye_sad2"},{"time":0.3333,"name":"l_eye_sad3"},{"time":0.5,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad2"},{"time":0.8333,"name":"l_eye_sad3"},{"time":1,"name":"l_eye_sad"},{"time":1.1667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad3"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.1667,"name":"r_eye_sad2"},{"time":0.3333,"name":"r_eye_sad3"},{"time":0.5,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad2"},{"time":0.8333,"name":"r_eye_sad3"},{"time":1,"name":"r_eye_sad"},{"time":1.1667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad3"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.75},{"time":0.6667,"angle":0},{"time":1,"angle":-1.67},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-3.37,"y":-1.82},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-3.87,"y":2.91},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-1.52},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.007,"y":1.007},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-12.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.01,"y":1.01},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.95},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":21.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":24.99,"curve":"stepped"},{"time":0.6667,"angle":24.99,"curve":"stepped"},{"time":1.3333,"angle":24.99}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":96.01},{"time":0.6667,"angle":87.62},{"time":1.3333,"angle":96.01}],"translate":[{"time":0,"x":0.14,"y":1.53,"curve":"stepped"},{"time":0.6667,"x":0.14,"y":1.53,"curve":"stepped"},{"time":1.3333,"x":0.14,"y":1.53}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-12.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.43,"y":-0.29},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.59,"y":-0.38},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":-353.31},{"time":0.6667,"angle":-353.14},{"time":1.3333,"angle":-353.31}],"translate":[{"time":0,"x":-1.81,"y":-3.84,"curve":"stepped"},{"time":1.3333,"x":-1.81,"y":-3.84}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1.3333,"name":"eyebrow"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.7667,"name":"l_eye2"},{"time":0.8333,"name":"l_eye3"},{"time":0.9,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.7667,"name":"l_eyeball2"},{"time":0.8333,"name":null},{"time":0.9,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.7667,"name":"r_eye2"},{"time":0.8333,"name":"r_eye3"},{"time":0.9,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.7667,"name":"r_eyeball2"},{"time":0.8333,"name":null},{"time":0.9,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.54},{"time":1,"angle":4.32},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-3.23},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.16},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-355.9},{"time":0.6667,"angle":0},{"time":1,"angle":-5.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.017,"y":1.017},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.4},{"time":0.6667,"angle":0},{"time":1,"angle":-14.79},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.08,"y":-0.05},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.89,"y":0.04},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.017,"y":1.017},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.021,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":25.23},{"time":0.6667,"angle":-4.44},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-24.58},{"time":0.6667,"angle":5.76},{"time":1,"angle":-2.71},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":13.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-17.83},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.13,"y":-0.77},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.69},{"time":0.6667,"angle":0},{"time":1,"angle":-1.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.48},{"time":0.6667,"angle":0},{"time":1,"angle":-0.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.15,"y":-0.01},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.15,"y":-0.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8667,"x":-3.45,"y":-0.03},{"time":0.9333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1,"name":"mouth_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.21},{"time":0.5,"angle":0},{"time":0.7667,"angle":-0.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.56,"y":4.13},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":2.95},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-355.51},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1},{"time":0.3333,"x":1.029,"y":1.029},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.54},{"time":0.3333,"angle":5.49},{"time":0.5,"angle":0},{"time":0.6667,"angle":-3.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":29.09},{"time":0.5,"angle":16.09},{"time":0.6667,"angle":6.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":6.11},{"time":0.5,"angle":16.09},{"time":0.6667,"angle":6.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-7.23},{"time":0.2333,"angle":-3.19},{"time":0.3667,"angle":-27.35},{"time":0.5667,"angle":-6.14},{"time":1,"angle":-7.23}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-7.17},{"time":0.2333,"angle":-3.13},{"time":0.3667,"angle":-10.12},{"time":0.5667,"angle":-18.9},{"time":1,"angle":-7.17}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0},{"time":0.3667,"angle":25.18},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":29.91},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":3.47},{"time":0.5,"angle":-6.96},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-2.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":10.67,"y":4.17},{"time":0.5,"x":11.93,"y":0},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":6.87,"y":-2.22},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":1.72,"y":-0.77},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":2.35,"y":0},{"time":0.3333,"x":11.4,"y":0.16},{"time":0.5,"x":7.04,"y":0},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.6,"y":0},{"time":0.1667,"x":-0.09,"y":-0.16},{"time":0.3333,"x":-3.36,"y":-0.97},{"time":0.5,"x":-2.7,"y":1.01},{"time":0.6667,"x":-0.6,"y":0,"curve":"stepped"},{"time":1,"x":-0.6,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":1.17,"y":-3.54},{"time":0.1667,"x":1.68,"y":-3.69},{"time":0.3333,"x":-1.59,"y":-4.5},{"time":0.5,"x":-0.93,"y":-2.53},{"time":0.6667,"x":1.17,"y":-3.54,"curve":"stepped"},{"time":1,"x":1.17,"y":-3.54}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.3667,"x":1.88,"y":0.28,"curve":"stepped"},{"time":0.5,"x":1.88,"y":0.28},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"translate":[{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":3.51,"y":-0.44},{"time":0.5,"x":0,"y":0}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":null}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye2"},{"time":1,"name":"l_eye2"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball2"},{"time":1,"name":"l_eyeball2"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye2"},{"time":1,"name":"r_eye2"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball2"},{"time":1,"name":"r_eyeball2"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1,"name":"r_eyebrow_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.14},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":4.26,"y":0.44},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-4.26,"y":0.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.31},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-17.28,"curve":"stepped"},{"time":0.5,"angle":-17.28,"curve":"stepped"},{"time":1,"angle":-17.28}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":30.32},{"time":0.5,"angle":32.42},{"time":1,"angle":30.32}],"translate":[{"time":0,"x":0.34,"y":1.89,"curve":"stepped"},{"time":0.5,"x":0.34,"y":1.89,"curve":"stepped"},{"time":1,"x":0.34,"y":1.89}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":16.67},{"time":0.5,"angle":13.04},{"time":1,"angle":16.67}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":143.37},{"time":0.5,"angle":141.59},{"time":1,"angle":143.37}],"translate":[{"time":0,"x":-0.81,"y":0.9,"curve":"stepped"},{"time":1,"x":-0.81,"y":0.9}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"umbrella":{"rotate":[{"time":0,"angle":-14.59},{"time":0.3333,"angle":-8.42},{"time":0.7667,"angle":-20.19},{"time":1,"angle":-14.59}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":2.04},{"time":0.7333,"angle":-5.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.54,"y":-0.52},{"time":0.6333,"x":-0.85,"y":0.77},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":3.28,"y":0,"curve":"stepped"},{"time":1,"x":3.28,"y":0}],"scale":[{"time":0,"x":0.718,"y":0.674,"curve":"stepped"},{"time":1,"x":0.718,"y":0.674}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-9.04,"y":-4.26},{"time":0.5,"x":-10.64,"y":-4.26},{"time":1,"x":-9.04,"y":-4.26}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-5.85,"y":2.66},{"time":0.5,"x":-9.04,"y":2.66},{"time":1,"x":-5.85,"y":2.66}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.47},{"time":0.6667,"angle":-0.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/205301.png b/m78-all/m78-fe/public/images/character/205301.png new file mode 100644 index 000000000..8140085d6 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/205301.png differ diff --git a/m78-all/m78-fe/public/images/character/206101.atlas b/m78-all/m78-fe/public/images/character/206101.atlas new file mode 100644 index 000000000..965c7b8ea --- /dev/null +++ b/m78-all/m78-fe/public/images/character/206101.atlas @@ -0,0 +1,300 @@ + +206101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 272, 34 + size: 31, 34 + orig: 31, 34 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 152, 156 + size: 76, 54 + orig: 76, 54 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 282, 234 + size: 95, 20 + orig: 95, 20 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 282, 212 + size: 95, 20 + orig: 95, 20 + offset: 0, 0 + index: -1 +eyebrow3 + rotate: false + xy: 230, 190 + size: 95, 20 + orig: 95, 20 + offset: 0, 0 + index: -1 +f_hair + rotate: true + xy: 2, 5 + size: 82, 96 + orig: 82, 96 + offset: 0, 0 + index: -1 +f_hair2 + rotate: true + xy: 230, 159 + size: 29, 53 + orig: 29, 53 + offset: 0, 0 + index: -1 +f_hair3 + rotate: true + xy: 100, 27 + size: 60, 36 + orig: 60, 36 + offset: 0, 0 + index: -1 +f_hair4 + rotate: false + xy: 152, 212 + size: 128, 42 + orig: 128, 42 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 89 + size: 148, 165 + orig: 148, 165 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 100, 2 + size: 23, 26 + orig: 23, 26 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 138, 2 + size: 25, 22 + orig: 25, 22 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 152, 109 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 379, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 426, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 192, 109 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 192, 109 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 232, 112 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye7 + rotate: true + xy: 285, 150 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: true + xy: 272, 110 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 199, 69 + size: 31, 38 + orig: 31, 38 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 128, 3 + size: 22, 7 + orig: 22, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 473, 206 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 319, 112 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 319, 74 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: true + xy: 305, 32 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 333, 36 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 303, 4 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 332, 184 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 332, 156 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 327, 207 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 272, 3 + size: 29, 29 + orig: 29, 29 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 162, 6 + size: 21, 32 + orig: 21, 32 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 152, 69 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 232, 65 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 232, 65 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 272, 70 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 138, 29 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: true + xy: 138, 29 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye7 + rotate: true + xy: 185, 29 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 232, 18 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 473, 234 + size: 20, 37 + orig: 20, 37 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/206101.json b/m78-all/m78-fe/public/images/character/206101.json new file mode 100644 index 000000000..77979cfb2 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/206101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"53XNt67VhUfTAwv7MWw78Zpnc2k","spine":"3.5.25","width":149.29,"height":246.69,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":-1.7,"y":62.61},{"name":"body2","parent":"body","length":6.77,"rotation":177.8,"x":-4.7,"y":-0.19},{"name":"l_arm","parent":"body","length":13.57,"rotation":-159.58,"x":22.39,"y":-14.25},{"name":"bone2","parent":"l_arm","length":12.12,"rotation":-43.22,"x":17.97,"y":0.84},{"name":"eff_exclamation","parent":"root","length":22.03,"rotation":62.33,"x":56.31,"y":212.67},{"name":"eff_panic","parent":"root","length":18.48,"rotation":47.46,"x":70.91,"y":183.44},{"name":"eff_sad1","parent":"root","length":22.05,"rotation":-90.9,"x":7.4,"y":123.42},{"name":"eff_sad2","parent":"root","length":18.04,"rotation":-90,"x":57.47,"y":101.2},{"name":"eff_star1","parent":"root","length":15.56,"rotation":33.17,"x":69.25,"y":125.18},{"name":"eff_star2","parent":"root","length":13.15,"rotation":162.52,"x":-86.85,"y":94.21},{"name":"eff_star3","parent":"root","length":11.65,"rotation":-25.29,"x":39.69,"y":52.39},{"name":"head","parent":"body","length":132.6,"x":23.91,"y":2.85},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":62.61,"y":-14.99},{"name":"hair1","parent":"head","length":38.65,"rotation":148.49,"x":113.86,"y":-9.13},{"name":"hair2","parent":"head","length":14.87,"rotation":-145.87,"x":106.55,"y":-34.53},{"name":"hair3","parent":"head","length":29.02,"rotation":-7.24,"x":126.98,"y":-4.19},{"name":"hair4","parent":"head","length":22.17,"rotation":179.6,"x":9.65,"y":-9.73},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":5.32,"y":52.52},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":17.23,"y":-13.15},{"name":"r_arm","parent":"body","length":21.99,"rotation":149.52,"x":19.72,"y":13.17},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":58.2,"x":14.71,"y":0.18},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-10.29,"y":52.48}],"slots":[{"name":"f_hair4","bone":"hair4","attachment":"f_hair4"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"body1","bone":"body","attachment":"body"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_arm2","bone":"bone2","attachment":"l_arm2"},{"name":"f_hair2","bone":"hair2","attachment":"f_hair2"},{"name":"f_hair1","bone":"hair1","attachment":"f_hair"},{"name":"f_hair3","bone":"hair3","attachment":"f_hair3"}],"skins":{"default":{"body1":{"body":{"x":13.27,"y":-0.65,"rotation":-89.1,"width":31,"height":34}},"body2":{"body2":{"x":13.9,"y":-0.9,"rotation":93.1,"width":76,"height":54}},"eyebrow":{"eyebrow1":{"x":1.05,"y":2.47,"rotation":-91.35,"width":95,"height":20},"eyebrow2":{"rotation":-91.35,"width":95,"height":20},"eyebrow3":{"x":5.33,"y":-0.08,"rotation":-90.9,"width":95,"height":20}},"f_hair1":{"f_hair":{"x":41.65,"y":11.12,"rotation":122.42,"width":82,"height":96}},"f_hair2":{"f_hair2":{"x":24.98,"y":-2.64,"rotation":56.77,"width":29,"height":53}},"f_hair3":{"f_hair3":{"x":16.3,"y":-22.73,"rotation":-81.86,"width":60,"height":36}},"f_hair4":{"f_hair4":{"x":10.06,"y":-16.43,"rotation":91.3,"width":128,"height":42}},"head":{"head":{"x":60.86,"y":2.33,"rotation":-89.55,"width":148,"height":165}},"l_arm1":{"l_arm1":{"x":6.65,"y":2.38,"rotation":70.48,"width":23,"height":26}},"l_arm2":{"l_arm2":{"x":10.98,"y":-0.06,"rotation":-145.39,"width":25,"height":22}},"l_eye":{"l_eye1":{"x":46.35,"y":-40.81,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":46.32,"y":-40.82,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":46.34,"y":-40.82,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":46.34,"y":-40.82,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":46.34,"y":-40.82,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":46.66,"y":-40.45,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":46.66,"y":-40.45,"rotation":-89.1,"width":38,"height":45},"l_eye8":{"path":"l_eye7","x":46.66,"y":-40.45,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":44.39,"y":-38.92,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":-0.64,"y":0.63,"rotation":87.75,"width":22,"height":7},"mouth2":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26},"mouth7":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":29.37,"y":-28.29,"rotation":-89.55,"width":3,"height":3}},"png/l_leg":{"l_leg":{"x":35.53,"y":-5.03,"rotation":88.65,"width":31,"height":38}},"png/r_leg":{"r_leg":{"x":36.27,"y":-1.57,"rotation":88.73,"width":20,"height":37}},"r_arm1":{"r_arm1":{"x":9.84,"y":-0.91,"rotation":137.13,"width":29,"height":29}},"r_arm2":{"r_arm2":{"x":13.08,"y":-0.22,"rotation":112.88,"width":21,"height":32}},"r_eye":{"r_eye1":{"x":42.83,"y":14.16,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":42.83,"y":14.14,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":42.83,"y":14.14,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":42.83,"y":14.14,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":42.83,"y":14.14,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":42.72,"y":14.49,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":42.72,"y":14.49,"rotation":-89.1,"width":38,"height":45},"r_eye8":{"path":"r_eye7","x":42.72,"y":14.49,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":42.48,"y":10.76,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye7"},{"time":0.4,"name":"l_eye3"},{"time":0.9667,"name":"l_eye7"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4667,"name":"mouth2"},{"time":0.5333,"name":"mouth3"},{"time":0.8333,"name":"mouth2"},{"time":0.8667,"name":"mouth1"},{"time":1,"name":"mouth3"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye7"},{"time":0.4,"name":"r_eye3"},{"time":0.9667,"name":"r_eye7"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.92},{"time":0.6667,"angle":0},{"time":1,"angle":2.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":2.67},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":4.94},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.42},{"time":0.6667,"angle":-13.49},{"time":1,"angle":-20.3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.63,"y":0},{"time":0.6667,"x":0,"y":0},{"time":1,"x":1.63,"y":0},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.81},{"time":0.6667,"angle":0},{"time":1,"angle":3.48},{"time":1.3333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.3333,"angle":-306.63},{"time":1.3333,"angle":13.12}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":44.5},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.83,"y":1.17},{"time":1.3333,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4667,"x":-11.19,"y":0,"curve":"stepped"},{"time":0.9,"x":-11.19,"y":0},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.12},{"time":0.6667,"angle":0},{"time":1,"angle":-4.12},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.949,"y":1.074},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.949,"y":1.074},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.3333,"angle":-18.41},{"time":1.3333,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-89.67},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.72,"y":0.68},{"time":1.3333,"x":0,"y":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.89},{"time":0.6667,"angle":-11.93},{"time":1,"angle":-1.97},{"time":1.3333,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.58},{"time":0.6667,"angle":-26.17},{"time":1,"angle":-7.86},{"time":1.3333,"angle":0}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-3.06,"y":0.23},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":0.688,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.2667,"name":"l_eye1"},{"time":0.5,"name":"l_happyeye"},{"time":0.7333,"name":"l_happyeye"},{"time":1,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.2667,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":0.7333,"name":"mouth3"},{"time":1,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.2667,"name":"r_eye1"},{"time":0.5,"name":"r_happyeye"},{"time":0.7333,"name":"r_happyeye"},{"time":1,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.96},{"time":0.5,"angle":0},{"time":0.7333,"angle":-1.31},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.028,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.028,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.2},{"time":0.5,"angle":0},{"time":0.7333,"angle":-5.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.28,"y":-0.16},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.44,"y":3.29},{"time":1,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.68},{"time":0.5,"angle":0},{"time":0.7333,"angle":-5.51},{"time":1,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":-9.21,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.23},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.51},{"time":1,"angle":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-9.75},{"time":0.5,"angle":0},{"time":0.7333,"angle":-10.8},{"time":1,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":1.93},{"time":0.2667,"angle":-12.4},{"time":0.5,"angle":1.93},{"time":0.7333,"angle":-14.12},{"time":1,"angle":1.93}],"translate":[{"time":0,"x":1.46,"y":0.76}]},"r_arm2":{"rotate":[{"time":0,"angle":-42.22},{"time":0.2667,"angle":-35.53},{"time":0.5,"angle":-42.22},{"time":0.7333,"angle":-43.77},{"time":1,"angle":-42.22}],"translate":[{"time":0,"x":2.94,"y":0.28,"curve":"stepped"},{"time":0.2667,"x":2.94,"y":0.28,"curve":"stepped"},{"time":0.5,"x":2.94,"y":0.28,"curve":"stepped"},{"time":0.7333,"x":2.94,"y":0.28,"curve":"stepped"},{"time":1,"x":2.94,"y":0.28}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-355.16},{"time":0.5,"angle":0},{"time":0.7333,"angle":-2.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.856,"y":1.346},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":0.772,"y":1.318},{"time":1,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":7.55,"y":16.79},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0},{"time":0.7333,"x":0.79,"y":12.86},{"time":1,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":-9.32},{"time":0.2667,"angle":7.29},{"time":0.5,"angle":-9.32},{"time":0.7333,"angle":-0.35},{"time":1,"angle":-9.32}],"translate":[{"time":0,"x":-1.97,"y":0.95}]},"bone2":{"rotate":[{"time":0,"angle":58.92},{"time":0.2667,"angle":56.43},{"time":0.5,"angle":58.92},{"time":0.7333,"angle":57.84},{"time":1,"angle":58.92}],"translate":[{"time":0,"x":-1.94,"y":1.18,"curve":"stepped"},{"time":0.2667,"x":-1.94,"y":1.18,"curve":"stepped"},{"time":0.5,"x":-1.94,"y":1.18,"curve":"stepped"},{"time":0.7333,"x":-1.94,"y":1.18,"curve":"stepped"},{"time":1,"x":-1.94,"y":1.18}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":9.12},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.43},{"time":1,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":43.41},{"time":0.5,"angle":0},{"time":0.7333,"angle":-38.37},{"time":1,"angle":0}]},"hair4":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":9.86,"y":-0.07},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":5.17,"y":-0.04},{"time":1,"x":0,"y":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye1"},{"time":0.6,"name":"l_eye2"},{"time":0.6667,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":1,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye1"},{"time":0.6,"name":"r_eye2"},{"time":0.6667,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-16.32},{"time":0.3333,"angle":-13.24},{"time":0.5,"angle":-14.57},{"time":0.6667,"angle":-16.32},{"time":0.8333,"angle":-13.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.73,"y":0.91,"curve":"stepped"},{"time":0.8333,"x":3.73,"y":0.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.008,"y":1,"curve":"stepped"},{"time":0.5,"x":1.008,"y":1,"curve":"stepped"},{"time":0.6667,"x":1.008,"y":1,"curve":"stepped"},{"time":0.8333,"x":1.008,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.5,"angle":-9.93},{"time":0.8333,"angle":0.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.8333,"x":-1.57,"y":-0.18},{"time":1,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.78},{"time":0.5,"angle":-11.02},{"time":0.8333,"angle":-4.78},{"time":1,"angle":0}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":42.95,"curve":"stepped"},{"time":0.8333,"angle":42.95},{"time":1,"angle":13.12}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":86.48},{"time":0.5,"angle":72.99},{"time":0.8333,"angle":86.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.57,"y":3.58,"curve":"stepped"},{"time":0.8333,"x":1.57,"y":3.58},{"time":1,"x":0,"y":0}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-355.44,"curve":"stepped"},{"time":0.8333,"angle":-355.44},{"time":1,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1667,"angle":-6.17,"curve":"stepped"},{"time":0.8333,"angle":-6.17},{"time":1,"angle":-13.78}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-135.93},{"time":0.5,"angle":-128.4},{"time":0.8333,"angle":-135.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-3.84,"y":-2.35,"curve":"stepped"},{"time":0.8333,"x":-3.84,"y":-2.35},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.13,"y":0},{"time":0.4,"x":3.46,"y":0},{"time":0.6,"x":2.13,"y":0},{"time":0.7,"x":0,"y":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-20.47},{"time":0.5,"angle":-31.56},{"time":0.8333,"angle":-20.47},{"time":1,"angle":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.04},{"time":0.5,"angle":-18.42},{"time":0.8333,"angle":-5.04},{"time":1,"angle":0}]},"hair4":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.5,"x":3.23,"y":-0.02},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5.42},{"time":0.3333,"angle":-14.01},{"time":0.6667,"angle":-12.25},{"time":1,"angle":-14.94},{"time":1.3333,"angle":-5.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.3333,"angle":-19.81,"curve":[0.37,0.82,0.779,1]},{"time":0.6667,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":1,"angle":-9.91},{"time":1.3333,"angle":-13.5}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-2.94,"y":0},{"time":1.3333,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.14},{"time":0.6667,"angle":0},{"time":1,"angle":-2.08},{"time":1.3333,"angle":0}]},"mouth":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.01,"y":0},{"time":0.6667,"x":0,"y":0},{"time":1,"x":3.01,"y":0},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-300,"curve":"stepped"},{"time":0.6667,"angle":-300,"curve":"stepped"},{"time":1.3333,"angle":-300}],"translate":[{"time":0,"x":2.25,"y":-0.71},{"time":0.6667,"x":5.92,"y":-0.67},{"time":1.3333,"x":2.25,"y":-0.71}]},"r_arm2":{"rotate":[{"time":0,"angle":59.58},{"time":0.6667,"angle":44.83},{"time":1.3333,"angle":59.58}],"translate":[{"time":0,"x":4.01,"y":2.55},{"time":0.6667,"x":5.2,"y":0.95},{"time":1.3333,"x":4.01,"y":2.55}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.01,"y":-0.42},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.01,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.99},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.99},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.977,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-354.85},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.6667,"angle":-19.73},{"time":1.3333,"angle":-13.78}],"translate":[{"time":0,"x":-2.86,"y":-3.25,"curve":"stepped"},{"time":0.6667,"x":-2.86,"y":-3.25,"curve":"stepped"},{"time":1.3333,"x":-2.86,"y":-3.25}]},"bone2":{"rotate":[{"time":0,"angle":219.6},{"time":0.3333,"angle":222.33},{"time":0.6667,"angle":219.6},{"time":1,"angle":215.48},{"time":1.3333,"angle":219.6}],"translate":[{"time":0,"x":-4.67,"y":0.03},{"time":0.3333,"x":-5.16,"y":0.03},{"time":0.6667,"x":-4.67,"y":0.03},{"time":1,"x":-3.07,"y":-0.19},{"time":1.3333,"x":-4.67,"y":0.03}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.59},{"time":1.3333,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-36.6},{"time":0.6667,"angle":13.79},{"time":1,"angle":-24.25},{"time":1.3333,"angle":0}]},"hair4":{"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":0.62,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.66},{"time":0.6667,"angle":0},{"time":1,"angle":0.29},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":1.47},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.05,"y":2.95},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.018,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.025,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.73},{"time":0.6667,"angle":0},{"time":1,"angle":2.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-1.7,"y":0.28},{"time":0.3333,"x":-1.81,"y":-0.56},{"time":0.6667,"x":-1.7,"y":0.28,"curve":"stepped"},{"time":1,"x":-1.7,"y":0.28,"curve":"stepped"},{"time":1.3333,"x":-1.7,"y":0.28}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.67},{"time":0.6667,"angle":0},{"time":1,"angle":4.1},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-6.82,"y":-0.21},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.12},{"time":0.6667,"angle":0},{"time":1,"angle":0.04},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1.017},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.974,"y":1.069},{"time":1.3333,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-25.14},{"time":0.6667,"angle":0},{"time":1,"angle":15.36},{"time":1.3333,"angle":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.74},{"time":0.6667,"angle":0},{"time":1,"angle":-5.76},{"time":1.3333,"angle":0}]},"hair4":{"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.088,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-327.88},{"time":0.6667,"angle":29.27},{"time":1.3333,"angle":-327.88}]},"l_arm":{"rotate":[{"time":0,"angle":338.42},{"time":0.6667,"angle":336.01},{"time":1.3333,"angle":338.42}],"translate":[{"time":0,"x":-1.15,"y":0.02,"curve":"stepped"},{"time":0.6667,"x":-1.15,"y":0.02,"curve":"stepped"},{"time":1.3333,"x":-1.15,"y":0.02}]},"r_arm2":{"rotate":[{"time":0,"angle":-12.35},{"time":0.6667,"angle":-10.36},{"time":1.3333,"angle":-12.35}],"translate":[{"time":0,"x":4.29,"y":-0.77,"curve":"stepped"},{"time":0.6667,"x":4.29,"y":-0.77,"curve":"stepped"},{"time":1.3333,"x":4.29,"y":-0.77}]},"bone2":{"rotate":[{"time":0,"angle":16.14},{"time":0.6667,"angle":15.35},{"time":1.3333,"angle":16.14}],"translate":[{"time":0,"x":0.38,"y":3.91,"curve":"stepped"},{"time":0.6667,"x":0.38,"y":3.91,"curve":"stepped"},{"time":1.3333,"x":0.38,"y":3.91}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth6"},{"time":0.5,"name":"mouth8"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.91},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.73,"y":4.04},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.25},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.26,"y":-0.99},{"time":0.6667,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.37},{"time":0.6667,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-354.94},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.25,"y":0},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1,"y":1.076},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-293.74},{"time":0.3333,"angle":-291.14},{"time":0.6667,"angle":-293.74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.3333,"angle":-8.2},{"time":0.6667,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.54,"y":0.26},{"time":0.6667,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":51.16},{"time":0.3333,"angle":70.76},{"time":0.6667,"angle":50.99}],"translate":[{"time":0,"x":5.9,"y":0.91,"curve":"stepped"},{"time":0.3333,"x":5.9,"y":0.91,"curve":"stepped"},{"time":0.6667,"x":5.9,"y":0.91}]},"bone2":{"rotate":[{"time":0,"angle":-121.72},{"time":0.3333,"angle":214.95},{"time":0.6667,"angle":-121.72}],"translate":[{"time":0,"x":-0.84,"y":2.28},{"time":0.3333,"x":-1.77,"y":0.6},{"time":0.6667,"x":-0.84,"y":2.28}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.73},{"time":0.6667,"angle":0}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-38.34},{"time":0.6667,"angle":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4333,"name":"mouth1"},{"time":0.4667,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.5667,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6333,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":0.8333,"name":"mouth1"},{"time":0.8667,"name":"mouth2"},{"time":0.9,"name":"mouth3"},{"time":0.9667,"name":"mouth1"},{"time":1,"name":"mouth2"},{"time":1.0333,"name":"mouth3"},{"time":1.0667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.66},{"time":0.6667,"angle":0},{"time":1,"angle":0.29},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":1.47},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.05,"y":2.95},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.039,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.039,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.73},{"time":0.6667,"angle":0},{"time":1,"angle":2.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-1.7,"y":0.28},{"time":0.3333,"x":-1.81,"y":-0.56},{"time":0.6667,"x":-1.7,"y":0.28,"curve":"stepped"},{"time":1,"x":-1.7,"y":0.28,"curve":"stepped"},{"time":1.3333,"x":-1.7,"y":0.28}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.67},{"time":0.6667,"angle":0},{"time":1,"angle":4.1},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-6.82,"y":-0.21},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.12},{"time":0.6667,"angle":0},{"time":1,"angle":0.04},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1.017},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.974,"y":1.069},{"time":1.3333,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-25.14},{"time":0.6667,"angle":0},{"time":1,"angle":15.36},{"time":1.3333,"angle":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.74},{"time":0.6667,"angle":0},{"time":1,"angle":-5.76},{"time":1.3333,"angle":0}]},"hair4":{"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.088,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":7.37},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.87},{"time":1.3333,"angle":0}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1,"name":"mouth7"},{"time":0.2,"name":"mouth5"},{"time":0.3,"name":"mouth7"},{"time":0.4,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.6,"name":"mouth5"},{"time":0.6667,"name":"mouth7"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.94},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.25},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.32},{"time":0.6667,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.52},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.22},{"time":0.6667,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.78},{"time":0.3333,"angle":0},{"time":0.5,"angle":-355.9},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":28.98}],"translate":[{"time":0,"x":3.58,"y":0.96}]},"l_arm":{"rotate":[{"time":0,"angle":338.23}],"translate":[{"time":0,"x":1.35,"y":0.02}]},"r_arm2":{"rotate":[{"time":0,"angle":97.57}],"translate":[{"time":0,"x":2.14,"y":3.54}]},"bone2":{"rotate":[{"time":0,"angle":-114.84}],"translate":[{"time":0,"x":-2.88,"y":5.33}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.49},{"time":0.3333,"angle":0.07},{"time":0.5,"angle":7.78},{"time":0.6667,"angle":0.15}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":19.44},{"time":0.3333,"angle":0},{"time":0.5,"angle":-24.72},{"time":0.6667,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/206101.png b/m78-all/m78-fe/public/images/character/206101.png new file mode 100644 index 000000000..857a0dedb Binary files /dev/null and b/m78-all/m78-fe/public/images/character/206101.png differ diff --git a/m78-all/m78-fe/public/images/character/206301.atlas b/m78-all/m78-fe/public/images/character/206301.atlas new file mode 100644 index 000000000..617c3a236 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/206301.atlas @@ -0,0 +1,363 @@ + +206301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: false + xy: 627, 211 + size: 47, 43 + orig: 47, 43 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 541, 198 + size: 84, 56 + orig: 84, 56 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 2 + size: 102, 107 + orig: 102, 107 + offset: 0, 0 + index: -1 +hat + rotate: false + xy: 2, 111 + size: 185, 143 + orig: 185, 143 + offset: 0, 0 + index: -1 +hat2 + rotate: false + xy: 359, 175 + size: 180, 79 + orig: 180, 79 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 189, 95 + size: 159, 168 + orig: 159, 168 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 897, 228 + size: 26, 37 + orig: 26, 37 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 551, 150 + size: 26, 23 + orig: 26, 23 + offset: 0, 0 + index: -1 +l_b_hair + rotate: false + xy: 770, 218 + size: 42, 36 + orig: 42, 36 + offset: 0, 0 + index: -1 +l_eye + rotate: false + xy: 520, 141 + size: 29, 32 + orig: 29, 32 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 487, 105 + size: 31, 23 + orig: 31, 23 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: true + xy: 676, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: true + xy: 676, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: true + xy: 676, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: true + xy: 858, 224 + size: 30, 37 + orig: 30, 37 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 431, 87 + size: 29, 15 + orig: 29, 15 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 462, 84 + size: 18, 25 + orig: 18, 25 + offset: 0, 0 + index: -1 +l_eyeball_surprised + rotate: true + xy: 300, 77 + size: 16, 31 + orig: 16, 31 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 266, 78 + size: 32, 15 + orig: 32, 15 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: true + xy: 176, 3 + size: 27, 11 + orig: 27, 11 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 551, 138 + size: 26, 10 + orig: 26, 10 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 541, 175 + size: 21, 37 + orig: 21, 37 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 814, 218 + size: 23, 6 + orig: 23, 6 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 333, 79 + size: 24, 14 + orig: 24, 14 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 619, 178 + size: 30, 18 + orig: 30, 18 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 229, 79 + size: 35, 14 + orig: 35, 14 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 387, 78 + size: 14, 6 + orig: 14, 6 + offset: 0, 0 + index: -1 +mouth_surprised1 + rotate: true + xy: 651, 178 + size: 18, 14 + orig: 18, 14 + offset: 0, 0 + index: -1 +mouth_surprised2 + rotate: false + xy: 547, 125 + size: 18, 11 + orig: 18, 11 + offset: 0, 0 + index: -1 +mouth_surprised3 + rotate: false + xy: 520, 106 + size: 22, 5 + orig: 22, 5 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: true + xy: 176, 32 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 359, 94 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +pillow + rotate: true + xy: 359, 104 + size: 69, 84 + orig: 69, 84 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 814, 226 + size: 28, 42 + orig: 28, 42 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 489, 87 + size: 25, 16 + orig: 25, 16 + offset: 0, 0 + index: -1 +r_b_hair + rotate: false + xy: 445, 130 + size: 73, 43 + orig: 73, 43 + offset: 0, 0 + index: -1 +r_eye + rotate: false + xy: 936, 221 + size: 33, 33 + orig: 33, 33 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 445, 104 + size: 40, 24 + orig: 40, 24 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: true + xy: 723, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 723, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: true + xy: 723, 216 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 971, 221 + size: 30, 33 + orig: 30, 33 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: false + xy: 397, 91 + size: 32, 11 + orig: 32, 11 + offset: 0, 0 + index: -1 +r_eyeball + rotate: true + xy: 359, 71 + size: 21, 26 + orig: 21, 26 + offset: 0, 0 + index: -1 +r_eyeball_surprised + rotate: false + xy: 1003, 223 + size: 19, 31 + orig: 19, 31 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 189, 73 + size: 38, 20 + orig: 38, 20 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: true + xy: 176, 70 + size: 39, 11 + orig: 39, 11 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 627, 198 + size: 36, 11 + orig: 36, 11 + offset: 0, 0 + index: -1 +r_f_hair + rotate: false + xy: 106, 4 + size: 68, 105 + orig: 68, 105 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 580, 176 + size: 20, 37 + orig: 20, 37 + offset: 0, 0 + index: -1 +ribbon + rotate: false + xy: 520, 113 + size: 25, 26 + orig: 25, 26 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/206301.json b/m78-all/m78-fe/public/images/character/206301.json new file mode 100644 index 000000000..21a3ec4bd --- /dev/null +++ b/m78-all/m78-fe/public/images/character/206301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"CrELPEd1wwD94hz4RRlgbrfZLpM","spine":"3.5.25","width":185,"height":255.45,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":23.56,"rotation":-90,"x":3.46,"y":87.23},{"name":"body2","parent":"body1","length":41.82,"rotation":-2.89,"x":25.08},{"name":"eff_exclamation","parent":"root","length":32.18,"rotation":29.48,"x":94.68,"y":231.08},{"name":"eff_panic","parent":"root","length":22.83,"rotation":-9.21,"x":104.42,"y":167.74},{"name":"eff_sad1","parent":"root","length":18.17,"rotation":-91.54,"x":-6.24,"y":117.03},{"name":"eff_sad2","parent":"root","length":17.44,"rotation":-90.14,"x":48.35,"y":104.32},{"name":"eff_star1","parent":"root","length":18.28,"rotation":1.91,"x":85.54,"y":63.6},{"name":"eff_star2","parent":"root","length":20.79,"rotation":174.96,"x":-60.01,"y":56.29},{"name":"eff_star3","parent":"root","length":19.95,"rotation":-12.34,"x":79.45,"y":24.63},{"name":"head","parent":"body1","length":109.45,"rotation":-179.2,"x":-5.7,"y":1.52},{"name":"f_hair","parent":"head","length":92.92,"rotation":-146.32,"x":120.05,"y":-9.37},{"name":"hat","parent":"head","length":68.89,"rotation":1.55,"x":85.87,"y":-4.66},{"name":"l_arm1","parent":"body1","length":27.13,"rotation":18.2,"x":-0.55,"y":13.46},{"name":"l_arm2","parent":"l_arm1","length":20.48,"rotation":-144.08,"x":27.91,"y":-1},{"name":"l_b_hair","parent":"head","length":27.49,"rotation":-156.12,"x":9.04,"y":-20.89},{"name":"l_eye","parent":"head","length":11.22,"rotation":155.06,"x":58.23,"y":-37.81},{"name":"l_eyeball","parent":"head","length":8.94,"rotation":-9.89,"x":19.16,"y":-29.15},{"name":"l_eyebrow","parent":"head","length":9.97,"rotation":-157.86,"x":79.22,"y":-25.75},{"name":"l_leg","parent":"root","length":32.36,"rotation":-87.96,"x":6.6,"y":33.57},{"name":"mouth","parent":"head","length":11.22,"rotation":-13.52,"x":0.44,"y":10.65},{"name":"pillow","parent":"body1","length":12.71,"rotation":-88.41,"x":35.81,"y":53.34},{"name":"r_arm1","parent":"body1","length":34.22,"rotation":-21.8,"x":-1.26,"y":-19.37},{"name":"r_arm2","parent":"r_arm1","length":18.44,"rotation":106.31,"x":31.79,"y":1.31},{"name":"r_b_hair","parent":"head","length":33.39,"rotation":145.85,"x":7.96,"y":28.55},{"name":"r_eye","parent":"head","length":11.26,"rotation":-148.6,"x":55.71,"y":35.3},{"name":"r_eyeball","parent":"head","length":8.94,"rotation":8.29,"x":16.68,"y":20.66},{"name":"r_eyebrow","parent":"head","length":9.94,"rotation":162.7,"x":79.17,"y":21.56},{"name":"r_f_hair","parent":"head","length":83.37,"rotation":151.45,"x":125.65,"y":12.44},{"name":"r_leg","parent":"root","length":29.67,"rotation":-81.75,"x":-12.08,"y":31.34},{"name":"ribbon","parent":"body1","length":11.73,"rotation":-96.91,"x":21.33,"y":-9.14}],"slots":[{"name":"hat2","bone":"hat","attachment":"hat2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"ribbon","bone":"ribbon","attachment":"ribbon"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_b_hair","bone":"l_b_hair","attachment":"l_b_hair"},{"name":"r_b_hair","bone":"r_b_hair","attachment":"r_b_hair"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"pillow","bone":"pillow","attachment":"pillow"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"r_f_hair","bone":"r_f_hair","attachment":"r_f_hair"},{"name":"hat","bone":"hat","attachment":"hat"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye"},{"name":"r_eyeball","bone":"r_eyeball","attachment":"r_eyeball"},{"name":"l_eyeball","bone":"l_eyeball","attachment":"l_eyeball"}],"skins":{"default":{"body1":{"body1":{"x":6.13,"y":-2.34,"rotation":90,"width":47,"height":43}},"body2":{"body2":{"x":17.3,"y":-3.39,"rotation":91.56,"width":84,"height":56}},"f_hair":{"f_hair":{"x":43.97,"y":-17.9,"rotation":55.53,"width":102,"height":107}},"hat":{"hat":{"x":4.35,"y":12.1,"rotation":-92.35,"width":185,"height":143}},"hat2":{"hat2":{"x":-50.1,"y":12.43,"rotation":-92.35,"width":180,"height":79}},"head":{"head":{"x":60.97,"y":9.29,"rotation":-90.8,"width":159,"height":168}},"l_arm1":{"l_arm1":{"x":12.54,"y":-0.32,"rotation":71.8,"width":26,"height":37}},"l_arm2":{"l_arm2":{"x":10.45,"y":-0.87,"rotation":-144.12,"width":26,"height":23}},"l_b_hair":{"l_b_hair":{"x":11.62,"y":1.15,"rotation":65.74,"width":42,"height":36}},"l_eye":{"l_eye":{"x":19.29,"y":3.91,"rotation":114.15,"width":29,"height":32},"l_eye_happy":{"x":26.01,"y":2.17,"rotation":114.15,"width":31,"height":23},"l_eye_sad1":{"x":19.29,"y":3.91,"rotation":114.15,"width":38,"height":45},"l_eye_sad2":{"width":38,"height":45},"l_eye_sad3":{"width":38,"height":45},"l_eye_surprised":{"x":19.29,"y":3.91,"rotation":114.15,"width":30,"height":37},"l_eye_uneasy":{"x":19.29,"y":3.91,"rotation":114.15,"width":29,"height":15}},"l_eyeball":{"l_eyeball":{"x":17.79,"y":3.24,"rotation":-80.91,"width":18,"height":25},"l_eyeball_surprised":{"x":17.79,"y":3.24,"rotation":-80.91,"width":16,"height":31}},"l_eyebrow":{"l_eyebrow":{"x":24.66,"y":2.42,"rotation":67.07,"width":32,"height":15},"l_eyebrow_happy":{"x":24.66,"y":2.42,"rotation":67.07,"width":27,"height":11},"l_eyebrow_uneasy":{"x":23.66,"y":2.84,"rotation":67.07,"width":26,"height":10}},"l_leg":{"l_leg":{"x":15.26,"y":-1.71,"rotation":86.63,"width":21,"height":37}},"mouth1":{"mouth1":{"x":16.58,"y":-8.3,"rotation":-77.28,"width":23,"height":6},"mouth2":{"x":14.79,"y":-8.7,"rotation":-77.28,"width":24,"height":14},"mouth3":{"x":17.61,"y":-11.38,"rotation":-77.28,"width":30,"height":18},"mouth_happy":{"x":16.49,"y":-8.87,"rotation":-77.28,"width":35,"height":14},"mouth_sad":{"x":17.67,"y":-9.16,"rotation":-77.28,"width":14,"height":6},"mouth_surprised1":{"x":18.08,"y":-10.32,"rotation":-77.28,"width":18,"height":14},"mouth_surprised2":{"x":17.78,"y":-9.68,"rotation":-77.28,"width":18,"height":11},"mouth_surprised3":{"x":18.36,"y":-11.98,"rotation":-77.28,"width":22,"height":5},"mouth_uneasy1":{"x":16.58,"y":-8.3,"rotation":-77.28,"width":36,"height":8},"mouth_uneasy2":{"x":16.58,"y":-8.3,"rotation":-77.28,"width":36,"height":8}},"pillow":{"pillow":{"x":59.37,"y":-18.78,"rotation":178.41,"width":69,"height":84}},"r_arm1":{"r_arm1":{"x":16.79,"y":0.47,"rotation":111.8,"width":28,"height":42}},"r_arm2":{"r_arm2":{"x":10.51,"y":0.41,"rotation":5.49,"width":25,"height":16}},"r_b_hair":{"r_b_hair":{"x":15.55,"y":-2.9,"rotation":123.35,"width":73,"height":43}},"r_eye":{"r_eye":{"x":17.62,"y":-0.01,"rotation":57.8,"width":33,"height":33},"r_eye_happy":{"x":23.04,"y":5.55,"rotation":57.8,"width":40,"height":24},"r_eye_sad1":{"x":17.62,"y":-0.01,"rotation":57.8,"width":38,"height":45},"r_eye_sad2":{"rotation":57.8,"width":38,"height":45},"r_eye_sad3":{"rotation":57.8,"width":38,"height":45},"r_eye_surprised":{"x":17.62,"y":-0.01,"rotation":57.8,"width":30,"height":33},"r_eye_uneasy":{"x":21.3,"y":0.83,"rotation":57.8,"width":32,"height":11}},"r_eyeball":{"r_eyeball":{"x":21.29,"y":0.92,"rotation":-99.09,"width":21,"height":26},"r_eyeball_surprised":{"x":21.29,"y":0.92,"rotation":-99.09,"width":19,"height":31}},"r_eyebrow":{"r_eyebrow":{"x":24.47,"y":-8.47,"rotation":106.5,"width":38,"height":20},"r_eyebrow_happy":{"x":21.68,"y":-4.77,"rotation":106.5,"width":39,"height":11},"r_eyebrow_uneasy":{"x":21.37,"y":-3.73,"rotation":106.5,"width":36,"height":11}},"r_f_hair":{"r_f_hair":{"x":53.07,"y":5.2,"rotation":117.76,"width":68,"height":105}},"r_leg":{"r_leg":{"x":13.93,"y":-0.5,"rotation":80.42,"width":20,"height":37}},"ribbon":{"ribbon":{"x":13.47,"y":3.18,"rotation":-173.09,"width":25,"height":26}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.3333,"name":"l_eye_happy"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.3333,"name":null},{"time":1,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":0.3333,"name":"l_eyebrow_happy"},{"time":0.6667,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth_happy"},{"time":1,"name":"mouth1"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.3333,"name":"r_eye_happy"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.3333,"name":null},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":0.3333,"name":"r_eyebrow_happy"},{"time":0.6667,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.29,"curve":"stepped"},{"time":0.6667,"angle":-7.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":23.02,"curve":"stepped"},{"time":0.6667,"angle":23.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.028,"y":1.028},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.29},{"time":0.5,"angle":-9.41},{"time":0.6667,"angle":-7.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":7.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":23.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-14.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.07,"curve":"stepped"},{"time":0.6667,"angle":4.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.8},{"time":0.5,"angle":-4.38},{"time":0.6667,"angle":-2.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.8},{"time":0.5,"angle":-4.38},{"time":0.6667,"angle":-2.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.06},{"time":0.5,"angle":-14.15},{"time":0.6667,"angle":-9.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.06},{"time":0.5,"angle":-14.15},{"time":0.6667,"angle":-9.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-3.85,"y":-0.68,"curve":"stepped"},{"time":0.6667,"x":-3.85,"y":-0.68},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-3.85,"y":-0.68,"curve":"stepped"},{"time":0.6667,"x":-3.85,"y":-0.68},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.02,"curve":"stepped"},{"time":0.6667,"angle":2.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.09,"y":0.68,"curve":"stepped"},{"time":0.6667,"x":-0.09,"y":0.68},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0},{"time":1}]},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.6667,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":0.6667,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1333,"name":"mouth1"},{"time":0.2,"name":"mouth3"},{"time":0.6667,"name":"mouth3"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.6667,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":0.6667,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":4.26},{"time":0.3333,"angle":-3.27},{"time":0.6667,"angle":4.26}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.85,"y":10.18},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.038,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":357.26},{"time":0.3333,"angle":6.49},{"time":0.6667,"angle":357.26}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.025,"y":1.025},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":-3.55},{"time":0.3333,"angle":-5.36},{"time":0.6667,"angle":-3.55}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.874,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-25.35},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-6.26,"y":8.83},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":20.18},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":-0.59},{"time":0.3333,"x":3,"y":9.72},{"time":0.6667,"x":0,"y":-0.59}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-40.95},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-71.68},{"time":0.3333,"angle":-125.09},{"time":0.6667,"angle":-71.68}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":205.52,"curve":"stepped"},{"time":0.6667,"angle":205.52}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.33},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.39},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.09},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.04},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-20.22},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":266.04},{"time":0.3333,"angle":-88.62},{"time":0.6667,"angle":266.04}],"translate":[{"time":0,"x":47.56,"y":-51.26},{"time":0.3333,"x":42.75,"y":-47.62},{"time":0.6667,"x":47.56,"y":-51.26}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}},"drawOrder":[{"time":0,"offsets":[{"slot":"body2","offset":4},{"slot":"l_arm1","offset":-3},{"slot":"pillow","offset":-5},{"slot":"l_arm2","offset":-9}]},{"time":0.6667,"offsets":[{"slot":"body2","offset":4},{"slot":"l_arm1","offset":-3},{"slot":"pillow","offset":-5},{"slot":"l_arm2","offset":-9}]}]},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.5,"name":"l_eye_happy"},{"time":0.5667,"name":"l_eye"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.5,"name":null},{"time":0.5667,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.6,"name":"mouth1"},{"time":0.7,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.5,"name":"r_eye_happy"},{"time":0.5667,"name":"r_eye"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.5,"name":null},{"time":0.5667,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.89},{"time":0.7333,"angle":-5.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.036,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.4},{"time":0.7333,"angle":358.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.019,"y":1.019},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.015,"y":1.015},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-8.58},{"time":0.5,"angle":0},{"time":0.7333,"angle":13.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.958,"y":1},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":-26.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":19.66},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.13},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.13},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.13},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.13},{"time":0.5,"angle":0},{"time":0.7333,"angle":9.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.96},{"time":0.5,"angle":0},{"time":0.6667,"angle":-2.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.53},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.22},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.77},{"time":0.6667,"angle":0.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.77},{"time":0.6667,"angle":6.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5,"x":-6.24,"y":0.13},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5,"x":-6.24,"y":0.13},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0},{"time":0.5},{"time":1}]},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad1"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.9,"name":"mouth_sad"},{"time":1,"name":"mouth_sad"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad1"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":null}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.47},{"time":0.5,"angle":1.21},{"time":0.7667,"angle":5.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.03,"y":-4.63},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.54,"y":-3.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":342.15},{"time":0.2667,"angle":348.02},{"time":0.5,"angle":342.15},{"time":0.7667,"angle":345.15},{"time":1,"angle":342.15}],"translate":[{"time":0,"x":0.78,"y":0,"curve":"stepped"},{"time":0.5,"x":0.78,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-20.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.71,"y":1},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-81.5},{"time":0.5,"angle":-77.35},{"time":1,"angle":-81.5}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-11.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.77,"y":-0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.45,"y":-0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.041,"y":1},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":3.4,"y":-0.64},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.04,"y":1},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":261.25,"curve":"stepped"},{"time":1,"angle":261.25}],"translate":[{"time":0,"x":64,"y":-96.78,"curve":"stepped"},{"time":1,"x":64,"y":-96.78}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0,"offsets":[{"slot":"r_arm1","offset":1}]},{"time":1,"offsets":[{"slot":"r_arm1","offset":1}]}]},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.6667,"name":"l_eye"},{"time":0.7333,"name":"l_eye_happy"},{"time":0.8,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.7333,"name":null},{"time":0.8,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.7333,"name":"r_eye_happy"},{"time":0.8,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.7333,"name":null},{"time":0.8,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.32},{"time":0.6667,"angle":0},{"time":1,"angle":-5.83},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.59,"y":-2.96},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-4.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.94},{"time":0.6667,"angle":0},{"time":1,"angle":357.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.006,"y":1.006},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.013,"y":1.013},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-12.57},{"time":0.6667,"angle":0},{"time":1,"angle":10.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.023,"y":1.023},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.1},{"time":0.6667,"angle":0},{"time":1,"angle":-2.41},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.13},{"time":0.6667,"angle":0},{"time":1,"angle":2.73},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.83},{"time":0.6667,"angle":0},{"time":1,"angle":-3.79},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.36},{"time":0.6667,"angle":0},{"time":1,"angle":2.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.6},{"time":0.6667,"angle":0},{"time":1,"angle":1.86},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-18},{"time":0.6667,"angle":0},{"time":1,"angle":11.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.68},{"time":0.6667,"angle":0},{"time":1,"angle":8.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8,"x":-5.32,"y":-0.22},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8,"x":-5.32,"y":-0.22},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1,"y":0.906},{"time":1.3333,"x":1,"y":1}]}},"drawOrder":[{"time":0},{"time":1.3333}]},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":0.6667,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball_surprised"},{"time":1,"name":"l_eyeball_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised3"},{"time":0.2,"name":"mouth_surprised2"},{"time":0.2333,"name":"mouth_surprised1"},{"time":0.8333,"name":"mouth_surprised3"},{"time":1,"name":"mouth_surprised3"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_arm1":{"attachment":[{"time":0,"name":"r_arm1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":0.6667,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball_surprised"},{"time":1,"name":"r_eyeball_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.87},{"time":0.5,"angle":3.06},{"time":0.7667,"angle":-1.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.81,"y":-4.79},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-5.39},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.73},{"time":0.5,"angle":8.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.024,"y":1.024},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.5},{"time":0.5,"angle":-1.31},{"time":0.7667,"angle":3.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.49,"curve":"stepped"},{"time":0.5,"angle":5.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":16.77,"curve":"stepped"},{"time":0.5,"angle":16.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.53,"curve":"stepped"},{"time":0.5,"angle":-4.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-10.85,"curve":"stepped"},{"time":0.5,"angle":-10.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.16},{"time":0.6667,"angle":-0.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.59},{"time":0.6667,"angle":0.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-3.59},{"time":0.7333,"angle":0.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.59},{"time":0.6667,"angle":0.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.59},{"time":0.6667,"angle":0.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":3.49,"y":-0.74},{"time":0.6667,"x":-2.96,"y":-2.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":3.49,"y":-0.74},{"time":0.6667,"x":-2.96,"y":-2.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":3.74,"y":-2.75,"curve":"stepped"},{"time":1,"x":3.74,"y":-2.75}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.046,"y":1.046,"curve":"stepped"},{"time":0.5,"x":1.046,"y":1.046},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":3.74,"y":-2.75,"curve":"stepped"},{"time":1,"x":3.74,"y":-2.75}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.046,"y":1.046,"curve":"stepped"},{"time":0.5,"x":1.046,"y":1.046},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.61,"y":-0.67,"curve":"stepped"},{"time":0.5,"x":2.61,"y":-0.67},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.031,"y":1.031,"curve":"stepped"},{"time":0.5,"x":1.031,"y":1.031},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.61,"y":-0.67,"curve":"stepped"},{"time":0.5,"x":2.61,"y":-0.67},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.031,"y":1.031,"curve":"stepped"},{"time":0.5,"x":1.031,"y":1.031},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.86,"y":-0.45,"curve":"stepped"},{"time":0.5,"x":-1.86,"y":-0.45},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0},{"time":1}]},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.5,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_uneasy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.5,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"pillow":{"attachment":[{"time":0,"name":"pillow"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.5,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye_uneasy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.5,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":2.27},{"time":0.5,"angle":5.35},{"time":1,"angle":2.27}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0,"y":-2.44},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":-1.82},{"time":0.5,"angle":-0.17},{"time":1,"angle":-1.82}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-21.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":0,"y":1.22},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":13.2},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.04},{"time":0.6667,"angle":1.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.92},{"time":0.6667,"angle":-1.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-1.92},{"time":0.7667,"angle":-1.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.92},{"time":0.6667,"angle":-1.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.92},{"time":0.6667,"angle":-1.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.47,"y":5.75,"curve":"stepped"},{"time":0.6667,"x":-3.47,"y":5.75},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-4.94,"y":-10.63,"curve":"stepped"},{"time":0.6667,"x":-4.94,"y":-10.63},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.77,"y":0.19},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.77,"y":0.19},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"ribbon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"pillow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0},{"time":1}]}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/206301.png b/m78-all/m78-fe/public/images/character/206301.png new file mode 100644 index 000000000..4061d7c72 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/206301.png differ diff --git a/m78-all/m78-fe/public/images/character/207101.atlas b/m78-all/m78-fe/public/images/character/207101.atlas new file mode 100644 index 000000000..c64e35c8b --- /dev/null +++ b/m78-all/m78-fe/public/images/character/207101.atlas @@ -0,0 +1,300 @@ + +207101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 2, 16 + size: 62, 67 + orig: 62, 67 + offset: 0, 0 + index: -1 +dog + rotate: false + xy: 184, 12 + size: 40, 39 + orig: 40, 39 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 360, 199 + size: 70, 8 + orig: 70, 8 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 218, 196 + size: 70, 11 + orig: 70, 11 + offset: 0, 0 + index: -1 +eyebrow3 + rotate: false + xy: 290, 194 + size: 68, 13 + orig: 68, 13 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 85 + size: 170, 169 + orig: 170, 169 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 407, 168 + size: 23, 29 + orig: 23, 29 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 294, 112 + size: 26, 24 + orig: 26, 24 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 174, 147 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 218, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 104, 38 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 174, 100 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 258, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 298, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 338, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 66, 26 + size: 36, 57 + orig: 36, 57 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 378, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 418, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 458, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 104, 10 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 142, 10 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 254, 158 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 282, 166 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 320, 166 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 294, 138 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: true + xy: 332, 128 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 360, 131 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 266, 36 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 2, 10 + size: 5, 4 + orig: 5, 4 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 66, 2 + size: 22, 36 + orig: 22, 36 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 479, 187 + size: 31, 20 + orig: 31, 20 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 144, 38 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 184, 53 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 432, 169 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 360, 159 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 214, 147 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 214, 100 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 224, 53 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 174, 194 + size: 42, 60 + orig: 42, 60 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 226, 6 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 254, 111 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 264, 64 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/207101.json b/m78-all/m78-fe/public/images/character/207101.json new file mode 100644 index 000000000..2e2d1c060 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/207101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"5hrTuFSPuoaEDKlAcD00VVUGYbY","spine":"3.5.25","width":171.33,"height":239.07,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":1.04,"y":39.15},{"name":"dog","parent":"body","length":15.36,"rotation":-4.05,"x":18.01,"y":-3.17},{"name":"eff_exclamation","parent":"root","length":27,"rotation":56.52,"x":53.71,"y":233.59},{"name":"eff_panic","parent":"root","length":18.46,"rotation":32.53,"x":80.99,"y":208.67},{"name":"eff_sad1","parent":"root","length":18.11,"rotation":-91.82,"x":-4.85,"y":99.58},{"name":"eff_sad2","parent":"root","length":20.01,"rotation":-93.15,"x":50.25,"y":101.74},{"name":"eff_star1","parent":"root","length":21.9,"rotation":21.88,"x":41.58,"y":60.88},{"name":"eff_star2","parent":"root","length":17.51,"rotation":164.59,"x":-72.08,"y":95.55},{"name":"eff_star3","parent":"root","length":19.14,"rotation":-151.65,"x":-57.75,"y":58.56},{"name":"head","parent":"body","length":132.6,"x":37.14,"y":-2.33},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":68.74,"y":-10.42},{"name":"l_arm","parent":"body","length":24.14,"rotation":-139.27,"x":37.77,"y":-9.6},{"name":"l_arm2","parent":"l_arm","length":32.56,"rotation":-88.8,"x":24.9,"y":0.31},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":11.12,"y":44.83},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":23.46,"y":-6.56},{"name":"r_arm","parent":"body","length":21.99,"rotation":149.88,"x":40.43,"y":15.3},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":88.87,"x":23.88,"y":1.97},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-11.48,"y":45.13}],"slots":[{"name":"png/l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body","bone":"body","attachment":"body"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"dog","bone":"dog","attachment":"dog"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"}],"skins":{"default":{"body":{"body":{"x":18.39,"y":3.45,"rotation":-89.1,"width":62,"height":67}},"dog":{"dog":{"x":13.03,"y":3.18,"rotation":-85.04,"width":40,"height":39}},"eyebrow":{"eyebrow1":{"x":4.8,"y":1.63,"rotation":-91.35,"width":70,"height":8},"eyebrow2":{"x":4.8,"y":1.63,"rotation":-91.35,"width":70,"height":11},"eyebrow3":{"x":4.79,"y":1.66,"rotation":-90.9,"width":68,"height":13}},"l_arm2":{"l_arm2":{"x":10.66,"y":-1.69,"rotation":138.98,"width":26,"height":24}},"l_eye":{"l_eye1":{"x":49.94,"y":-36.79,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":49.92,"y":-36.79,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":49.92,"y":-36.79,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":49.92,"y":-36.79,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":49.92,"y":-36.79,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":50.22,"y":-36.44,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":50.22,"y":-36.44,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":49.93,"y":-36.79,"rotation":-89.55,"width":38,"height":45},"l_sadeye1":{"x":49.93,"y":-36.75,"rotation":-89.55,"width":38,"height":45},"l_sadeye2":{"x":49.93,"y":-36.75,"rotation":-89.55,"width":38,"height":45},"l_sadeye3":{"x":49.93,"y":-36.75,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth7":{"x":-2.78,"y":-0.51,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":-2.78,"y":-0.51,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-2.78,"y":-0.51,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":34.98,"y":-24.1,"rotation":-89.55,"width":5,"height":4}},"png/head":{"head":{"x":76.29,"y":8.47,"rotation":-89.55,"width":170,"height":169}},"png/l_arm1":{"l_arm1":{"x":11.78,"y":-0.09,"rotation":50.18,"width":23,"height":29}},"png/l_leg":{"l_leg":{"x":16.61,"y":0.82,"rotation":88.65,"width":36,"height":57}},"png/r_leg":{"r_leg":{"x":16.45,"y":3.03,"rotation":88.73,"width":42,"height":60}},"r_arm1":{"r_arm1":{"x":15.05,"y":2.21,"rotation":121.02,"width":22,"height":36}},"r_arm2":{"r_arm2":{"x":12.46,"y":-1.15,"rotation":32.15,"width":31,"height":20}},"r_eye":{"r_eye1":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":45.6,"y":17.82,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":45.6,"y":17.82,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_sadeye1":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_sadeye2":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45},"r_sadeye3":{"x":45.74,"y":17.5,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.3667,"name":"l_happyeye"},{"time":0.6667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.3667,"name":"r_happyeye"},{"time":0.6667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":7.34,"curve":"stepped"},{"time":0.5,"angle":7.34},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.44,"y":3.93,"curve":"stepped"},{"time":0.5,"x":-0.44,"y":3.93},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.48},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.19},{"time":0.6667,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.3667,"x":-6.71,"y":-0.21,"curve":"stepped"},{"time":0.6333,"x":-6.71,"y":-0.21},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.91},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.67},{"time":0.6667,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":11.32},{"time":0.3333,"angle":0},{"time":0.5,"angle":15.31},{"time":0.6667,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.53},{"time":0.3333,"angle":0},{"time":0.5,"angle":-0.31},{"time":0.6667,"angle":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.28},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.04},{"time":0.6667,"angle":0}]},"dog":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":13.34},{"time":0.2667,"angle":-19.39},{"time":0.4,"angle":13.34},{"time":0.5333,"angle":-19.39},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1333,"x":1.063,"y":1.056},{"time":0.2667,"x":1,"y":1},{"time":0.4,"x":1.063,"y":1.056},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.1667,"name":"mouth6"},{"time":1,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-14.15},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0},{"time":0.8333,"angle":9.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.1,"y":0.91},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":-1.87,"y":1.98},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.03,"y":1.03},{"time":0.2667,"x":0.977,"y":1,"curve":"stepped"},{"time":0.7333,"x":0.977,"y":1},{"time":0.8333,"x":1.03,"y":1.03},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.86},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0},{"time":0.8333,"angle":-1.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.35,"y":-0.16},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":0.36,"y":3.29},{"time":1,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.43},{"time":0.1667,"angle":9.44},{"time":0.2667,"angle":2.43,"curve":"stepped"},{"time":0.7333,"angle":2.43},{"time":0.8333,"angle":10.94},{"time":1,"angle":2.43}],"translate":[{"time":0,"x":-0.48,"y":-0.01,"curve":"stepped"},{"time":1,"x":-0.48,"y":-0.01}]},"l_arm2":{"rotate":[{"time":0,"angle":-4.41},{"time":0.1667,"angle":4.69},{"time":0.2667,"angle":-4.41,"curve":"stepped"},{"time":0.7333,"angle":-4.41},{"time":0.8333,"angle":-7.32},{"time":1,"angle":-4.41}],"translate":[{"time":0,"x":-0.84,"y":0.23,"curve":"stepped"},{"time":0.1667,"x":-0.84,"y":0.23,"curve":"stepped"},{"time":0.2667,"x":-0.84,"y":0.23,"curve":"stepped"},{"time":0.7333,"x":-0.84,"y":0.23,"curve":"stepped"},{"time":0.8333,"x":-0.84,"y":0.23,"curve":"stepped"},{"time":1,"x":-0.84,"y":0.23}]},"eyebrow":{"translate":[{"time":0,"x":-8.88,"y":0.07}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-24.31},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0},{"time":0.8333,"angle":-13.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":-0.04,"y":-2.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1},{"time":0.8333,"x":0.95,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":21.38},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0},{"time":0.8333,"angle":47.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":-9.39,"y":0.34},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":1.01},{"time":0.1667,"angle":-5.4},{"time":0.2667,"angle":1.01,"curve":"stepped"},{"time":0.7333,"angle":1.01},{"time":0.8333,"angle":-7.49},{"time":1,"angle":1.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":4.03},{"time":0.1667,"angle":-6.15},{"time":0.2667,"angle":4.03,"curve":"stepped"},{"time":0.7333,"angle":4.03},{"time":0.8333,"angle":-9.9},{"time":1,"angle":4.03}],"translate":[{"time":0,"x":0.48,"y":-0.59,"curve":"stepped"},{"time":0.1667,"x":0.48,"y":-0.59,"curve":"stepped"},{"time":0.2667,"x":0.48,"y":-0.59,"curve":"stepped"},{"time":0.7333,"x":0.48,"y":-0.59,"curve":"stepped"},{"time":0.8333,"x":0.48,"y":-0.59,"curve":"stepped"},{"time":1,"x":0.48,"y":-0.59}]},"root":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.47},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0},{"time":0.8333,"angle":4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.81,"y":17.82},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":-0.19,"y":16.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1},{"time":0.5,"x":1,"y":1.016},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"dog":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-17.34},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0},{"time":0.8333,"angle":31.34},{"time":1,"angle":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.28},{"time":0.3333,"angle":0},{"time":0.5,"angle":14.83},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.1,"y":0.91},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.87,"y":0.54},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.25},{"time":0.3333,"angle":0},{"time":0.5,"angle":-13.81},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.94},{"time":0.1667,"angle":-1.75},{"time":0.5,"angle":-10.84},{"time":0.6667,"angle":2.94}]},"l_arm2":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":1.27,"y":-1.67}]},"eyebrow":{"translate":[{"time":0,"x":-9.2,"y":0.06}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-28.04},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.75},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.46},{"time":0.3333,"angle":0},{"time":0.5,"angle":48.56},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.98,"y":4.99},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.878,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0.54}],"translate":[{"time":0,"x":0.95,"y":-0.78}]},"dog":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.42},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.39},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.056,"y":1.038},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.056,"y":1.038},{"time":0.6667,"x":1,"y":1}]},"root":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.11},{"time":0.3333,"angle":0},{"time":0.5,"angle":1.24},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.62,"y":3.1},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":3.71},{"time":0.6667,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-9.8},{"time":0.5,"angle":9.7},{"time":0.6667,"angle":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye3"},{"time":0.0667,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye3"},{"time":0.2667,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye3"},{"time":0.4667,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye3"},{"time":0.6667,"name":"l_sadeye2"},{"time":0.7333,"name":"l_sadeye3"},{"time":0.8,"name":"l_sadeye3"},{"time":0.8667,"name":"l_sadeye2"},{"time":0.9333,"name":"l_sadeye3"},{"time":1,"name":"l_sadeye3"},{"time":1.0667,"name":"l_sadeye2"},{"time":1.1333,"name":"l_sadeye3"},{"time":1.2,"name":"l_sadeye3"},{"time":1.2667,"name":"l_sadeye2"},{"time":1.3333,"name":"l_sadeye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye3"},{"time":0.0667,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye3"},{"time":0.2667,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye3"},{"time":0.4667,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye3"},{"time":0.6667,"name":"r_sadeye2"},{"time":0.7333,"name":"r_sadeye3"},{"time":0.8,"name":"r_sadeye3"},{"time":0.8667,"name":"r_sadeye2"},{"time":0.9333,"name":"r_sadeye3"},{"time":1,"name":"r_sadeye3"},{"time":1.0667,"name":"r_sadeye2"},{"time":1.1333,"name":"r_sadeye3"},{"time":1.2,"name":"r_sadeye3"},{"time":1.2667,"name":"r_sadeye2"},{"time":1.3333,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-12.25},{"time":0.6667,"angle":-18.91},{"time":1.3333,"angle":-12.25}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":1.66,"y":1.97},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"x":1.03,"y":1.02,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"angle":-19.42,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"angle":-13.5,"curve":[0.073,0.87,0.75,1]},{"time":1,"angle":-20.56,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"angle":-13.5}],"translate":[{"time":0,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.3333,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.6667,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1.3333,"x":-5.11,"y":1.22}]},"l_arm":{"rotate":[{"time":0,"angle":-30.13},{"time":0.6667,"angle":-34.2},{"time":1.3333,"angle":-30.13}],"translate":[{"time":0,"x":-4.01,"y":-10.42,"curve":"stepped"},{"time":0.6667,"x":-4.01,"y":-10.42,"curve":"stepped"},{"time":1.3333,"x":-4.01,"y":-10.42}]},"eyebrow":{"translate":[{"time":0,"x":-7.39,"y":2.39}]},"mouth":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":2.29,"y":-0.31},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-11.07},{"time":0.6667,"angle":-4.97},{"time":1.3333,"angle":-11.07}],"translate":[{"time":0,"x":-2.68,"y":-2.09,"curve":"stepped"},{"time":0.6667,"x":-2.68,"y":-2.09,"curve":"stepped"},{"time":1.3333,"x":-2.68,"y":-2.09}]},"r_arm2":{"rotate":[{"time":0,"angle":-17.16},{"time":0.6667,"angle":-3.44},{"time":1.3333,"angle":-17.16}],"translate":[{"time":0,"x":-0.62,"y":0.48,"curve":"stepped"},{"time":0.6667,"x":-0.62,"y":0.48,"curve":"stepped"},{"time":1.3333,"x":-0.62,"y":0.48}]},"l_arm2":{"rotate":[{"time":0,"angle":42.66},{"time":0.6667,"angle":14.35},{"time":1.3333,"angle":42.66}],"translate":[{"time":0,"x":-0.75,"y":-0.67,"curve":"stepped"},{"time":0.6667,"x":-0.75,"y":-0.67,"curve":"stepped"},{"time":1.3333,"x":-0.75,"y":-0.67}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.01,"y":-0.42},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.01,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.99},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.99},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.977,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"eff_sad1":{"translate":[{"time":0,"x":19.34,"y":4.37}]},"eff_sad2":{"translate":[{"time":0,"x":12.48,"y":-18.72}]},"dog":{"rotate":[{"time":0,"angle":-27.49},{"time":0.6667,"angle":-35.42},{"time":1.3333,"angle":-27.49}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.19},{"time":0.6667,"angle":0},{"time":1,"angle":-5.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":-1.13},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.75},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.048,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.041,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.78},{"time":0.6667,"angle":0},{"time":1,"angle":-2.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.57},{"time":0.6667,"angle":0},{"time":1,"angle":-3.03},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.15},{"time":0.6667,"angle":0},{"time":1,"angle":1.94},{"time":1.3333,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.79},{"time":0.6667,"angle":0},{"time":1,"angle":3.79},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.09},{"time":0.7333,"x":-6.82,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]},"dog":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.2},{"time":0.6667,"angle":0},{"time":1,"angle":13.61},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.022,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.036,"y":1.039},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":11.03},{"time":0.5,"angle":15.96},{"time":0.8333,"angle":11.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.02,"y":10.88,"curve":"stepped"},{"time":0.5,"x":-0.02,"y":10.88,"curve":"stepped"},{"time":0.8333,"x":-0.02,"y":10.88},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.046,"y":1},{"time":0.5,"x":1.02,"y":1},{"time":0.8333,"x":1.046,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.66},{"time":0.5,"angle":10.75},{"time":0.8333,"angle":0.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.46,"y":-0.06},{"time":0.5,"x":0.25,"y":1.73},{"time":0.8333,"x":0.46,"y":-0.06},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":3.46,"y":0.01}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.991,"y":1},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":23.47},{"time":0.5,"angle":16.14},{"time":0.8333,"angle":23.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":2.08,"curve":"stepped"},{"time":0.5,"x":0.03,"y":2.08,"curve":"stepped"},{"time":0.8333,"x":0.03,"y":2.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8333,"x":0.968,"y":1},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-7.75},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-10.16},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":9.1},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":9.01},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"dog":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-13.4},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4333,"name":"mouth1"},{"time":0.4667,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.5667,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6333,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":0.8333,"name":"mouth1"},{"time":0.8667,"name":"mouth2"},{"time":0.9,"name":"mouth3"},{"time":0.9667,"name":"mouth1"},{"time":1,"name":"mouth2"},{"time":1.0333,"name":"mouth3"},{"time":1.0667,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.19},{"time":0.6667,"angle":0},{"time":1,"angle":-5.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":-1.13},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.75},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.048,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.041,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.78},{"time":0.6667,"angle":0},{"time":1,"angle":-2.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.57},{"time":0.6667,"angle":0},{"time":1,"angle":-3.03},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.15},{"time":0.6667,"angle":0},{"time":1,"angle":1.94},{"time":1.3333,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.79},{"time":0.6667,"angle":0},{"time":1,"angle":3.79},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.09},{"time":0.7333,"x":-6.82,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]},"dog":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.2},{"time":0.6667,"angle":0},{"time":1,"angle":13.61},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.022,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.036,"y":1.039},{"time":1.3333,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"},{"time":0.5,"name":"eyebrow2"},{"time":0.5333,"name":"eyebrow2"},{"time":0.5667,"name":"eyebrow2"},{"time":0.6,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye7"},{"time":0.5,"name":"l_eye7"},{"time":0.5333,"name":"l_eye3"},{"time":0.6,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"},{"time":0.1333,"name":"mouth5"},{"time":0.2667,"name":"mouth7"},{"time":0.4333,"name":"mouth5"},{"time":0.5667,"name":"mouth7"},{"time":0.6667,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"},{"time":0.5,"name":"r_eye7"},{"time":0.5333,"name":"r_eye3"},{"time":0.6,"name":"r_eye7"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.49},{"time":0.3333,"angle":0},{"time":0.5,"angle":8.73},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.55,"y":3.73},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":4.21},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-7.93},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":-2.13},{"time":0.3333,"angle":4.39},{"time":0.6667,"angle":-2.13}]},"l_arm2":{"rotate":[{"time":0,"angle":0.73}],"translate":[{"time":0,"x":-0.18,"y":0.69}]},"eyebrow":{"translate":[{"time":0,"x":-9.22,"y":0.04,"curve":"stepped"},{"time":0.5,"x":-9.22,"y":0.04},{"time":0.5333,"x":-11.58,"y":-0.03,"curve":"stepped"},{"time":0.5667,"x":-11.58,"y":-0.03},{"time":0.6,"x":-9.22,"y":0.04}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.64},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-3.32}],"translate":[{"time":0,"x":-0.53,"y":-0.8}]},"r_arm":{"rotate":[{"time":0,"angle":-3.72},{"time":0.3333,"angle":-8.98},{"time":0.6667,"angle":-3.72}]},"dog":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-10.16},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.95},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/207101.png b/m78-all/m78-fe/public/images/character/207101.png new file mode 100644 index 000000000..1bb4bd219 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/207101.png differ diff --git a/m78-all/m78-fe/public/images/character/207201.atlas b/m78-all/m78-fe/public/images/character/207201.atlas new file mode 100644 index 000000000..7cf37a783 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/207201.atlas @@ -0,0 +1,412 @@ + +207201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_hat + rotate: false + xy: 382, 170 + size: 85, 84 + orig: 85, 84 + offset: 0, 0 + index: -1 +body + rotate: false + xy: 382, 89 + size: 78, 79 + orig: 78, 79 + offset: 0, 0 + index: -1 +f_hat + rotate: false + xy: 2, 97 + size: 206, 157 + orig: 206, 157 + offset: 0, 0 + index: -1 +hat_feather + rotate: true + xy: 2, 18 + size: 77, 123 + orig: 77, 123 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 210, 87 + size: 167, 170 + orig: 167, 170 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 358, 32 + size: 20, 26 + orig: 20, 26 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 210, 51 + size: 33, 34 + orig: 33, 34 + offset: 0, 0 + index: -1 +l_eye + rotate: false + xy: 358, 54 + size: 28, 31 + orig: 28, 31 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 152, 2 + size: 26, 29 + orig: 26, 29 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 2, 2 + size: 25, 14 + orig: 25, 14 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: true + xy: 495, 103 + size: 28, 15 + orig: 28, 15 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: true + xy: 207, 2 + size: 29, 24 + orig: 29, 24 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: false + xy: 450, 35 + size: 25, 23 + orig: 25, 23 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: false + xy: 421, 34 + size: 27, 24 + orig: 27, 24 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 180, 2 + size: 25, 29 + orig: 25, 29 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: true + xy: 423, 60 + size: 27, 30 + orig: 27, 30 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 488, 55 + size: 16, 22 + orig: 16, 22 + offset: 0, 0 + index: -1 +l_eyeball2 + rotate: false + xy: 233, 2 + size: 20, 29 + orig: 20, 29 + offset: 0, 0 + index: -1 +l_eyeball_surprised + rotate: false + xy: 495, 81 + size: 15, 20 + orig: 15, 20 + offset: 0, 0 + index: -1 +l_eyeball_uneasy + rotate: false + xy: 317, 46 + size: 27, 16 + orig: 27, 16 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 477, 35 + size: 23, 9 + orig: 23, 9 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: false + xy: 488, 27 + size: 21, 13 + orig: 21, 13 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 319, 2 + size: 23, 9 + orig: 23, 9 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 488, 42 + size: 22, 11 + orig: 22, 11 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: true + xy: 346, 41 + size: 21, 10 + orig: 21, 10 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 153, 42 + size: 24, 53 + orig: 24, 53 + offset: 0, 0 + index: -1 +l_shoulder + rotate: true + xy: 330, 2 + size: 21, 19 + orig: 21, 19 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 214, 33 + size: 30, 16 + orig: 30, 16 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 455, 60 + size: 26, 11 + orig: 26, 11 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 282, 50 + size: 27, 6 + orig: 27, 6 + offset: 0, 0 + index: -1 +mouth_happy + rotate: true + xy: 179, 51 + size: 44, 29 + orig: 44, 29 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 153, 33 + size: 24, 7 + orig: 24, 7 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 246, 34 + size: 27, 17 + orig: 27, 17 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: true + xy: 501, 173 + size: 11, 9 + orig: 11, 9 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 67, 8 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 29, 8 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 462, 73 + size: 20, 31 + orig: 20, 31 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 469, 170 + size: 30, 42 + orig: 30, 42 + offset: 0, 0 + index: -1 +r_eye + rotate: true + xy: 462, 95 + size: 36, 31 + orig: 36, 31 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 462, 133 + size: 34, 35 + orig: 34, 35 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 179, 33 + size: 33, 16 + orig: 33, 16 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 127, 2 + size: 37, 23 + orig: 37, 23 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: false + xy: 388, 61 + size: 33, 26 + orig: 33, 26 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: false + xy: 388, 34 + size: 31, 25 + orig: 31, 25 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: false + xy: 282, 58 + size: 33, 27 + orig: 33, 27 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: true + xy: 469, 214 + size: 40, 41 + orig: 40, 41 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: false + xy: 317, 64 + size: 39, 21 + orig: 39, 21 + offset: 0, 0 + index: -1 +r_eyeball + rotate: false + xy: 277, 10 + size: 19, 24 + orig: 19, 24 + offset: 0, 0 + index: -1 +r_eyeball2 + rotate: true + xy: 245, 53 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +r_eyeball_surprised + rotate: true + xy: 302, 27 + size: 17, 21 + orig: 17, 21 + offset: 0, 0 + index: -1 +r_eyeball_uneasy + rotate: true + xy: 255, 2 + size: 30, 20 + orig: 30, 20 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 450, 25 + size: 26, 8 + orig: 26, 8 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 275, 36 + size: 25, 12 + orig: 25, 12 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 501, 186 + size: 26, 9 + orig: 26, 9 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 386, 20 + size: 24, 12 + orig: 24, 12 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: true + xy: 498, 142 + size: 26, 12 + orig: 26, 12 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 127, 41 + size: 24, 54 + orig: 24, 54 + offset: 0, 0 + index: -1 +r_shoulder + rotate: true + xy: 298, 2 + size: 23, 19 + orig: 23, 19 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/207201.json b/m78-all/m78-fe/public/images/character/207201.json new file mode 100644 index 000000000..a76f26c7f --- /dev/null +++ b/m78-all/m78-fe/public/images/character/207201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"V3JWDDix7jzlN+AhQ7asi+6c0iE","spine":"3.5.25","width":215.28,"height":303.65,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":60.2,"rotation":-90,"x":3.14,"y":86.47},{"name":"eff_exclamation","parent":"root","length":36.85,"rotation":29.25,"x":96.07,"y":224.34},{"name":"eff_panic","parent":"root","length":28.2,"rotation":-24.23,"x":110.86,"y":149.11},{"name":"eff_sad1","parent":"root","length":21.56,"rotation":-91.9,"x":-13.47,"y":114.49},{"name":"eff_sad2","parent":"root","length":17.78,"rotation":-92.24,"x":37.99,"y":119.73},{"name":"eff_star1","parent":"root","length":22.54,"rotation":-3.27,"x":85.14,"y":59.09},{"name":"eff_star2","parent":"root","length":28.76,"rotation":169.7,"x":-64.04,"y":73.23},{"name":"eff_star3","parent":"root","length":23.37,"rotation":-7.91,"x":74.21,"y":15.36},{"name":"head","parent":"body","length":111.37,"rotation":-179.56,"x":-4.82},{"name":"hat","parent":"head","length":87.44,"rotation":2.94,"x":63.56,"y":-10.81},{"name":"feather","parent":"hat","length":119.11,"rotation":21.15,"x":31.4,"y":57.59},{"name":"l_arm1","parent":"body","length":26.99,"rotation":22.48,"x":0.43,"y":10.32},{"name":"l_arm2","parent":"l_arm1","length":32.59,"rotation":13.94,"x":18.78,"y":1.53},{"name":"l_eye","parent":"head","length":11.96,"rotation":152.08,"x":57.7,"y":-45.6},{"name":"l_eyeball","parent":"head","length":9.9,"rotation":2.05,"x":20.38,"y":-33.7},{"name":"l_eyebrow","parent":"head","length":9.93,"rotation":174.59,"x":77.58,"y":-33.28},{"name":"l_leg","parent":"root","length":52.91,"rotation":-91.4,"x":12.6,"y":52.93},{"name":"l_shoulder","parent":"body","length":17.82,"rotation":81.67,"x":2.15,"y":3.87},{"name":"mouth","parent":"head","length":8.95,"rotation":34.78,"x":2.42,"y":-21.09},{"name":"r_arm1","parent":"body","length":26.73,"rotation":-25.74,"x":3.87,"y":-19.35},{"name":"r_arm2","parent":"r_arm1","length":31.93,"rotation":0.21,"x":19.39,"y":-2.59},{"name":"r_eye","parent":"head","length":13.08,"rotation":-153.03,"x":56.13,"y":29.24},{"name":"r_eyeball","parent":"head","length":9.47,"rotation":-3.04,"x":18.65,"y":20.5},{"name":"r_eyebrow","parent":"head","length":11.19,"rotation":-178.11,"x":79.22,"y":13.15},{"name":"r_leg","parent":"root","length":51.2,"rotation":-91.93,"x":-14.06,"y":51.21},{"name":"r_shoulder","parent":"body","length":22.3,"rotation":-70.87,"x":0.86,"y":-13.33}],"slots":[{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_shoulder","bone":"l_shoulder","attachment":"l_shoulder"},{"name":"body","bone":"body","attachment":"body"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"b_hat","bone":"hat","attachment":"b_hat"},{"name":"hat_feather","bone":"feather","attachment":"hat_feather"},{"name":"f_hat","bone":"hat","attachment":"f_hat"},{"name":"r_shoulder","bone":"r_shoulder","attachment":"r_shoulder"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"mouth1","bone":"mouth","attachment":"mouth3"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye"},{"name":"r_eyeball","bone":"r_eyeball","attachment":"r_eyeball"},{"name":"l_eyeball","bone":"l_eyeball","attachment":"l_eyeball"}],"skins":{"default":{"b_hat":{"b_hat":{"x":61.56,"y":56.82,"rotation":-93.38,"width":85,"height":84}},"body":{"body":{"x":27.24,"y":-7.72,"rotation":90,"width":78,"height":79}},"f_hat":{"f_hat":{"x":28.38,"y":16,"rotation":-93.38,"width":206,"height":157}},"hat_feather":{"hat_feather":{"x":66.11,"y":5.09,"rotation":-114.53,"width":77,"height":123}},"head":{"head":{"x":67.1,"y":10.34,"rotation":-90.44,"width":167,"height":170}},"l_arm1":{"l_arm1":{"x":13.22,"y":-0.12,"rotation":67.52,"width":20,"height":26}},"l_arm2":{"l_arm2":{"x":17.52,"y":-2.55,"rotation":53.58,"width":33,"height":34}},"l_eye":{"l_eye":{"x":22.46,"y":0.13,"rotation":117.47,"width":28,"height":31},"l_eye2":{"x":19.9,"y":0.41,"rotation":117.47,"width":26,"height":29},"l_eye3":{"x":23.04,"y":0.44,"rotation":117.47,"width":25,"height":14},"l_eye_happy":{"x":22.46,"y":0.13,"rotation":117.47,"width":28,"height":15},"l_eye_sad1":{"x":22.46,"y":0.13,"rotation":117.47,"width":29,"height":24},"l_eye_sad2":{"x":22.46,"y":0.13,"rotation":117.47,"width":25,"height":23},"l_eye_sad3":{"x":22.46,"y":0.13,"rotation":117.47,"width":27,"height":24},"l_eye_surprised":{"x":20.86,"y":0.9,"rotation":117.47,"width":25,"height":29},"l_eye_uneasy":{"x":20.6,"y":-0.83,"rotation":117.47,"width":27,"height":30}},"l_eyeball":{"l_eyeball":{"x":15.86,"y":-0.13,"rotation":-92.49,"width":16,"height":22},"l_eyeball2":{"x":19.45,"y":-0.95,"rotation":-92.49,"width":20,"height":29},"l_eyeball_surprised":{"x":15.78,"y":-1.91,"rotation":-92.49,"width":15,"height":20},"l_eyeball_uneasy":{"x":14.07,"y":-5.28,"rotation":-92.49,"width":27,"height":16}},"l_eyebrow":{"l_eyebrow":{"x":14.29,"y":1.13,"rotation":94.97,"width":23,"height":9},"l_eyebrow_happy":{"x":14.29,"y":1.13,"rotation":94.97,"width":21,"height":13},"l_eyebrow_sad":{"x":14.29,"y":1.13,"rotation":94.97,"width":23,"height":9},"l_eyebrow_surprised":{"x":14.29,"y":1.13,"rotation":94.97,"width":22,"height":11},"l_eyebrow_uneasy":{"x":14.29,"y":1.13,"rotation":94.97,"width":21,"height":10}},"l_leg":{"l_leg":{"x":27.21,"y":-1.65,"rotation":91.4,"width":24,"height":53}},"l_shoulder":{"l_shoulder":{"x":11.73,"y":-1.45,"rotation":8.33,"width":21,"height":19}},"mouth1":{"mouth1":{"x":16.53,"y":8.39,"rotation":-126.32,"width":30,"height":16},"mouth2":{"x":16.53,"y":8.39,"rotation":-126.32,"width":26,"height":11},"mouth3":{"x":16.53,"y":8.39,"rotation":-126.32,"width":27,"height":6},"mouth_happy":{"x":17.67,"y":10.01,"rotation":-126.32,"width":44,"height":29},"mouth_sad":{"x":16.53,"y":8.39,"rotation":-126.32,"width":24,"height":7},"mouth_surprised":{"x":16.53,"y":8.39,"rotation":-126.32,"width":27,"height":17},"mouth_uneasy":{"x":13.5,"y":4.1,"rotation":-126.32,"width":11,"height":9},"mouth_uneasy1":{"x":16.53,"y":8.39,"rotation":-126.32,"width":36,"height":8},"mouth_uneasy2":{"x":16.53,"y":8.39,"rotation":-126.32,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":12.63,"y":0.63,"rotation":115.74,"width":20,"height":31}},"r_arm2":{"r_arm2":{"x":18.22,"y":4.21,"rotation":115.53,"width":30,"height":42}},"r_eye":{"r_eye":{"x":23.68,"y":2.34,"rotation":62.59,"width":36,"height":31},"r_eye2":{"x":18.55,"y":2.69,"rotation":62.59,"width":34,"height":35},"r_eye3":{"x":22.8,"y":2.8,"rotation":62.59,"width":33,"height":16},"r_eye_happy":{"x":23.68,"y":2.34,"rotation":62.59,"width":37,"height":23},"r_eye_sad1":{"x":23.68,"y":2.34,"rotation":62.59,"width":33,"height":26},"r_eye_sad2":{"x":23.68,"y":2.34,"rotation":62.59,"width":31,"height":25},"r_eye_sad3":{"x":23.68,"y":2.34,"rotation":62.59,"width":33,"height":27},"r_eye_surprised":{"x":20.81,"y":1.43,"rotation":62.59,"width":40,"height":41},"r_eye_uneasy":{"x":23.68,"y":2.34,"rotation":62.59,"width":39,"height":21}},"r_eyeball":{"r_eyeball":{"x":16.22,"y":-0.77,"rotation":-87.4,"width":19,"height":24},"r_eyeball2":{"x":22.21,"y":-1.82,"rotation":-87.4,"width":32,"height":35},"r_eyeball_surprised":{"x":16.4,"y":-4.67,"rotation":-87.4,"width":17,"height":21},"r_eyeball_uneasy":{"x":17,"y":-6.48,"rotation":-87.4,"width":30,"height":20}},"r_eyebrow":{"r_eyebrow":{"x":16.35,"y":0.16,"rotation":87.8,"width":26,"height":8},"r_eyebrow_happy":{"x":16.35,"y":0.16,"rotation":87.8,"width":25,"height":12},"r_eyebrow_sad":{"x":16.35,"y":0.16,"rotation":87.8,"width":26,"height":9},"r_eyebrow_surprised":{"x":16.35,"y":0.16,"rotation":87.8,"width":24,"height":12},"r_eyebrow_uneasy":{"x":16.35,"y":0.16,"rotation":87.8,"width":26,"height":12}},"r_leg":{"r_leg":{"x":25.39,"y":1.9,"rotation":91.93,"width":24,"height":54}},"r_shoulder":{"r_shoulder":{"x":13.14,"y":2.36,"rotation":160.87,"width":23,"height":19}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.1667,"name":"l_eye2"},{"time":0.2333,"name":"l_eye3"},{"time":0.3,"name":"l_eye"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.1667,"name":"l_eyeball2"},{"time":0.2333,"name":null},{"time":0.3,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":0.1667,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth1"},{"time":0.7333,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.1667,"name":"r_eye2"},{"time":0.2333,"name":"r_eye3"},{"time":0.3,"name":"r_eye"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.1667,"name":"r_eyeball2"},{"time":0.2333,"name":null},{"time":0.3,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":0.1667,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":-9.65,"curve":"stepped"},{"time":0.5,"angle":-9.65},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1,"x":0,"y":-2.75},{"time":0.3333,"x":0,"y":3.44,"curve":"stepped"},{"time":0.5,"x":0,"y":3.44},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0.15},{"time":0.1,"angle":4.2},{"time":0.3333,"angle":356.57,"curve":"stepped"},{"time":0.5,"angle":356.57},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":2.7},{"time":0.5,"angle":2.52},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":8.22},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.1667,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.2333,"x":-5.92,"y":-2.74},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.1667,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.2333,"x":-5.92,"y":-2.74},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":38.55,"curve":"stepped"},{"time":0.5,"angle":38.55},{"time":0.6667,"angle":29.47},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":-38.03,"curve":"stepped"},{"time":0.5,"angle":-38.03},{"time":0.6667,"angle":-29.51},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":-63.68,"curve":"stepped"},{"time":0.5,"angle":-63.68},{"time":0.6667,"angle":-50.85},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0.15},{"time":0.1667,"angle":7.56},{"time":0.3333,"angle":-16.67,"curve":"stepped"},{"time":0.5,"angle":-16.67},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.27,"y":0.8},{"time":0.3333,"x":-0.07,"y":0.42,"curve":"stepped"},{"time":0.5,"x":-0.07,"y":0.42},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":58.54,"curve":"stepped"},{"time":0.5,"angle":58.54},{"time":0.6667,"angle":46.52},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0.15},{"time":0.1667,"angle":-4.41},{"time":0.3333,"angle":11.69,"curve":"stepped"},{"time":0.5,"angle":11.69},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.38,"y":0.28},{"time":0.3333,"x":0.14,"y":-0.4,"curve":"stepped"},{"time":0.5,"x":0.14,"y":-0.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0.15},{"time":0.3333,"angle":-58.27,"curve":"stepped"},{"time":0.5,"angle":-58.27},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0.15,"curve":"stepped"},{"time":0.3333,"angle":0.15,"curve":"stepped"},{"time":0.5,"angle":0.15,"curve":"stepped"},{"time":1,"angle":0.15}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.6667,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":0.1667,"name":"l_eyebrow_happy"},{"time":0.3333,"name":"l_eyebrow_happy"},{"time":0.5,"name":"l_eyebrow_happy"},{"time":0.6667,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.6667,"name":"mouth_happy"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.6667,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":0.1667,"name":"r_eyebrow_happy"},{"time":0.3333,"name":"r_eyebrow_happy"},{"time":0.5,"name":"r_eyebrow_happy"},{"time":0.6667,"name":"r_eyebrow_happy"}]}},"bones":{"feather":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-9.18},{"time":0.3333,"angle":0},{"time":0.5,"angle":16.09},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":-0.01,"curve":"stepped"},{"time":0.3333,"angle":-0.01,"curve":"stepped"},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":-0.01},{"time":0.1667,"angle":0.25},{"time":0.3333,"angle":-0.01},{"time":0.5,"angle":-4.92},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-7.07,"y":12.34},{"time":0.3333,"x":4.11,"y":0.81},{"time":0.5,"x":10.62,"y":12.2},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-0.01},{"time":0.1667,"angle":4.77},{"time":0.3333,"angle":1.88},{"time":0.5,"angle":4.94},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":-0.01,"curve":"stepped"},{"time":0.3333,"angle":-0.01,"curve":"stepped"},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.37,"y":1.59},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.7,"y":0.2},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":-0.01,"curve":"stepped"},{"time":0.3333,"angle":-0.01,"curve":"stepped"},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":-0.01,"curve":"stepped"},{"time":0.3333,"angle":-0.01,"curve":"stepped"},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":-0.01,"curve":"stepped"},{"time":0.3333,"angle":-0.01,"curve":"stepped"},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-0.01},{"time":0.1667,"angle":-37.72},{"time":0.3333,"angle":-17.57},{"time":0.5,"angle":-40.39},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-0.01,"curve":"stepped"},{"time":0.3333,"angle":-0.01,"curve":"stepped"},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-0.01},{"time":0.1667,"angle":25.6},{"time":0.3333,"angle":7.48},{"time":0.5,"angle":31.73},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-15.3},{"time":0.3333,"angle":0},{"time":0.3667,"angle":-2.91},{"time":0.5,"angle":-31.17},{"time":0.6333,"angle":-3.4},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-1.83,"y":-0.34},{"time":0.1667,"x":-9.17,"y":12.34},{"time":0.3333,"x":0,"y":0},{"time":0.3667,"x":2.41,"y":0.05},{"time":0.5,"x":12.03,"y":10.8},{"time":0.6333,"x":2.41,"y":0.05},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":-0.01},{"time":0.1667,"angle":27.53},{"time":0.3333,"angle":-0.01},{"time":0.5,"angle":9.33},{"time":0.6667,"angle":-0.01}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-1.83,"y":-0.34},{"time":0.1667,"x":-9.17,"y":12.34},{"time":0.3333,"x":0,"y":0},{"time":0.3667,"x":2.41,"y":0.05},{"time":0.5,"x":12.03,"y":10.8},{"time":0.6333,"x":2.41,"y":0.05},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.74,"y":-0.26},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.38,"y":-0.01},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.74,"y":-0.26},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.38,"y":-0.01},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":26.21},{"time":0.2333,"angle":21.53},{"time":0.3333,"angle":3.63},{"time":0.5,"angle":24.58},{"time":0.5667,"angle":21.11},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-31.72},{"time":0.2333,"angle":-24.23},{"time":0.3333,"angle":-6.12},{"time":0.5,"angle":-29.54},{"time":0.5667,"angle":-22.54},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.3333,"name":"mouth2"},{"time":0.3667,"name":"mouth1"},{"time":0.5,"name":"mouth3"},{"time":0.6333,"name":"mouth1"},{"time":0.7,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.59},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.75},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.75},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":1.83},{"time":0.5,"angle":355.16},{"time":1,"angle":1.83}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.68},{"time":0.5,"angle":0},{"time":0.7667,"angle":-0.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.49},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.47},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.55},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.77},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":67.26,"curve":"stepped"},{"time":0.2667,"angle":67.26,"curve":"stepped"},{"time":0.5,"angle":67.26},{"time":0.7667,"angle":67.95},{"time":1,"angle":67.26}],"translate":[{"time":0,"x":3.12,"y":2.15,"curve":"stepped"},{"time":0.5,"x":3.12,"y":2.15,"curve":"stepped"},{"time":1,"x":3.12,"y":2.15}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-8.04},{"time":0.5,"angle":9.44},{"time":1,"angle":-8.04}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-5.89},{"time":0.2667,"angle":9.68},{"time":0.5,"angle":2.11},{"time":0.7667,"angle":-1.54},{"time":1,"angle":-5.89}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-20.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":18},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad1"},{"time":0.1667,"name":"l_eye_sad2"},{"time":0.3333,"name":"l_eye_sad3"},{"time":0.5,"name":"l_eye_sad1"},{"time":0.6667,"name":"l_eye_sad2"},{"time":0.8333,"name":"l_eye_sad3"},{"time":1,"name":"l_eye_sad1"},{"time":1.1667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad1"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null},{"time":1.3333,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad1"},{"time":0.1667,"name":"r_eye_sad2"},{"time":0.3333,"name":"r_eye_sad3"},{"time":0.5,"name":"r_eye_sad1"},{"time":0.6667,"name":"r_eye_sad2"},{"time":0.8333,"name":"r_eye_sad3"},{"time":1,"name":"r_eye_sad1"},{"time":1.1667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad1"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null},{"time":1.3333,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-1.74},{"time":0.6667,"angle":-5.12},{"time":1.3333,"angle":-1.74}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":1.3,"y":-2.06},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":4.78},{"time":0.6667,"angle":358.73},{"time":1.3333,"angle":4.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":2.02,"y":0.44},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-0.3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-7.03},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-3.54,"y":-0.63},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-3.54,"y":-0.63},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":-5.98},{"time":0.6667,"angle":-9.22},{"time":1.3333,"angle":-5.98}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":2.06,"y":0.18},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":18.01},{"time":0.6667,"angle":21.56},{"time":1.3333,"angle":18.01}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":1.37,"y":0.12},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":32.15},{"time":0.6667,"angle":29},{"time":1.3333,"angle":32.15}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":1.37,"y":0.1},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-17.55},{"time":0.6667,"angle":-21.09},{"time":1.3333,"angle":-17.55}],"translate":[{"time":0,"x":-0.01,"y":0.38,"curve":"stepped"},{"time":0.6667,"x":-0.01,"y":0.38,"curve":"stepped"},{"time":1.3333,"x":-0.01,"y":0.38}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-9.95},{"time":0.6667,"angle":-8.09},{"time":1.3333,"angle":-9.95}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":1.37,"y":0.1},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":5.69},{"time":0.6667,"angle":8.29},{"time":1.3333,"angle":5.69}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eff_star3":{"rotate":[{"time":0.6667,"angle":-8.84}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.6667,"name":"l_eyeball2"},{"time":0.7333,"name":null},{"time":0.8,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":1.3333,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.6667,"name":"r_eyeball2"},{"time":0.7333,"name":null},{"time":0.8,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.32},{"time":0.6667,"angle":0},{"time":1,"angle":-3.38},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-3.63},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-3.63},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.025,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.26},{"time":0.6667,"angle":0},{"time":1,"angle":357.16},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.97},{"time":0.6667,"angle":0},{"time":1,"angle":0.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.99},{"time":0.6667,"angle":0},{"time":1,"angle":-11.87},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7333,"x":-4.82,"y":-0.07},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7333,"x":-4.82,"y":-0.07},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.6},{"time":0.6667,"angle":0},{"time":1,"angle":0.86},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.72},{"time":0.6667,"angle":0},{"time":1,"angle":-5.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.24},{"time":0.6667,"angle":0},{"time":1,"angle":-3.63},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.31},{"time":0.6667,"angle":0},{"time":1,"angle":-3.63},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.6},{"time":0.6667,"angle":0},{"time":0.9667,"angle":3.36},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.95},{"time":0.6667,"angle":0},{"time":0.9667,"angle":3.36},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball_surprised"},{"time":1,"name":"l_eyeball_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.2667,"name":"mouth_sad"},{"time":0.3,"name":"mouth_surprised"},{"time":0.8333,"name":"mouth_surprised"},{"time":0.8667,"name":"mouth_sad"},{"time":1,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball_surprised"},{"time":1,"name":"r_eyeball_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":7.32,"curve":"stepped"},{"time":0.6667,"angle":7.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-3.03,"y":-2.04},{"time":0.3333,"x":-6.05,"y":2.2,"curve":"stepped"},{"time":0.6667,"x":-6.05,"y":2.2},{"time":0.8333,"x":-3.03,"y":-0.79},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":5.82},{"time":0.5,"angle":3.94},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.18,"curve":"stepped"},{"time":0.5,"angle":1.18,"curve":"stepped"},{"time":0.6667,"angle":1.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3333,"x":2.8,"y":0.17,"curve":"stepped"},{"time":0.4,"x":2.8,"y":0.17},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":7.21},{"time":0.5,"angle":4.39},{"time":0.6667,"angle":3.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":6.22,"y":0.82,"curve":"stepped"},{"time":0.6667,"x":6.22,"y":0.82},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":6.22,"y":0.82,"curve":"stepped"},{"time":0.7333,"x":6.22,"y":0.82},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":24.14},{"time":0.5,"angle":4.38},{"time":0.6667,"angle":28.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-25.55},{"time":0.5,"angle":-6.76},{"time":0.6667,"angle":-24.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-27.57},{"time":0.5,"angle":-11.55},{"time":0.6667,"angle":-27.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":27.06},{"time":0.5,"angle":10.43},{"time":0.6667,"angle":27.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":15.25,"curve":"stepped"},{"time":0.6667,"angle":15.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.3333,"name":"l_eye3"},{"time":0.5,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_uneasy"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball_uneasy"},{"time":0.3333,"name":null},{"time":0.5,"name":"l_eyeball_uneasy"},{"time":1,"name":"l_eyeball_uneasy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.5,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.3333,"name":"r_eye3"},{"time":0.5,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye_uneasy"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball_uneasy"},{"time":0.3333,"name":null},{"time":0.5,"name":"r_eyeball_uneasy"},{"time":1,"name":"r_eyeball_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":0.5,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-4.88},{"time":0.5,"angle":2.91},{"time":1,"angle":-4.88}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.16},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.73},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-0.73},{"time":0.5,"angle":1.85},{"time":0.6667,"angle":2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"feather":{"rotate":[{"time":0,"angle":-2.44},{"time":0.1667,"angle":-3.03},{"time":0.5,"angle":2.56},{"time":0.6333,"angle":2.94},{"time":0.6667,"angle":4.75},{"time":1,"angle":-2.44}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-4.02,"y":1.16},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-4.26,"y":-0.89},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":-5.04},{"time":0.5,"angle":-0.45},{"time":1,"angle":-5.04}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shoulder":{"rotate":[{"time":0,"angle":10.06},{"time":0.5,"angle":13.68},{"time":1,"angle":10.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":25.56,"curve":"stepped"},{"time":0.5,"angle":25.56,"curve":"stepped"},{"time":1,"angle":25.56}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":141.64},{"time":0.5,"angle":137.89},{"time":1,"angle":141.64}],"translate":[{"time":0,"x":2.99,"y":5.35,"curve":"stepped"},{"time":0.5,"x":2.99,"y":5.35,"curve":"stepped"},{"time":1,"x":2.99,"y":5.35}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":33.27},{"time":0.5,"angle":42.97},{"time":1,"angle":33.27}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.81,"y":-1.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/207201.png b/m78-all/m78-fe/public/images/character/207201.png new file mode 100644 index 000000000..8b291166c Binary files /dev/null and b/m78-all/m78-fe/public/images/character/207201.png differ diff --git a/m78-all/m78-fe/public/images/character/207301.atlas b/m78-all/m78-fe/public/images/character/207301.atlas new file mode 100644 index 000000000..af7bacf51 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/207301.atlas @@ -0,0 +1,321 @@ + +207301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +bag + rotate: false + xy: 359, 99 + size: 129, 99 + orig: 129, 99 + offset: 0, 0 + index: -1 +body + rotate: false + xy: 2, 39 + size: 66, 59 + orig: 66, 59 + offset: 0, 0 + index: -1 +cup + rotate: false + xy: 299, 48 + size: 33, 37 + orig: 33, 37 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 2, 16 + size: 70, 8 + orig: 70, 8 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 2, 26 + size: 70, 11 + orig: 70, 11 + offset: 0, 0 + index: -1 +eyebrow3 + rotate: false + xy: 171, 119 + size: 68, 13 + orig: 68, 13 + offset: 0, 0 + index: -1 +hat + rotate: false + xy: 171, 134 + size: 186, 120 + orig: 186, 120 + offset: 0, 0 + index: -1 +hat2 + rotate: false + xy: 359, 200 + size: 186, 54 + orig: 186, 54 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 100 + size: 167, 154 + orig: 167, 154 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 172, 2 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 70, 39 + size: 59, 60 + orig: 59, 60 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 610, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 650, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 690, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 730, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 770, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 810, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 850, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 490, 139 + size: 38, 59 + orig: 38, 59 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 890, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 930, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 970, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 259, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 287, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 74, 11 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 530, 162 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: true + xy: 530, 124 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 558, 173 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 558, 145 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: true + xy: 530, 86 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 558, 117 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 252, 81 + size: 5, 4 + orig: 5, 4 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 332, 96 + size: 23, 36 + orig: 23, 36 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 558, 91 + size: 24, 32 + orig: 24, 32 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 132, 53 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 490, 92 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 172, 72 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 212, 72 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 252, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 292, 87 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: true + xy: 172, 32 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 547, 201 + size: 53, 61 + orig: 53, 61 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 132, 6 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 219, 25 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 259, 40 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/207301.json b/m78-all/m78-fe/public/images/character/207301.json new file mode 100644 index 000000000..4a1ec25bb --- /dev/null +++ b/m78-all/m78-fe/public/images/character/207301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"jF2JFdWwk1tKL2Z/nDICG14t1KM","spine":"3.4.02","width":186.33,"height":245.39,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.09,"x":4.23,"y":46.66},{"name":"bag","parent":"body","length":7.25,"rotation":3.28,"x":13.35,"y":5.99},{"name":"cup","parent":"bag","length":11.57,"rotation":145,"x":-13.29,"y":55.34},{"name":"eff_exclamation","parent":"root","length":26.99,"rotation":56.51,"x":53.7,"y":233.58},{"name":"eff_panic","parent":"root","length":18.45,"rotation":32.52,"x":77.52,"y":184.74},{"name":"eff_sad1","parent":"root","length":18.1,"rotation":-91.81,"x":-8.02,"y":105.64},{"name":"eff_sad2","parent":"root","length":20,"rotation":-93.14,"x":45.72,"y":102.87},{"name":"eff_star1","parent":"root","length":21.9,"rotation":-6.74,"x":38.77,"y":47.85},{"name":"eff_star2","parent":"root","length":17.5,"rotation":164.59,"x":-54.36,"y":91.81},{"name":"eff_star3","parent":"root","length":19.13,"rotation":-151.64,"x":-40.42,"y":53.65},{"name":"head","parent":"body","length":132.59,"x":37.52,"y":-2.01},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":61.52,"y":-5.51},{"name":"hat","parent":"head","length":11.87,"rotation":8.8,"x":98.39,"y":13.92},{"name":"hat2","parent":"hat","length":6.34,"rotation":178.8,"x":-21.1,"y":9.53},{"name":"l_arm","parent":"body","length":24.14,"rotation":-139.27,"x":32.86,"y":-14.75},{"name":"l_arm2","parent":"l_arm","length":32.55,"rotation":94.02,"x":23.08,"y":-3.49},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.64,"x":10.5,"y":45.74},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":15.62,"y":-4.04},{"name":"r_arm","parent":"body","length":21.98,"rotation":149.88,"x":33.1,"y":22.32},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":163.69,"x":27.14,"y":7.49},{"name":"r_leg","parent":"root","length":44.59,"rotation":-88.72,"x":-7.98,"y":46.19}],"slots":[{"name":"bag","bone":"bag","attachment":"bag"},{"name":"png/l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body","bone":"body","attachment":"body"},{"name":"hat2","bone":"hat2","attachment":"hat2"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"hat","bone":"hat","attachment":"hat"},{"name":"cup","bone":"cup","attachment":"cup"}],"skins":{"default":{"bag":{"bag":{"x":5.06,"y":19.4,"rotation":-92.37,"width":129,"height":99}},"body":{"body":{"x":18.38,"y":3.45,"rotation":-89.09,"width":66,"height":59}},"cup":{"cup":{"x":15.95,"y":-3.21,"rotation":122.61,"width":33,"height":37}},"eyebrow":{"eyebrow1":{"x":3.89,"y":1.79,"rotation":-91.35,"width":70,"height":8},"eyebrow2":{"x":3.89,"y":1.79,"rotation":-91.35,"width":70,"height":11},"eyebrow3":{"x":3.87,"y":1.83,"rotation":-90.9,"width":68,"height":13}},"hat":{"hat":{"x":1.67,"y":-2.21,"rotation":-97.9,"width":186,"height":120}},"hat2":{"hat2":{"x":9.79,"y":7.06,"rotation":83.29,"width":186,"height":54}},"l_arm2":{"l_arm2":{"x":33.82,"y":-2.06,"rotation":-43.85,"width":59,"height":60}},"l_eye":{"l_eye1":{"x":41.97,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_eye2":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_eye3":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_eye4":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_eye5":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":41.92,"y":-29.98,"rotation":-89.09,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":41.92,"y":-29.98,"rotation":-89.09,"width":38,"height":45},"l_happyeye":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_sadeye1":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_sadeye2":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45},"l_sadeye3":{"x":41.92,"y":-29.98,"rotation":-89.54,"width":38,"height":45}},"mouth":{"mouth1":{"x":-2.36,"y":-2.91,"rotation":87.74,"width":36,"height":26},"mouth2":{"x":-2.36,"y":-2.91,"rotation":87.74,"width":36,"height":26},"mouth3":{"x":-2.36,"y":-2.91,"rotation":87.74,"width":36,"height":26},"mouth4":{"x":-2.36,"y":-2.91,"rotation":87.74,"width":36,"height":26},"mouth5":{"x":-2.36,"y":-2.91,"rotation":87.74,"width":36,"height":26},"mouth6":{"x":-2.36,"y":-2.91,"rotation":87.74,"width":36,"height":26},"mouth7":{"x":-2.36,"y":-2.91,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":2.72,"y":0.77,"scaleY":0.847,"rotation":89.15,"width":36,"height":26},"mouth_sad":{"x":-2.36,"y":-2.91,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":26.65,"y":-17.39,"rotation":-89.54,"width":5,"height":4}},"png/head":{"head":{"x":60.11,"y":11.86,"rotation":-89.54,"width":167,"height":154}},"png/l_arm1":{"l_arm1":{"x":11.77,"y":-0.08,"rotation":34.19,"width":36,"height":28}},"png/l_leg":{"l_leg":{"x":16.61,"y":0.82,"rotation":88.64,"width":38,"height":59}},"png/r_leg":{"r_leg":{"x":16.44,"y":3.03,"rotation":88.72,"width":53,"height":61}},"r_arm1":{"r_arm1":{"x":15.04,"y":2.2,"rotation":121.01,"width":23,"height":36}},"r_arm2":{"r_arm2":{"x":12.84,"y":0.31,"rotation":-63.44,"width":24,"height":32}},"r_eye":{"r_eye1":{"x":38.01,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_eye2":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_eye3":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_eye4":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_eye5":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":37.96,"y":24.67,"rotation":-89.09,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":37.96,"y":24.67,"rotation":-89.09,"width":38,"height":45},"r_happyeye":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_sadeye1":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_sadeye2":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45},"r_sadeye3":{"x":37.96,"y":24.67,"rotation":-89.54,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.3666,"name":"l_happyeye"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":7.33,"curve":"stepped"},{"time":0.5,"angle":7.33},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.44,"y":3.92,"curve":"stepped"},{"time":0.5,"x":-0.44,"y":3.92},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-2.47},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.19},{"time":0.6666,"angle":0}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.3666,"angle":-8.45},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.3666,"x":-6.7,"y":-0.21},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":25.87,"curve":"stepped"},{"time":0.5,"angle":25.87},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-19.76},{"time":0.1666,"angle":-16.29},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.66},{"time":0.6666,"angle":-19.76}]},"l_arm":{"rotate":[{"time":0,"angle":52.48},{"time":0.1666,"angle":55.49},{"time":0.3333,"angle":52.48},{"time":0.5,"angle":59.46},{"time":0.6666,"angle":52.48}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":0.52},{"time":0.3333,"angle":0},{"time":0.5,"angle":-0.3},{"time":0.6666,"angle":0}]},"l_arm2":{"rotate":[{"time":0,"angle":-26.15},{"time":0.1666,"angle":-51.69},{"time":0.3333,"angle":-51.74,"curve":"stepped"},{"time":0.5,"angle":-51.74},{"time":0.6666,"angle":-26.15}],"translate":[{"time":0,"x":-0.56,"y":1.24},{"time":0.1666,"x":0.78,"y":4.24},{"time":0.3333,"x":0.57,"y":3.04,"curve":"stepped"},{"time":0.5,"x":0.57,"y":3.04},{"time":0.6666,"x":-0.56,"y":1.24}]},"cup":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-32.47},{"time":0.3333,"angle":-19.76},{"time":0.5,"angle":-27.25},{"time":0.6666,"angle":0}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":8},{"time":0.3333,"angle":8.89},{"time":0.5,"angle":12.07},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.57,"y":0.75,"curve":"stepped"},{"time":0.3333,"x":3.57,"y":0.75,"curve":"stepped"},{"time":0.5,"x":3.57,"y":0.75},{"time":0.6666,"x":0,"y":0}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":3.15,"curve":"stepped"},{"time":0.3333,"angle":3.15},{"time":0.5333,"angle":4.79},{"time":0.6666,"angle":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.1666,"name":"mouth6"},{"time":0.3333,"name":"mouth3"},{"time":0.5,"name":"mouth6"},{"time":0.8333,"name":"mouth6"},{"time":1,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-14.15},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":9.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.09,"y":0.91},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-1.87,"y":1.98},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.03,"y":1.03},{"time":0.3333,"x":0.977,"y":1,"curve":"stepped"},{"time":0.6666,"x":0.977,"y":1},{"time":0.8333,"x":1.03,"y":1.03},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":6.86},{"time":0.3333,"angle":0},{"time":0.3666,"angle":1.03},{"time":0.4,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":-1.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.35,"y":-0.16},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":0.35,"y":3.28},{"time":1,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.43},{"time":0.1666,"angle":22.01},{"time":0.3333,"angle":2.43},{"time":0.3666,"angle":-3.64},{"time":0.4,"angle":2.43,"curve":"stepped"},{"time":0.6666,"angle":2.43},{"time":0.8333,"angle":23.76},{"time":1,"angle":2.43}],"translate":[{"time":0,"x":-0.48,"y":0,"curve":"stepped"},{"time":1,"x":-0.48,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":-4.41},{"time":0.1666,"angle":4.69},{"time":0.3333,"angle":-4.41,"curve":"stepped"},{"time":0.6666,"angle":-4.41},{"time":0.8333,"angle":-7.32},{"time":1,"angle":-4.41}],"translate":[{"time":0,"x":-0.83,"y":0.22,"curve":"stepped"},{"time":0.1666,"x":-0.83,"y":0.22,"curve":"stepped"},{"time":0.3333,"x":-0.83,"y":0.22,"curve":"stepped"},{"time":0.6666,"x":-0.83,"y":0.22,"curve":"stepped"},{"time":0.8333,"x":-0.83,"y":0.22,"curve":"stepped"},{"time":1,"x":-0.83,"y":0.22}]},"eyebrow":{"translate":[{"time":0,"x":-8.88,"y":0.06}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-24.31},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":-13.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.03,"y":-2.35},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-0.03,"y":-2.35},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1},{"time":0.8333,"x":0.95,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":21.37},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":47.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.06,"y":-2.85},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-9.38,"y":0.34},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":1.01},{"time":0.1666,"angle":-16.15},{"time":0.3333,"angle":1.01,"curve":"stepped"},{"time":0.6666,"angle":1.01},{"time":0.8333,"angle":-33.17},{"time":1,"angle":1.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":4.03},{"time":0.1666,"angle":-6.14},{"time":0.3333,"angle":4.03,"curve":"stepped"},{"time":0.6666,"angle":4.03},{"time":0.8333,"angle":-9.9},{"time":1,"angle":4.03}],"translate":[{"time":0,"x":0.47,"y":-0.59,"curve":"stepped"},{"time":0.1666,"x":0.47,"y":-0.59,"curve":"stepped"},{"time":0.3333,"x":0.47,"y":-0.59,"curve":"stepped"},{"time":0.6666,"x":0.47,"y":-0.59,"curve":"stepped"},{"time":0.8333,"x":0.47,"y":-0.59,"curve":"stepped"},{"time":1,"x":0.47,"y":-0.59}]},"root":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":0.46},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":3.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.81,"y":17.82},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-0.18,"y":16.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1,"y":1.016},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-2.88},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":-4.27},{"time":1,"angle":0}]},"cup":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-105.22},{"time":0.3333,"angle":0},{"time":0.4,"angle":15.89},{"time":0.4666,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":-100.04},{"time":1,"angle":0}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":1.61},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.3666,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":1.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":11.32,"y":0.86},{"time":0.3333,"x":0,"y":0},{"time":0.3666,"x":-0.7,"y":0},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":10.72,"y":-0.81},{"time":1,"x":0,"y":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-13.27},{"time":0.3333,"angle":0},{"time":0.5,"angle":14.83},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.09,"y":0.91},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.87,"y":0.53},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.008,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-5.19},{"time":0.3333,"angle":0},{"time":0.5,"angle":-11.24},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.88,"y":-2.15},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.58,"y":3.11},{"time":0.6666,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.93},{"time":0.1666,"angle":26.69},{"time":0.3333,"angle":2.93},{"time":0.5,"angle":44.57},{"time":0.6666,"angle":2.93}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-48.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":1.27,"y":-1.67},{"time":0.1666,"x":0.05,"y":2.8},{"time":0.3333,"x":1.27,"y":-1.67},{"time":0.4666,"x":1.21,"y":2.44},{"time":0.6666,"x":1.27,"y":-1.67}]},"eyebrow":{"translate":[{"time":0,"x":-9.19,"y":0.05}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-28.04},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.75},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.03,"y":-2.35},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.03,"y":-2.35},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-2.45},{"time":0.3333,"angle":0},{"time":0.5,"angle":48.56},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.06,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.97,"y":4.99},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.877,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0.54}],"translate":[{"time":0,"x":0.95,"y":-0.77}]},"root":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-5.11},{"time":0.3333,"angle":0},{"time":0.5,"angle":1.23},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.61,"y":3.09},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":3.71},{"time":0.6666,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-9.8},{"time":0.5,"angle":9.7},{"time":0.6666,"angle":0}]},"cup":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-69.96,"curve":"stepped"},{"time":0.2666,"angle":-69.96},{"time":0.3333,"angle":0},{"time":0.5,"angle":-265.09,"curve":"stepped"},{"time":0.5666,"angle":-265.09},{"time":0.6666,"angle":0}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-4.19},{"time":0.3333,"angle":0},{"time":0.5,"angle":-3.75},{"time":0.6666,"angle":0}]},"hat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":0.97},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":10.05,"y":0.6},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":4.27,"y":-0.31},{"time":0.6666,"x":0,"y":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye3"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye3"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye3"},{"time":0.4666,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye3"},{"time":0.6666,"name":"l_sadeye2"},{"time":0.7333,"name":"l_sadeye3"},{"time":0.8,"name":"l_sadeye3"},{"time":0.8666,"name":"l_sadeye2"},{"time":0.9333,"name":"l_sadeye3"},{"time":1,"name":"l_sadeye3"},{"time":1.0666,"name":"l_sadeye2"},{"time":1.1333,"name":"l_sadeye3"},{"time":1.2,"name":"l_sadeye3"},{"time":1.2666,"name":"l_sadeye2"},{"time":1.3333,"name":"l_sadeye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye3"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye3"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye3"},{"time":0.4666,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye3"},{"time":0.6666,"name":"r_sadeye2"},{"time":0.7333,"name":"r_sadeye3"},{"time":0.8,"name":"r_sadeye3"},{"time":0.8666,"name":"r_sadeye2"},{"time":0.9333,"name":"r_sadeye3"},{"time":1,"name":"r_sadeye3"},{"time":1.0666,"name":"r_sadeye2"},{"time":1.1333,"name":"r_sadeye3"},{"time":1.2,"name":"r_sadeye3"},{"time":1.2666,"name":"r_sadeye2"},{"time":1.3333,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-7.01},{"time":0.6666,"angle":-17.54},{"time":1.3333,"angle":-7.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.072,0.87,0.75,1]},{"time":0.6666,"x":1.03,"y":1.02,"curve":[0.072,0.87,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.072,0.87,0.75,1]},{"time":0.3333,"angle":-18.16,"curve":[0.072,0.87,0.75,1]},{"time":0.6666,"angle":-13.5,"curve":[0.072,0.87,0.75,1]},{"time":1,"angle":-19.37,"curve":[0.072,0.87,0.75,1]},{"time":1.3333,"angle":-13.5}],"translate":[{"time":0,"x":-5.1,"y":1.21,"curve":"stepped"},{"time":0.3333,"x":-5.1,"y":1.21,"curve":"stepped"},{"time":0.6666,"x":-5.1,"y":1.21,"curve":"stepped"},{"time":1,"x":-5.1,"y":1.21,"curve":"stepped"},{"time":1.3333,"x":-5.1,"y":1.21}]},"l_arm":{"rotate":[{"time":0,"angle":-30.13},{"time":0.6666,"angle":-34.19},{"time":1.3333,"angle":-30.13}],"translate":[{"time":0,"x":-4,"y":-10.42,"curve":"stepped"},{"time":0.6666,"x":-4,"y":-10.42,"curve":"stepped"},{"time":1.3333,"x":-4,"y":-10.42}]},"eyebrow":{"translate":[{"time":0,"x":-7.39,"y":2.39},{"time":0.6666,"x":-3.81,"y":2.07},{"time":1.3333,"x":-7.39,"y":2.39}]},"mouth":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.7666,"x":2.28,"y":-0.3},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-11.06},{"time":0.6666,"angle":-4.96},{"time":1.3333,"angle":-11.06}],"translate":[{"time":0,"x":-3.28,"y":2.3,"curve":"stepped"},{"time":0.6666,"x":-3.28,"y":2.3,"curve":"stepped"},{"time":1.3333,"x":-3.28,"y":2.3}]},"r_arm2":{"rotate":[{"time":0,"angle":-19.86},{"time":0.6666,"angle":-16},{"time":1.3333,"angle":-19.86}],"translate":[{"time":0,"x":0.19,"y":-2,"curve":"stepped"},{"time":0.6666,"x":0.19,"y":-2,"curve":"stepped"},{"time":1.3333,"x":0.19,"y":-2}]},"l_arm2":{"rotate":[{"time":0,"angle":-59.11},{"time":0.6666,"angle":-35.33},{"time":1.3333,"angle":-58.71}],"translate":[{"time":0,"x":-2.51,"y":4.87,"curve":"stepped"},{"time":0.6666,"x":-2.51,"y":4.87,"curve":"stepped"},{"time":1.3333,"x":-2.51,"y":4.87}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.42},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.98},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.98},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"eff_sad1":{"translate":[{"time":0,"x":19.34,"y":4.36}]},"eff_sad2":{"translate":[{"time":0,"x":12.47,"y":-18.71}]},"bag":{"rotate":[{"time":0,"angle":2.93},{"time":0.6666,"angle":3.97},{"time":1.3333,"angle":2.93}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.91},{"time":0.6666,"angle":0},{"time":1,"angle":-1.73},{"time":1.3333,"angle":0}]},"cup":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.03},{"time":0.6666,"angle":0},{"time":1,"angle":7.46},{"time":1.3333,"angle":0}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.64},{"time":0.6666,"angle":0},{"time":1,"angle":-3.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":-1.13},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.74},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.038,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.025,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.78},{"time":0.6666,"angle":0},{"time":1,"angle":-2.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.75},{"time":0.6666,"angle":0},{"time":1,"angle":-0.14},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":15.19},{"time":0.6666,"angle":0},{"time":1,"angle":-6.78},{"time":1.3333,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.39},{"time":0.6666,"angle":0},{"time":1,"angle":8.13},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.08},{"time":0.7333,"x":-6.81,"y":-0.21,"curve":"stepped"},{"time":0.8,"x":-6.81,"y":-0.21},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-1.19},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.02,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-14.77},{"time":0.6666,"angle":0},{"time":0.9666,"angle":7.32},{"time":1.3333,"angle":0}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.43},{"time":0.6666,"angle":0},{"time":1,"angle":-2.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.31,"y":0.05},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.14,"y":1.37},{"time":1.3333,"x":0,"y":0}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.27},{"time":0.6666,"angle":0},{"time":1,"angle":-1.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"cup":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0},{"time":0.3333,"angle":11.11},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-17.32},{"time":1.1666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"},{"time":0.1666,"name":"eyebrow3"},{"time":0.5,"name":"eyebrow3"},{"time":0.8333,"name":"eyebrow3"},{"time":1,"name":"eyebrow3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"},{"time":0.1666,"name":"l_eye4"},{"time":0.5,"name":"l_eye6"},{"time":0.8333,"name":"l_eye4"},{"time":1,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.1666,"name":"mouth_sad"},{"time":0.3333,"name":"mouth8"},{"time":0.6666,"name":"mouth8"},{"time":0.8333,"name":"mouth4"},{"time":1,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"},{"time":0.1666,"name":"r_eye4"},{"time":0.5,"name":"r_eye6"},{"time":0.8333,"name":"r_eye4"},{"time":1,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":11.03},{"time":0.5,"angle":15.95},{"time":0.8333,"angle":11.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.01,"y":10.87,"curve":"stepped"},{"time":0.5,"x":-0.01,"y":10.87,"curve":"stepped"},{"time":0.8333,"x":-0.01,"y":10.87},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.045,"y":1},{"time":0.5,"x":1.02,"y":1},{"time":0.8333,"x":1.045,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":0.66},{"time":0.5,"angle":10.75},{"time":0.8333,"angle":0.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.45,"y":-0.06},{"time":0.5,"x":0.24,"y":1.73},{"time":0.8333,"x":0.45,"y":-0.06},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":3.45,"y":0.01},{"time":0.1666,"x":1.41,"y":1.01},{"time":0.5,"x":3.45,"y":0.01},{"time":0.8333,"x":1.41,"y":1.01},{"time":1,"x":3.45,"y":0.01}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.99,"y":1},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":23.46},{"time":0.3333,"angle":35.3},{"time":0.5,"angle":16.13},{"time":0.6666,"angle":35.3},{"time":0.8333,"angle":23.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.03,"y":2.08},{"time":0.3333,"x":3.51,"y":2.95},{"time":0.5,"x":0.03,"y":2.08},{"time":0.6666,"x":3.51,"y":2.95},{"time":0.8333,"x":0.03,"y":2.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.968,"y":1,"curve":"stepped"},{"time":0.3333,"x":0.968,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":0.968,"y":1,"curve":"stepped"},{"time":0.8333,"x":0.968,"y":1},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0},{"time":0.5,"angle":-7.75},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0},{"time":0.5,"angle":-10.15},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":60.01},{"time":0.5,"angle":19.59},{"time":0.8333,"angle":11.56},{"time":1,"angle":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-4.59},{"time":0.5,"angle":-16.97},{"time":0.8333,"angle":-20.81},{"time":1,"angle":0}]},"cup":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-33.56,"curve":"stepped"},{"time":0.6666,"angle":-33.56},{"time":1,"angle":0}]},"hat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0},{"time":0.3333,"angle":2.84},{"time":0.5,"angle":0.79},{"time":0.6666,"angle":-1.4},{"time":0.8333,"angle":1.65},{"time":0.9666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.47,"y":0.48},{"time":0.3333,"x":5.95,"y":0.86},{"time":0.5,"x":3.47,"y":0.48},{"time":0.6666,"x":0.98,"y":0.1},{"time":0.8333,"x":3.47,"y":0.48},{"time":0.9666,"x":0,"y":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4333,"name":"mouth1"},{"time":0.4666,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.5666,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6333,"name":"mouth3"},{"time":0.6666,"name":"mouth1"},{"time":0.8333,"name":"mouth1"},{"time":0.8666,"name":"mouth2"},{"time":0.9,"name":"mouth3"},{"time":0.9666,"name":"mouth1"},{"time":1,"name":"mouth2"},{"time":1.0333,"name":"mouth3"},{"time":1.0666,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.19},{"time":0.6666,"angle":0},{"time":1,"angle":-5.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":-1.13},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.74},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.048,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.78},{"time":0.6666,"angle":0},{"time":1,"angle":-2.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.57},{"time":0.6666,"angle":0},{"time":1,"angle":-3.02},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.14},{"time":0.6666,"angle":0},{"time":1,"angle":1.94},{"time":1.3333,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.78},{"time":0.6666,"angle":0},{"time":1,"angle":3.78},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.08},{"time":0.7333,"x":-6.81,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-1.19},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.02,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"},{"time":0.5,"name":"eyebrow2"},{"time":0.5333,"name":"eyebrow2"},{"time":0.5666,"name":"eyebrow2"},{"time":0.6,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye7"},{"time":0.5,"name":"l_eye7"},{"time":0.5333,"name":"l_eye3"},{"time":0.6,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"},{"time":0.1333,"name":"mouth5"},{"time":0.2666,"name":"mouth7"},{"time":0.4333,"name":"mouth5"},{"time":0.5666,"name":"mouth7"},{"time":0.6666,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"},{"time":0.5,"name":"r_eye7"},{"time":0.5333,"name":"r_eye3"},{"time":0.6,"name":"r_eye7"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.23},{"time":0.3333,"angle":0},{"time":0.5,"angle":6.01},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0,"y":3.14},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.04,"y":0},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1.02},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":0.3},{"time":0.3333,"angle":0},{"time":0.5,"angle":-7.92},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":-2.13},{"time":0.3333,"angle":4.38},{"time":0.6666,"angle":-2.13}]},"l_arm2":{"rotate":[{"time":0,"angle":0.72},{"time":0.1666,"angle":-23.96},{"time":0.3333,"angle":0.72},{"time":0.5,"angle":40.66},{"time":0.6666,"angle":0.72}],"translate":[{"time":0,"x":-0.17,"y":0.68,"curve":"stepped"},{"time":0.1666,"x":-0.17,"y":0.68,"curve":"stepped"},{"time":0.3333,"x":-0.17,"y":0.68,"curve":"stepped"},{"time":0.6666,"x":-0.17,"y":0.68}]},"eyebrow":{"translate":[{"time":0,"x":-9.22,"y":0.03,"curve":"stepped"},{"time":0.5,"x":-9.22,"y":0.03},{"time":0.5333,"x":-11.57,"y":-0.03,"curve":"stepped"},{"time":0.5666,"x":-11.57,"y":-0.03},{"time":0.6,"x":-9.22,"y":0.03}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.89},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":5.34},{"time":0.6666,"angle":4.3}]},"r_arm2":{"rotate":[{"time":0,"angle":-3.32}],"translate":[{"time":0,"x":-0.52,"y":-0.79}]},"r_arm":{"rotate":[{"time":0,"angle":-3.72},{"time":0.3333,"angle":-8.97},{"time":0.6666,"angle":-3.72}]},"cup":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-16.02},{"time":0.3333,"angle":0},{"time":0.5,"angle":31.43},{"time":0.6666,"angle":0}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-5.27},{"time":0.3333,"angle":0},{"time":0.5,"angle":6.73},{"time":0.6666,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/207301.png b/m78-all/m78-fe/public/images/character/207301.png new file mode 100644 index 000000000..0e1b37da5 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/207301.png differ diff --git a/m78-all/m78-fe/public/images/character/208101.atlas b/m78-all/m78-fe/public/images/character/208101.atlas new file mode 100644 index 000000000..d1ad6937a --- /dev/null +++ b/m78-all/m78-fe/public/images/character/208101.atlas @@ -0,0 +1,300 @@ + +208101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 65, 5 + size: 37, 47 + orig: 37, 47 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 65, 54 + size: 83, 58 + orig: 83, 58 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 229, 242 + size: 73, 12 + orig: 73, 12 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 114 + size: 173, 140 + orig: 173, 140 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 224, 103 + size: 28, 30 + orig: 28, 30 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 210, 4 + size: 19, 28 + orig: 19, 28 + offset: 0, 0 + index: -1 +l_arm3 + rotate: false + xy: 172, 64 + size: 42, 36 + orig: 42, 36 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 229, 195 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 104, 7 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 229, 148 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 269, 195 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 269, 148 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: true + xy: 177, 102 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 309, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_hair + rotate: false + xy: 177, 142 + size: 50, 112 + orig: 50, 112 + offset: 0, 0 + index: -1 +l_hair2 + rotate: false + xy: 216, 63 + size: 15, 37 + orig: 15, 37 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 309, 162 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 385, 114 + size: 18, 38 + orig: 18, 38 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 385, 134 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 423, 134 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 461, 134 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 425, 106 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 463, 106 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 144, 16 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 172, 36 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 172, 8 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 210, 25 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 499, 156 + size: 4, 4 + orig: 4, 4 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 233, 74 + size: 26, 27 + orig: 26, 27 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 351, 123 + size: 32, 37 + orig: 32, 37 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 309, 122 + size: 40, 38 + orig: 40, 38 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 349, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 349, 162 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 389, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 389, 162 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 429, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 429, 162 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 469, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_hair + rotate: false + xy: 2, 2 + size: 61, 110 + orig: 61, 110 + offset: 0, 0 + index: -1 +r_hair2 + rotate: true + xy: 229, 133 + size: 13, 36 + orig: 13, 36 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 469, 162 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 150, 73 + size: 20, 39 + orig: 20, 39 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/208101.json b/m78-all/m78-fe/public/images/character/208101.json new file mode 100644 index 000000000..1336bda6c --- /dev/null +++ b/m78-all/m78-fe/public/images/character/208101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"PD/Rb8ExT9hIynohSgf1dVzqL0g","spine":"3.5.25","width":230.22,"height":225.38,"images":"./png/"},"bones":[{"name":"root","x":4.12},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":1.77,"y":61.11},{"name":"body2","parent":"body","length":6.77,"rotation":177.8,"x":-4.21,"y":1.1},{"name":"l_arm","parent":"body","length":13.57,"rotation":-147.17,"x":18.49,"y":-11.4},{"name":"bone2","parent":"l_arm","length":12.12,"rotation":-79.63,"x":15.29,"y":-0.46},{"name":"eff_exclamation","parent":"root","length":22.03,"rotation":62.33,"x":30.73,"y":228.69},{"name":"eff_panic","parent":"root","length":18.48,"rotation":47.46,"x":80.97,"y":208.25},{"name":"eff_sad1","parent":"root","length":22.05,"rotation":-90.9,"x":5.74,"y":118.7},{"name":"eff_sad2","parent":"root","length":18.04,"rotation":-90,"x":47.27,"y":101.58},{"name":"eff_star1","parent":"root","length":15.56,"rotation":33.17,"x":82.92,"y":121.43},{"name":"eff_star2","parent":"root","length":13.15,"rotation":162.52,"x":-57.74,"y":74.02},{"name":"eff_star3","parent":"root","length":11.65,"rotation":-25.29,"x":40.04,"y":52.68},{"name":"head","parent":"body","length":132.6,"rotation":-1.01,"x":30.49,"y":0.11},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":44.24,"y":-5},{"name":"l_hair","parent":"head","length":37.63,"rotation":-116.65,"x":92.32,"y":-54.78},{"name":"l_hair2","parent":"head","length":23.12,"rotation":-156.15,"x":25.37,"y":-47.02},{"name":"l_leg","parent":"root","length":42.09,"rotation":-96.12,"x":9.23,"y":44.1},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":10.26,"y":-8.23},{"name":"r_arm","parent":"body","length":21.99,"rotation":128.58,"x":18.76,"y":17.16},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":84.75,"x":19.92,"y":2.66},{"name":"r_hair","parent":"head","length":33.95,"rotation":109.86,"x":88.76,"y":78.58},{"name":"r_hair2","parent":"head","length":21.09,"rotation":174.54,"x":18.78,"y":46.39},{"name":"r_leg","parent":"root","length":44.6,"rotation":-87.28,"x":-12.65,"y":45.86}],"slots":[{"name":"l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"l_arm2","bone":"bone2","attachment":"l_arm2"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"body1","bone":"body","attachment":"body"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"l_hair2","bone":"l_hair2","attachment":"l_hair2"},{"name":"r_hair2","bone":"r_hair2","attachment":"r_hair2"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"}],"skins":{"default":{"body1":{"body":{"x":13.23,"y":1.3,"rotation":-89.1,"width":37,"height":47}},"body2":{"body2":{"x":11.18,"y":-4.17,"rotation":93.1,"width":83,"height":58}},"eyebrow":{"eyebrow1":{"x":4.16,"y":4.45,"rotation":-91.35,"width":73,"height":12}},"l_arm1":{"l_arm1":{"x":7.89,"y":-4.87,"rotation":49.1,"width":28,"height":30}},"l_arm2":{"l_arm2":{"x":6.41,"y":3.17,"rotation":137.69,"width":19,"height":28},"l_arm3":{"x":-2.48,"y":8.69,"rotation":137.69,"width":42,"height":36}},"l_eye":{"l_eye1":{"x":35.26,"y":-33.04,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":35.26,"y":-33.04,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":35.26,"y":-33.04,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":35.26,"y":-33.04,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":35.26,"y":-33.04,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":35.52,"y":-32.76,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":35.52,"y":-32.76,"rotation":-89.1,"width":38,"height":45},"l_eye8":{"path":"l_eye7","x":35.52,"y":-32.76,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":35.26,"y":-33.04,"rotation":-89.55,"width":38,"height":45}},"l_hair":{"l_hair":{"x":34.05,"y":-33.08,"rotation":21.15,"width":50,"height":112}},"l_hair2":{"l_hair2":{"x":13.26,"y":-0.08,"rotation":67.05,"width":15,"height":37}},"mouth":{"mouth1":{"x":2.45,"y":-0.63,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":2.45,"y":-0.63,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":2.45,"y":-0.63,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":2.45,"y":-0.63,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":2.45,"y":-0.63,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":2.46,"y":-0.59,"rotation":88.64,"width":36,"height":26},"mouth7":{"x":2.46,"y":-0.59,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":2.46,"y":-0.59,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":2.46,"y":-0.59,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":19.56,"y":-18.52,"rotation":-89.55,"width":4,"height":4}},"png/head":{"head":{"x":59.04,"y":8.43,"rotation":-89.55,"width":173,"height":140}},"png/l_leg":{"l_leg":{"x":26.55,"y":0.75,"rotation":96.12,"width":18,"height":38}},"png/r_leg":{"r_leg":{"x":28.62,"y":-1.68,"rotation":87.28,"width":20,"height":39}},"r_arm1":{"r_arm1":{"x":8.65,"y":0.9,"rotation":142.32,"width":26,"height":27}},"r_arm2":{"r_arm2":{"x":8.36,"y":-1.85,"rotation":52.31,"width":32,"height":37},"r_arm3":{"x":0.94,"y":-10.13,"rotation":57.58,"width":40,"height":38}},"r_eye":{"r_eye1":{"x":32.84,"y":23.87,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":32.83,"y":23.87,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":32.81,"y":23.87,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":32.81,"y":23.87,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":32.81,"y":23.87,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":32.62,"y":24.13,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":32.62,"y":24.13,"rotation":-89.1,"width":38,"height":45},"r_eye8":{"path":"r_eye7","x":32.62,"y":24.13,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":32.81,"y":23.87,"rotation":-89.55,"width":38,"height":45}},"r_hair":{"r_hair":{"x":31.25,"y":37.77,"rotation":164.29,"width":61,"height":110}},"r_hair2":{"r_hair2":{"x":13.39,"y":-6.89,"rotation":88.18,"width":13,"height":36}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1667,"name":"l_eye2"},{"time":0.2,"name":"l_eye3"},{"time":0.4667,"name":"l_eye2"},{"time":0.5,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.2333,"name":"mouth2"},{"time":0.2667,"name":"mouth3"},{"time":0.3667,"name":"mouth2"},{"time":0.4,"name":"mouth1"},{"time":0.5,"name":"mouth3"},{"time":0.6667,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1667,"name":"r_eye2"},{"time":0.2,"name":"r_eye3"},{"time":0.4667,"name":"r_eye2"},{"time":0.5,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.92},{"time":0.3333,"angle":0},{"time":0.5,"angle":2.65},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.02,"y":2.67},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.01,"y":4.94},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.42},{"time":0.3333,"angle":-21.1},{"time":0.5,"angle":-20.68},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.63,"y":0},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.63,"y":0},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":44.82,"curve":"stepped"},{"time":0.3333,"angle":44.82,"curve":"stepped"},{"time":0.5,"angle":44.82},{"time":0.6667,"angle":0.5}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":162.47},{"time":0.2667,"angle":-243.17},{"time":0.3667,"angle":-201.67},{"time":0.4667,"angle":-243.17},{"time":0.5667,"angle":-201.67},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.42,"y":0.72},{"time":0.2667,"x":-0.87,"y":0.55,"curve":"stepped"},{"time":0.3667,"x":-0.87,"y":0.55,"curve":"stepped"},{"time":0.4667,"x":-0.87,"y":0.55,"curve":"stepped"},{"time":0.5667,"x":-0.87,"y":0.55},{"time":0.6667,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.2333,"x":-11.19,"y":0,"curve":"stepped"},{"time":0.4333,"x":-11.19,"y":0},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.19},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.976,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.12},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.12},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1,"y":1.074},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-8.14},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.29},{"time":0.6667,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":15.96},{"time":0.3333,"angle":10.53},{"time":0.5,"angle":16.53},{"time":0.6667,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"l_arm":{"rotate":[{"time":0,"angle":0}]},"bone2":{"rotate":[{"time":0,"angle":0}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.78},{"time":0.3333,"angle":0},{"time":0.5,"angle":-12.54},{"time":0.6667,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":13.35},{"time":0.3333,"angle":0},{"time":0.5,"angle":20.76},{"time":0.6667,"angle":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":0.7,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.5,"name":"mouth3"},{"time":1,"name":"mouth4"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.49},{"time":0.5,"angle":3.14},{"time":0.8333,"angle":3.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.03,"y":1.28},{"time":0.5,"x":-1.79,"y":1.28},{"time":0.8333,"x":-3.91,"y":2.69},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1},{"time":0.5,"x":1.04,"y":1},{"time":0.8333,"x":1.008,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":-5.46},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":-1.62},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.71,"y":-0.02},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.27,"y":-0.09},{"time":0.6667,"x":-1.57,"y":-0.18},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-12.71},{"time":0.5,"angle":0},{"time":0.7333,"angle":-2.72},{"time":1,"angle":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":8.92},{"time":0.5,"angle":0},{"time":0.7333,"angle":10.68},{"time":1,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":-63.2},{"time":0.3333,"angle":-16.42},{"time":0.5,"angle":-52.12},{"time":0.6667,"angle":-17.38},{"time":0.8333,"angle":-39.42},{"time":1,"angle":13.12}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.21},{"time":0.3333,"angle":17.03},{"time":0.5,"angle":-14.28},{"time":0.6667,"angle":17.03},{"time":0.8333,"angle":-6.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.57,"y":-0.94},{"time":0.1667,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.3333,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.5,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.6667,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.8333,"x":-1.74,"y":-0.89},{"time":1,"x":-2.57,"y":-0.94}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-357.46},{"time":0.5,"angle":0},{"time":0.8333,"angle":-1.06},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.774,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8333,"x":0.792,"y":1},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1667,"angle":71.19},{"time":0.3333,"angle":5.27},{"time":0.5,"angle":53.59},{"time":0.6667,"angle":4.4},{"time":0.8333,"angle":46.79},{"time":1,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.79,"y":4.42},{"time":0.3333,"x":1.5,"y":-0.45},{"time":0.5,"x":2.79,"y":4.42},{"time":0.6667,"x":1.5,"y":-0.45},{"time":0.8333,"x":2.79,"y":4.42},{"time":1,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":10.56},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.57,"y":-0.9},{"time":0.1667,"x":-0.48,"y":-0.54},{"time":0.5,"x":-0.57,"y":-0.9},{"time":0.8333,"x":-0.48,"y":-0.54},{"time":1,"x":0,"y":0}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-26.27},{"time":0.5,"angle":0},{"time":0.7333,"angle":-25.75},{"time":1,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.2333,"angle":24.77},{"time":0.5,"angle":10.53},{"time":0.7333,"angle":24.77},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.13,"y":0},{"time":0.4,"x":3.46,"y":0},{"time":0.6,"x":2.13,"y":0},{"time":0.7,"x":0,"y":0}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-54.53},{"time":0.3333,"angle":0},{"time":0.5,"angle":-41.99},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-23.97},{"time":1,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":44.3},{"time":0.3333,"angle":0},{"time":0.5,"angle":45.19},{"time":0.6667,"angle":0},{"time":0.8333,"angle":34.08},{"time":1,"angle":0}]},"root":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":10.59},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":10.59},{"time":1,"x":0,"y":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":0.7,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye1"},{"time":0.6,"name":"l_eye2"},{"time":0.6667,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":1,"name":"mouth3"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye1"},{"time":0.6,"name":"r_eye2"},{"time":0.6667,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.49},{"time":0.5,"angle":3.14},{"time":0.8333,"angle":3.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.03,"y":1.28},{"time":0.5,"x":-1.79,"y":1.28},{"time":0.8333,"x":-3.91,"y":2.69},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1},{"time":0.5,"x":1.04,"y":1},{"time":0.8333,"x":1.008,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":-5.46},{"time":0.5,"angle":-2.97},{"time":0.6667,"angle":-1.62},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.71,"y":-0.02},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.27,"y":-0.09},{"time":0.6667,"x":-1.57,"y":-0.18},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0}]},"l_leg":{"rotate":[{"time":0,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":-63.2},{"time":0.3333,"angle":-10.47},{"time":0.5,"angle":-63.2},{"time":0.6667,"angle":-10.47},{"time":0.8333,"angle":-63.2},{"time":1,"angle":13.12}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.21},{"time":0.3333,"angle":17.03},{"time":0.5,"angle":-14.28},{"time":0.6667,"angle":17.03},{"time":0.8333,"angle":-6.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.57,"y":-0.94},{"time":0.1667,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.3333,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.5,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.6667,"x":-1.74,"y":-0.89,"curve":"stepped"},{"time":0.8333,"x":-1.74,"y":-0.89},{"time":1,"x":-2.57,"y":-0.94}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-357.46},{"time":0.5,"angle":0},{"time":0.8333,"angle":-1.06},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.957,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8333,"x":0.98,"y":1},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1667,"angle":71.19},{"time":0.3333,"angle":5.27},{"time":0.5,"angle":71.19},{"time":0.6667,"angle":5.27},{"time":0.8333,"angle":71.19},{"time":1,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.79,"y":4.42},{"time":0.3333,"x":1.5,"y":-0.45},{"time":0.5,"x":2.79,"y":4.42},{"time":0.6667,"x":1.5,"y":-0.45},{"time":0.8333,"x":2.79,"y":4.42},{"time":1,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":10.56},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.57,"y":-0.9},{"time":0.1667,"x":-0.48,"y":-0.54},{"time":0.5,"x":-0.57,"y":-0.9},{"time":0.8333,"x":-0.48,"y":-0.54},{"time":1,"x":0,"y":0}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-16.55},{"time":0.3333,"angle":0},{"time":0.5,"angle":-10.47},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-10.27},{"time":1,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":19.42},{"time":0.3333,"angle":10.53},{"time":0.5,"angle":15.96},{"time":0.6667,"angle":8.97},{"time":0.8333,"angle":18.61},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.13,"y":0},{"time":0.4,"x":3.46,"y":0},{"time":0.6,"x":2.13,"y":0},{"time":0.7,"x":0,"y":0}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-54.53},{"time":0.3333,"angle":0},{"time":0.5,"angle":-41.99},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-23.97},{"time":1,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":44.3},{"time":0.3333,"angle":0},{"time":0.5,"angle":45.19},{"time":0.6667,"angle":0},{"time":0.8333,"angle":34.08},{"time":1,"angle":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5.42},{"time":0.2667,"angle":-14.01},{"time":0.5,"angle":-12.25},{"time":0.7333,"angle":-14.94},{"time":1,"angle":-5.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.02,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.02,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.2667,"angle":-11.2,"curve":[0.37,0.82,0.779,1]},{"time":0.5,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.7333,"angle":-11.35},{"time":1,"angle":-13.5}],"translate":[{"time":0,"x":0.08,"y":1.22,"curve":[0.084,0.53,0.517,0.83]},{"time":0.2667,"x":-0.65,"y":-2.39,"curve":[0.37,0.82,0.779,1]},{"time":0.5,"x":0.08,"y":1.22,"curve":[0.084,0.53,0.517,0.83]},{"time":0.7333,"x":0.81,"y":0.76,"curve":[0.37,0.82,0.779,1]},{"time":1,"x":0.08,"y":1.22}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.94,"y":0},{"time":1,"x":0,"y":0}]},"mouth":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":3.01,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":3.01,"y":0},{"time":1,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-274.88},{"time":0.2667,"angle":-266.19},{"time":0.5,"angle":-274.88},{"time":0.7333,"angle":-283.81},{"time":1,"angle":-274.88}]},"r_arm2":{"rotate":[{"time":0,"angle":-248.94},{"time":0.2667,"angle":-260.35},{"time":0.5,"angle":-248.94},{"time":0.7333,"angle":-237.04},{"time":1,"angle":-248.94}],"translate":[{"time":0,"x":-0.35,"y":1.31,"curve":"stepped"},{"time":0.2667,"x":-0.35,"y":1.31,"curve":"stepped"},{"time":0.5,"x":-0.35,"y":1.31,"curve":"stepped"},{"time":0.7333,"x":-0.35,"y":1.31,"curve":"stepped"},{"time":1,"x":-0.35,"y":1.31}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.01,"y":-0.42},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0.01,"y":-0.42},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.983,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":0.983,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.02,"y":-0.99},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0.02,"y":-0.99},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.977,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":0.977,"y":1},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":-355.74},{"time":0.2667,"angle":-348.01},{"time":0.5,"angle":-355.74},{"time":0.7333,"angle":-348.01},{"time":1,"angle":-355.74}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.96,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":0.96,"y":1},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.55},{"time":0.5,"angle":0},{"time":0.7333,"angle":12.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":-7.5,"y":4.27,"curve":"stepped"},{"time":0.2667,"x":-7.5,"y":4.27,"curve":"stepped"},{"time":0.5,"x":-7.5,"y":4.27,"curve":"stepped"},{"time":0.7333,"x":-7.5,"y":4.27,"curve":"stepped"},{"time":1,"x":-7.5,"y":4.27}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.2667,"angle":18.5},{"time":0.5,"angle":10.53},{"time":0.7333,"angle":18.5},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.2667,"angle":-19.73},{"time":0.5,"angle":-13.78},{"time":0.7333,"angle":-19.73},{"time":1,"angle":-13.78}],"translate":[{"time":0,"x":-2.86,"y":-3.25,"curve":"stepped"},{"time":0.2667,"x":-2.86,"y":-3.25,"curve":"stepped"},{"time":0.5,"x":-2.86,"y":-3.25,"curve":"stepped"},{"time":0.7333,"x":-2.86,"y":-3.25,"curve":"stepped"},{"time":1,"x":-2.86,"y":-3.25}]},"bone2":{"rotate":[{"time":0,"angle":41.42},{"time":0.2667,"angle":56.79},{"time":0.5,"angle":41.42},{"time":0.7333,"angle":76.68},{"time":1,"angle":41.42}],"translate":[{"time":0,"x":0.49,"y":-0.11,"curve":"stepped"},{"time":0.2667,"x":0.49,"y":-0.11,"curve":"stepped"},{"time":0.5,"x":0.49,"y":-0.11,"curve":"stepped"},{"time":0.7333,"x":0.49,"y":-0.11,"curve":"stepped"},{"time":1,"x":0.49,"y":-0.11}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-327.33},{"time":0.5,"angle":0},{"time":0.7333,"angle":-327.33},{"time":1,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":13.02},{"time":0.5,"angle":0},{"time":0.7333,"angle":13.02},{"time":1,"angle":0}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.4,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5333,"name":"l_eye3"},{"time":0.6,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.4,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5333,"name":"r_eye3"},{"time":0.6,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.44},{"time":0.5,"angle":0},{"time":0.8,"angle":-5.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.02,"y":2.67},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":-0.01,"y":4.94},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.031,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8,"x":1.009,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.21},{"time":0.5,"angle":0},{"time":0.8,"angle":-2.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.63,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":1.63,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-0.39},{"time":0.2667,"angle":-5.46},{"time":0.5,"angle":-0.39},{"time":0.8,"angle":-5.46},{"time":1,"angle":-0.39}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.15},{"time":0.5,"angle":0},{"time":0.8,"angle":3.99},{"time":1,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":-2.78,"y":-0.09},{"time":0.5333,"x":-6.82,"y":-0.21},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.03,"y":-1.19},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":0.03,"y":-1.19},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.976,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8,"x":0.976,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.03,"y":-1.43},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":0.03,"y":-1.43},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.968,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8,"x":0.968,"y":1},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-10.76},{"time":0.5,"angle":0},{"time":0.8,"angle":-352.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.06,"y":0.73},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":-1.32,"y":-0.89},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.987,"y":1.036},{"time":0.5,"x":1,"y":1},{"time":0.8,"x":0.993,"y":1.069},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.49},{"time":0.5,"angle":0},{"time":0.8,"angle":-10.62},{"time":1,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.2667,"angle":21.17},{"time":0.5,"angle":10.53},{"time":0.8,"angle":16.05},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.2667,"angle":-10.8},{"time":0.5,"angle":-10.09},{"time":0.8,"angle":-2.7},{"time":1,"angle":-13.78}]},"bone2":{"rotate":[{"time":0,"angle":21.81},{"time":0.2667,"angle":12.64},{"time":0.5,"angle":21.81},{"time":0.8,"angle":12.64},{"time":1,"angle":21.81}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-8.14},{"time":0.5,"angle":0},{"time":0.8,"angle":-20.85},{"time":1,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":17.55},{"time":0.5,"angle":0},{"time":0.8,"angle":11.58},{"time":1,"angle":0}]}}},"surprised":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.1667,"name":"r_arm3"},{"time":0.3333,"name":"r_arm3"},{"time":0.5,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.1,"curve":"stepped"},{"time":0.3333,"angle":-13.1,"curve":"stepped"},{"time":0.5,"angle":-13.1},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":1.73,"y":4.04},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0667,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.32},{"time":0.6,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0667,"x":0,"y":0},{"time":0.1667,"x":2.98,"y":1.29},{"time":0.3333,"x":2.17,"y":0},{"time":0.5,"x":1.44,"y":0.96},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":8.91,"y":0.28}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-350},{"time":0.3333,"angle":0},{"time":0.5,"angle":-350},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.76,"y":-0.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.76,"y":-0.43},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-15.59},{"time":0.3333,"angle":0},{"time":0.5,"angle":-12.4},{"time":0.6667,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.1667,"angle":24.95},{"time":0.3333,"angle":10.53},{"time":0.5,"angle":25.51},{"time":0.6667,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":-10.92},{"time":0.3333,"angle":13.12},{"time":0.5,"angle":-10.92},{"time":0.6667,"angle":13.12}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1667,"angle":25.01},{"time":0.3333,"angle":-13.78},{"time":0.4667,"angle":8.68},{"time":0.5,"angle":19.65},{"time":0.6667,"angle":-13.78}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.57},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.15},{"time":0.6667,"angle":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.2},{"time":0.3333,"angle":0},{"time":0.5,"angle":-13.67},{"time":0.6667,"angle":0}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-15.58},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.53},{"time":0.6667,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":5.06},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.77},{"time":0.6667,"angle":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6333,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4333,"name":"mouth1"},{"time":0.4667,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.5667,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6333,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":0.8333,"name":"mouth1"},{"time":0.8667,"name":"mouth2"},{"time":0.9,"name":"mouth3"},{"time":0.9667,"name":"mouth1"},{"time":1,"name":"mouth2"},{"time":1.0333,"name":"mouth3"},{"time":1.0667,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6333,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.44},{"time":0.6667,"angle":0},{"time":1,"angle":-5.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":2.67},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":4.94},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.031,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.009,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.21},{"time":0.6667,"angle":0},{"time":1,"angle":-2.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.63,"y":0},{"time":0.6667,"x":0,"y":0},{"time":1,"x":1.63,"y":0},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-0.39},{"time":0.3333,"angle":-5.46},{"time":0.6667,"angle":-0.39},{"time":1,"angle":-5.46},{"time":1.3333,"angle":-0.39}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.15},{"time":0.6667,"angle":0},{"time":1,"angle":3.99},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6667,"x":-2.78,"y":-0.09},{"time":0.7,"x":-6.82,"y":-0.21},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.76},{"time":0.6667,"angle":0},{"time":1,"angle":-352.5},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.06,"y":0.73},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.32,"y":-0.89},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.987,"y":1.036},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.993,"y":1.069},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.49},{"time":0.6667,"angle":0},{"time":1,"angle":-10.62},{"time":1.3333,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.3333,"angle":21.17},{"time":0.6667,"angle":10.53},{"time":1,"angle":16.05},{"time":1.3333,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.3333,"angle":-10.8},{"time":0.6667,"angle":-10.09},{"time":1,"angle":-2.7},{"time":1.3333,"angle":-13.78}]},"bone2":{"rotate":[{"time":0,"angle":21.81},{"time":0.3333,"angle":12.64},{"time":0.6667,"angle":21.81},{"time":1,"angle":12.64},{"time":1.3333,"angle":21.81}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.14},{"time":0.6667,"angle":0},{"time":1,"angle":-20.85},{"time":1.3333,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.55},{"time":0.6667,"angle":0},{"time":1,"angle":11.58},{"time":1.3333,"angle":0}]}}},"uneasy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye2"},{"time":0.2667,"name":"l_eye4"},{"time":0.6333,"name":"l_eye4"},{"time":0.6667,"name":"l_eye5"},{"time":0.7667,"name":"l_eye4"},{"time":1,"name":"l_eye2"}]},"mouth":{"attachment":[{"time":0,"name":"mouth6"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye2"},{"time":0.2667,"name":"r_eye4"},{"time":0.6333,"name":"r_eye4"},{"time":0.6667,"name":"r_eye5"},{"time":0.7667,"name":"r_eye4"},{"time":1,"name":"r_eye2"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.94},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-2.72,"y":-0.22},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.03,"y":-1.59},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.98,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.98,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.28},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.98,"y":1.29},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":2.08,"y":-0.06},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.04,"y":-2.36},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.04,"y":-2.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.95,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.95,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.07,"y":-2.85},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.07,"y":-2.85},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.95,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.95,"y":1},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-355.64},{"time":0.5,"angle":0},{"time":0.7667,"angle":-0.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1,"y":1.02},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1,"y":1.02},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-10.35},{"time":0.5,"angle":0},{"time":0.7667,"angle":-10.35},{"time":1,"angle":0}]},"l_hair":{"rotate":[{"time":0,"angle":10.53},{"time":0.2667,"angle":20.05},{"time":0.5,"angle":10.53},{"time":0.7667,"angle":18.57},{"time":1,"angle":10.53}],"translate":[{"time":0,"x":-1.45,"y":9.02}]},"r_arm":{"rotate":[{"time":0,"angle":-283.62},{"time":0.2667,"angle":-270.38},{"time":0.5,"angle":-283.62},{"time":0.7667,"angle":-266.09},{"time":1,"angle":-283.62}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.2667,"angle":-4.23},{"time":0.5,"angle":-13.78},{"time":0.7667,"angle":-25.73},{"time":1,"angle":-13.78}],"translate":[{"time":0,"x":0.01,"y":-0.73,"curve":"stepped"},{"time":0.2667,"x":0.01,"y":-0.73,"curve":"stepped"},{"time":0.5,"x":0.01,"y":-0.73,"curve":"stepped"},{"time":0.7667,"x":0.01,"y":-0.73,"curve":"stepped"},{"time":1,"x":0.01,"y":-0.73}]},"r_arm2":{"rotate":[{"time":0,"angle":-242.64},{"time":0.2667,"angle":-246.61},{"time":0.5,"angle":-242.64},{"time":0.7667,"angle":-254.89},{"time":1,"angle":-242.64}],"translate":[{"time":0,"x":-2.25,"y":1.68},{"time":0.5,"x":-1.11,"y":2.93},{"time":1,"x":-2.25,"y":1.68}]},"bone2":{"rotate":[{"time":0,"angle":1.42},{"time":0.2667,"angle":11.94},{"time":0.5,"angle":1.42},{"time":0.7667,"angle":-15.31},{"time":1,"angle":1.42}],"translate":[{"time":0,"x":0.12,"y":-0.8,"curve":"stepped"},{"time":0.2667,"x":0.12,"y":-0.8,"curve":"stepped"},{"time":0.5,"x":0.12,"y":-0.8,"curve":"stepped"},{"time":0.7667,"x":0.12,"y":-0.8,"curve":"stepped"},{"time":1,"x":0.12,"y":-0.8}]},"r_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-20.41},{"time":0.5,"angle":0},{"time":0.7667,"angle":-24.8},{"time":1,"angle":0}]},"l_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":14.32},{"time":0.5,"angle":0},{"time":0.7667,"angle":14.82},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/208101.png b/m78-all/m78-fe/public/images/character/208101.png new file mode 100644 index 000000000..c952b4244 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/208101.png differ diff --git a/m78-all/m78-fe/public/images/character/208201.atlas b/m78-all/m78-fe/public/images/character/208201.atlas new file mode 100644 index 000000000..d523cfbba --- /dev/null +++ b/m78-all/m78-fe/public/images/character/208201.atlas @@ -0,0 +1,391 @@ + +208201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: false + xy: 135, 67 + size: 40, 45 + orig: 40, 45 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 247, 149 + size: 67, 54 + orig: 67, 54 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 6 + size: 131, 106 + orig: 131, 106 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 114 + size: 181, 140 + orig: 181, 140 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 287, 117 + size: 30, 27 + orig: 30, 27 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 253, 76 + size: 23, 26 + orig: 23, 26 + offset: 0, 0 + index: -1 +l_eye + rotate: false + xy: 393, 169 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eye_failed1 + rotate: false + xy: 404, 219 + size: 40, 35 + orig: 40, 35 + offset: 0, 0 + index: -1 +l_eye_failed2 + rotate: false + xy: 177, 72 + size: 39, 34 + orig: 39, 34 + offset: 0, 0 + index: -1 +l_eye_failed3 + rotate: false + xy: 287, 104 + size: 27, 11 + orig: 27, 11 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: true + xy: 488, 226 + size: 28, 22 + orig: 28, 22 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 300, 74 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 446, 219 + size: 40, 35 + orig: 40, 35 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 185, 108 + size: 40, 35 + orig: 40, 35 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 488, 165 + size: 19, 21 + orig: 19, 21 + offset: 0, 0 + index: -1 +l_eyeball_uneasy + rotate: true + xy: 235, 56 + size: 14, 17 + orig: 14, 17 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 180, 44 + size: 24, 12 + orig: 24, 12 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 207, 60 + size: 26, 10 + orig: 26, 10 + offset: 0, 0 + index: -1 +l_eyebrow_success + rotate: false + xy: 180, 32 + size: 26, 10 + orig: 26, 10 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: true + xy: 477, 168 + size: 25, 9 + orig: 25, 9 + offset: 0, 0 + index: -1 +l_eyebrow_upset + rotate: false + xy: 488, 186 + size: 22, 14 + orig: 22, 14 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 227, 104 + size: 18, 39 + orig: 18, 39 + offset: 0, 0 + index: -1 +l_side_hair + rotate: true + xy: 247, 205 + size: 49, 112 + orig: 49, 112 + offset: 0, 0 + index: -1 +l_sideburn + rotate: true + xy: 402, 201 + size: 16, 37 + orig: 16, 37 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 480, 195 + size: 22, 6 + orig: 22, 6 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 172, 24 + size: 10, 5 + orig: 10, 5 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 339, 99 + size: 13, 7 + orig: 13, 7 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 315, 87 + size: 16, 10 + orig: 16, 10 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 315, 87 + size: 16, 10 + orig: 16, 10 + offset: 0, 0 + index: -1 +mouth_failed + rotate: false + xy: 254, 60 + size: 21, 14 + orig: 21, 14 + offset: 0, 0 + index: -1 +mouth_failed2 + rotate: false + xy: 359, 103 + size: 25, 8 + orig: 25, 8 + offset: 0, 0 + index: -1 +mouth_failed3 + rotate: false + xy: 180, 58 + size: 25, 12 + orig: 25, 12 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 316, 138 + size: 41, 28 + orig: 41, 28 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 316, 99 + size: 21, 7 + orig: 21, 7 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: true + xy: 172, 36 + size: 29, 6 + orig: 29, 6 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 359, 167 + size: 32, 35 + orig: 32, 35 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 218, 72 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +r_eye + rotate: true + xy: 359, 129 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +r_eye_failed1 + rotate: false + xy: 361, 219 + size: 41, 35 + orig: 41, 35 + offset: 0, 0 + index: -1 +r_eye_failed2 + rotate: false + xy: 247, 112 + size: 38, 35 + orig: 38, 35 + offset: 0, 0 + index: -1 +r_eye_failed3 + rotate: false + xy: 361, 204 + size: 39, 13 + orig: 39, 13 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 316, 108 + size: 41, 28 + orig: 41, 28 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 359, 113 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 316, 168 + size: 41, 35 + orig: 41, 35 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: true + xy: 135, 24 + size: 41, 35 + orig: 41, 35 + offset: 0, 0 + index: -1 +r_eyeball + rotate: false + xy: 278, 80 + size: 20, 22 + orig: 20, 22 + offset: 0, 0 + index: -1 +r_eyeball_uneasy + rotate: false + xy: 488, 202 + size: 22, 22 + orig: 22, 22 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: true + xy: 428, 165 + size: 34, 11 + orig: 34, 11 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 247, 104 + size: 34, 6 + orig: 34, 6 + offset: 0, 0 + index: -1 +r_eyebrow_success + rotate: false + xy: 441, 167 + size: 34, 6 + orig: 34, 6 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 441, 175 + size: 34, 10 + orig: 34, 10 + offset: 0, 0 + index: -1 +r_eyebrow_upset + rotate: false + xy: 441, 187 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 135, 2 + size: 20, 40 + orig: 20, 40 + offset: 0, 0 + index: -1 +r_side_hair + rotate: false + xy: 185, 145 + size: 60, 109 + orig: 60, 109 + offset: 0, 0 + index: -1 +r_sideburn + rotate: true + xy: 441, 203 + size: 14, 37 + orig: 14, 37 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/208201.json b/m78-all/m78-fe/public/images/character/208201.json new file mode 100644 index 000000000..8c0eb880b --- /dev/null +++ b/m78-all/m78-fe/public/images/character/208201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"WCkWF9ISQkR1MlH5xYL3WdkC74c","spine":"3.5.25","width":222.85,"height":221.2,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":41.32,"rotation":-88.73,"x":1.53,"y":91.05},{"name":"body2","parent":"body1","length":45.6,"rotation":-0.5,"x":24.76,"y":-1.47},{"name":"eff_exclamation","parent":"root","length":21.52,"rotation":45.91,"x":109.63,"y":210.42},{"name":"eff_panic","parent":"root","length":20.57,"rotation":-9.46,"x":117.84,"y":133.63},{"name":"eff_sad1","parent":"root","length":14.08,"rotation":-91.99,"x":-22.65,"y":114.25},{"name":"eff_sad2","parent":"root","length":13.36,"rotation":-89.7,"x":39.31,"y":115.5},{"name":"eff_star1","parent":"root","length":16.34,"rotation":18.97,"x":54.57,"y":66.49},{"name":"eff_star2","parent":"root","length":18.76,"rotation":168.11,"x":-56.52,"y":61.18},{"name":"eff_star3","parent":"root","length":13.75,"rotation":-17.99,"x":53.12,"y":23.02},{"name":"head","parent":"body1","length":133.46,"rotation":-179.83,"x":5.55,"y":2.02},{"name":"f_hair","parent":"head","length":70.19,"rotation":-175.19,"x":126.63,"y":-3.81},{"name":"l_arm1","parent":"body1","length":29.01,"rotation":42.02,"x":8.42,"y":7.16},{"name":"l_arm2","parent":"l_arm1","length":20.65,"rotation":-55.27,"x":21.81,"y":1.73},{"name":"l_eye","parent":"head","length":12.24,"rotation":141.68,"x":53.15,"y":-52.77},{"name":"l_eyeball","parent":"head","length":8.27,"rotation":0.47,"x":21.12,"y":-36.35},{"name":"l_eyebrow","parent":"head","length":8.46,"rotation":101.08,"x":62.23,"y":-32.79},{"name":"l_leg","parent":"root","length":35.2,"rotation":-91.49,"x":9.49,"y":35.66},{"name":"l_side_hair","parent":"head","length":61.38,"rotation":-105,"x":96.29,"y":-53.55},{"name":"l_sideburn","parent":"head","length":31.95,"rotation":-161.27,"x":33.02,"y":-50.11},{"name":"mouth","parent":"head","length":9.58,"rotation":25.12,"x":-0.94,"y":-12.83},{"name":"r_arm1","parent":"body1","length":34.68,"rotation":-24.67,"x":4.23,"y":-16.32},{"name":"r_arm2","parent":"r_arm1","length":29.63,"rotation":-14.89,"x":26.8,"y":1.26},{"name":"r_eye","parent":"head","length":13.24,"rotation":-141.13,"x":49.81,"y":45.27},{"name":"r_eyeball","parent":"head","length":8.9,"rotation":2.5,"x":19.22,"y":21.55},{"name":"r_eyebrow","parent":"head","length":10.69,"rotation":-104.69,"x":61.88,"y":26.29},{"name":"r_leg","parent":"root","length":36.48,"rotation":-86.63,"x":-11.63,"y":36.89},{"name":"r_side_hair","parent":"head","length":62.36,"rotation":111.97,"x":87.19,"y":70.96},{"name":"r_sideburn","parent":"head","length":29.71,"rotation":166.67,"x":28.8,"y":49.47}],"slots":[{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"l_side_hair","bone":"l_side_hair","attachment":"l_side_hair"},{"name":"r_side_hair","bone":"r_side_hair","attachment":"r_side_hair"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_sad"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_sad"},{"name":"r_sideburn","bone":"r_sideburn","attachment":"r_sideburn"},{"name":"l_sideburn","bone":"l_sideburn","attachment":"l_sideburn"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"mouth1","bone":"mouth","attachment":"mouth_sad"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye_sad"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye_sad"},{"name":"l_eyeball","bone":"l_eyeball"},{"name":"r_eyeball","bone":"r_eyeball"}],"skins":{"default":{"body1":{"body1":{"x":21.26,"y":-0.13,"rotation":88.73,"width":40,"height":45}},"body2":{"body2":{"x":21.01,"y":-0.43,"rotation":89.23,"width":67,"height":54}},"f_hair":{"f_hair":{"x":50.2,"y":-7.93,"rotation":83.74,"width":131,"height":106}},"head":{"head":{"x":65.18,"y":7.87,"rotation":-91.45,"width":181,"height":140}},"l_arm1":{"l_arm1":{"x":13.8,"y":0.63,"rotation":46.71,"width":30,"height":27}},"l_arm2":{"l_arm2":{"x":10.88,"y":3.08,"rotation":101.98,"width":23,"height":26}},"l_eye":{"l_eye":{"x":22.27,"y":-2.93,"rotation":126.87,"width":33,"height":30},"l_eye_failed1":{"x":21.73,"y":-6.34,"rotation":126.87,"width":40,"height":35},"l_eye_failed2":{"x":21.61,"y":-7.2,"rotation":126.87,"width":39,"height":34},"l_eye_failed3":{"x":27.48,"y":-2.8,"rotation":126.87,"width":27,"height":11},"l_eye_happy":{"x":29.32,"y":-0.65,"rotation":126.87,"width":28,"height":22},"l_eye_sad":{"x":27.47,"y":-2.81,"rotation":126.87,"width":28,"height":13},"l_eye_surprised":{"x":21.73,"y":-6.34,"rotation":126.87,"width":40,"height":35},"l_eye_uneasy":{"x":21.73,"y":-6.34,"rotation":126.87,"width":40,"height":35}},"l_eyeball":{"l_eyeball":{"x":14.81,"y":3.22,"rotation":-92.12,"width":19,"height":21},"l_eyeball_uneasy":{"x":14.81,"y":3.22,"rotation":-92.12,"width":14,"height":17}},"l_eyebrow":{"l_eyebrow":{"x":1.78,"y":6.63,"rotation":167.47,"width":24,"height":12},"l_eyebrow_sad":{"x":4.1,"y":13.94,"rotation":167.47,"width":26,"height":10},"l_eyebrow_success":{"x":3.94,"y":7.55,"rotation":167.47,"width":26,"height":10},"l_eyebrow_surprised":{"x":1.65,"y":7.12,"rotation":167.47,"width":25,"height":9},"l_eyebrow_upset":{"x":5.3,"y":6.62,"rotation":167.47,"width":22,"height":14}},"l_leg":{"l_leg":{"x":16.62,"y":0.72,"rotation":91.49,"width":18,"height":39}},"l_side_hair":{"l_side_hair":{"x":31.08,"y":-33.39,"rotation":13.55,"width":49,"height":112}},"l_sideburn":{"l_sideburn":{"x":17.57,"y":0.13,"rotation":69.83,"width":16,"height":37}},"mouth1":{"mouth1":{"x":15.98,"y":2.09,"rotation":-116.57,"width":22,"height":6},"mouth2":{"x":15.15,"y":0.43,"rotation":-116.57,"width":10,"height":5},"mouth3":{"x":14.87,"y":-0.12,"rotation":-116.57,"width":13,"height":7},"mouth4":{"x":14.87,"y":-0.12,"rotation":-116.57,"width":16,"height":10},"mouth_failed":{"x":15.15,"y":0.43,"rotation":-116.57,"width":21,"height":14},"mouth_failed2":{"x":15.56,"y":-0.12,"rotation":-116.57,"width":25,"height":8},"mouth_failed3":{"x":14.87,"y":1.95,"rotation":-116.57,"width":25,"height":12},"mouth_happy":{"x":14.43,"y":3.12,"rotation":-116.57,"width":41,"height":28},"mouth_sad":{"x":15.7,"y":1.53,"rotation":-116.57,"width":21,"height":7},"mouth_surprised":{"x":14.87,"y":-0.12,"rotation":-116.57,"width":16,"height":10},"mouth_uneasy":{"x":15.98,"y":2.09,"rotation":-116.57,"width":29,"height":6}},"r_arm1":{"r_arm1":{"x":17.77,"y":-1.92,"rotation":113.4,"width":32,"height":35}},"r_arm2":{"r_arm2":{"x":14.2,"y":1.64,"rotation":128.29,"width":33,"height":30}},"r_eye":{"r_eye":{"x":23.99,"y":7.21,"rotation":49.69,"width":36,"height":29},"r_eye_failed1":{"x":23.46,"y":10.92,"rotation":49.69,"width":41,"height":35},"r_eye_failed2":{"x":22.16,"y":10.82,"rotation":49.69,"width":38,"height":35},"r_eye_failed3":{"x":23.48,"y":5.28,"rotation":49.69,"width":39,"height":13},"r_eye_happy":{"x":27.65,"y":10.17,"rotation":49.69,"width":41,"height":28},"r_eye_sad":{"x":23.48,"y":5.27,"rotation":49.69,"width":34,"height":14},"r_eye_surprised":{"x":23.46,"y":10.92,"rotation":49.69,"width":41,"height":35},"r_eye_uneasy":{"x":23.47,"y":10.91,"rotation":49.69,"width":41,"height":35}},"r_eyeball":{"r_eyeball":{"x":16.72,"y":0.61,"rotation":-93.95,"width":20,"height":22},"r_eyeball_uneasy":{"x":17.85,"y":-1.78,"rotation":-93.95,"width":22,"height":22}},"r_eyebrow":{"r_eyebrow":{"x":9.32,"y":-4.71,"rotation":13.24,"width":34,"height":11},"r_eyebrow_sad":{"x":15.02,"y":-9.32,"rotation":13.24,"width":34,"height":6},"r_eyebrow_success":{"x":13.07,"y":-5.06,"rotation":13.24,"width":34,"height":6},"r_eyebrow_surprised":{"x":9.32,"y":-4.71,"rotation":13.24,"width":34,"height":10},"r_eyebrow_upset":{"x":12.34,"y":-7.1,"rotation":13.24,"width":34,"height":14}},"r_leg":{"r_leg":{"x":17.68,"y":1.18,"rotation":86.63,"width":20,"height":40}},"r_side_hair":{"r_side_hair":{"x":36.36,"y":29.29,"rotation":156.58,"width":60,"height":109}},"r_sideburn":{"r_sideburn":{"x":17.35,"y":0.36,"rotation":101.89,"width":14,"height":37}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_failed3"},{"time":0.5,"name":"l_eye_failed2"},{"time":1,"name":"l_eye_failed3"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.4667,"name":"mouth4"},{"time":0.5333,"name":"mouth3"},{"time":0.6,"name":"mouth4"},{"time":0.6667,"name":"mouth_failed2"},{"time":0.7333,"name":"mouth3"},{"time":0.8,"name":"mouth2"},{"time":1,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_failed3"},{"time":0.5,"name":"r_eye_failed2"},{"time":1,"name":"r_eye_failed3"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.56,"curve":"stepped"},{"time":0.6667,"angle":0.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.56,"curve":"stepped"},{"time":0.6667,"angle":0.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-17.55},{"time":0.1667,"angle":-6.5},{"time":0.3333,"angle":-31.45,"curve":"stepped"},{"time":0.8333,"angle":-31.45},{"time":1,"angle":-17.55}],"translate":[{"time":0,"x":1.86,"y":1.06},{"time":0.3333,"x":0.78,"y":2.19,"curve":"stepped"},{"time":0.8333,"x":0.78,"y":2.19},{"time":1,"x":1.86,"y":1.06}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":87.75},{"time":0.1667,"angle":56.18},{"time":0.3333,"angle":-11.39,"curve":"stepped"},{"time":0.8333,"angle":-11.39},{"time":1,"angle":87.75}],"translate":[{"time":0,"x":0.45,"y":-2.57},{"time":0.3333,"x":2.19,"y":-0.58,"curve":"stepped"},{"time":0.8333,"x":2.19,"y":-0.58},{"time":1,"x":0.45,"y":-2.57}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.03},{"time":0.6667,"angle":2.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":1.41,"curve":"stepped"},{"time":0.6667,"angle":1.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":-2.07},{"time":0.1667,"angle":1.09},{"time":0.3333,"angle":-5.4},{"time":0.5,"angle":0},{"time":0.6667,"angle":-5.86},{"time":0.8333,"angle":-6.94},{"time":1,"angle":-2.07}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-0.71},{"time":0.3333,"angle":4.83},{"time":0.5,"angle":0},{"time":0.6667,"angle":3.8},{"time":0.8333,"angle":5.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.51},{"time":0.5,"angle":1.47},{"time":0.6667,"angle":-1.84},{"time":0.8333,"angle":-0.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":-7.17},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":-6.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.8,"y":0.07,"curve":"stepped"},{"time":0.4667,"x":-2.8,"y":0.07},{"time":0.5333,"x":2.8,"y":-0.17,"curve":"stepped"},{"time":0.9333,"x":2.8,"y":-0.17},{"time":1,"x":-2.8,"y":0.07}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.8,"y":0.07,"curve":"stepped"},{"time":0.4667,"x":-2.8,"y":0.07},{"time":0.5333,"x":2.8,"y":-0.17,"curve":"stepped"},{"time":0.9333,"x":2.8,"y":-0.17},{"time":1,"x":-2.8,"y":0.07}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.6667,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":0.6667,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.6667,"name":"mouth_happy"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.6667,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":0.6667,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-5.23},{"time":0.3333,"angle":3.89},{"time":0.6667,"angle":-5.23}],"translate":[{"time":0,"x":9.2,"y":4.09},{"time":0.1667,"x":1.02,"y":-1.53},{"time":0.3333,"x":-7.15,"y":6.13},{"time":0.5,"x":1.02,"y":-1.53},{"time":0.6667,"x":9.2,"y":4.09}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":-5.23},{"time":0.3333,"angle":3.89},{"time":0.6667,"angle":-5.23}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1.008,"y":1.008},{"time":0.1667,"x":1.005,"y":1.005},{"time":0.3333,"x":1.036,"y":1.036},{"time":0.5,"x":1.005,"y":1.005},{"time":0.6667,"x":1.008,"y":1.008}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.35},{"time":0.3333,"angle":47.9},{"time":0.5,"angle":12.3},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":4.09,"y":4.09},{"time":0.1667,"x":1.02,"y":-1.53},{"time":0.3333,"x":-2.56,"y":6.13},{"time":0.5,"x":1.02,"y":-1.53},{"time":0.6667,"x":4.09,"y":4.09}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-46.49},{"time":0.1667,"angle":-11.82},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.63},{"time":0.6667,"angle":-46.49}],"translate":[{"time":0,"x":4.09,"y":4.09},{"time":0.1667,"x":1.02,"y":-1.53},{"time":0.3333,"x":-2.56,"y":6.13},{"time":0.5,"x":1.02,"y":-1.53},{"time":0.6667,"x":4.09,"y":4.09}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-18.36},{"time":0.1667,"angle":-4.74},{"time":0.3333,"angle":-18.36},{"time":0.5,"angle":-4.74},{"time":0.6667,"angle":-18.36}],"translate":[{"time":0,"x":0.84,"y":2.62,"curve":"stepped"},{"time":0.3333,"x":0.84,"y":2.62,"curve":"stepped"},{"time":0.6667,"x":0.84,"y":2.62}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-18.36},{"time":0.1667,"angle":-4.74},{"time":0.3333,"angle":-21.88},{"time":0.5,"angle":-4.74},{"time":0.6667,"angle":-18.36}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.07},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.07},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1.016,"y":1.016},{"time":0.1667,"x":1,"y":1},{"time":0.3333,"x":1.038,"y":1.038},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.016,"y":1.016}]},"r_side_hair":{"rotate":[{"time":0,"angle":-25.09},{"time":0.1667,"angle":-7.69},{"time":0.3333,"angle":-18.35},{"time":0.5,"angle":-7.69},{"time":0.6667,"angle":-25.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":18.3},{"time":0.1667,"angle":2.43},{"time":0.3333,"angle":19.22},{"time":0.5,"angle":2.43},{"time":0.6667,"angle":18.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":-2.86},{"time":0.1667,"angle":-2.8},{"time":0.3333,"angle":0.55},{"time":0.6667,"angle":-2.86}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.5,"name":"l_eye_failed2"},{"time":0.5667,"name":"l_eye_failed3"},{"time":0.6333,"name":"l_eye"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.5,"name":null},{"time":0.6333,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.5,"name":"mouth_happy"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.5,"name":"r_eye_failed2"},{"time":0.5667,"name":"r_eye_failed3"},{"time":0.6333,"name":"r_eye"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.5,"name":null},{"time":0.6333,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.84},{"time":0.5,"angle":0},{"time":0.7667,"angle":-7.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-4.09,"y":-2.36},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":3.64,"y":-2.54},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.36},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":14.45},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-16.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-20.01},{"time":0.5,"angle":-10.66},{"time":0.7667,"angle":-31.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.21,"y":2.6},{"time":0.7667,"x":-0.06,"y":3.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0.31},{"time":0.2667,"angle":-22.13},{"time":0.5,"angle":5.8},{"time":0.7333,"angle":-24.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.81,"y":-0.5},{"time":0.7333,"x":0.24,"y":-0.53},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.95},{"time":0.5,"angle":0},{"time":0.7333,"angle":354.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0.9,"y":0.92},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-9.17},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.75},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.82},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.15},{"time":0.5,"angle":0},{"time":0.8333,"angle":5.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.06},{"time":0.5,"angle":0},{"time":0.8333,"angle":8.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5,"x":-8.23,"y":0.21,"curve":"stepped"},{"time":0.6,"x":-8.23,"y":0.21},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5,"x":-5.63,"y":0.14,"curve":"stepped"},{"time":0.6,"x":-5.63,"y":0.14},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.17},{"time":0.6667,"angle":-1.21},{"time":1,"angle":-2.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.14},{"time":0.5,"angle":-1.58},{"time":0.6667,"angle":-6.95},{"time":1,"angle":-3.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.027,"y":1.027,"curve":"stepped"},{"time":0.6667,"x":1.027,"y":1.027},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.56},{"time":0.3333,"angle":-0.08},{"time":0.5,"angle":-4.68,"curve":"stepped"},{"time":0.6667,"angle":-4.68},{"time":0.8333,"angle":-3.64},{"time":1,"angle":-0.3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":72.37},{"time":0.1667,"angle":-10.66},{"time":0.3333,"angle":61.85},{"time":0.5,"angle":-24.12,"curve":"stepped"},{"time":0.6667,"angle":-24.12},{"time":0.8333,"angle":-9.24},{"time":1,"angle":74.94},{"time":1.3333,"angle":72.37}],"translate":[{"time":0,"x":0.92,"y":-2.13},{"time":0.1667,"x":1.92,"y":-0.82},{"time":0.3333,"x":0.91,"y":-2.11},{"time":0.5,"x":1.2,"y":-0.35,"curve":"stepped"},{"time":0.6667,"x":1.2,"y":-0.35},{"time":0.8333,"x":1.68,"y":-0.64},{"time":1,"x":0.97,"y":-1.82},{"time":1.3333,"x":0.92,"y":-2.13}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.67},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":354.02},{"time":0.6667,"angle":5.72},{"time":1,"angle":4.19},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":-2.23},{"time":0.5,"angle":-1.15},{"time":0.6667,"angle":-5.28},{"time":1,"angle":-4.16},{"time":1.3333,"angle":-2.23}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":4.35},{"time":0.3333,"angle":6.09},{"time":0.6667,"angle":5.38},{"time":0.8333,"angle":2.69},{"time":1.1667,"angle":3.37},{"time":1.3333,"angle":4.35}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.93},{"time":0.5667,"angle":-2.5},{"time":0.8333,"angle":-2.59},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.24},{"time":0.6667,"angle":2.34},{"time":0.8333,"angle":-6.16},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.01},{"time":0.6667,"angle":3.54},{"time":0.8333,"angle":-6.68},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5333,"x":-1.59,"y":-0.26},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5333,"x":-1.58,"y":-0.26},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.5667,"name":"l_eye_failed3"},{"time":0.6333,"name":"l_eye"},{"time":1,"name":"l_eye"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.5667,"name":null},{"time":0.6333,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.5667,"name":"r_eye_failed3"},{"time":0.6333,"name":"r_eye"},{"time":1,"name":"r_eye"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.5667,"name":null},{"time":0.6333,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.84},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.86},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.39},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.15},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.21},{"time":0.8333,"angle":-1.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-7.03},{"time":0.3333,"angle":-7.29},{"time":0.6667,"angle":-18.63},{"time":1,"angle":-7.03}],"translate":[{"time":0,"x":0.32,"y":-0.73},{"time":0.3333,"x":0.18,"y":-0.4},{"time":0.6667,"x":0.22,"y":-0.38},{"time":1,"x":0.32,"y":-0.73}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.51},{"time":0.5,"angle":0},{"time":0.6667,"angle":358.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":-2.07},{"time":0.3333,"angle":2.39},{"time":0.5,"angle":1.05},{"time":0.8333,"angle":-4.14},{"time":1,"angle":-2.07}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.26},{"time":0.5,"angle":3.73},{"time":0.8333,"angle":-0.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.47},{"time":0.5,"angle":0.7},{"time":0.8333,"angle":-0.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.16},{"time":0.5,"angle":1.68},{"time":0.8333,"angle":-3.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.89},{"time":0.5,"angle":1.2},{"time":0.8333,"angle":-2.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.6,"x":-6.16,"y":-0.13},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.6,"x":-6.16,"y":-0.13},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.4,"name":"mouth_surprised"},{"time":1,"name":"mouth3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.07},{"time":0.5,"angle":9.84},{"time":0.7667,"angle":2.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-3.49,"y":-5.06},{"time":0.5,"x":-8.93,"y":1.28},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.69},{"time":0.5,"angle":0},{"time":0.7667,"angle":-0.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.041,"y":1.041},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":41.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":2.55},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.23},{"time":0.5,"angle":-31.67},{"time":0.6333,"angle":-9.69},{"time":0.7667,"angle":-31.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.74,"y":3.76,"curve":"stepped"},{"time":0.5,"x":0.74,"y":3.76,"curve":"stepped"},{"time":0.7667,"x":0.74,"y":3.76},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-12.16},{"time":0.5,"angle":-31.67},{"time":0.6333,"angle":-8.86},{"time":0.7667,"angle":-31.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.33,"y":0.51},{"time":0.6,"x":-2.62,"y":-0.22},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":357.66},{"time":0.5,"angle":3.1},{"time":0.7667,"angle":6.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1},{"time":0.5,"x":1.029,"y":1.029},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.26},{"time":0.5667,"angle":-18.23},{"time":0.7333,"angle":-15.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.94},{"time":0.5,"angle":15.42},{"time":0.6667,"angle":14.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.59},{"time":0.5,"angle":10.25},{"time":0.6667,"angle":9.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.23},{"time":0.5,"angle":-12.24},{"time":0.6667,"angle":-13.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.6667,"name":"l_eye_uneasy"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball_uneasy"},{"time":0.6667,"name":"l_eyeball_uneasy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_upset"},{"time":0.6667,"name":"l_eyebrow_upset"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_failed2"},{"time":0.6667,"name":"mouth_failed2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.6667,"name":"r_eye_uneasy"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball_uneasy"},{"time":0.6667,"name":"r_eyeball_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_upset"},{"time":0.6667,"name":"r_eyebrow_upset"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.32},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.79},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":-0.67,"y":0},{"time":0.1667,"x":-0.67,"y":-6.74},{"time":0.3333,"x":-0.67,"y":0},{"time":0.5,"x":-0.67,"y":-5.39},{"time":0.6667,"x":-0.67,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":-0.67,"y":0,"curve":"stepped"},{"time":0.3333,"x":-0.67,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.67,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":-0.67,"y":0,"curve":"stepped"},{"time":0.3333,"x":-0.67,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.67,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.32},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.79},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.64},{"time":0.3333,"angle":-4.25},{"time":0.5,"angle":-7.31},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.64},{"time":0.3333,"angle":-4.25},{"time":0.5,"angle":-7.31},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.92},{"time":0.3333,"angle":0},{"time":0.5,"angle":357.9},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":-8.8},{"time":0.3333,"angle":0},{"time":0.5333,"angle":-5.78},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_side_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":3.02},{"time":0.3333,"angle":0},{"time":0.5333,"angle":6.98},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.37},{"time":0.3333,"angle":0},{"time":0.5,"angle":3.79},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.01},{"time":0.3333,"angle":0},{"time":0.5,"angle":-3.46},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.63,"y":-0.07},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4667,"x":1.97,"y":0.08},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.95,"y":3.3,"curve":"stepped"},{"time":0.3333,"x":0.95,"y":3.3},{"time":0.5,"x":0.6,"y":-3.74},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.95,"y":3.3,"curve":"stepped"},{"time":0.3333,"x":0.95,"y":3.3},{"time":0.5,"x":0.65,"y":-5.76},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/208201.png b/m78-all/m78-fe/public/images/character/208201.png new file mode 100644 index 000000000..22dff7c64 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/208201.png differ diff --git a/m78-all/m78-fe/public/images/character/208301.atlas b/m78-all/m78-fe/public/images/character/208301.atlas new file mode 100644 index 000000000..b54be1165 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/208301.atlas @@ -0,0 +1,405 @@ + +208301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_coat + rotate: true + xy: 222, 135 + size: 77, 31 + orig: 77, 31 + offset: 0, 0 + index: -1 +bear + rotate: true + xy: 339, 194 + size: 60, 71 + orig: 60, 71 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 279, 84 + size: 38, 53 + orig: 38, 53 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 255, 139 + size: 71, 44 + orig: 71, 44 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 7 + size: 134, 103 + orig: 134, 103 + offset: 0, 0 + index: -1 +hairband + rotate: false + xy: 151, 214 + size: 110, 40 + orig: 110, 40 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 112 + size: 147, 142 + orig: 147, 142 + offset: 0, 0 + index: -1 +l_arm + rotate: false + xy: 247, 32 + size: 37, 38 + orig: 37, 38 + offset: 0, 0 + index: -1 +l_band + rotate: true + xy: 151, 74 + size: 62, 63 + orig: 62, 63 + offset: 0, 0 + index: -1 +l_braid + rotate: false + xy: 151, 138 + size: 69, 74 + orig: 69, 74 + offset: 0, 0 + index: -1 +l_coat + rotate: false + xy: 201, 2 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye + rotate: true + xy: 373, 128 + size: 41, 34 + orig: 41, 34 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 319, 96 + size: 41, 36 + orig: 41, 36 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 497, 155 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 497, 155 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 480, 185 + size: 30, 24 + orig: 30, 24 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: true + xy: 406, 95 + size: 31, 14 + orig: 31, 14 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: true + xy: 322, 53 + size: 41, 36 + orig: 41, 36 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 360, 57 + size: 41, 36 + orig: 41, 36 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 436, 106 + size: 26, 14 + orig: 26, 14 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: true + xy: 413, 65 + size: 28, 12 + orig: 28, 12 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 422, 101 + size: 28, 12 + orig: 28, 12 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: true + xy: 138, 83 + size: 27, 11 + orig: 27, 11 + offset: 0, 0 + index: -1 +l_eyebrow_upset + rotate: true + xy: 452, 117 + size: 24, 16 + orig: 24, 16 + offset: 0, 0 + index: -1 +l_hairband_horn + rotate: false + xy: 216, 72 + size: 61, 61 + orig: 61, 61 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 409, 131 + size: 21, 41 + orig: 21, 41 + offset: 0, 0 + index: -1 +l_sideburn + rotate: true + xy: 400, 174 + size: 17, 39 + orig: 17, 39 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 437, 80 + size: 24, 8 + orig: 24, 8 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 328, 2 + size: 12, 7 + orig: 12, 7 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 452, 106 + size: 14, 9 + orig: 14, 9 + offset: 0, 0 + index: -1 +mouth_failed + rotate: true + xy: 427, 74 + size: 25, 8 + orig: 25, 8 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 237, 3 + size: 44, 27 + orig: 44, 27 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 395, 2 + size: 24, 9 + orig: 24, 9 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 497, 135 + size: 18, 13 + orig: 18, 13 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 363, 2 + size: 30, 9 + orig: 30, 9 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 339, 171 + size: 59, 21 + orig: 59, 21 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 470, 119 + size: 24, 23 + orig: 24, 23 + offset: 0, 0 + index: -1 +r_arm + rotate: false + xy: 286, 2 + size: 40, 35 + orig: 40, 35 + offset: 0, 0 + index: -1 +r_band + rotate: false + xy: 412, 193 + size: 66, 61 + orig: 66, 61 + offset: 0, 0 + index: -1 +r_braid + rotate: true + xy: 263, 185 + size: 69, 74 + orig: 69, 74 + offset: 0, 0 + index: -1 +r_coat + rotate: true + xy: 328, 11 + size: 40, 33 + orig: 40, 33 + offset: 0, 0 + index: -1 +r_eye + rotate: false + xy: 201, 36 + size: 44, 34 + orig: 44, 34 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 328, 134 + size: 43, 35 + orig: 43, 35 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 387, 13 + size: 42, 15 + orig: 42, 15 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: true + xy: 387, 13 + size: 42, 15 + orig: 42, 15 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 480, 211 + size: 43, 30 + orig: 43, 30 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 404, 22 + size: 33, 14 + orig: 33, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: true + xy: 286, 39 + size: 43, 34 + orig: 43, 34 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: false + xy: 362, 95 + size: 42, 31 + orig: 42, 31 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: true + xy: 468, 145 + size: 36, 13 + orig: 36, 13 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 441, 183 + size: 37, 8 + orig: 37, 8 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 403, 57 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: true + xy: 483, 147 + size: 36, 12 + orig: 36, 12 + offset: 0, 0 + index: -1 +r_eyebrow_upset + rotate: true + xy: 432, 134 + size: 38, 17 + orig: 38, 17 + offset: 0, 0 + index: -1 +r_hairband_horn + rotate: false + xy: 138, 9 + size: 61, 63 + orig: 61, 63 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 363, 13 + size: 22, 42 + orig: 22, 42 + offset: 0, 0 + index: -1 +r_sideburn + rotate: false + xy: 451, 143 + size: 15, 38 + orig: 15, 38 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/208301.json b/m78-all/m78-fe/public/images/character/208301.json new file mode 100644 index 000000000..df4110a72 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/208301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"HDgrNaYyOBRplBlRdNhe8Q9WGUs","spine":"3.5.25","width":210,"height":268,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":33.06,"rotation":89.34,"x":0.72,"y":51.53},{"name":"b_coat","parent":"body1","length":25.49,"rotation":-176.22,"x":27,"y":-1.97},{"name":"r_coat","parent":"body1","length":23.38,"rotation":136.32,"x":30.21,"y":16.69},{"name":"r_arm2","parent":"r_coat","length":29.96,"rotation":146.79,"x":32.56,"y":3.66},{"name":"bear","parent":"r_arm2","length":33.09,"rotation":111.79,"x":24.4,"y":-2.27},{"name":"body2","parent":"body1","length":34.96,"rotation":-179.96,"x":-1.14,"y":-0.01},{"name":"eff_exclamation","parent":"root","length":24.47,"rotation":32.32,"x":75.78,"y":200.26},{"name":"eff_panic","parent":"root","length":27.88,"rotation":2.6,"x":79.58,"y":121.77},{"name":"eff_sad1","parent":"root","length":17.3,"rotation":-90,"x":-9.46,"y":117.55},{"name":"eff_sad2","parent":"root","length":18.15,"rotation":-90,"x":44.98,"y":111.64},{"name":"eff_star1","parent":"root","length":28.54,"rotation":23.53,"x":43.29,"y":64.37},{"name":"eff_star2","parent":"root","length":21.1,"rotation":168.47,"x":-52.08,"y":60.15},{"name":"eff_star3","parent":"root","length":20.78,"rotation":-12.91,"x":46.24,"y":30.19},{"name":"head","parent":"body1","length":135.66,"rotation":1.08,"x":33.06},{"name":"f_hair","parent":"head","length":62.78,"rotation":-173.47,"x":124.61,"y":-4.72},{"name":"l_coat","parent":"body1","length":21.96,"rotation":-151.88,"x":28.66,"y":-13.35},{"name":"l_arm2","parent":"l_coat","length":31.77,"rotation":-0.72,"x":15.26,"y":-2.54},{"name":"l_braid","parent":"head","length":53.66,"rotation":-147.86,"x":89.23,"y":-60.32},{"name":"l_eye","parent":"head","length":21.66,"rotation":-0.43,"x":25.97,"y":-34.39},{"name":"l_eyebrow","parent":"head","length":32.1,"rotation":-84.31,"x":62.57,"y":-18.32},{"name":"l_horn","parent":"head","length":59.85,"rotation":-40.69,"x":123.37,"y":-22.73},{"name":"l_leg","parent":"root","length":33.84,"rotation":-91.93,"x":9.46,"y":34.05},{"name":"l_sideburn","parent":"head","length":31.13,"rotation":-160.44,"x":34.97,"y":-50.04},{"name":"mouth","parent":"head","length":17.63,"rotation":52.46,"x":5.13,"y":-25.88},{"name":"r_braid","parent":"head","length":66.53,"rotation":144.34,"x":89.02,"y":63.94},{"name":"r_eye","parent":"head","length":24.7,"rotation":-0.43,"x":24.13,"y":24.9},{"name":"r_eyebrow","parent":"head","length":38.53,"rotation":84.48,"x":64.28,"y":7.5},{"name":"r_horn","parent":"head","length":53.47,"rotation":38.91,"x":125.16,"y":25.52},{"name":"r_leg","parent":"root","length":32.72,"rotation":-87.34,"x":-9.92,"y":33.29},{"name":"r_sideburn","parent":"head","length":27.88,"rotation":162.13,"x":30.38,"y":48.42}],"slots":[{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"b_coat","bone":"b_coat","attachment":"b_coat"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"l_braid","bone":"l_braid","attachment":"l_braid"},{"name":"l_band","bone":"head","attachment":"l_band"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"l_sideburn","bone":"l_sideburn","attachment":"l_sideburn"},{"name":"r_sideburn","bone":"r_sideburn","attachment":"r_sideburn"},{"name":"l_hairband_horn","bone":"l_horn","attachment":"l_hairband_horn"},{"name":"r_hairband_horn","bone":"r_horn","attachment":"r_hairband_horn"},{"name":"hairband","bone":"head","attachment":"hairband"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"r_braid","bone":"r_braid","attachment":"r_braid"},{"name":"r_band","bone":"head","attachment":"r_band"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_coat","bone":"l_coat","attachment":"l_coat"},{"name":"r_coat","bone":"r_coat","attachment":"r_coat"},{"name":"neck","bone":"body1","attachment":"neck"},{"name":"bear","bone":"bear","attachment":"bear"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"l_eye","attachment":"l_eye"},{"name":"r_eye","bone":"r_eye","attachment":"r_eye"},{"name":"nose","bone":"head","attachment":"nose"}],"skins":{"default":{"b_coat":{"b_coat":{"x":14.41,"y":-5.29,"rotation":86.88,"width":77,"height":31}},"bear":{"bear":{"x":8.14,"y":3.6,"rotation":-124.24,"width":60,"height":71}},"body1":{"body1":{"x":13.27,"y":2.87,"rotation":-89.34,"width":38,"height":53}},"body2":{"body2":{"x":13.09,"y":-3.08,"rotation":90.62,"width":71,"height":44}},"f_hair":{"f_hair":{"x":47.44,"y":-10.72,"rotation":83.05,"width":134,"height":103}},"hairband":{"hairband":{"x":114.8,"y":6.25,"rotation":-90.43,"width":110,"height":40}},"head":{"head":{"x":66.81,"y":8.1,"rotation":-90.43,"width":147,"height":142}},"l_arm2":{"l_arm2":{"path":"l_arm","x":13.33,"y":1.17,"rotation":53.45,"width":37,"height":38}},"l_band":{"l_band":{"x":94.87,"y":-51.61,"rotation":-90.43,"width":62,"height":63}},"l_braid":{"l_braid":{"x":21.41,"y":-12.79,"rotation":57.44,"width":69,"height":74}},"l_coat":{"l_coat":{"x":11.18,"y":0.5,"rotation":62.54,"width":34,"height":32}},"l_eye":{"l_eye":{"x":15.53,"y":1.8,"rotation":-90,"width":41,"height":34},"l_eye2":{"x":15.53,"y":1.8,"rotation":-90,"width":41,"height":36},"l_eye3":{"x":9.95,"y":1.8,"rotation":-90,"width":28,"height":13},"l_eye_happy":{"x":9.25,"y":1.8,"rotation":-90,"width":30,"height":24},"l_eye_sad":{"x":9.95,"y":1.8,"rotation":-90,"width":28,"height":13},"l_eye_sad2":{"x":12.04,"y":1.8,"rotation":-90,"width":31,"height":14},"l_eye_surprised":{"x":15.53,"y":1.8,"rotation":-90,"width":41,"height":36},"l_eye_uneasy":{"x":15.53,"y":1.8,"rotation":-90,"width":41,"height":36}},"l_eyebrow":{"l_eyebrow":{"x":9.35,"y":-6.99,"rotation":-6.12,"width":26,"height":14},"l_eyebrow_happy":{"x":9.35,"y":-6.99,"rotation":-6.12,"width":28,"height":12},"l_eyebrow_sad":{"x":9.35,"y":-6.99,"rotation":-6.12,"width":28,"height":12},"l_eyebrow_surprised":{"x":9.35,"y":-6.99,"rotation":-6.12,"width":27,"height":11},"l_eyebrow_upset":{"x":9.35,"y":-6.99,"rotation":-6.12,"width":24,"height":16}},"l_hairband_horn":{"l_hairband_horn":{"x":32.39,"y":3.08,"rotation":-49.74,"width":61,"height":61}},"l_leg":{"l_leg":{"x":16.2,"y":0.59,"rotation":91.93,"width":21,"height":41}},"l_sideburn":{"l_sideburn":{"x":15.76,"y":-0.81,"rotation":70.02,"width":17,"height":39}},"mouth1":{"mouth1":{"x":23.79,"y":4.92,"rotation":-142.88,"width":24,"height":8},"mouth2":{"x":23.79,"y":4.92,"rotation":-142.88,"width":12,"height":7},"mouth3":{"x":23.79,"y":4.92,"rotation":-142.88,"width":14,"height":9},"mouth_failed":{"x":23.79,"y":4.92,"rotation":-142.88,"width":25,"height":8},"mouth_happy":{"x":23.79,"y":4.92,"rotation":-142.88,"width":44,"height":27},"mouth_sad":{"x":23.79,"y":4.92,"rotation":-142.88,"width":24,"height":9},"mouth_surprised":{"x":23.79,"y":4.92,"rotation":-142.88,"width":18,"height":13},"mouth_uneasy":{"x":23.79,"y":4.92,"rotation":-142.88,"width":30,"height":9}},"neck":{"neck":{"x":30.31,"y":-0.43,"rotation":-89.34,"width":59,"height":21}},"nose":{"nose":{"x":29.13,"y":-16.12,"rotation":-90.43,"width":24,"height":23}},"r_arm2":{"r_arm2":{"path":"r_arm","x":16.41,"y":1.24,"rotation":-12.45,"width":40,"height":35}},"r_band":{"r_band":{"x":97.82,"y":76.37,"rotation":-90.43,"width":66,"height":61}},"r_braid":{"r_braid":{"x":31.11,"y":2.39,"rotation":125.23,"width":69,"height":74}},"r_coat":{"r_coat":{"x":12.41,"y":4.61,"rotation":134.34,"width":40,"height":33}},"r_eye":{"r_eye":{"x":14.81,"y":-0.98,"rotation":-90,"width":44,"height":34},"r_eye2":{"x":14.81,"y":-2.38,"rotation":-90,"width":43,"height":35},"r_eye3":{"x":12.02,"y":-2.38,"rotation":-90,"width":42,"height":15},"r_eye_happy":{"x":14.81,"y":-7.95,"rotation":-90,"width":43,"height":30},"r_eye_sad":{"x":12.02,"y":-2.38,"rotation":-90,"width":42,"height":15},"r_eye_sad2":{"x":11.32,"y":-2.38,"rotation":-90,"width":33,"height":14},"r_eye_surprised":{"x":14.81,"y":-0.98,"rotation":-90,"width":43,"height":34},"r_eye_uneasy":{"x":13.41,"y":-1.68,"rotation":-90,"width":42,"height":31}},"r_eyebrow":{"r_eyebrow":{"x":8.29,"y":9.75,"rotation":-174.91,"width":36,"height":13},"r_eyebrow_happy":{"x":8.29,"y":9.75,"rotation":-174.91,"width":37,"height":8},"r_eyebrow_sad":{"x":8.29,"y":9.75,"rotation":-174.91,"width":36,"height":8},"r_eyebrow_surprised":{"x":8.29,"y":9.75,"rotation":-174.91,"width":36,"height":12},"r_eyebrow_upset":{"x":8.29,"y":9.75,"rotation":-174.91,"width":38,"height":17}},"r_hairband_horn":{"r_hairband_horn":{"x":31.41,"y":1.61,"rotation":-129.34,"width":61,"height":63}},"r_leg":{"r_leg":{"x":15.03,"y":1.23,"rotation":87.34,"width":22,"height":42}},"r_sideburn":{"r_sideburn":{"x":17.01,"y":0.15,"rotation":107.45,"width":15,"height":38}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":1.1667,"name":"l_eye2"},{"time":1.2333,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":1.1667,"name":"r_eye2"},{"time":1.2333,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.13,"curve":"stepped"},{"time":1,"angle":3.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":1.01},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":13.35},{"time":0.7667,"angle":9.17},{"time":1,"angle":13.35},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.5,"x":-2.53,"y":0.11,"curve":"stepped"},{"time":1,"x":-2.53,"y":0.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":3.51},{"time":0.5,"angle":22.18,"curve":"stepped"},{"time":1,"angle":22.18},{"time":1.3333,"angle":3.51}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":18.92},{"time":0.7333,"angle":14.26},{"time":1,"angle":18.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":3.51},{"time":0.5,"angle":12.78},{"time":0.7333,"angle":18.59},{"time":1,"angle":12.78},{"time":1.3333,"angle":3.51}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.41,"curve":"stepped"},{"time":1,"angle":-6.41},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0},{"time":0.5,"angle":8.83},{"time":0.7333,"angle":-3.35},{"time":1,"angle":6.53},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0},{"time":0.5,"angle":8.16},{"time":0.7333,"angle":-6.95},{"time":1,"angle":5.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-9.34},{"time":0.7667,"angle":-2.37},{"time":1,"angle":-9.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.36},{"time":0.7667,"angle":-4.81},{"time":1,"angle":-7.36},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4333,"x":-2.88,"y":-0.6,"curve":"stepped"},{"time":1.1667,"x":-2.88,"y":-0.6},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4333,"x":-2.88,"y":-0.6,"curve":"stepped"},{"time":1.1667,"x":-2.88,"y":-0.6},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-14.82},{"time":0.7333,"angle":-3.54},{"time":1,"angle":-14.82},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-14.55},{"time":0.7333,"angle":-3.56},{"time":1,"angle":-14.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":-0.68},{"time":0.3333,"angle":-0.11},{"time":0.5,"angle":-2.14},{"time":0.6667,"angle":-1.53},{"time":1,"angle":-2.3},{"time":1.3333,"angle":-0.68}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.66},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.96},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.37},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.77,"y":0.12},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.18,"y":-0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.97},{"time":0.5,"angle":0},{"time":0.7667,"angle":359.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.21},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.8333,"angle":-14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":15.01},{"time":0.2667,"angle":39.1},{"time":0.5,"angle":15.01},{"time":0.7667,"angle":39.1},{"time":1,"angle":15.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.93},{"time":0.7333,"angle":-14.26},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":15.01},{"time":0.2667,"angle":39.1},{"time":0.5,"angle":15.01},{"time":0.7667,"angle":39.1},{"time":1,"angle":15.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-9.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5667,"angle":-6.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-11.17},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-0.99},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-0.99},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.73},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.99,"y":0.06},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.99,"y":-0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.92},{"time":0.5,"angle":0},{"time":0.7667,"angle":357.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.21},{"time":0.5,"angle":-0.28},{"time":0.7667,"angle":13.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.42},{"time":0.8333,"angle":-2.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.42},{"time":0.8333,"angle":-2.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.21},{"time":0.5,"angle":-0.28},{"time":0.7667,"angle":13.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":10.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":11.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-7.91},{"time":0.7667,"angle":4.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.28},{"time":0.8333,"angle":5.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-12.38},{"time":0.8333,"angle":12.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.18},{"time":0.5,"angle":-6.03},{"time":0.7667,"angle":8.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_sad2"},{"time":0.6667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad2"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_sad2"},{"time":0.6667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":-5.99},{"time":0.6667,"angle":-11.37},{"time":1.3333,"angle":-5.99}],"translate":[{"time":0,"x":3.34,"y":0},{"time":0.6667,"x":2.68,"y":-2.01},{"time":1.3333,"x":3.34,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-2.37},{"time":0.6667,"angle":-3.83},{"time":1.3333,"angle":-2.37}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-1.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-78.48},{"time":0.6667,"angle":-79.89},{"time":1.3333,"angle":-78.48}],"translate":[{"time":0,"x":-7.27,"y":-3.53,"curve":"stepped"},{"time":0.6667,"x":-7.27,"y":-3.53,"curve":"stepped"},{"time":1.3333,"x":-7.27,"y":-3.53}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":18.26,"curve":"stepped"},{"time":0.5,"angle":18.26,"curve":"stepped"},{"time":1.3333,"angle":18.26}],"translate":[{"time":0,"x":13.36,"y":-4.34,"curve":"stepped"},{"time":0.5,"x":13.36,"y":-4.34,"curve":"stepped"},{"time":1.3333,"x":13.36,"y":-4.34}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-13.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-16.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":5.26},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.25},{"time":0.8333,"angle":6.17},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-2.35,"y":-0.33},{"time":0.6667,"x":-3.43,"y":-0.91},{"time":1.3333,"x":-2.35,"y":-0.33}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-2.35,"y":-0.33},{"time":0.6667,"x":-3.43,"y":-0.91},{"time":1.3333,"x":-2.35,"y":-0.33}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":10.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":6.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye"},{"time":1.3333,"name":"l_eye"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye"},{"time":1.3333,"name":"r_eye"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.18},{"time":0.6667,"angle":0},{"time":1,"angle":-5.38},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.21},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.77},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.71},{"time":0.6667,"angle":0},{"time":1,"angle":-1.51},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.02,"y":0.08},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.02,"y":-0.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.42},{"time":0.6667,"angle":0},{"time":1,"angle":356.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":1,"angle":3.64},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.06},{"time":0.6667,"angle":0},{"time":1,"angle":-1.68},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":7.4},{"time":0.6667,"angle":0},{"time":1,"angle":7.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.18},{"time":1,"angle":-1.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.88},{"time":1,"angle":3.24},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.47},{"time":1,"angle":-5.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.15},{"time":1,"angle":0.57},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.94},{"time":1,"angle":2.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7333,"x":-3.95,"y":-0.07},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7333,"x":-3.95,"y":-0.07},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.57},{"time":1,"angle":3.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.98},{"time":1,"angle":1.82},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.46},{"time":0.6667,"angle":0},{"time":1,"angle":1.66},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":0.6,"name":"l_eye_surprised"},{"time":0.6667,"name":"l_eye3"},{"time":0.7333,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.2667,"name":"mouth2"},{"time":0.3333,"name":"mouth_surprised"},{"time":0.5,"name":"mouth3"},{"time":0.5667,"name":"mouth2"},{"time":1,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":0.6,"name":"r_eye_surprised"},{"time":0.6667,"name":"r_eye3"},{"time":0.7333,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4,"curve":"stepped"},{"time":0.3667,"angle":4},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":-1.8},{"time":0.2667,"x":0,"y":0},{"time":0.3667,"x":0,"y":3.12},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4},{"time":0.3333,"angle":4.41},{"time":0.6667,"angle":-2.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":18.07},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0,"y":1.86},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-15.86},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.46,"y":1.39},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":27.99},{"time":0.5,"angle":3.22},{"time":0.6667,"angle":21.09},{"time":0.8333,"angle":2.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.13},{"time":0.4,"angle":12.51},{"time":0.6667,"angle":0},{"time":0.8333,"angle":-6.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-3.99},{"time":0.6667,"angle":4.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0},{"time":0.4,"angle":-7.41},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.4,"x":6.53,"y":6.89},{"time":0.5,"x":8.12,"y":10.71},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.02},{"time":0.5,"angle":12.66},{"time":0.7333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-12.63},{"time":0.5,"angle":9.83},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-15.08,"curve":"stepped"},{"time":0.5,"angle":-15.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-15.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.99},{"time":0.5,"angle":-6.95},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.97},{"time":0.5667,"angle":-5.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.7},{"time":0.3333,"angle":-0.26},{"time":0.5,"angle":-2.16},{"time":0.6667,"angle":1.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.5,"name":"l_eye_surprised"},{"time":0.8333,"name":"l_eye_sad"},{"time":0.9,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_uneasy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_upset"},{"time":1,"name":"l_eyebrow_upset"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_failed"},{"time":1,"name":"mouth_failed"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.5,"name":"r_eye_surprised"},{"time":0.8333,"name":"r_eye3"},{"time":0.9,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_upset"},{"time":1,"name":"r_eyebrow_upset"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.51},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.71},{"time":0.5,"angle":0},{"time":0.7667,"angle":357.98},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":20.27},{"time":0.5,"angle":14.97},{"time":1,"angle":20.27}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":8.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.44},{"time":0.6667,"angle":10.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-9.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_braid":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":7.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/208301.png b/m78-all/m78-fe/public/images/character/208301.png new file mode 100644 index 000000000..dbc580b61 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/208301.png differ diff --git a/m78-all/m78-fe/public/images/character/209101.atlas b/m78-all/m78-fe/public/images/character/209101.atlas new file mode 100644 index 000000000..07af7e909 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/209101.atlas @@ -0,0 +1,300 @@ + +209101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body1 + rotate: false + xy: 165, 179 + size: 86, 75 + orig: 86, 75 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 101 + size: 161, 153 + orig: 161, 153 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 133, 59 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 345, 214 + size: 40, 50 + orig: 40, 50 + offset: 0, 0 + index: -1 +l_arm3 + rotate: true + xy: 397, 214 + size: 40, 50 + orig: 40, 50 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 90, 2 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 104, 31 + size: 26, 22 + orig: 26, 22 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 376, 143 + size: 27, 14 + orig: 27, 14 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 356, 129 + size: 26, 12 + orig: 26, 12 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 323, 123 + size: 31, 18 + orig: 31, 18 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 119, 2 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 119, 2 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 325, 143 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 497, 186 + size: 31, 13 + orig: 31, 13 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: false + xy: 2, 31 + size: 100, 22 + orig: 100, 22 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 246, 124 + size: 37, 18 + orig: 37, 18 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: true + xy: 354, 143 + size: 27, 20 + orig: 27, 20 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: true + xy: 148, 7 + size: 32, 17 + orig: 32, 17 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 253, 186 + size: 44, 68 + orig: 44, 68 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 399, 189 + size: 39, 7 + orig: 39, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 253, 174 + size: 44, 10 + orig: 44, 10 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 299, 172 + size: 45, 11 + orig: 45, 11 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 399, 198 + size: 47, 14 + orig: 47, 14 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 448, 196 + size: 46, 12 + orig: 46, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 208, 62 + size: 46, 11 + orig: 46, 11 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 299, 206 + size: 44, 48 + orig: 44, 48 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 449, 210 + size: 46, 44 + orig: 46, 44 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 170, 80 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 51, 2 + size: 37, 27 + orig: 37, 27 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 133, 41 + size: 34, 16 + orig: 34, 16 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 497, 219 + size: 35, 13 + orig: 35, 13 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 349, 172 + size: 34, 17 + orig: 34, 17 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 170, 50 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 246, 144 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 285, 121 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: true + xy: 222, 129 + size: 48, 22 + orig: 48, 22 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 284, 151 + size: 39, 19 + orig: 39, 19 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 299, 185 + size: 48, 19 + orig: 48, 19 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 2, 2 + size: 47, 27 + orig: 47, 27 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 349, 191 + size: 48, 21 + orig: 48, 21 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 165, 110 + size: 55, 67 + orig: 55, 67 + offset: 0, 0 + index: -1 +sunglass + rotate: false + xy: 2, 55 + size: 129, 44 + orig: 129, 44 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/209101.json b/m78-all/m78-fe/public/images/character/209101.json new file mode 100644 index 000000000..5d4829433 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/209101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"zT3BzOQKmrrXdF/VyyEYcq/QgO8","spine":"3.4.02","width":161,"height":247.5,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":52.27,"rotation":89.99,"x":1.28,"y":47.75},{"name":"eff_exclamation","parent":"root","length":21.15,"rotation":38.82,"x":67.17,"y":241.47},{"name":"eff_panic","parent":"root","length":19.31,"rotation":5.81,"x":86.46,"y":182.37},{"name":"eff_sad1","parent":"root","length":22.47,"rotation":-90,"x":-9.23,"y":129.36},{"name":"eff_sad2","parent":"root","length":19.98,"rotation":-88.21,"x":46.73,"y":129.44},{"name":"eff_star1","parent":"root","length":14.96,"rotation":30.69,"x":61.94,"y":92.33},{"name":"eff_star2","parent":"root","length":17.17,"rotation":163.68,"x":-65.08,"y":84.69},{"name":"eff_star3","parent":"root","length":14.25,"rotation":-21.5,"x":57.52,"y":52.53},{"name":"head","parent":"body1","length":131.47,"rotation":-0.46,"x":51.21,"y":1.05},{"name":"l_arm1","parent":"body1","length":39.28,"rotation":-143.74,"x":44.35,"y":-15.83},{"name":"l_arm2","parent":"l_arm1","length":45.64,"rotation":173.57,"x":39.03,"y":4.11},{"name":"l_eye","parent":"head","length":15.98,"rotation":8.05,"x":31.49,"y":-41.98},{"name":"l_eyebrow","parent":"head","length":30.09,"rotation":-89.53,"x":78.32,"y":-22.6},{"name":"l_leg","parent":"root","length":55.97,"rotation":-90.54,"x":17.65,"y":55.67},{"name":"mouth","parent":"head","length":22.51,"rotation":51.17,"x":6.11,"y":-38.49},{"name":"r_arm1","parent":"body1","length":41.3,"rotation":144.88,"x":49.63,"y":26.4},{"name":"r_arm2","parent":"r_arm1","length":37.85,"rotation":75.01,"x":36.07,"y":-1.74},{"name":"r_eye","parent":"head","length":18.44,"rotation":-12.78,"x":29.32,"y":29.8},{"name":"r_eyebrow","parent":"head","length":35.9,"rotation":90.46,"x":79.15,"y":5.91},{"name":"r_leg","parent":"root","length":57.03,"rotation":-88.93,"x":-19.3,"y":55.15},{"name":"sunglass","parent":"head","length":32.48,"rotation":-82.06,"x":46.94,"y":72.18}],"slots":[{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"sunglass","bone":"sunglass","attachment":"sunglass"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"}],"skins":{"default":{"body1":{"body1":{"x":22.62,"y":8.93,"rotation":-89.99,"width":86,"height":75}},"head":{"head":{"x":69.35,"y":6.43,"rotation":-89.53,"width":161,"height":153}},"l_arm1":{"l_arm1":{"x":15.39,"y":2,"rotation":53.74,"width":35,"height":40}},"l_arm2":{"l_arm2":{"x":22.93,"y":3.19,"rotation":-119.82,"width":40,"height":50},"l_arm3":{"x":22.93,"y":3.18,"rotation":-119.82,"width":40,"height":50}},"l_eye1":{"l_eye1":{"x":19.69,"y":2.03,"rotation":-97.59,"width":27,"height":27},"l_eye2":{"x":18.95,"y":2.13,"rotation":-97.59,"width":26,"height":22},"l_eye3":{"x":19.69,"y":2.03,"rotation":-97.59,"width":27,"height":14},"l_eye_happy":{"x":19.69,"y":2.03,"rotation":-97.59,"width":26,"height":12},"l_eye_sad":{"x":19.69,"y":2.03,"rotation":-97.59,"width":31,"height":18},"l_eye_surprised":{"x":19.69,"y":2.03,"rotation":-97.59,"width":27,"height":27},"l_eye_uneasy1":{"x":19.69,"y":2.03,"rotation":-97.59,"width":27,"height":27},"l_eye_uneasy2":{"x":19.69,"y":2.03,"rotation":-97.59,"width":27,"height":27}},"l_eyebrow":{"l_eyebrow":{"x":14.38,"y":-6.73,"width":31,"height":13},"l_eyebrow_happy":{"x":-20.11,"y":-11.23,"width":100,"height":22},"l_eyebrow_sad":{"x":13.26,"y":-6.73,"width":37,"height":18},"l_eyebrow_surprised":{"x":14.38,"y":-6.73,"width":27,"height":20},"l_eyebrow_uneasy":{"x":14.38,"y":-6.73,"width":32,"height":17}},"l_leg":{"l_leg":{"x":22.31,"y":-2.09,"rotation":90.54,"width":44,"height":68}},"mouth1":{"mouth1":{"x":34.58,"y":8.14,"rotation":-140.71,"width":39,"height":7},"mouth2":{"x":33.63,"y":9.3,"rotation":-140.71,"width":44,"height":10},"mouth3":{"x":33.16,"y":9.88,"rotation":-140.71,"width":45,"height":11},"mouth_happy":{"x":32.68,"y":10.46,"rotation":-140.71,"width":47,"height":14},"mouth_sad":{"x":32.44,"y":10.75,"rotation":-140.71,"width":46,"height":12},"mouth_surprised":{"x":33.16,"y":9.88,"rotation":-140.71,"width":46,"height":11}},"r_arm1":{"r_arm1":{"x":21.94,"y":0.1,"rotation":125.11,"width":44,"height":48}},"r_arm2":{"r_arm2":{"x":23.71,"y":1.85,"rotation":50.09,"width":46,"height":44}},"r_eye1":{"r_eye1":{"x":22.24,"y":-5.74,"rotation":-76.75,"width":36,"height":28},"r_eye2":{"x":21.23,"y":-6.36,"rotation":-76.75,"width":37,"height":27},"r_eye3":{"x":22.24,"y":-5.74,"rotation":-76.75,"width":34,"height":16},"r_eye_happy":{"x":22.24,"y":-5.74,"rotation":-76.75,"width":35,"height":13},"r_eye_sad":{"x":21.14,"y":-6,"rotation":-76.75,"width":34,"height":17},"r_eye_surprised":{"x":22.24,"y":-5.74,"rotation":-76.75,"width":36,"height":28},"r_eye_uneasy1":{"x":22.24,"y":-5.74,"rotation":-76.75,"width":36,"height":28},"r_eye_uneasy2":{"x":22.24,"y":-5.74,"rotation":-76.75,"width":36,"height":28}},"r_eyebrow":{"r_eyebrow":{"x":17.6,"y":12.29,"rotation":-179.99,"width":48,"height":22},"r_eyebrow_happy":{"x":13.1,"y":6.66,"rotation":-179.99,"width":39,"height":19},"r_eyebrow_sad":{"x":9.35,"y":8.54,"rotation":-179.99,"width":48,"height":19},"r_eyebrow_surprised":{"x":17.6,"y":12.29,"rotation":-179.99,"width":47,"height":27},"r_eyebrow_uneasy":{"x":17.6,"y":12.29,"rotation":-179.99,"width":48,"height":21}},"r_leg":{"r_leg":{"x":24.34,"y":3.7,"rotation":88.93,"width":55,"height":67}},"sunglass":{"sunglass":{"x":64.53,"y":-11.1,"rotation":-7.47,"width":129,"height":44}}}},"animations":{"action":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":1,"name":"l_eye3"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth3"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":1,"name":"r_eye3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":1.04},{"time":0.5,"angle":-0.85},{"time":1,"angle":1.04}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.54,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":3.25,"y":0},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":1.62,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-339.05},{"time":0.1666,"angle":-349.96},{"time":0.3333,"angle":-339.05},{"time":0.5,"angle":-349.96},{"time":0.6666,"angle":-339.05},{"time":0.8333,"angle":-349.96},{"time":1,"angle":-339.05}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-2.1},{"time":0.3333,"angle":0.51},{"time":0.5,"angle":-2.1},{"time":0.6666,"angle":0.51},{"time":0.8333,"angle":-2.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.16,"y":-0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.76},{"time":0.6666,"angle":0.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.54,"y":0},{"time":0.6666,"x":-1.35,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.5,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":0.5,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.5,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.5,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":0.5,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":2.86,"y":-0.26},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":2.86,"y":-0.26},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":8.09},{"time":0.5,"angle":0},{"time":0.7666,"angle":-11.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":0,"y":-1.96},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":0,"y":-2.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0},{"time":0.3333,"x":3.83,"y":0.03},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":3.83,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":-347.58},{"time":0.5,"angle":-3.32},{"time":0.7666,"angle":-347.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":-2.05,"y":2.01},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":-3.49,"y":1.59},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":1.3,"y":-0.1},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":0.65,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":-9.21},{"time":0.5,"angle":0},{"time":0.7666,"angle":-8.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":-3.4},{"time":0.5,"angle":0},{"time":0.7666,"angle":-5.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":1.3,"y":-0.1},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":0.65,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":11.25},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7666,"angle":-10.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":0,"y":3.26},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":-2.26},{"time":0.5,"angle":0},{"time":0.7666,"angle":5.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":-1.3,"y":0.1},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":-1.3,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"},{"time":1,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":3.28},{"time":0.5,"angle":0},{"time":0.7666,"angle":-4.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":0,"y":-2.22},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":0,"y":-2.22},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.65,"y":-0.02},{"time":0.6666,"x":0.09,"y":-1.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":1.3,"y":-0.06},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":1.3,"y":-0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":1.3,"y":-0.06},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":1.3,"y":-0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":-4.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":-4.63},{"time":0.5,"angle":0},{"time":0.7666,"angle":1.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1.3333,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-3.88,"y":-0.57},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":9.36,"curve":"stepped"},{"time":1.3333,"angle":9.36}],"translate":[{"time":0,"x":-4.74,"y":-2.33,"curve":"stepped"},{"time":1.3333,"x":-4.74,"y":-2.33}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-3.88,"y":-0.57},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":-18.08,"curve":"stepped"},{"time":1.3333,"angle":-18.08}],"translate":[{"time":0,"x":-2.69,"y":3.9,"curve":"stepped"},{"time":1.3333,"x":-2.69,"y":3.9}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":-3.12},{"time":0.3333,"angle":-6.39},{"time":0.6666,"angle":-7.92},{"time":1,"angle":-6.39},{"time":1.3333,"angle":-3.12}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-1.3},{"time":0.6666,"x":0,"y":-2.61},{"time":1,"x":0,"y":-1.3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-3.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-4.37,"y":-5.76,"curve":"stepped"},{"time":1.3333,"x":-4.37,"y":-5.76}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":7.75,"y":-0.09,"curve":"stepped"},{"time":0.6666,"x":7.75,"y":-0.09,"curve":"stepped"},{"time":1.3333,"x":7.75,"y":-0.09}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-3.24,"y":-0.4},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-1.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-1.29,"y":-0.18},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.18},{"time":0.6666,"angle":0},{"time":1,"angle":-4.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.22},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":-1.67},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":0.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6333,"angle":0},{"time":0.6666,"angle":2.38},{"time":0.7333,"angle":6.02},{"time":0.7666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6666,"x":-3.09,"y":-0.02},{"time":0.7333,"x":-6.7,"y":-0.17},{"time":0.7666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":0.7666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6333,"angle":0},{"time":0.6666,"angle":-2.97},{"time":0.7,"angle":-5.68},{"time":0.7666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6666,"x":-2.06,"y":-0.01},{"time":0.7,"x":-4.12,"y":-0.05},{"time":0.7666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.7,"x":1,"y":1,"curve":"stepped"},{"time":0.7666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-350.91},{"time":0.6666,"angle":0},{"time":1,"angle":-350.91},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-8.04,"y":-0.49},{"time":0.3333,"x":-9.16,"y":-0.24},{"time":0.6666,"x":-8.04,"y":-0.49},{"time":1,"x":-9.16,"y":-0.24},{"time":1.3333,"x":-8.04,"y":-0.49}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.966,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.966,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":-10.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.17},{"time":0.6666,"angle":0},{"time":1,"angle":2.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.11},{"time":0.6666,"angle":0},{"time":1,"angle":-0.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":0.6666,"name":"mouth_sad"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.7666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5666,"x":3.36,"y":0.18},{"time":0.7666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.7666,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.7666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5666,"x":3.36,"y":0.18},{"time":0.7666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.7666,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2666,"angle":2.79},{"time":0.5,"angle":0},{"time":0.7666,"angle":-4.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":1.98},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.34,"y":0.01},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":5.29},{"time":0.5,"angle":-9.05},{"time":1,"angle":5.29}],"translate":[{"time":0,"x":-11.23,"y":2.77},{"time":0.5,"x":-9.53,"y":-0.34},{"time":1,"x":-11.23,"y":2.77}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.34,"y":0.04},{"time":0.6666,"x":-1.34,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2666,"x":-1.34,"y":0.06},{"time":0.5,"x":0,"y":0},{"time":0.7666,"x":-1.34,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"talk":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth1"},{"time":0.3666,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.4333,"name":"mouth_happy"},{"time":0.4666,"name":"mouth2"},{"time":0.5333,"name":"mouth1"},{"time":0.5666,"name":"mouth_happy"},{"time":0.6333,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":0.7,"name":"mouth3"},{"time":0.7666,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.18},{"time":0.6666,"angle":0},{"time":1,"angle":-4.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.22},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":-1.67},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":0.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6333,"angle":0},{"time":0.6666,"angle":2.38},{"time":0.7333,"angle":6.02},{"time":0.7666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6666,"x":-3.09,"y":-0.02},{"time":0.7333,"x":-6.7,"y":-0.17},{"time":0.7666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":0.7666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6333,"angle":0},{"time":0.6666,"angle":-2.97},{"time":0.7,"angle":-5.68},{"time":0.7666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.6666,"x":-2.06,"y":-0.01},{"time":0.7,"x":-4.12,"y":-0.05},{"time":0.7666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.7,"x":1,"y":1,"curve":"stepped"},{"time":0.7666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-350.91},{"time":0.6666,"angle":0},{"time":1,"angle":-350.91},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-8.04,"y":-0.49},{"time":0.3333,"x":-9.16,"y":-0.24},{"time":0.6666,"x":-8.04,"y":-0.49},{"time":1,"x":-9.16,"y":-0.24},{"time":1.3333,"x":-8.04,"y":-0.49}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.966,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.966,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":-10.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.17},{"time":0.6666,"angle":0},{"time":1,"angle":2.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.11},{"time":0.6666,"angle":0},{"time":1,"angle":-0.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.5,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.5,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.5,"name":"mouth_sad"},{"time":1,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":0.5,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-0.76},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.62,"y":0.04},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-335.94},{"time":0.1666,"angle":-348.48},{"time":0.3333,"angle":-0.66},{"time":0.5,"angle":-16.86},{"time":1,"angle":-335.94}],"translate":[{"time":0,"x":-4.42,"y":-1.09,"curve":"stepped"},{"time":0.5,"x":-4.42,"y":-1.09,"curve":"stepped"},{"time":1,"x":-4.42,"y":-1.09}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.24,"y":0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-13.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.97,"y":-3.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/209101.png b/m78-all/m78-fe/public/images/character/209101.png new file mode 100644 index 000000000..2d9a74035 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/209101.png differ diff --git a/m78-all/m78-fe/public/images/character/209301.atlas b/m78-all/m78-fe/public/images/character/209301.atlas new file mode 100644 index 000000000..ebde90f0e --- /dev/null +++ b/m78-all/m78-fe/public/images/character/209301.atlas @@ -0,0 +1,328 @@ + +209301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +bandana + rotate: false + xy: 158, 147 + size: 173, 107 + orig: 173, 107 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 424, 175 + size: 86, 79 + orig: 86, 79 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 99 + size: 154, 155 + orig: 154, 155 + offset: 0, 0 + index: -1 +jacket + rotate: false + xy: 333, 165 + size: 89, 89 + orig: 89, 89 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 260, 63 + size: 43, 50 + orig: 43, 50 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 164, 13 + size: 44, 51 + orig: 44, 51 + offset: 0, 0 + index: -1 +l_arm3 + rotate: false + xy: 210, 14 + size: 40, 50 + orig: 40, 50 + offset: 0, 0 + index: -1 +l_bandana + rotate: true + xy: 260, 108 + size: 37, 61 + orig: 37, 61 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 374, 48 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 326, 2 + size: 26, 22 + orig: 26, 22 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 230, 69 + size: 27, 14 + orig: 27, 14 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: true + xy: 360, 26 + size: 26, 12 + orig: 26, 12 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 422, 86 + size: 31, 18 + orig: 31, 18 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 374, 19 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 374, 19 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 464, 96 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 293, 2 + size: 31, 13 + orig: 31, 13 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: false + xy: 158, 123 + size: 100, 22 + orig: 100, 22 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 472, 125 + size: 37, 18 + orig: 37, 18 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: true + xy: 338, 28 + size: 27, 20 + orig: 27, 20 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: true + xy: 445, 104 + size: 32, 17 + orig: 32, 17 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 2, 5 + size: 46, 71 + orig: 46, 71 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 164, 4 + size: 39, 7 + orig: 39, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 210, 2 + size: 44, 10 + orig: 44, 10 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 145, 52 + size: 45, 11 + orig: 45, 11 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 312, 57 + size: 47, 14 + orig: 47, 14 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 424, 138 + size: 46, 12 + orig: 46, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 361, 54 + size: 46, 11 + orig: 46, 11 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 323, 102 + size: 40, 45 + orig: 40, 45 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 252, 17 + size: 46, 44 + orig: 46, 44 + offset: 0, 0 + index: -1 +r_bandana + rotate: true + xy: 75, 8 + size: 43, 63 + orig: 43, 63 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 230, 85 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 370, 115 + size: 37, 27 + orig: 37, 27 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 404, 79 + size: 34, 16 + orig: 34, 16 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 256, 2 + size: 35, 13 + orig: 35, 13 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 409, 119 + size: 34, 17 + orig: 34, 17 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 474, 145 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 300, 27 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: true + xy: 374, 77 + size: 36, 28 + orig: 36, 28 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: true + xy: 140, 2 + size: 48, 22 + orig: 48, 22 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 383, 144 + size: 39, 19 + orig: 39, 19 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 333, 144 + size: 48, 19 + orig: 48, 19 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 312, 73 + size: 47, 27 + orig: 47, 27 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 424, 152 + size: 48, 21 + orig: 48, 21 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 158, 66 + size: 55, 70 + orig: 55, 70 + offset: 0, 0 + index: -1 +sunglass + rotate: false + xy: 2, 53 + size: 141, 44 + orig: 141, 44 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/209301.json b/m78-all/m78-fe/public/images/character/209301.json new file mode 100644 index 000000000..667e75109 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/209301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"Jv8Oxp0sWJ1usHc7ndi93dih0bc","spine":"3.5.25","width":175,"height":257,"images":"./209301/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":52.27,"rotation":90,"x":1.28,"y":47.76},{"name":"head","parent":"body1","length":131.48,"rotation":-0.46,"x":51.22,"y":1.06},{"name":"bandana","parent":"head","length":61.78,"rotation":0.46,"x":90.94,"y":-14.58},{"name":"eff_exclamation","parent":"root","length":21.16,"rotation":38.83,"x":67.17,"y":241.47},{"name":"eff_panic","parent":"root","length":19.32,"rotation":5.82,"x":86.47,"y":182.38},{"name":"eff_sad1","parent":"root","length":22.47,"rotation":-90,"x":-9.23,"y":144.32},{"name":"eff_sad2","parent":"root","length":19.99,"rotation":-88.21,"x":45.7,"y":141.83},{"name":"eff_star1","parent":"root","length":14.96,"rotation":30.7,"x":61.94,"y":92.33},{"name":"eff_star2","parent":"root","length":17.17,"rotation":163.69,"x":-65.09,"y":84.69},{"name":"eff_star3","parent":"root","length":14.26,"rotation":-21.5,"x":57.52,"y":52.53},{"name":"jacket","parent":"body1","length":22.18,"rotation":179.95,"x":13.2,"y":-3.7},{"name":"l_arm1","parent":"body1","length":39.29,"rotation":-143.75,"x":44.35,"y":-15.84},{"name":"l_arm2","parent":"l_arm1","length":45.65,"rotation":173.57,"x":39.03,"y":4.12},{"name":"l_bandana","parent":"bandana","length":52.52,"rotation":-170.16,"x":-45.41,"y":60.19},{"name":"l_eye","parent":"head","length":15.98,"rotation":8.05,"x":31.49,"y":-41.99},{"name":"l_eyebrow","parent":"head","length":30.1,"rotation":-89.54,"x":78.33,"y":-22.6},{"name":"l_leg","parent":"root","length":55.97,"rotation":-90.54,"x":17.65,"y":55.68},{"name":"mouth","parent":"head","length":22.51,"rotation":51.17,"x":6.12,"y":-38.5},{"name":"r_arm1","parent":"body1","length":41.31,"rotation":144.89,"x":49.63,"y":26.4},{"name":"r_arm2","parent":"r_arm1","length":37.86,"rotation":75.02,"x":36.08,"y":-1.74},{"name":"r_bandana","parent":"bandana","length":52.76,"rotation":161.93,"x":-41.18,"y":81.31},{"name":"r_eye","parent":"head","length":18.44,"rotation":-12.78,"x":29.33,"y":29.8},{"name":"r_eyebrow","parent":"head","length":35.9,"rotation":90.46,"x":79.16,"y":5.92},{"name":"r_leg","parent":"root","length":57.03,"rotation":-88.94,"x":-19.31,"y":55.15},{"name":"sunglass","parent":"head","length":32.48,"rotation":-82.07,"x":46.94,"y":72.19}],"slots":[{"name":"l_bandana","bone":"l_bandana","attachment":"l_bandana"},{"name":"r_bandana","bone":"r_bandana","attachment":"r_bandana"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"jacket","bone":"jacket","attachment":"jacket"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"bandana","bone":"bandana","attachment":"bandana"},{"name":"sunglass","bone":"sunglass","attachment":"sunglass"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"}],"skins":{"default":{"bandana":{"bandana":{"x":9.59,"y":26.69,"rotation":-90,"width":173,"height":107}},"body1":{"body1":{"x":22.62,"y":8.94,"rotation":-90,"width":86,"height":79}},"head":{"head":{"x":69.36,"y":6.44,"rotation":-89.54,"width":154,"height":155}},"jacket":{"jacket":{"x":-2.42,"y":-5.13,"rotation":90.05,"width":89,"height":89}},"l_arm1":{"l_arm1":{"x":15.4,"y":2.01,"rotation":53.75,"width":43,"height":50}},"l_arm2":{"l_arm2":{"x":20.29,"y":7.18,"rotation":-119.83,"width":44,"height":51},"l_arm3":{"x":20.2,"y":7.22,"rotation":-119.83,"width":40,"height":50}},"l_bandana":{"l_bandana":{"x":27.72,"y":1.79,"rotation":80.16,"width":37,"height":61}},"l_eye1":{"l_eye1":{"x":19.69,"y":2.04,"rotation":-97.59,"width":27,"height":27},"l_eye2":{"x":18.95,"y":2.13,"rotation":-97.59,"width":26,"height":22},"l_eye3":{"x":19.69,"y":2.04,"rotation":-97.59,"width":27,"height":14},"l_eye_happy":{"x":19.69,"y":2.04,"rotation":-97.59,"width":26,"height":12},"l_eye_sad":{"x":19.69,"y":2.04,"rotation":-97.59,"width":31,"height":18},"l_eye_surprised":{"x":19.69,"y":2.04,"rotation":-97.59,"width":27,"height":27},"l_eye_uneasy1":{"x":19.69,"y":2.04,"rotation":-97.59,"width":27,"height":27},"l_eye_uneasy2":{"x":19.69,"y":2.04,"rotation":-97.59,"width":27,"height":27}},"l_eyebrow":{"l_eyebrow":{"x":14.39,"y":-6.74,"width":31,"height":13},"l_eyebrow_happy":{"x":-20.11,"y":-11.24,"width":100,"height":22},"l_eyebrow_sad":{"x":13.26,"y":-6.74,"width":37,"height":18},"l_eyebrow_surprised":{"x":14.39,"y":-6.74,"width":27,"height":20},"l_eyebrow_uneasy":{"x":14.39,"y":-6.74,"width":32,"height":17}},"l_leg":{"l_leg":{"x":22.32,"y":-2.09,"rotation":90.54,"width":46,"height":71}},"mouth1":{"mouth1":{"x":34.59,"y":8.14,"rotation":-140.71,"width":39,"height":7},"mouth2":{"x":33.64,"y":9.31,"rotation":-140.71,"width":44,"height":10},"mouth3":{"x":33.16,"y":9.89,"rotation":-140.71,"width":45,"height":11},"mouth_happy":{"x":32.69,"y":10.47,"rotation":-140.71,"width":47,"height":14},"mouth_sad":{"x":32.45,"y":10.76,"rotation":-140.71,"width":46,"height":12},"mouth_surprised":{"x":33.16,"y":9.89,"rotation":-140.71,"width":46,"height":11}},"r_arm1":{"r_arm1":{"x":21.94,"y":0.1,"rotation":125.11,"width":40,"height":45}},"r_arm2":{"r_arm2":{"x":23.71,"y":1.86,"rotation":50.09,"width":46,"height":44}},"r_bandana":{"r_bandana":{"x":31.63,"y":-2.7,"rotation":108.07,"width":43,"height":63}},"r_eye1":{"r_eye1":{"x":22.24,"y":-5.75,"rotation":-76.76,"width":36,"height":28},"r_eye2":{"x":21.23,"y":-6.37,"rotation":-76.76,"width":37,"height":27},"r_eye3":{"x":22.24,"y":-5.75,"rotation":-76.76,"width":34,"height":16},"r_eye_happy":{"x":22.24,"y":-5.75,"rotation":-76.76,"width":35,"height":13},"r_eye_sad":{"x":21.15,"y":-6,"rotation":-76.76,"width":34,"height":17},"r_eye_surprised":{"x":22.24,"y":-5.75,"rotation":-76.76,"width":36,"height":28},"r_eye_uneasy1":{"x":22.24,"y":-5.75,"rotation":-76.76,"width":36,"height":28},"r_eye_uneasy2":{"x":22.24,"y":-5.75,"rotation":-76.76,"width":36,"height":28}},"r_eyebrow":{"r_eyebrow":{"x":17.6,"y":12.29,"rotation":-180,"width":48,"height":22},"r_eyebrow_happy":{"x":13.1,"y":6.67,"rotation":-180,"width":39,"height":19},"r_eyebrow_sad":{"x":9.35,"y":8.55,"rotation":-180,"width":48,"height":19},"r_eyebrow_surprised":{"x":17.6,"y":12.29,"rotation":-180,"width":47,"height":27},"r_eyebrow_uneasy":{"x":17.6,"y":12.29,"rotation":-180,"width":48,"height":21}},"r_leg":{"r_leg":{"x":24.34,"y":3.7,"rotation":88.94,"width":55,"height":70}},"sunglass":{"sunglass":{"x":64.53,"y":-11.1,"rotation":-7.47,"width":141,"height":44}}}},"animations":{"action":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":1,"name":"l_eye3"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6667,"name":"mouth3"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":1,"name":"r_eye3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":1.05},{"time":0.5,"angle":-0.85},{"time":1,"angle":1.05}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.54,"y":-0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":3.25,"y":-0.01},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":1.63,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-2.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.54,"y":-0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-339.05},{"time":0.1667,"angle":-349.96},{"time":0.3333,"angle":-339.05},{"time":0.5,"angle":-349.96},{"time":0.6667,"angle":-339.05},{"time":0.8333,"angle":-349.96},{"time":1,"angle":-339.05}],"translate":[{"time":0,"x":-6.9,"y":12.41,"curve":"stepped"},{"time":1,"x":-6.9,"y":12.41}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.1},{"time":0.3333,"angle":0.52},{"time":0.5,"angle":-2.1},{"time":0.6667,"angle":0.52},{"time":0.8333,"angle":-2.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.17,"y":-0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.76},{"time":0.6667,"angle":0.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.54,"y":0},{"time":0.6667,"x":-1.35,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.5,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":0.5,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.5,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.5,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":0.5,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.86,"y":-0.27},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.86,"y":-0.27},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.1},{"time":0.5,"angle":0},{"time":0.7667,"angle":-11.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.96},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":3.84,"y":0.03},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":3.84,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":347.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-12.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-347.59},{"time":0.5,"angle":-3.32},{"time":0.7667,"angle":-347.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-2.06,"y":2.01},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-3.49,"y":1.59},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.3,"y":-0.1},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.65,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-9.22},{"time":0.5,"angle":0},{"time":0.7667,"angle":-8.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.41},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.3,"y":-0.1},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.65,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.3,"y":-0.07},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":1.3,"y":0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":11.25},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-10.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":3.27},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.26},{"time":0.5,"angle":0},{"time":0.7667,"angle":5.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.3,"y":0.1},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.3,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"},{"time":1,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.29},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.23},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.23},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.03,"y":1},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.65,"y":-0.02},{"time":0.6667,"x":0.09,"y":-1.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.31,"y":-0.06},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.31,"y":-0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.31,"y":-0.06},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.31,"y":-0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":350.14},{"time":0.6667,"angle":-8.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-12.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-351.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.64},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.8333,"name":"l_eye_sad"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.8333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":0.8333,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.8333,"name":"r_eye_sad"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.8333,"name":"r_eyebrow_sad"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-3.89,"y":-0.57},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":9.36,"curve":"stepped"},{"time":0.8333,"angle":9.36}],"translate":[{"time":0,"x":-4.75,"y":-2.34,"curve":"stepped"},{"time":0.8333,"x":-4.75,"y":-2.34}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-3.89,"y":-0.57},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":-18.09,"curve":"stepped"},{"time":0.8333,"angle":-18.09}],"translate":[{"time":0,"x":-2.69,"y":3.91,"curve":"stepped"},{"time":0.8333,"x":-2.69,"y":3.91}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":-3.13},{"time":0.1667,"angle":-6.4},{"time":0.3333,"angle":-7.92},{"time":0.6667,"angle":-6.4},{"time":0.8333,"angle":-3.13}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":-1.31},{"time":0.3333,"x":0,"y":-2.62},{"time":0.6667,"x":0,"y":-1.31},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.09},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.18},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.31},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.3,"y":-0.19},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.9},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-3.25,"y":-0.41},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-359.2},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.12,"y":-1.48},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.81},{"time":0.8333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.3,"y":-0.18},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1}]}}},"stand":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.18},{"time":0.6667,"angle":0},{"time":1,"angle":-4.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.23},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.67},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.032,"y":1},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":0.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7333,"x":-3.38,"y":-0.09},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7333,"x":-3.38,"y":-0.09},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-4.42},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-7.24},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-352.93,"curve":"stepped"},{"time":0.8333,"angle":-352.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-5.19,"y":-2.67},{"time":0.3333,"x":-7.03,"y":-2.27,"curve":"stepped"},{"time":0.8333,"x":-7.03,"y":-2.27},{"time":1.3333,"x":-5.19,"y":-2.67}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.17},{"time":0.6667,"angle":0},{"time":1,"angle":2.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-359.32},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.11},{"time":0.6667,"angle":0},{"time":1,"angle":-0.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":0.6667,"name":"mouth_sad"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5667,"x":3.36,"y":0.18},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5667,"x":3.36,"y":0.18},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.79},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":1.98},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.032,"y":1},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.35,"y":0.01},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.81},{"time":0.5,"angle":0},{"time":0.6667,"angle":347.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.01},{"time":0.5,"angle":0},{"time":0.6667,"angle":-8.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":0.8},{"time":0.5,"angle":0},{"time":0.7667,"angle":-0.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.67,"y":0.03},{"time":0.5,"x":2.02,"y":0.02},{"time":0.7667,"x":-0.67,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-18.06},{"time":0.3333,"angle":-351.13},{"time":0.6667,"angle":-18.87},{"time":1,"angle":-18.06}],"translate":[{"time":0,"x":-6.06,"y":1.22,"curve":"stepped"},{"time":1,"x":-6.06,"y":1.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.35,"y":0.05},{"time":0.6667,"x":-1.35,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.35,"y":0.07},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.35,"y":0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.67,"y":0.03},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.67,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.5,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.5,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.5,"name":"mouth_sad"},{"time":1,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":0.5,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-0.77},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.62,"y":0.04},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":-2.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bandana":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":0.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.62,"y":0.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.18},{"time":0.3333,"angle":-0.67},{"time":0.5,"angle":2.35},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.32,"y":-1.19,"curve":"stepped"},{"time":0.5,"x":-2.32,"y":-1.19,"curve":"stepped"},{"time":1,"x":-2.32,"y":-1.19}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.25,"y":0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"jacket":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.94,"curve":"stepped"},{"time":0.6667,"angle":-1.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.84,"y":0.72,"curve":"stepped"},{"time":0.5,"x":-1.84,"y":0.72,"curve":"stepped"},{"time":0.6667,"x":-1.84,"y":0.72},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/209301.png b/m78-all/m78-fe/public/images/character/209301.png new file mode 100644 index 000000000..0eb4668fa Binary files /dev/null and b/m78-all/m78-fe/public/images/character/209301.png differ diff --git a/m78-all/m78-fe/public/images/character/210101.atlas b/m78-all/m78-fe/public/images/character/210101.atlas new file mode 100644 index 000000000..2bb1a52b2 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/210101.atlas @@ -0,0 +1,342 @@ + +210101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_hair + rotate: false + xy: 172, 107 + size: 159, 147 + orig: 159, 147 + offset: 0, 0 + index: -1 +body1 + rotate: true + xy: 252, 68 + size: 37, 44 + orig: 37, 44 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 118, 45 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 333, 123 + size: 106, 131 + orig: 106, 131 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 97 + size: 168, 157 + orig: 168, 157 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 330, 39 + size: 20, 29 + orig: 20, 29 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 332, 61 + size: 41, 30 + orig: 41, 30 + offset: 0, 0 + index: -1 +l_body + rotate: true + xy: 333, 93 + size: 28, 80 + orig: 28, 80 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 48, 2 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 82, 2 + size: 34, 29 + orig: 34, 29 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 500, 143 + size: 28, 10 + orig: 28, 10 + offset: 0, 0 + index: -1 +l_eye_surprised2 + rotate: true + xy: 500, 143 + size: 28, 10 + orig: 28, 10 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 483, 100 + size: 27, 16 + orig: 27, 16 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 333, 22 + size: 29, 15 + orig: 29, 15 + offset: 0, 0 + index: -1 +l_eye_surprised1 + rotate: false + xy: 375, 59 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 252, 34 + size: 30, 32 + orig: 30, 32 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 487, 121 + size: 29, 11 + orig: 29, 11 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: true + xy: 487, 121 + size: 29, 11 + orig: 29, 11 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 436, 60 + size: 30, 14 + orig: 30, 14 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 298, 39 + size: 30, 20 + orig: 30, 20 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 298, 24 + size: 33, 13 + orig: 33, 13 + offset: 0, 0 + index: -1 +l_hair + rotate: true + xy: 2, 38 + size: 57, 114 + orig: 57, 114 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 207, 45 + size: 20, 38 + orig: 20, 38 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 483, 94 + size: 18, 4 + orig: 18, 4 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 361, 43 + size: 16, 9 + orig: 16, 9 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 413, 58 + size: 21, 18 + orig: 21, 18 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 152, 22 + size: 19, 6 + orig: 19, 6 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 165, 85 + size: 10, 5 + orig: 10, 5 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 152, 2 + size: 20, 18 + orig: 20, 18 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: true + xy: 247, 56 + size: 9, 3 + orig: 9, 3 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 415, 78 + size: 24, 43 + orig: 24, 43 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 493, 173 + size: 38, 17 + orig: 38, 17 + offset: 0, 0 + index: -1 +r_body + rotate: true + xy: 172, 67 + size: 38, 78 + orig: 38, 78 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 441, 118 + size: 44, 32 + orig: 44, 32 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 441, 91 + size: 40, 25 + orig: 40, 25 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 211, 32 + size: 39, 11 + orig: 39, 11 + offset: 0, 0 + index: -1 +r_eye_surprised2 + rotate: false + xy: 211, 32 + size: 39, 11 + orig: 39, 11 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 165, 43 + size: 40, 22 + orig: 40, 22 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: true + xy: 284, 34 + size: 32, 12 + orig: 32, 12 + offset: 0, 0 + index: -1 +r_eye_surprised1 + rotate: true + xy: 298, 61 + size: 44, 32 + orig: 44, 32 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: false + xy: 2, 2 + size: 44, 34 + orig: 44, 34 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 441, 76 + size: 43, 13 + orig: 43, 13 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 441, 76 + size: 43, 13 + orig: 43, 13 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 118, 30 + size: 41, 13 + orig: 41, 13 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: true + xy: 493, 213 + size: 41, 17 + orig: 41, 17 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 161, 32 + size: 48, 9 + orig: 48, 9 + offset: 0, 0 + index: -1 +r_hair + rotate: false + xy: 441, 152 + size: 50, 102 + orig: 50, 102 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 113, 7 + size: 21, 37 + orig: 21, 37 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/210101.json b/m78-all/m78-fe/public/images/character/210101.json new file mode 100644 index 000000000..fce5c014e --- /dev/null +++ b/m78-all/m78-fe/public/images/character/210101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"z5y5uO+tyh0Ji7n9vFMpnSfhl8w","spine":"3.5.25","width":183.62,"height":239.81,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":40.02,"rotation":-88.2,"x":0.55,"y":93.23},{"name":"head","parent":"body1","length":135.46,"rotation":178.73,"x":-0.89,"y":1.92},{"name":"b_hair","parent":"head","length":110.37,"rotation":-177.92,"x":77.58,"y":9.67},{"name":"body2","parent":"body1","length":43.79,"rotation":-2.63,"x":28.4,"y":1},{"name":"eff_exclamation","parent":"root","length":21.56,"rotation":40.91,"x":78.29,"y":220.1},{"name":"eff_panic","parent":"root","length":24.05,"rotation":-6.48,"x":95.13,"y":145.71},{"name":"eff_sad1","parent":"root","length":17.41,"rotation":-93.58,"x":-19.17,"y":118.5},{"name":"eff_sad2","parent":"root","length":19.55,"rotation":-90,"x":39.64,"y":123.4},{"name":"eff_star1","parent":"root","length":17.86,"rotation":19.54,"x":81.55,"y":69.69},{"name":"eff_star2","parent":"root","length":25.27,"rotation":171.35,"x":-71.03,"y":65.89},{"name":"eff_star3","parent":"root","length":19.5,"rotation":-12.88,"x":69.61,"y":17.02},{"name":"f_hair","parent":"head","length":73.26,"rotation":-74.05,"x":104.75,"y":17.61},{"name":"l_arm1","parent":"body1","length":25.79,"rotation":26.64,"x":6.54,"y":7.67},{"name":"l_arm2","parent":"l_arm1","length":32.21,"rotation":-109.44,"x":21.99,"y":4.21},{"name":"l_body","parent":"body1","length":66.86,"rotation":10.99,"x":4.41,"y":9.95},{"name":"l_eye","parent":"head","length":13.48,"rotation":142.06,"x":53.14,"y":-44.28},{"name":"l_eyeball","parent":"head","length":9.53,"rotation":7.06,"x":17.95,"y":-34.5},{"name":"l_eyebrow","parent":"head","length":19.97,"rotation":-84.19,"x":68.77,"y":-23.01},{"name":"l_hair","parent":"head","length":110.58,"rotation":175.06,"x":56.18,"y":-56.59},{"name":"l_leg","parent":"root","length":33.71,"rotation":-91.32,"x":6.85,"y":34.96},{"name":"mouth","parent":"head","length":10.66,"rotation":33.63,"x":1.41,"y":-17.65},{"name":"r_arm1","parent":"body1","length":26.36,"rotation":22.92,"x":9.25,"y":-16.36},{"name":"r_arm2","parent":"r_arm1","length":30.88,"rotation":67.03,"x":19.69,"y":-3.17},{"name":"r_body","parent":"body1","length":65.26,"rotation":-10.13,"x":4.63,"y":-13.07},{"name":"r_eye","parent":"head","length":13.68,"rotation":-151.61,"x":50.44,"y":37.96},{"name":"r_eyeball","parent":"head","length":9.64,"rotation":-11.84,"x":16.59,"y":22.21},{"name":"r_eyebrow","parent":"head","length":20.8,"rotation":87.73,"x":69.46,"y":17.31},{"name":"r_hair","parent":"head","length":87.26,"rotation":-170.76,"x":29.96,"y":71.86},{"name":"r_leg","parent":"root","length":33.13,"rotation":-86.98,"x":-7.64,"y":34.33}],"slots":[{"name":"b_hair","bone":"b_hair","attachment":"b_hair"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"l_body","bone":"l_body","attachment":"l_body"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_body","bone":"r_body","attachment":"r_body"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_surprised2"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_surprised2"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"}],"skins":{"default":{"b_hair":{"b_hair":{"x":71.46,"y":-3.16,"rotation":87.38,"width":159,"height":147}},"body1":{"body1":{"x":19.5,"y":-1.06,"rotation":88.2,"width":37,"height":44}},"body2":{"body2":{"x":19.75,"y":-0.74,"rotation":90.82,"width":45,"height":50}},"f_hair":{"f_hair":{"x":38.06,"y":-38.32,"rotation":-16.49,"width":106,"height":131}},"head":{"head":{"x":62.34,"y":17.25,"rotation":-90.53,"width":168,"height":157}},"l_arm1":{"l_arm1":{"x":14.61,"y":0.57,"rotation":61.56,"width":20,"height":29}},"l_arm2":{"l_arm2":{"x":13.17,"y":4.23,"rotation":171,"width":41,"height":30}},"l_body":{"l_body":{"x":39.51,"y":-1.66,"rotation":77.21,"width":28,"height":80}},"l_eye1":{"l_eye1":{"x":16.78,"y":1.69,"rotation":127.41,"width":34,"height":32},"l_eye2":{"x":16.86,"y":0.55,"rotation":127.41,"width":34,"height":29},"l_eye3":{"x":20.05,"y":4.19,"rotation":127.41,"width":28,"height":10},"l_eye_happy":{"x":18.29,"y":2.84,"rotation":127.41,"width":27,"height":16},"l_eye_sad":{"x":18.04,"y":2.65,"rotation":127.41,"width":29,"height":15},"l_eye_surprised1":{"x":17.36,"y":0.93,"rotation":127.41,"width":36,"height":32},"l_eye_surprised2":{"x":20.05,"y":4.19,"rotation":127.41,"width":28,"height":10},"l_eye_uneasy":{"x":14.27,"y":1.35,"rotation":127.41,"width":30,"height":32}},"l_eyebrow":{"l_eyebrow":{"x":12.89,"y":-10.91,"rotation":-6.34,"width":29,"height":11},"l_eyebrow_happy":{"x":12.89,"y":-10.91,"rotation":-6.34,"width":29,"height":11},"l_eyebrow_sad":{"x":12.89,"y":-10.91,"rotation":-6.34,"width":30,"height":14},"l_eyebrow_surprised":{"x":12.89,"y":-10.91,"rotation":-6.34,"width":30,"height":20},"l_eyebrow_uneasy":{"x":12.89,"y":-10.91,"rotation":-6.34,"width":33,"height":13}},"l_hair":{"l_hair":{"x":57.91,"y":-1.92,"rotation":94.41,"width":57,"height":114}},"l_leg":{"l_leg":{"x":17.45,"y":-1.28,"rotation":91.32,"width":20,"height":38}},"mouth1":{"mouth1":{"x":15.93,"y":4.16,"rotation":-124.16,"width":18,"height":4},"mouth2":{"x":17.31,"y":2,"rotation":-124.16,"width":16,"height":9},"mouth3":{"x":12.54,"y":4.04,"rotation":-124.16,"width":21,"height":18},"mouth_happy":{"x":16.53,"y":3.75,"rotation":-124.16,"width":19,"height":6},"mouth_sad":{"x":14.16,"y":1.56,"rotation":-124.16,"width":10,"height":5},"mouth_surprised":{"x":16.91,"y":-0.57,"rotation":-124.16,"width":20,"height":18},"mouth_uneasy":{"x":15.17,"y":3.04,"rotation":-124.16,"width":9,"height":3}},"r_arm1":{"r_arm1":{"x":13.14,"y":-1.58,"rotation":65.27,"width":24,"height":43}},"r_arm2":{"r_arm2":{"x":14.51,"y":-0.52,"rotation":-1.75,"width":38,"height":17}},"r_body":{"r_body":{"x":36.41,"y":2.19,"rotation":98.33,"width":38,"height":78}},"r_eye1":{"r_eye1":{"x":19.1,"y":8.43,"rotation":61.07,"width":44,"height":32},"r_eye2":{"x":19,"y":6.05,"rotation":61.07,"width":40,"height":25},"r_eye3":{"x":21.59,"y":3.9,"rotation":61.07,"width":39,"height":11},"r_eye_happy":{"x":25.98,"y":11.19,"rotation":61.07,"width":40,"height":22},"r_eye_sad":{"x":23.79,"y":5.93,"rotation":61.07,"width":32,"height":12},"r_eye_surprised1":{"x":19.29,"y":8.41,"rotation":61.07,"width":44,"height":32},"r_eye_surprised2":{"x":23.79,"y":5.93,"rotation":61.07,"width":39,"height":11},"r_eye_uneasy":{"x":16.13,"y":10.16,"rotation":61.07,"width":44,"height":34}},"r_eyebrow":{"r_eyebrow":{"x":3.83,"y":10.73,"rotation":-178.26,"width":43,"height":13},"r_eyebrow_happy":{"x":3.83,"y":10.73,"rotation":-178.26,"width":43,"height":13},"r_eyebrow_sad":{"x":3.83,"y":10.73,"rotation":-178.26,"width":41,"height":13},"r_eyebrow_surprised":{"x":3.83,"y":10.73,"rotation":-178.26,"width":41,"height":17},"r_eyebrow_uneasy":{"x":3.83,"y":10.73,"rotation":-178.26,"width":48,"height":9}},"r_hair":{"r_hair":{"x":46.02,"y":8.57,"rotation":80.23,"width":50,"height":102}},"r_leg":{"r_leg":{"x":17.32,"y":-0.44,"rotation":86.98,"width":21,"height":37}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.2667,"name":"l_eye2"},{"time":0.3333,"name":"l_eye3"},{"time":0.6667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.6667,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.2667,"name":"r_eye2"},{"time":0.3333,"name":"r_eye3"},{"time":0.6667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.83},{"time":0.5,"angle":2.51},{"time":0.7667,"angle":0.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.89},{"time":0.5,"angle":-0.04},{"time":0.7667,"angle":0.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":36.97,"curve":"stepped"},{"time":0.6667,"angle":36.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":36.13,"curve":"stepped"},{"time":0.6667,"angle":36.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.08,"curve":"stepped"},{"time":0.6667,"angle":10.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":266.05,"curve":"stepped"},{"time":0.6667,"angle":266.05},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.87,"y":-6.63,"curve":"stepped"},{"time":0.6667,"x":2.87,"y":-6.63},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.58,"y":-0.48,"curve":"stepped"},{"time":0.6667,"x":-0.58,"y":-0.48},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1,"y":0.63,"curve":"stepped"},{"time":0.6667,"x":-1,"y":0.63},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-347.2,"curve":"stepped"},{"time":0.6667,"angle":-347.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-5.41,"curve":"stepped"},{"time":0.5,"angle":-5.41},{"time":0.7333,"angle":-6.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-8.47},{"time":0.6667,"angle":346.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4667,"angle":-7.71},{"time":0.7667,"angle":-7.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":351.42},{"time":0.7333,"angle":350.33},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3667,"x":-3.32,"y":0.15,"curve":"stepped"},{"time":0.6,"x":-3.32,"y":0.15},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3667,"x":-3.32,"y":0.15,"curve":"stepped"},{"time":0.6,"x":-3.32,"y":0.15},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.9},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-4.6,"y":-2.88},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":7.47,"y":-3.45},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-0.24},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.8333,"angle":13.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.06},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.03},{"time":0.5,"angle":-1.65},{"time":0.8333,"angle":0.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.97},{"time":0.5,"angle":0},{"time":0.8333,"angle":2.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-356.66},{"time":0.5,"angle":0},{"time":0.7333,"angle":-4.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.72,"y":-0.18},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":2.3,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.69},{"time":0.5,"angle":-4.07},{"time":0.8,"angle":-6.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-6.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2,"angle":0.43},{"time":0.6,"angle":-4.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":356.38},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye_happy"},{"time":1,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1,"name":"mouth3"},{"time":0.1667,"name":"mouth2"},{"time":0.3,"name":"mouth3"},{"time":0.3667,"name":"mouth1"},{"time":0.7333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye_happy"},{"time":1,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.32},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.32},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.65},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-1.72},{"time":0.2333,"angle":20.67,"curve":"stepped"},{"time":0.5,"angle":20.67},{"time":0.7667,"angle":-1.72,"curve":"stepped"},{"time":1,"angle":-1.72}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":8.82},{"time":0.1,"angle":4.82},{"time":0.2333,"angle":31.21,"curve":"stepped"},{"time":0.5,"angle":31.21},{"time":0.5667,"angle":37.14},{"time":0.7667,"angle":8.82,"curve":"stepped"},{"time":1,"angle":8.82}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-14.38,"curve":"stepped"},{"time":0.5,"angle":-14.38,"curve":"stepped"},{"time":1,"angle":-14.38}],"translate":[{"time":0,"x":2.03,"y":-2.36,"curve":"stepped"},{"time":0.5,"x":2.03,"y":-2.36,"curve":"stepped"},{"time":1,"x":2.03,"y":-2.36}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.95},{"time":0.5,"angle":0},{"time":0.7667,"angle":1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.46},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.77},{"time":0.5,"angle":0},{"time":0.7667,"angle":-356.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.19},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":2.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.54},{"time":0.6667,"angle":1.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.3,"y":0.09},{"time":0.5,"x":0,"y":0},{"time":0.5667,"x":-4.72,"y":0.11,"curve":"stepped"},{"time":0.9333,"x":-4.72,"y":0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.3,"y":0.09},{"time":0.5,"x":0,"y":0},{"time":0.5667,"x":-4.72,"y":0.11,"curve":"stepped"},{"time":0.9333,"x":-4.72,"y":0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.5,"name":"l_eyebrow_sad"},{"time":1,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.5,"name":"r_eyebrow_sad"},{"time":1,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-5.68},{"time":0.4,"angle":-12.87},{"time":0.9333,"angle":-16.63},{"time":1.3333,"angle":-5.68}],"translate":[{"time":0,"x":-0.2,"y":-1.15},{"time":0.4,"x":10.58,"y":-2.53},{"time":0.9333,"x":10.33,"y":-1.57},{"time":1.3333,"x":-0.2,"y":-1.15}],"scale":[{"time":0,"x":1.017,"y":1.017},{"time":0.4,"x":1,"y":1},{"time":1.3333,"x":1.017,"y":1.017}]},"body2":{"rotate":[{"time":0,"angle":7.14},{"time":0.4,"angle":4.32},{"time":0.9333,"angle":13.31},{"time":1.3333,"angle":7.14}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":2.8,"y":0.64,"curve":"stepped"},{"time":0.3333,"x":2.8,"y":0.64},{"time":0.6,"x":4.48,"y":1.02,"curve":"stepped"},{"time":0.8333,"x":4.48,"y":1.02},{"time":1.3333,"x":2.8,"y":0.64}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":37.33,"curve":"stepped"},{"time":0.6667,"angle":37.33,"curve":"stepped"},{"time":1.3333,"angle":37.33}],"translate":[{"time":0,"x":0.68,"y":1.95,"curve":"stepped"},{"time":0.6667,"x":0.68,"y":1.95,"curve":"stepped"},{"time":1.3333,"x":0.68,"y":1.95}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":2.8,"y":0.64,"curve":"stepped"},{"time":0.3333,"x":2.8,"y":0.64},{"time":0.6,"x":4.48,"y":1.02,"curve":"stepped"},{"time":0.8333,"x":4.48,"y":1.02},{"time":1.3333,"x":2.8,"y":0.64}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-33.46,"curve":"stepped"},{"time":0.6667,"angle":-33.46,"curve":"stepped"},{"time":1.3333,"angle":-33.46}],"translate":[{"time":0,"x":1.92,"y":-1.32,"curve":"stepped"},{"time":0.6667,"x":1.92,"y":-1.32,"curve":"stepped"},{"time":1.3333,"x":1.92,"y":-1.32}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":2.25},{"time":0.6667,"angle":7.86},{"time":1.3333,"angle":2.25}],"translate":[{"time":0,"x":-1.35,"y":-0.31,"curve":"stepped"},{"time":1.3333,"x":-1.35,"y":-0.31}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":11.52},{"time":0.6667,"angle":9.38},{"time":1,"angle":16.07},{"time":1.3333,"angle":11.52}],"translate":[{"time":0,"x":1.17,"y":0.08},{"time":0.6667,"x":2.96,"y":-1.31},{"time":1,"x":4.46,"y":-1.71},{"time":1.3333,"x":1.17,"y":0.08}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-353.49},{"time":0.1667,"angle":-352.59},{"time":0.6667,"angle":-4.22},{"time":1,"angle":-357.3},{"time":1.3333,"angle":-353.49}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":2.14,"y":0.49},{"time":1,"x":2.65,"y":0.66},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":-10.11},{"time":0.5333,"angle":-15.91},{"time":0.8,"angle":-17.18},{"time":1.3333,"angle":-10.11}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":-1.86},{"time":0.6667,"angle":10.29},{"time":1.3333,"angle":-1.86}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":-1.37},{"time":0.2667,"angle":-0.27},{"time":0.6667,"angle":-346.39},{"time":1.3333,"angle":-1.37}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":4.4,"y":1.47},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":-1.05},{"time":0.3333,"angle":2.57},{"time":0.6667,"angle":8.31},{"time":1.3333,"angle":-1.05}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-9.16,"y":5.7,"curve":"stepped"},{"time":1,"x":-9.16,"y":5.7},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-8.1,"y":-4.13,"curve":"stepped"},{"time":1,"x":-8.1,"y":-4.13},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.66,"y":0.06,"curve":"stepped"},{"time":0.8333,"x":-1.66,"y":0.06},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-1.71},{"time":0.3333,"angle":-4.24},{"time":0.6667,"angle":-2.06},{"time":1,"angle":-0.56},{"time":1.3333,"angle":-1.71}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.56},{"time":0.6667,"x":0,"y":1.02},{"time":1,"x":0,"y":-3.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":1.3},{"time":0.3333,"angle":-4.49},{"time":0.6667,"angle":2.9},{"time":1,"angle":6.78},{"time":1.3333,"angle":1.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":-0.23},{"time":0.3333,"angle":-1.08},{"time":1,"angle":5.05},{"time":1.3333,"angle":-0.23}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.54,"y":0},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":6.52},{"time":0.3333,"angle":2.49},{"time":1,"angle":10.86},{"time":1.3333,"angle":6.52}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.54,"y":0.54},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.15},{"time":0.6667,"angle":0},{"time":1,"angle":-355.95},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.08,"y":0.01},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.54,"y":-0.01},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4667,"angle":3.68},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":7.73},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":4.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":3.3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5667,"x":-4.64,"y":-0.39},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5667,"x":-4.64,"y":-0.39},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised1"},{"time":0.6667,"name":"l_eye_surprised2"},{"time":0.7333,"name":"l_eye_surprised1"},{"time":1,"name":"l_eye_surprised1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised1"},{"time":0.6667,"name":"r_eye_surprised2"},{"time":0.7333,"name":"r_eye_surprised1"},{"time":1,"name":"r_eye_surprised1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.16},{"time":0.5,"angle":6.84,"curve":"stepped"},{"time":0.7667,"angle":6.84},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-3.85},{"time":0.5,"x":-4.4,"y":1.1,"curve":"stepped"},{"time":0.7667,"x":-4.4,"y":1.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.16},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":36.21,"curve":"stepped"},{"time":0.8333,"angle":36.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":36.21,"curve":"stepped"},{"time":0.8333,"angle":36.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":272.06,"curve":"stepped"},{"time":0.8333,"angle":272.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":1.37,"curve":"stepped"},{"time":0.8333,"angle":1.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.38,"curve":"stepped"},{"time":0.8333,"angle":-2.38},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-354.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.043,"y":1.043},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.18},{"time":0.6,"angle":8.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":1.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":4,"y":0.2,"curve":"stepped"},{"time":0.6667,"x":4,"y":0.2},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":4,"y":0.2,"curve":"stepped"},{"time":0.6667,"x":4,"y":0.2},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.4333,"name":"l_eye_surprised2"},{"time":1,"name":"l_eye_uneasy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.1667,"name":"l_eyebrow_uneasy"},{"time":0.5333,"name":"l_eyebrow_uneasy"},{"time":0.8667,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.3333,"name":"mouth_uneasy"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.4333,"name":"r_eye_surprised2"},{"time":1,"name":"r_eye_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.67},{"time":0.7667,"angle":-6.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-3.88,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":6.47,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":62.6,"curve":"stepped"},{"time":0.5,"angle":62.6,"curve":"stepped"},{"time":1,"angle":62.6}],"translate":[{"time":0,"x":1.56,"y":1.48,"curve":"stepped"},{"time":0.5,"x":1.56,"y":1.48,"curve":"stepped"},{"time":1,"x":1.56,"y":1.48}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.28},{"time":0.6667,"angle":1.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.06},{"time":0.7667,"angle":-1.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body":{"rotate":[{"time":0,"angle":1.79},{"time":0.3333,"angle":4.29},{"time":0.7667,"angle":3.45},{"time":1,"angle":1.79}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-355.7},{"time":0.7667,"angle":-2.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.69},{"time":0.6667,"angle":-2.86},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.5},{"time":0.7333,"angle":-0.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5333,"angle":-3.17},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5333,"angle":2.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5333,"x":-4.26,"y":2.67,"curve":"stepped"},{"time":0.8667,"x":-4.26,"y":2.67},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1,"curve":"stepped"},{"time":0.8667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5,"x":-4.98,"y":-3.28,"curve":"stepped"},{"time":0.8333,"x":-4.98,"y":-3.28},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/210101.png b/m78-all/m78-fe/public/images/character/210101.png new file mode 100644 index 000000000..612514878 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/210101.png differ diff --git a/m78-all/m78-fe/public/images/character/210201.atlas b/m78-all/m78-fe/public/images/character/210201.atlas new file mode 100644 index 000000000..298fb2803 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/210201.atlas @@ -0,0 +1,391 @@ + +210201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_hair + rotate: false + xy: 285, 164 + size: 111, 90 + orig: 111, 90 + offset: 0, 0 + index: -1 +body1 + rotate: true + xy: 223, 48 + size: 34, 38 + orig: 34, 38 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 398, 196 + size: 71, 58 + orig: 71, 58 + offset: 0, 0 + index: -1 +braid_hair1 + rotate: true + xy: 177, 84 + size: 37, 83 + orig: 37, 83 + offset: 0, 0 + index: -1 +braid_hair2 + rotate: false + xy: 98, 20 + size: 56, 60 + orig: 56, 60 + offset: 0, 0 + index: -1 +f_hair1 + rotate: false + xy: 177, 123 + size: 106, 131 + orig: 106, 131 + offset: 0, 0 + index: -1 +f_hair2 + rotate: true + xy: 2, 7 + size: 73, 94 + orig: 73, 94 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 82 + size: 173, 172 + orig: 173, 172 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 443, 163 + size: 26, 31 + orig: 26, 31 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 311, 87 + size: 34, 27 + orig: 34, 27 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 398, 158 + size: 43, 36 + orig: 43, 36 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 336, 126 + size: 44, 36 + orig: 44, 36 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 306, 55 + size: 28, 11 + orig: 28, 11 + offset: 0, 0 + index: -1 +l_eye_surprised2 + rotate: true + xy: 306, 55 + size: 28, 11 + orig: 28, 11 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 211, 2 + size: 28, 22 + orig: 28, 22 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 298, 11 + size: 29, 15 + orig: 29, 15 + offset: 0, 0 + index: -1 +l_eye_surprised1 + rotate: false + xy: 182, 46 + size: 39, 36 + orig: 39, 36 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 262, 85 + size: 47, 36 + orig: 47, 36 + offset: 0, 0 + index: -1 +l_eyeball1 + rotate: true + xy: 144, 2 + size: 16, 21 + orig: 16, 21 + offset: 0, 0 + index: -1 +l_eyeball2 + rotate: true + xy: 156, 20 + size: 17, 21 + orig: 17, 21 + offset: 0, 0 + index: -1 +l_eyeball_surprised + rotate: true + xy: 441, 124 + size: 12, 18 + orig: 12, 18 + offset: 0, 0 + index: -1 +l_eyeball_uneasy + rotate: true + xy: 273, 2 + size: 24, 23 + orig: 24, 23 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 430, 89 + size: 33, 22 + orig: 33, 22 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: true + xy: 430, 89 + size: 33, 22 + orig: 33, 22 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 380, 85 + size: 34, 21 + orig: 34, 21 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 241, 2 + size: 30, 23 + orig: 30, 23 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 182, 26 + size: 34, 18 + orig: 34, 18 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 340, 103 + size: 21, 38 + orig: 21, 38 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 319, 59 + size: 19, 9 + orig: 19, 9 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 452, 151 + size: 17, 10 + orig: 17, 10 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 340, 57 + size: 24, 22 + orig: 24, 22 + offset: 0, 0 + index: -1 +mouth_happy + rotate: true + xy: 442, 138 + size: 18, 8 + orig: 18, 8 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 298, 3 + size: 10, 6 + orig: 10, 6 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 366, 57 + size: 24, 22 + orig: 24, 22 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 167, 9 + size: 10, 9 + orig: 10, 9 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 403, 90 + size: 25, 32 + orig: 25, 32 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 156, 39 + size: 24, 41 + orig: 24, 41 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 471, 153 + size: 49, 39 + orig: 49, 39 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 471, 204 + size: 50, 39 + orig: 50, 39 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: true + xy: 471, 204 + size: 50, 39 + orig: 50, 39 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 398, 124 + size: 41, 12 + orig: 41, 12 + offset: 0, 0 + index: -1 +r_eye_surprised2 + rotate: false + xy: 398, 124 + size: 41, 12 + orig: 41, 12 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 263, 55 + size: 41, 28 + orig: 41, 28 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 263, 28 + size: 33, 12 + orig: 33, 12 + offset: 0, 0 + index: -1 +r_eye_surprised1 + rotate: false + xy: 285, 123 + size: 49, 39 + orig: 49, 39 + offset: 0, 0 + index: -1 +r_eyeball1 + rotate: true + xy: 240, 27 + size: 19, 21 + orig: 19, 21 + offset: 0, 0 + index: -1 +r_eyeball2 + rotate: true + xy: 218, 26 + size: 18, 20 + orig: 18, 20 + offset: 0, 0 + index: -1 +r_eyeball_surprised + rotate: true + xy: 319, 70 + size: 15, 19 + orig: 15, 19 + offset: 0, 0 + index: -1 +r_eyeball_uneasy + rotate: false + xy: 179, 2 + size: 30, 22 + orig: 30, 22 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 98, 2 + size: 44, 16 + orig: 44, 16 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 98, 2 + size: 44, 16 + orig: 44, 16 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 382, 121 + size: 41, 14 + orig: 41, 14 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 398, 138 + size: 42, 18 + orig: 42, 18 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 263, 42 + size: 48, 11 + orig: 48, 11 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 340, 81 + size: 20, 38 + orig: 20, 38 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/210201.json b/m78-all/m78-fe/public/images/character/210201.json new file mode 100644 index 000000000..223eab0a2 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/210201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"TCTt4/og8SPuJYMth/KHg7QR9lQ","spine":"3.5.25","width":187.77,"height":240.04,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":27.75,"rotation":-88.29,"x":-1.15,"y":94.33},{"name":"head","parent":"body1","length":135.79,"rotation":178.29,"x":2.18,"y":3.66},{"name":"b_hair","parent":"head","length":50.92,"rotation":-154.48,"x":41.81,"y":-12.42},{"name":"body2","parent":"body1","length":45.54,"rotation":-1.19,"x":29.39,"y":-0.46},{"name":"braid_hair1","parent":"head","length":78.71,"rotation":-177.89,"x":6.21,"y":15.73},{"name":"braid_hair2","parent":"head","length":33.34,"rotation":165.62,"x":1.66,"y":38.5},{"name":"eff_exclamation","parent":"root","length":17.86,"rotation":34.59,"x":91.68,"y":197.8},{"name":"eff_panic","parent":"root","length":19.59,"rotation":-10.44,"x":91.68,"y":136.96},{"name":"eff_sad1","parent":"root","length":18.82,"rotation":-92.21,"x":-16.2,"y":120.03},{"name":"eff_sad2","parent":"root","length":19.33,"rotation":-90.44,"x":34.19,"y":126.18},{"name":"eff_star1","parent":"root","length":19.11,"rotation":21.8,"x":66.33,"y":72.06},{"name":"eff_star2","parent":"root","length":21.85,"rotation":176.01,"x":-69.55,"y":62.43},{"name":"eff_star3","parent":"root","length":19.09,"rotation":-16.99,"x":59.73,"y":20.35},{"name":"f_hair1","parent":"head","length":94.39,"rotation":-90.25,"x":109.3,"y":16.97},{"name":"f_hair2","parent":"head","length":63.24,"rotation":136.06,"x":105.16,"y":23.18},{"name":"l_arm1","parent":"body1","length":24.85,"rotation":28.27,"x":8.45,"y":5.55},{"name":"l_arm2","parent":"l_arm1","length":28.83,"rotation":24.96,"x":18,"y":-6.08},{"name":"l_eye","parent":"head","length":14.35,"rotation":123.23,"x":53.82,"y":-43.88},{"name":"l_eyeball","parent":"head","length":11.18,"x":22.77,"y":-32.71},{"name":"l_eyebrow","parent":"head","length":19.89,"rotation":-102.01,"x":72.04,"y":-19.46},{"name":"l_leg","parent":"root","length":32.29,"rotation":-89.27,"x":4.65,"y":35.12},{"name":"mouth","parent":"head","length":10.23,"rotation":31.76,"x":1.66,"y":-14.9},{"name":"r_arm1","parent":"body1","length":27.29,"rotation":-11.31,"x":6.25,"y":-12.61},{"name":"r_arm2","parent":"r_arm1","length":34.1,"rotation":-159.9,"x":30.43,"y":-3.67},{"name":"r_eye","parent":"head","length":15.76,"rotation":-119.93,"x":50.92,"y":38.09},{"name":"r_eyeball","parent":"head","length":11.19,"rotation":2.12,"x":18.63,"y":20.7},{"name":"r_eyebrow","parent":"head","length":22.26,"rotation":99.64,"x":70.38,"y":6.62},{"name":"r_leg","parent":"root","length":32.39,"rotation":-85.6,"x":-9.01,"y":33.47}],"slots":[{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"braid_hair2","bone":"braid_hair2","attachment":"braid_hair2"},{"name":"b_hair","bone":"b_hair","attachment":"b_hair"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"f_hair1","bone":"f_hair1","attachment":"f_hair1"},{"name":"f_hair2","bone":"f_hair2","attachment":"f_hair2"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"braid_hair1","bone":"braid_hair1","attachment":"braid_hair1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy"},{"name":"l_eyeball1","bone":"l_eyeball","attachment":"l_eyeball_uneasy"},{"name":"r_eyeball1","bone":"r_eyeball","attachment":"r_eyeball_uneasy"}],"skins":{"default":{"b_hair":{"b_hair":{"x":22.59,"y":-14.45,"rotation":64.48,"width":111,"height":90}},"body1":{"body1":{"x":13.03,"y":-0.01,"rotation":88.29,"width":34,"height":38}},"body2":{"body2":{"x":19.44,"y":-0.52,"rotation":89.48,"width":71,"height":58}},"braid_hair1":{"braid_hair1":{"x":42.55,"y":-0.7,"rotation":87.89,"width":37,"height":83}},"braid_hair2":{"braid_hair2":{"x":34.58,"y":3.69,"rotation":104.38,"width":56,"height":60}},"f_hair1":{"f_hair1":{"x":45.21,"y":-29.12,"rotation":0.25,"width":106,"height":131}},"f_hair2":{"f_hair2":{"x":48.89,"y":9.79,"rotation":133.94,"width":73,"height":94}},"head":{"head":{"x":56.62,"y":20.16,"rotation":-90,"width":173,"height":172}},"l_arm1":{"l_arm1":{"x":14.39,"y":0.18,"rotation":60.02,"width":26,"height":31}},"l_arm2":{"l_arm2":{"x":15.53,"y":-0.1,"rotation":35.06,"width":34,"height":27}},"l_eye1":{"l_eye1":{"x":12.3,"y":7.03,"rotation":146.77,"width":43,"height":36},"l_eye2":{"x":11.2,"y":6.98,"rotation":146.77,"width":44,"height":36},"l_eye3":{"x":18.12,"y":8.93,"rotation":146.77,"width":28,"height":11},"l_eye_happy":{"x":18.81,"y":10.94,"rotation":146.77,"width":28,"height":22},"l_eye_sad":{"x":18.67,"y":8.52,"rotation":146.77,"width":29,"height":15},"l_eye_surprised1":{"x":10.7,"y":8.07,"rotation":146.77,"width":39,"height":36},"l_eye_surprised2":{"x":18.05,"y":8.92,"rotation":146.77,"width":28,"height":11},"l_eye_uneasy":{"x":13.46,"y":5.89,"rotation":146.77,"width":47,"height":36}},"l_eyeball1":{"l_eyeball1":{"x":13.14,"y":1.8,"rotation":-90,"width":16,"height":21},"l_eyeball2":{"x":12.06,"y":1.65,"rotation":-90,"width":17,"height":21},"l_eyeball_surprised":{"x":13.61,"y":1.8,"rotation":-90,"width":12,"height":18},"l_eyeball_uneasy":{"x":13.14,"y":1.8,"rotation":-90,"width":24,"height":23}},"l_eyebrow":{"l_eyebrow":{"x":18.97,"y":-8.7,"rotation":12.01,"width":33,"height":22},"l_eyebrow_happy":{"x":18.97,"y":-8.7,"rotation":12.01,"width":33,"height":22},"l_eyebrow_sad":{"x":18.97,"y":-8.7,"rotation":12.01,"width":34,"height":21},"l_eyebrow_surprised":{"x":17.72,"y":-8.97,"rotation":12.01,"width":30,"height":23},"l_eyebrow_uneasy":{"x":18.84,"y":-8.08,"rotation":12.01,"width":34,"height":18}},"l_leg":{"l_leg":{"x":18.45,"y":0.89,"rotation":89.27,"width":21,"height":38}},"mouth1":{"mouth1":{"x":17.43,"y":0.05,"rotation":-121.76,"width":19,"height":9},"mouth2":{"x":16.77,"y":0.46,"rotation":-121.76,"width":17,"height":10},"mouth3":{"x":9.2,"y":2.39,"rotation":-121.76,"width":24,"height":22},"mouth_happy":{"x":16.77,"y":0.46,"rotation":-121.76,"width":18,"height":8},"mouth_sad":{"x":14.73,"y":-0.41,"rotation":-121.76,"width":10,"height":6},"mouth_surprised":{"x":17.76,"y":-1.78,"rotation":-121.76,"width":24,"height":22},"mouth_uneasy":{"x":16.82,"y":-1.08,"rotation":-121.76,"width":10,"height":9}},"r_arm1":{"r_arm1":{"x":13.07,"y":-0.6,"rotation":99.61,"width":25,"height":32}},"r_arm2":{"r_arm2":{"x":17.96,"y":2.37,"rotation":-100.49,"width":24,"height":41}},"r_eye1":{"r_eye1":{"x":18.12,"y":-3.66,"rotation":29.93,"width":49,"height":39},"r_eye2":{"x":15.49,"y":-3.7,"rotation":29.93,"width":50,"height":39},"r_eye3":{"x":19.42,"y":-5.91,"rotation":29.93,"width":41,"height":12},"r_eye_happy":{"x":25.72,"y":-1.73,"rotation":29.93,"width":41,"height":28},"r_eye_sad":{"x":24.13,"y":-5.1,"rotation":29.93,"width":33,"height":12},"r_eye_surprised1":{"x":18.12,"y":-3.66,"rotation":29.93,"width":49,"height":39},"r_eye_surprised2":{"x":19.45,"y":-5.8,"rotation":29.93,"width":41,"height":12},"r_eye_uneasy":{"x":16.67,"y":-3.03,"rotation":29.93,"width":50,"height":39}},"r_eyeball1":{"r_eyeball1":{"x":15.9,"y":-0.96,"rotation":-92.12,"width":19,"height":21},"r_eyeball2":{"x":13.65,"y":-1.49,"rotation":-92.12,"width":18,"height":20},"r_eyeball_surprised":{"x":16.18,"y":-3.7,"rotation":-92.12,"width":15,"height":19},"r_eyeball_uneasy":{"x":14.83,"y":-6.64,"rotation":-92.12,"width":30,"height":22}},"r_eyebrow":{"r_eyebrow":{"x":17.09,"y":6.79,"rotation":170.36,"width":44,"height":16},"r_eyebrow_happy":{"x":17.09,"y":6.79,"rotation":170.36,"width":44,"height":16},"r_eyebrow_sad":{"x":17.09,"y":6.79,"rotation":170.36,"width":41,"height":14},"r_eyebrow_surprised":{"x":17.09,"y":6.79,"rotation":170.36,"width":42,"height":18},"r_eyebrow_uneasy":{"x":17.66,"y":10.15,"rotation":170.36,"width":48,"height":11}},"r_leg":{"r_leg":{"x":16.51,"y":-0.18,"rotation":85.6,"width":20,"height":38}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball1"},{"time":0.3333,"name":"l_eyeball2"},{"time":0.4,"name":null},{"time":0.8333,"name":"l_eyeball1"},{"time":1,"name":"l_eyeball1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball1"},{"time":0.3333,"name":"r_eyeball2"},{"time":0.4,"name":null},{"time":0.8333,"name":"r_eyeball1"},{"time":1,"name":"r_eyeball1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0,"y":-1.92},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":2.48},{"time":0.5,"angle":5.97},{"time":1,"angle":2.48}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-348.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-23.14,"curve":"stepped"},{"time":0.1667,"angle":-23.14,"curve":"stepped"},{"time":0.3333,"angle":-23.14},{"time":0.5,"angle":-19.11},{"time":0.6667,"angle":-23.14,"curve":"stepped"},{"time":0.8333,"angle":-23.14,"curve":"stepped"},{"time":1,"angle":-23.14}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":304.47},{"time":0.5,"angle":272.49},{"time":1,"angle":304.47}],"translate":[{"time":0,"x":0.18,"y":-1.06,"curve":"stepped"},{"time":0.5,"x":0.18,"y":-1.06,"curve":"stepped"},{"time":1,"x":0.18,"y":-1.06}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-0.77},{"time":0.7667,"angle":-3.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":6.04},{"time":0.7667,"angle":-0.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.49},{"time":0.5,"angle":-2.4},{"time":0.6667,"angle":-2.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":350.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.91,"y":0.15},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3333,"x":-2.41,"y":0.07,"curve":"stepped"},{"time":0.8,"x":-2.41,"y":0.07},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3333,"x":-2.41,"y":0.07,"curve":"stepped"},{"time":0.8,"x":-2.41,"y":0.07},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.14,"y":2.32},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.6667,"name":"l_eye_happy"}]},"l_eyeball1":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":0.6667,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.4333,"name":"mouth3"},{"time":0.6667,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.6667,"name":"r_eye_happy"}]},"r_eyeball1":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":0.6667,"name":"r_eyebrow_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.84},{"time":0.3333,"angle":0},{"time":0.5,"angle":2.91},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":-2.72},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":-2.17},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.84},{"time":0.3333,"angle":0},{"time":0.5,"angle":2.91},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.027,"y":1.027},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.027,"y":1.027},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-351.35},{"time":0.1667,"angle":-349.74},{"time":0.3333,"angle":-352.83},{"time":0.5,"angle":-351.29},{"time":0.6667,"angle":-351.35}],"translate":[{"time":0,"x":1.63,"y":-0.05},{"time":0.3333,"x":1.09,"y":-0.03},{"time":0.6667,"x":1.63,"y":-0.05}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.51,"curve":"stepped"},{"time":0.3333,"angle":-4.51},{"time":0.5,"angle":-5.97},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.29,"y":-1.93,"curve":"stepped"},{"time":0.3333,"x":0.29,"y":-1.93},{"time":0.5,"x":-0.35,"y":-1.68},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.45},{"time":0.5,"angle":3.16},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.45},{"time":0.5,"angle":3.16},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.2},{"time":0.5,"angle":-2.56},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.35},{"time":0.5,"angle":1.57},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.77},{"time":0.5,"angle":2.81},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.46},{"time":0.3333,"angle":357.18},{"time":0.5,"angle":356.76},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.76,"y":0.24},{"time":0.5,"x":-0.57,"y":0.94},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball1"},{"time":0.5,"name":"l_eyeball2"},{"time":0.5667,"name":null},{"time":0.6333,"name":"l_eyeball1"},{"time":1,"name":"l_eyeball1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.6667,"name":"mouth2"},{"time":0.7667,"name":"mouth1"},{"time":1,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball1"},{"time":0.5,"name":"r_eyeball2"},{"time":0.5667,"name":null},{"time":0.6333,"name":"r_eyeball1"},{"time":1,"name":"r_eyeball1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-0.51},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.027,"y":1.027},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-9.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.53,"y":0.01},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.02,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-12.09,"curve":"stepped"},{"time":0.6667,"angle":-12.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.4,"y":-0.83},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":11.88},{"time":0.5,"angle":6.59},{"time":0.7667,"angle":11.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":11.88},{"time":0.5,"angle":6.59},{"time":0.7667,"angle":11.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.62},{"time":0.5,"angle":-1.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.06},{"time":0.5,"angle":-2.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-10.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.83},{"time":0.6667,"angle":353.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.6,"x":-3.66,"y":0.17},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.6,"x":-3.66,"y":0.17},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.44,"y":0.73},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyeball1":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null},{"time":1.3333,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.5,"name":"l_eyebrow_sad"},{"time":1,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.3333,"name":"mouth_surprised"},{"time":1,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyeball1":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null},{"time":1.3333,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.5,"name":"r_eyebrow_sad"},{"time":1,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.05},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":6.52,"y":-1.63},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.45},{"time":0.8667,"angle":4.39},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-353.06},{"time":0.6667,"angle":-339.03},{"time":1.3333,"angle":-353.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-0.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":6.23,"y":7.97},{"time":0.6667,"x":11.24,"y":7.54},{"time":1.3333,"x":6.23,"y":7.97}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-4.85},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-4.85},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-2.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":348.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.07,"y":-0.18},{"time":0.5,"x":-2.81,"y":-1.98,"curve":"stepped"},{"time":1,"x":-2.81,"y":-1.98},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.07,"y":-0.18},{"time":0.5,"x":-2.03,"y":0.63,"curve":"stepped"},{"time":1,"x":-2.03,"y":0.63},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.7,"y":2.63},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball1"},{"time":0.6667,"name":"l_eyeball2"},{"time":0.7333,"name":null},{"time":0.8,"name":"l_eyeball1"},{"time":1.3333,"name":"l_eyeball1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball1"},{"time":0.6667,"name":"r_eyeball2"},{"time":0.7333,"name":null},{"time":0.8,"name":"r_eyeball1"},{"time":1.3333,"name":"r_eyeball1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.01},{"time":0.6667,"angle":0},{"time":1,"angle":4.31},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.57},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.54},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.01},{"time":0.6667,"angle":0},{"time":1,"angle":4.31},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0.14},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.4},{"time":0.6667,"angle":0},{"time":1,"angle":-358.07},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.03,"y":0.06},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.51,"y":-0.05},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.96,"curve":"stepped"},{"time":0.6667,"angle":-3.96},{"time":1,"angle":-0.4},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.22,"y":-1.33},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.79},{"time":0.6667,"angle":-0.51},{"time":1,"angle":2.95},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.79},{"time":0.6667,"angle":-0.51},{"time":1,"angle":2.95},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.1},{"time":1,"angle":2.41},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.3},{"time":1,"angle":-1.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.42},{"time":0.6667,"angle":0},{"time":1,"angle":1.82},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.91},{"time":0.5,"angle":-0.42},{"time":0.8333,"angle":-0.67},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7333,"x":-3.61,"y":0.08},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7333,"x":-3.61,"y":0.08},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":3.01,"curve":"stepped"},{"time":0.6667,"x":0,"y":3.01,"curve":"stepped"},{"time":1.3333,"x":0,"y":3.01}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.51},{"time":0.6667,"angle":0},{"time":1,"angle":1.88},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised1"},{"time":1,"name":"l_eye_surprised1"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball_surprised"},{"time":1,"name":"l_eyeball_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised1"},{"time":1,"name":"r_eye_surprised1"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball_surprised"},{"time":1,"name":"r_eyeball_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.44},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-3.26,"y":-1.09},{"time":0.5,"x":0,"y":1.09},{"time":0.7667,"x":2.17,"y":-1.63},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.44},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-357.99},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":-1.16,"y":0.03},{"time":0.2667,"x":1.19,"y":-0.14},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":2.32,"y":0.05},{"time":1,"x":-1.16,"y":0.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2,"x":1.005,"y":1.005},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.005,"y":1.005},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":29.62},{"time":0.5,"angle":11.1},{"time":0.7667,"angle":29.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.58},{"time":0.5,"angle":-12.94},{"time":0.7667,"angle":5.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.05,"y":2.06},{"time":0.5,"x":-1.9,"y":1.27},{"time":0.7667,"x":-1.05,"y":2.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.4},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.78},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.22},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.31,"y":-0.16},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":1.73,"y":0.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.31,"y":-0.16},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":1.73,"y":0.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.32,"y":1.62},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.49,"y":-1.2},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_uneasy"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball_uneasy"},{"time":1,"name":"l_eyeball_uneasy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.6667,"name":"mouth_surprised"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye_uneasy"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball_uneasy"},{"time":1,"name":"r_eyeball_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.78},{"time":0.7333,"angle":-4.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.78},{"time":0.7333,"angle":-4.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-31.22,"curve":"stepped"},{"time":0.5,"angle":-31.22,"curve":"stepped"},{"time":1,"angle":-31.22}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":313.99,"curve":"stepped"},{"time":0.5,"angle":313.99,"curve":"stepped"},{"time":1,"angle":313.99}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":12.66},{"time":0.5,"angle":14.06},{"time":1,"angle":12.66}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-18.19},{"time":0.5,"angle":-2.17},{"time":1,"angle":-18.19}],"translate":[{"time":0,"x":-3.31,"y":1.56,"curve":"stepped"},{"time":0.5,"x":-3.31,"y":1.56,"curve":"stepped"},{"time":1,"x":-3.31,"y":1.56}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.01},{"time":0.7667,"angle":-1.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.89},{"time":0.5,"angle":1.24},{"time":0.7667,"angle":-0.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.76},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.55},{"time":0.5,"angle":0},{"time":0.7667,"angle":357.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-2.27,"y":-1.23},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-1.28,"y":2.36},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.15,"y":-0.6},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.03,"y":1.16},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/210201.png b/m78-all/m78-fe/public/images/character/210201.png new file mode 100644 index 000000000..6171546d4 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/210201.png differ diff --git a/m78-all/m78-fe/public/images/character/210301.atlas b/m78-all/m78-fe/public/images/character/210301.atlas new file mode 100644 index 000000000..cbba862a7 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/210301.atlas @@ -0,0 +1,321 @@ + +210301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_hair + rotate: false + xy: 290, 166 + size: 111, 81 + orig: 111, 81 + offset: 0, 0 + index: -1 +body1 + rotate: true + xy: 467, 146 + size: 38, 52 + orig: 38, 52 + offset: 0, 0 + index: -1 +braid + rotate: false + xy: 960, 184 + size: 60, 63 + orig: 60, 63 + offset: 0, 0 + index: -1 +eyebrow + rotate: false + xy: 2, 5 + size: 101, 24 + orig: 101, 24 + offset: 0, 0 + index: -1 +eyebrow_happy + rotate: false + xy: 517, 223 + size: 99, 24 + orig: 99, 24 + offset: 0, 0 + index: -1 +eyebrow_sad + rotate: false + xy: 180, 89 + size: 98, 23 + orig: 98, 23 + offset: 0, 0 + index: -1 +eyebrow_surprised + rotate: false + xy: 618, 223 + size: 95, 24 + orig: 95, 24 + offset: 0, 0 + index: -1 +eyebrow_uneasy + rotate: false + xy: 403, 186 + size: 104, 20 + orig: 104, 20 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 180, 114 + size: 108, 133 + orig: 108, 133 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 72 + size: 176, 175 + orig: 176, 175 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 678, 192 + size: 31, 29 + orig: 31, 29 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 382, 75 + size: 31, 28 + orig: 31, 28 + offset: 0, 0 + index: -1 +l_arm3 + rotate: true + xy: 600, 198 + size: 23, 38 + orig: 23, 38 + offset: 0, 0 + index: -1 +l_body2 + rotate: true + xy: 798, 202 + size: 45, 79 + orig: 45, 79 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 2, 31 + size: 112, 39 + orig: 112, 39 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 715, 209 + size: 81, 38 + orig: 81, 38 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 252, 45 + size: 42, 26 + orig: 42, 26 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 640, 191 + size: 36, 30 + orig: 36, 30 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 250, 2 + size: 41, 28 + orig: 41, 28 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 403, 208 + size: 112, 39 + orig: 112, 39 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 468, 106 + size: 46, 38 + orig: 46, 38 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 280, 65 + size: 46, 38 + orig: 46, 38 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 412, 78 + size: 23, 40 + orig: 23, 40 + offset: 0, 0 + index: -1 +l_wing + rotate: true + xy: 290, 105 + size: 59, 77 + orig: 59, 77 + offset: 0, 0 + index: -1 +mouth + rotate: false + xy: 490, 94 + size: 13, 10 + orig: 13, 10 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 468, 91 + size: 20, 13 + orig: 20, 13 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 584, 175 + size: 20, 15 + orig: 20, 15 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 521, 140 + size: 27, 24 + orig: 27, 24 + offset: 0, 0 + index: -1 +mouth_happy + rotate: true + xy: 454, 80 + size: 21, 12 + orig: 21, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 516, 113 + size: 22, 25 + orig: 22, 25 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 180, 75 + size: 12, 12 + orig: 12, 12 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 551, 168 + size: 27, 31 + orig: 27, 31 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 521, 166 + size: 28, 31 + orig: 28, 31 + offset: 0, 0 + index: -1 +r_arm3 + rotate: true + xy: 559, 197 + size: 24, 39 + orig: 24, 39 + offset: 0, 0 + index: -1 +r_body2 + rotate: true + xy: 879, 201 + size: 46, 79 + orig: 46, 79 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 412, 103 + size: 54, 38 + orig: 54, 38 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 412, 143 + size: 53, 41 + orig: 53, 41 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 302, 18 + size: 45, 20 + orig: 45, 20 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 328, 73 + size: 52, 30 + orig: 52, 30 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: true + xy: 280, 13 + size: 50, 20 + orig: 50, 20 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 194, 3 + size: 54, 41 + orig: 54, 41 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: true + xy: 369, 108 + size: 56, 41 + orig: 56, 41 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 194, 46 + size: 56, 41 + orig: 56, 41 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 517, 199 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +r_wing + rotate: true + xy: 116, 5 + size: 65, 76 + orig: 65, 76 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/210301.json b/m78-all/m78-fe/public/images/character/210301.json new file mode 100644 index 000000000..d4e9a4361 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/210301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"VD772GwPu2V+JfzY7eH0kG7UzSg","spine":"3.5.25","width":190,"height":241,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":36.28,"rotation":88.93,"x":-2.63,"y":62.06},{"name":"head","parent":"body1","length":114.26,"rotation":2.09,"x":34.24,"y":0.3},{"name":"b_hair","parent":"head","length":31.69,"rotation":-146.2,"x":26.92,"y":-17.16},{"name":"braid","parent":"head","length":43.5,"rotation":-147.33,"x":-3.53,"y":30.89},{"name":"eff_exclamation","parent":"root","length":23.04,"rotation":38.66,"x":83,"y":197.94},{"name":"eff_panic","parent":"root","length":22.11,"rotation":-17.59,"x":82.48,"y":122.89},{"name":"eff_sad1","parent":"root","length":18.57,"rotation":-91.49,"x":-12.09,"y":124.95},{"name":"eff_sad2","parent":"root","length":20.57,"rotation":-91.43,"x":40.85,"y":124.95},{"name":"eff_star1","parent":"root","length":17.02,"rotation":25.02,"x":48.56,"y":73.04},{"name":"eff_star2","parent":"root","length":21.32,"rotation":164.62,"x":-54.76,"y":70.98},{"name":"eff_star3","parent":"root","length":18.43,"rotation":-22.99,"x":55.24,"y":32.94},{"name":"eyebrow","parent":"head","length":24.89,"rotation":-1.33,"x":59.77,"y":-14.36},{"name":"f_hair","parent":"head","length":59.34,"rotation":-50.14,"x":105.45,"y":9.34},{"name":"l_arm1","parent":"body1","length":23.77,"rotation":-130.71,"x":23.52,"y":-7.53},{"name":"l_arm2","parent":"l_arm1","length":25.07,"rotation":-2,"x":21.61,"y":-0.41},{"name":"l_body2","parent":"body1","length":64.71,"rotation":-168.97,"x":3.13,"y":-4.35},{"name":"l_eye","parent":"head","length":15.08,"rotation":-1.02,"x":20.95,"y":-34.78},{"name":"l_leg","parent":"root","length":32.16,"rotation":-85.29,"x":2.7,"y":33.4},{"name":"l_wing","parent":"body1","length":73.87,"rotation":-161.58,"x":17.58,"y":-15.27},{"name":"mouth","parent":"head","length":15.89,"rotation":21.29,"x":-5.14,"y":-17.35},{"name":"r_arm1","parent":"body1","length":23.21,"rotation":143.24,"x":22.43,"y":10.55},{"name":"r_arm2","parent":"r_arm1","length":25.15,"rotation":-2.3,"x":20.37,"y":-0.41},{"name":"r_body2","parent":"body1","length":58.67,"rotation":164.63,"x":-1.35,"y":3.86},{"name":"r_eye","parent":"head","length":14.35,"rotation":1.99,"x":21.12,"y":17.63},{"name":"r_leg","parent":"root","length":32.16,"rotation":-85.29,"x":-8.99,"y":33.78},{"name":"r_wing","parent":"body1","length":73.7,"rotation":153.09,"x":13.1,"y":6.69}],"slots":[{"name":"b_hair","bone":"b_hair","attachment":"b_hair"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_wing","bone":"l_wing","attachment":"l_wing"},{"name":"r_body2","bone":"r_body2","attachment":"r_body2"},{"name":"l_body2","bone":"l_body2","attachment":"l_body2"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"r_wing","bone":"r_wing","attachment":"r_wing"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm3"},{"name":"braid","bone":"braid","attachment":"braid"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm3"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye3"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye3"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow_uneasy"},{"name":"mouth","bone":"mouth","attachment":"mouth_uneasy"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"}],"skins":{"default":{"b_hair":{"b_hair":{"x":7.11,"y":-11.9,"rotation":55.18,"width":111,"height":81}},"body1":{"body1":{"x":15.34,"y":-0.53,"rotation":-88.93,"width":38,"height":52}},"braid":{"braid":{"x":25.41,"y":-5.76,"rotation":56.31,"width":60,"height":63}},"eyebrow":{"eyebrow":{"x":-3.97,"y":6.29,"rotation":-89.69,"width":101,"height":24},"eyebrow_happy":{"x":-3.97,"y":6.29,"rotation":-89.69,"width":99,"height":24},"eyebrow_sad":{"x":-3.97,"y":6.29,"rotation":-89.69,"width":98,"height":23},"eyebrow_surprised":{"x":-3.97,"y":6.29,"rotation":-89.69,"width":95,"height":24},"eyebrow_uneasy":{"x":-3.97,"y":6.29,"rotation":-89.69,"width":104,"height":20}},"f_hair":{"f_hair":{"x":13.51,"y":-49.62,"rotation":-40.88,"width":108,"height":133}},"head":{"head":{"x":53.87,"y":15.57,"rotation":-91.02,"width":176,"height":175}},"l_arm1":{"l_arm1":{"x":13.33,"y":-0.89,"rotation":41.78,"width":31,"height":29}},"l_arm2":{"l_arm2":{"x":14.05,"y":0.52,"rotation":43.78,"width":31,"height":28},"l_arm3":{"x":14.05,"y":0.52,"rotation":-85.42,"width":23,"height":38}},"l_body2":{"l_body2":{"x":28.01,"y":2.1,"rotation":80.04,"width":45,"height":79}},"l_eye1":{"l_eye1":{"x":17.03,"y":25.93,"rotation":-90,"width":112,"height":39},"l_eye2":{"x":17.03,"y":11.22,"rotation":-90,"width":81,"height":38},"l_eye3":{"x":17.03,"y":-8.76,"rotation":-90,"width":42,"height":26},"l_eye_happy":{"x":12.5,"y":-4.99,"rotation":-90,"width":36,"height":30},"l_eye_sad":{"x":17.03,"y":-7.63,"rotation":-90,"width":41,"height":28},"l_eye_surprised":{"x":17.03,"y":25.93,"rotation":-90,"width":112,"height":39},"l_eye_uneasy1":{"x":17.03,"y":-7.25,"rotation":-90,"width":46,"height":38},"l_eye_uneasy2":{"x":17.03,"y":-7.25,"rotation":-90,"width":46,"height":38}},"l_leg":{"l_leg":{"x":15.04,"y":-0.25,"rotation":85.29,"width":23,"height":40}},"l_wing":{"l_wing":{"x":41.88,"y":11.77,"rotation":72.65,"width":59,"height":77}},"mouth":{"mouth":{"x":16.14,"y":1.03,"rotation":-112.31,"width":13,"height":10},"mouth1":{"x":16.64,"y":1.24,"rotation":-112.31,"width":20,"height":13},"mouth2":{"x":16.64,"y":1.24,"rotation":-112.31,"width":20,"height":15},"mouth3":{"x":10.4,"y":0.94,"rotation":-112.31,"width":27,"height":24},"mouth_happy":{"x":16.64,"y":1.24,"rotation":-112.31,"width":21,"height":12},"mouth_surprised":{"x":18.34,"y":-3.54,"rotation":-112.31,"width":22,"height":25},"mouth_uneasy":{"x":16.21,"y":0.19,"rotation":-112.31,"width":12,"height":12}},"r_arm1":{"r_arm1":{"x":13.77,"y":-0.14,"rotation":127.83,"width":27,"height":31}},"r_arm2":{"r_arm2":{"x":13.57,"y":-0.65,"rotation":130.14,"width":28,"height":31},"r_arm3":{"x":8.36,"y":0.12,"rotation":-93.88,"width":24,"height":39}},"r_body2":{"r_body2":{"x":23.46,"y":1.39,"rotation":106.45,"width":46,"height":79}},"r_eye1":{"r_eye1":{"x":16.44,"y":2.66,"rotation":-93.01,"width":54,"height":38},"r_eye2":{"x":15.33,"y":3.09,"rotation":-93.01,"width":53,"height":41},"r_eye3":{"x":14.89,"y":2.74,"rotation":-93.01,"width":45,"height":20},"r_eye_happy":{"x":13.18,"y":0.1,"rotation":-93.01,"width":52,"height":30},"r_eye_sad":{"x":14.5,"y":2.76,"rotation":-93.01,"width":50,"height":20},"r_eye_surprised":{"x":16.44,"y":2.66,"rotation":-93.01,"width":54,"height":41},"r_eye_uneasy1":{"x":16.44,"y":2.66,"rotation":-93.01,"width":56,"height":41},"r_eye_uneasy2":{"x":16.44,"y":2.66,"rotation":-93.01,"width":56,"height":41}},"r_leg":{"r_leg":{"x":15.35,"y":-1.09,"rotation":85.29,"width":22,"height":40}},"r_wing":{"r_wing":{"x":43.18,"y":-9.04,"rotation":117.98,"width":65,"height":76}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1,"name":"eyebrow"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.4667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6667,"name":"mouth3"},{"time":1,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.4667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":3.93},{"time":0.5,"angle":0},{"time":0.7333,"angle":-3.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-1.03},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":-1.55},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":1.1},{"time":0.5,"angle":0},{"time":0.7333,"angle":-1.35},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.2},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.91},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-8.32},{"time":0.5,"angle":-7.43},{"time":0.7333,"angle":12.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.08,"y":1.08},{"time":1,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-0.82},{"time":0.5,"angle":4.55},{"time":0.7333,"angle":-5.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.033,"y":1.033},{"time":0.5,"x":1,"y":1},{"time":0.7333,"x":1.097,"y":1.097},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":23.02,"curve":"stepped"},{"time":0.5,"angle":23.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.09,"y":0.05,"curve":"stepped"},{"time":0.5,"x":-1.09,"y":0.05},{"time":0.7667,"x":-1.09,"y":-0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":12.52},{"time":0.2667,"angle":-15.88,"curve":"stepped"},{"time":0.5,"angle":-15.88},{"time":1,"angle":12.52}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.09,"y":0.05,"curve":"stepped"},{"time":0.5,"x":-1.09,"y":0.05},{"time":0.7667,"x":-1.09,"y":-0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":11.51},{"time":0.3,"angle":13.89},{"time":0.5,"angle":2.09},{"time":0.6333,"angle":-6.65},{"time":0.8333,"angle":15.51},{"time":1,"angle":11.51}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-9.5},{"time":0.3,"angle":4},{"time":0.5,"angle":13.69},{"time":0.6667,"angle":-2.71},{"time":1,"angle":-9.5}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.08,"y":-0.78},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4,"x":-2.72,"y":0.14},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.57},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.78,"y":3.37},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.12,"y":-2.19},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_happy"},{"time":1,"name":"eyebrow_happy"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.2667,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.15},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.46},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.46},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.77},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.53},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":25.08},{"time":0.5,"angle":35.9},{"time":1,"angle":25.08}],"translate":[{"time":0,"x":-5.05,"y":9.65},{"time":0.5,"x":5.94,"y":8.03},{"time":1,"x":-5.05,"y":9.65}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.097,"y":1.114},{"time":1,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":-21.1},{"time":0.5,"angle":-34.02},{"time":1,"angle":-21.1}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.138,"y":1.138},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-6.19},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0,"y":-1.36},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":5.53},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.36,"y":-2.04},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-26.94},{"time":0.6667,"angle":-28.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":34.32},{"time":0.6667,"angle":36.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.53},{"time":0.5,"angle":7.85},{"time":0.6667,"angle":13.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":14.63},{"time":0.5,"angle":-19.21},{"time":0.6667,"angle":-12.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.5,"x":4.17,"y":-0.35,"curve":"stepped"},{"time":0.8333,"x":4.17,"y":-0.35},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.19,"y":-0.19},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1,"name":"eyebrow"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.2667,"name":"l_eye2"},{"time":0.3333,"name":"l_eye_happy"},{"time":0.6667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.6667,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.5,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.2667,"name":"r_eye2"},{"time":0.3333,"name":"r_eye_happy"},{"time":0.6667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.18},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.79},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.79},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.007,"y":1.007},{"time":1,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.86},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.007,"y":1.007},{"time":1,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.025,"y":1.025},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":138.93,"curve":"stepped"},{"time":0.1667,"angle":138.93},{"time":0.3333,"angle":-177.05},{"time":0.6667,"angle":-173.55},{"time":1,"angle":138.93}],"translate":[{"time":0,"x":1.59,"y":-0.91,"curve":"stepped"},{"time":1,"x":1.59,"y":-0.91}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":40.51},{"time":0.5,"angle":50.26},{"time":1,"angle":40.51}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.83,"y":-1.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.3333,"x":-3.4,"y":0.24,"curve":"stepped"},{"time":0.6,"x":-3.4,"y":0.24},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.5,"y":1.2},{"time":0.6667,"x":0.04,"y":-1.45},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_sad"},{"time":0.8333,"name":"eyebrow_sad"},{"time":1.3333,"name":"eyebrow_sad"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":0.6667,"name":"l_arm3"},{"time":1.3333,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.6667,"name":"mouth_uneasy"},{"time":1.3333,"name":"mouth_uneasy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"},{"time":1.3333,"name":"r_arm3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-4.68},{"time":0.6667,"angle":-6.94},{"time":1.3333,"angle":-4.68}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":2.11},{"time":0.6667,"angle":-0.95},{"time":1.3333,"angle":2.11}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-2.09,"y":-0.29},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.1},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.11},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":-14.36},{"time":0.6667,"angle":-16.02},{"time":1.3333,"angle":-14.36}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":22.11},{"time":0.6667,"angle":-332.74},{"time":1.3333,"angle":22.11}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":27.42},{"time":0.3333,"angle":32.79},{"time":0.6667,"angle":33.94},{"time":1,"angle":29.16},{"time":1.3333,"angle":27.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":133},{"time":0.6667,"angle":140.06},{"time":1.3333,"angle":133}],"translate":[{"time":0,"x":1.17,"y":-0.36,"curve":"stepped"},{"time":0.6667,"x":1.17,"y":-0.36,"curve":"stepped"},{"time":1.3333,"x":1.17,"y":-0.36}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-3.26,"y":-0.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.9,"angle":-2.68},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.55,"y":0.06},{"time":0.8333,"x":-1.03,"y":-0.66},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow"},{"time":1.3333,"name":"eyebrow"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1.3333,"name":"r_arm2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.51},{"time":0.6667,"angle":0},{"time":1,"angle":-2.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-3.2},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.6},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.021,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.984,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.99},{"time":0.6667,"angle":0},{"time":1,"angle":-3.88},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.8},{"time":0.6667,"angle":0},{"time":1,"angle":2.26},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.009,"y":1.053},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.83},{"time":0.6667,"angle":0},{"time":1,"angle":-3.79},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":11.44},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.118,"y":1.056},{"time":1.3333,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-9.68},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.124,"y":1.046},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.52,"y":0},{"time":0.8333,"x":-0.14,"y":0},{"time":1,"x":-0.73,"y":-0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.52,"y":0},{"time":0.8333,"x":-0.14,"y":0},{"time":1,"x":-0.73,"y":-0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.98},{"time":0.6667,"angle":0},{"time":1,"angle":14.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.42},{"time":0.6667,"angle":0},{"time":1,"angle":-16.91},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.7333,"x":-2.72,"y":0.01},{"time":0.8,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.36},{"time":0.6667,"angle":0},{"time":1,"angle":-3.87},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.49},{"time":0.6667,"angle":0},{"time":1,"angle":-2.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.47,"y":0.02},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.47,"y":0.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.94,"y":0.04},{"time":1,"x":0.63,"y":-1.34},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_surprised"},{"time":1,"name":"eyebrow_surprised"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":0.5,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":0.5,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":0.5,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":0.5,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]}},"bones":{"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":1.47},{"time":0.5,"angle":0},{"time":0.7333,"angle":-1.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.48},{"time":0.6667,"angle":0.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.036,"y":1.036},{"time":1,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":4.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.017,"y":1.017},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":128.75},{"time":0.5,"angle":126.5},{"time":1,"angle":128.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-15.65},{"time":0.5,"angle":0},{"time":0.7667,"angle":-16.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.26,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.6,"y":0.57},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow_uneasy"},{"time":0.5,"name":"eyebrow_uneasy"},{"time":1,"name":"eyebrow_uneasy"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.3333,"name":"l_eye_uneasy2"},{"time":0.5,"name":"l_eye_uneasy1"},{"time":0.6667,"name":"l_eye3"},{"time":0.7333,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.5,"name":"mouth_uneasy"},{"time":1,"name":"mouth_uneasy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.3333,"name":"r_eye_uneasy2"},{"time":0.5,"name":"r_eye_uneasy1"},{"time":0.6667,"name":"r_eye3"},{"time":0.7333,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]}},"bones":{"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.7,"y":-0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_body2":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":1.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_wing":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":3.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6,"x":1.032,"y":1.032},{"time":1,"x":1,"y":1}]},"r_wing":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.028,"y":1.028},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-113.2},{"time":0.3333,"angle":-126.12},{"time":0.5,"angle":-111.41},{"time":0.6667,"angle":-107.86},{"time":1,"angle":-113.2}],"translate":[{"time":0,"x":2.08,"y":-0.82,"curve":"stepped"},{"time":1,"x":2.08,"y":-0.82}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":37.86},{"time":0.3333,"angle":47.28},{"time":0.6667,"angle":38.11},{"time":1,"angle":37.86}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"braid":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":1.14,"y":-0.61},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.14,"y":-0.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/210301.png b/m78-all/m78-fe/public/images/character/210301.png new file mode 100644 index 000000000..7cabbc48b Binary files /dev/null and b/m78-all/m78-fe/public/images/character/210301.png differ diff --git a/m78-all/m78-fe/public/images/character/211101.atlas b/m78-all/m78-fe/public/images/character/211101.atlas new file mode 100644 index 000000000..1e8ac9718 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/211101.atlas @@ -0,0 +1,314 @@ + +211101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 2, 9 + size: 74, 87 + orig: 74, 87 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: true + xy: 174, 92 + size: 97, 15 + orig: 97, 15 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: true + xy: 191, 99 + size: 90, 18 + orig: 90, 18 + offset: 0, 0 + index: -1 +eyebrow3 + rotate: false + xy: 262, 240 + size: 97, 14 + orig: 97, 14 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 85 + size: 170, 169 + orig: 170, 169 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 371, 97 + size: 23, 29 + orig: 23, 29 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 398, 144 + size: 23, 40 + orig: 23, 40 + offset: 0, 0 + index: -1 +l_arm3 + rotate: true + xy: 398, 119 + size: 23, 40 + orig: 23, 40 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 262, 193 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 211, 144 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 211, 144 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 302, 193 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 134, 38 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 211, 97 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 342, 193 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 382, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 476, 168 + size: 25, 39 + orig: 25, 39 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 422, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 462, 209 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 174, 45 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 91, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 440, 131 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 468, 130 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 396, 91 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: true + xy: 360, 59 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 388, 63 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 119, 10 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 174, 17 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 214, 22 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nan + rotate: false + xy: 174, 191 + size: 86, 63 + orig: 86, 63 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 334, 57 + size: 24, 40 + orig: 24, 40 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 91, 40 + size: 41, 43 + orig: 41, 43 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 214, 50 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 382, 169 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 429, 169 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 251, 144 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 251, 97 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 291, 146 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 331, 146 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 291, 99 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 371, 128 + size: 25, 39 + orig: 25, 39 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 331, 99 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 254, 50 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 294, 52 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/211101.json b/m78-all/m78-fe/public/images/character/211101.json new file mode 100644 index 000000000..c60c164c7 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/211101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"wAsRPTgZPP2H5lzEGYWvrxUFRM8","spine":"3.5.25","width":171.33,"height":255.67,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":-0.89,"y":43.94},{"name":"eff_exclamation","parent":"root","length":27,"rotation":56.52,"x":57.17,"y":228.28},{"name":"eff_panic","parent":"root","length":18.46,"rotation":32.53,"x":77.99,"y":199.9},{"name":"eff_sad1","parent":"root","length":18.11,"rotation":-91.82,"x":-2.37,"y":117.28},{"name":"eff_sad2","parent":"root","length":20.01,"rotation":-93.15,"x":48.48,"y":114.48},{"name":"eff_star1","parent":"root","length":21.9,"rotation":0.17,"x":46.18,"y":67.5},{"name":"eff_star2","parent":"root","length":17.51,"rotation":164.59,"x":-35.22,"y":95.19},{"name":"eff_star3","parent":"root","length":19.14,"rotation":-172.56,"x":-39.45,"y":72.24},{"name":"head","parent":"body","length":132.6,"x":49.06,"y":-5.04},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":60.61,"y":-3.44},{"name":"l_arm","parent":"body","length":24.14,"rotation":-139.27,"x":48.97,"y":-20.73},{"name":"l_arm2","parent":"l_arm","length":32.56,"rotation":-67.52,"x":26.3,"y":-3.53},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":11.12,"y":45.38},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":16.79,"y":-6.32},{"name":"nan","parent":"body","length":15.36,"rotation":-19.07,"x":17.86,"y":-11.73},{"name":"r_arm","parent":"body","length":21.99,"rotation":179.34,"x":47.08,"y":18.64},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":39.24,"x":22.9,"y":4.75},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-9,"y":46.51}],"slots":[{"name":"png/l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body","bone":"body","attachment":"body"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"nan","bone":"nan","attachment":"nan"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"00kevin","bone":"root"}],"skins":{"default":{"body":{"body":{"x":18.39,"y":3.45,"rotation":-89.1,"width":74,"height":87}},"eyebrow":{"eyebrow1":{"x":3.49,"y":1.65,"rotation":-91.35,"width":97,"height":15},"eyebrow2":{"x":5.58,"y":1.61,"rotation":-91.35,"width":90,"height":18},"eyebrow3":{"x":4.79,"y":1.66,"rotation":-90.9,"width":97,"height":14}},"l_arm2":{"l_arm2":{"x":14.86,"y":1.2,"rotation":113.49,"width":23,"height":40},"l_arm3":{"x":-9.13,"y":-0.73,"rotation":-106.74,"width":23,"height":40}},"l_eye":{"l_eye1":{"x":44.77,"y":-32.82,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":44.8,"y":-32.81,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":44.8,"y":-32.81,"rotation":-89.1,"width":38,"height":45},"l_eye8":{"path":"l_eye7","x":45.41,"y":-32.82,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_sadeye1":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_sadeye2":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45},"l_sadeye3":{"x":44.8,"y":-32.81,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":-4.32,"y":-2.74,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":-2.79,"y":-0.47,"rotation":87.75,"width":36,"height":26},"mouth7":{"x":-2.78,"y":-0.51,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":-2.78,"y":-0.51,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-2.78,"y":-0.51,"rotation":88.64,"width":36,"height":26}},"nan":{"nan":{"x":25.06,"y":6.7,"rotation":-70.03,"width":86,"height":63}},"png/head":{"head":{"x":76.29,"y":8.47,"rotation":-89.55,"width":170,"height":169}},"png/l_arm1":{"l_arm1":{"x":11.78,"y":-0.09,"rotation":50.18,"width":23,"height":29}},"png/l_leg":{"l_leg":{"x":27.06,"y":-0.53,"rotation":88.65,"width":25,"height":39}},"png/r_leg":{"r_leg":{"x":27.64,"y":-2.18,"rotation":88.73,"width":25,"height":39}},"r_arm1":{"r_arm1":{"x":15.1,"y":0.35,"rotation":107.55,"width":24,"height":40}},"r_arm2":{"r_arm2":{"x":13.79,"y":-0.79,"rotation":57.29,"width":41,"height":43}},"r_eye":{"r_eye1":{"x":42.99,"y":25.11,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":42.99,"y":25.1,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":42.99,"y":25.1,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":42.99,"y":25.1,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":42.99,"y":25.1,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":42.99,"y":25.1,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":42.99,"y":25.1,"rotation":-89.1,"width":38,"height":45},"r_eye8":{"path":"r_eye7","x":43.5,"y":25.11,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":43.51,"y":25.11,"rotation":-89.55,"width":38,"height":45},"r_sadeye1":{"x":42.99,"y":25.1,"rotation":-89.55,"width":38,"height":45},"r_sadeye2":{"x":42.99,"y":25.1,"rotation":-89.55,"width":38,"height":45},"r_sadeye3":{"x":43,"y":25.1,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.6667,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.4333,"name":"l_eye1"},{"time":0.4667,"name":"l_eye2"},{"time":0.5,"name":"l_happyeye"},{"time":0.6667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1667,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.6667,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.4333,"name":"r_eye1"},{"time":0.4667,"name":"r_eye2"},{"time":0.5,"name":"r_happyeye"},{"time":0.6667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-6.57,"curve":"stepped"},{"time":0.5,"angle":-6.57},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.44,"y":3.93,"curve":"stepped"},{"time":0.5,"x":-0.44,"y":3.93},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.48},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.19},{"time":0.6667,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.4667,"x":-1.35,"y":-0.1},{"time":0.5,"x":-4.59,"y":-0.09,"curve":"stepped"},{"time":0.6333,"x":-4.59,"y":-0.09},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1},{"time":0.4667,"x":0.873,"y":1},{"time":0.5,"x":0.75,"y":1,"curve":"stepped"},{"time":0.6333,"x":0.75,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.56,"curve":"stepped"},{"time":0.5,"angle":-5.56},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":40.52},{"time":0.5,"angle":63.86},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.96,"y":2.87},{"time":0.5,"x":-1.53,"y":5.93},{"time":0.6667,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"nan":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-9.04},{"time":0.5,"angle":5.72},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.013,"y":1,"curve":"stepped"},{"time":0.5,"x":1.013,"y":1},{"time":0.6667,"x":1,"y":1}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.6667,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.3333,"name":"mouth6"},{"time":0.6667,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-13.28},{"time":0.3333,"angle":0},{"time":0.5,"angle":14.83},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.1,"y":0.91},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.87,"y":0.54},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.54},{"time":0.3333,"angle":0},{"time":0.5,"angle":-9.02},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.58,"y":3.39},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.94,"curve":"stepped"},{"time":0.1667,"angle":2.94,"curve":"stepped"},{"time":0.5,"angle":2.94,"curve":"stepped"},{"time":0.6667,"angle":2.94}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-7.89,"curve":"stepped"},{"time":0.5,"angle":-7.89},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":1.27,"y":-1.67},{"time":0.1667,"x":0.7,"y":-1.33,"curve":"stepped"},{"time":0.5,"x":0.7,"y":-1.33},{"time":0.6667,"x":1.27,"y":-1.67}]},"eyebrow":{"translate":[{"time":0,"x":-6.9,"y":0.09},{"time":0.3333,"x":-5.12,"y":0.12},{"time":0.6667,"x":-6.9,"y":0.09}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-28.04},{"time":0.3333,"angle":0},{"time":0.5,"angle":4.75},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.46},{"time":0.3333,"angle":0},{"time":0.5,"angle":48.56},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.98,"y":4.99},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.878,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0.54},{"time":0.1667,"angle":24.97},{"time":0.5,"angle":-3.37},{"time":0.6667,"angle":0.54}],"translate":[{"time":0,"x":0.95,"y":-0.78},{"time":0.1667,"x":0.3,"y":2.54},{"time":0.5,"x":-0.84,"y":3.51},{"time":0.6667,"x":0.95,"y":-0.78}]},"nan":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-14.94},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.93},{"time":0.5333,"angle":4.69},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.056,"y":1.038},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.056,"y":1.038},{"time":0.6667,"x":1,"y":1}]},"root":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.21},{"time":0.3333,"angle":0},{"time":0.5,"angle":0.16},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.62,"y":0.72},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.37,"y":-0.44},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.986,"y":0.986},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":0.6667,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.3333,"name":"mouth6"},{"time":0.6667,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-8.35},{"time":0.5,"angle":7.53},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.95,"y":0},{"time":0.5,"x":-1.9,"y":0},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.021,"y":1.013,"curve":"stepped"},{"time":0.5,"x":1.021,"y":1.013},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.54},{"time":0.5,"angle":3.4},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":2.94,"curve":"stepped"},{"time":0.1667,"angle":2.94,"curve":"stepped"},{"time":0.5,"angle":2.94,"curve":"stepped"},{"time":0.6667,"angle":2.94}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":1.27,"y":-1.67,"curve":"stepped"},{"time":0.6667,"x":1.27,"y":-1.67}]},"eyebrow":{"translate":[{"time":0,"x":-6.9,"y":0.09},{"time":0.3333,"x":-5.12,"y":0.12},{"time":0.6667,"x":-6.9,"y":0.09}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0.54},{"time":0.1667,"angle":-0.37},{"time":0.5,"angle":2.28},{"time":0.6667,"angle":0.54}],"translate":[{"time":0,"x":0.95,"y":-0.78,"curve":"stepped"},{"time":0.1667,"x":0.95,"y":-0.78,"curve":"stepped"},{"time":0.5,"x":0.95,"y":-0.78,"curve":"stepped"},{"time":0.6667,"x":0.95,"y":-0.78}]},"nan":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.23},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.93},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.056,"y":1.038},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.056,"y":1.038},{"time":0.6667,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"},{"time":0.6667,"name":"eyebrow2"},{"time":1.3333,"name":"eyebrow2"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye3"},{"time":0.0667,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye3"},{"time":0.2667,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye3"},{"time":0.4667,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye3"},{"time":0.6667,"name":"l_sadeye2"},{"time":0.7333,"name":"l_sadeye3"},{"time":0.8,"name":"l_sadeye3"},{"time":0.8667,"name":"l_sadeye2"},{"time":0.9333,"name":"l_sadeye3"},{"time":1,"name":"l_sadeye3"},{"time":1.0667,"name":"l_sadeye2"},{"time":1.1333,"name":"l_sadeye3"},{"time":1.2,"name":"l_sadeye3"},{"time":1.2667,"name":"l_sadeye2"},{"time":1.3333,"name":"l_sadeye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye3"},{"time":0.0667,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye3"},{"time":0.2667,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye3"},{"time":0.4667,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye3"},{"time":0.6667,"name":"r_sadeye2"},{"time":0.7333,"name":"r_sadeye3"},{"time":0.8,"name":"r_sadeye3"},{"time":0.8667,"name":"r_sadeye2"},{"time":0.9333,"name":"r_sadeye3"},{"time":1,"name":"r_sadeye3"},{"time":1.0667,"name":"r_sadeye2"},{"time":1.1333,"name":"r_sadeye3"},{"time":1.2,"name":"r_sadeye3"},{"time":1.2667,"name":"r_sadeye2"},{"time":1.3333,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-12.25},{"time":0.6667,"angle":-18.91},{"time":1.3333,"angle":-12.25}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":1.66,"y":1.97},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"x":1.03,"y":1.03,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.073,0.87,0.75,1]},{"time":0.3333,"angle":-19.42,"curve":[0.073,0.87,0.75,1]},{"time":0.6667,"angle":-13.5,"curve":[0.073,0.87,0.75,1]},{"time":1,"angle":-20.56,"curve":[0.073,0.87,0.75,1]},{"time":1.3333,"angle":-13.5}],"translate":[{"time":0,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.3333,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":0.6667,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1,"x":-5.11,"y":1.22,"curve":"stepped"},{"time":1.3333,"x":-5.11,"y":1.22}]},"l_arm":{"rotate":[{"time":0,"angle":-30.13},{"time":0.6667,"angle":-34.2},{"time":1.3333,"angle":-30.13}],"translate":[{"time":0,"x":-4.01,"y":-10.42,"curve":"stepped"},{"time":0.6667,"x":-4.01,"y":-10.42,"curve":"stepped"},{"time":1.3333,"x":-4.01,"y":-10.42}]},"eyebrow":{"translate":[{"time":0,"x":-2.68,"y":0.34},{"time":0.6667,"x":-0.45,"y":0.13},{"time":1.3333,"x":-2.68,"y":0.34}]},"mouth":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":2.29,"y":-0.31},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-11.07},{"time":0.6667,"angle":-9.67},{"time":1.3333,"angle":-11.07}],"translate":[{"time":0,"x":-2.68,"y":-2.09,"curve":"stepped"},{"time":0.6667,"x":-2.68,"y":-2.09,"curve":"stepped"},{"time":1.3333,"x":-2.68,"y":-2.09}]},"r_arm2":{"rotate":[{"time":0,"angle":8.68},{"time":0.6667,"angle":10.95},{"time":1.3333,"angle":8.68}],"translate":[{"time":0,"x":0.5,"y":3.54,"curve":"stepped"},{"time":0.6667,"x":0.5,"y":3.54,"curve":"stepped"},{"time":1.3333,"x":0.5,"y":3.54}]},"l_arm2":{"rotate":[{"time":0,"angle":25.97},{"time":0.6667,"angle":26.52},{"time":1.3333,"angle":25.97}],"translate":[{"time":0,"x":-3.49,"y":5.94},{"time":0.6667,"x":-4.43,"y":9.95},{"time":1.3333,"x":-3.49,"y":5.94}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.01,"y":-0.42},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.01,"y":-0.42},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.983,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.02,"y":-0.99},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.02,"y":-0.99},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.977,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"eff_sad1":{"translate":[{"time":0,"x":19.34,"y":4.37}]},"eff_sad2":{"translate":[{"time":0,"x":12.48,"y":-18.72}]},"nan":{"rotate":[{"time":0,"angle":-27.49},{"time":0.3333,"angle":-32.06},{"time":0.6667,"angle":-27.49},{"time":1,"angle":-40.71},{"time":1.3333,"angle":-27.49}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.71},{"time":0.6667,"angle":0},{"time":1,"angle":-2.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.021,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.021,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.18},{"time":0.6667,"angle":0},{"time":1,"angle":-3.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.42},{"time":0.6667,"angle":0},{"time":1,"angle":-5.25},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.37},{"time":0.6667,"angle":0},{"time":1,"angle":4.38},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.21},{"time":0.6667,"angle":0},{"time":1,"angle":5.31},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.09},{"time":0.7333,"x":-6.82,"y":-0.21,"curve":"stepped"},{"time":0.8,"x":-6.82,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.11},{"time":0.6667,"angle":0},{"time":1,"angle":-5.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"nan":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.93},{"time":0.6667,"angle":0},{"time":1,"angle":-2.25},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.032,"y":1.037},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.002,"y":1.039},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow3"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.1667,"name":"mouth8"},{"time":0.5,"name":"mouth8"},{"time":0.8333,"name":"mouth8"},{"time":1,"name":"mouth_sad"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":11.03},{"time":0.5,"angle":15.96},{"time":0.8333,"angle":11.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.02,"y":2.96},{"time":0.5,"x":-0.02,"y":6.12},{"time":0.8333,"x":-0.02,"y":2.96},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.013,"y":1},{"time":0.5,"x":1.02,"y":1},{"time":0.8333,"x":1.046,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.66},{"time":0.5,"angle":10.75},{"time":0.8333,"angle":0.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.46,"y":-0.06},{"time":0.5,"x":0.25,"y":1.73},{"time":0.8333,"x":0.46,"y":-0.06},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":3.46,"y":0.01,"curve":"stepped"},{"time":0.1667,"x":3.46,"y":0.01},{"time":0.5,"x":7.09,"y":0.75},{"time":0.8333,"x":3.46,"y":0.01,"curve":"stepped"},{"time":1,"x":3.46,"y":0.01}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1},{"time":0.5,"x":1.106,"y":1},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.991,"y":1},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":16.72},{"time":0.5,"angle":38.52},{"time":0.8333,"angle":16.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.5,"x":-1.81,"y":1.21},{"time":0.8333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.8333,"x":0.968,"y":1},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-354.01},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-10.16},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-5.73},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":9.01},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"nan":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-23.36},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.2667,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.4333,"name":"mouth1"},{"time":0.8667,"name":"mouth2"},{"time":0.9333,"name":"mouth1"},{"time":1.0333,"name":"mouth1"},{"time":1.0667,"name":"mouth2"},{"time":1.1,"name":"mouth3"},{"time":1.1667,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.19},{"time":0.6667,"angle":0},{"time":1,"angle":-5.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.02,"y":-1.13},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.01,"y":-0.75},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.048,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.041,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.78},{"time":0.6667,"angle":0},{"time":1,"angle":-2.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.57},{"time":0.6667,"angle":0},{"time":1,"angle":-3.03},{"time":1.3333,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.15},{"time":0.6667,"angle":0},{"time":1,"angle":1.94},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.79},{"time":0.6667,"angle":0},{"time":1,"angle":3.79},{"time":1.3333,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7,"x":-2.78,"y":-0.09},{"time":0.7333,"x":-6.82,"y":-0.21},{"time":0.8333,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.19},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.03,"y":-1.43},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.968,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"nan":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.2},{"time":0.6667,"angle":0},{"time":1,"angle":13.61},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.022,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.036,"y":1.039},{"time":1.3333,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"},{"time":1,"name":"eyebrow2"}]},"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"},{"time":0.2333,"name":"l_eye7"},{"time":0.5,"name":"l_eye6"},{"time":0.7667,"name":"l_eye7"},{"time":1,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"},{"time":0.2333,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.7667,"name":"mouth5"},{"time":1,"name":"mouth7"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"},{"time":0.2333,"name":"r_eye7"},{"time":0.5,"name":"r_eye6"},{"time":0.7667,"name":"r_eye7"},{"time":1,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-3.76},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0.55,"y":1.32},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":3},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.026,"y":1.02},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-3.03},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_arm":{"rotate":[{"time":0,"angle":-2.13},{"time":0.5,"angle":0.26},{"time":1,"angle":-2.13}],"translate":[{"time":0,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":12.7},{"time":0.1667,"angle":1.3},{"time":0.3333,"angle":7.57},{"time":0.5,"angle":12.7},{"time":0.6667,"angle":1.3},{"time":0.8333,"angle":7.57},{"time":1,"angle":12.7}],"translate":[{"time":0,"x":-7.86,"y":8.83},{"time":0.1667,"x":-12.09,"y":14.97},{"time":0.3333,"x":-9.67,"y":4.45},{"time":0.5,"x":-7.86,"y":8.83},{"time":0.6667,"x":-12.09,"y":14.97},{"time":0.8333,"x":-9.67,"y":4.45},{"time":1,"x":-7.86,"y":8.83}]},"eyebrow":{"translate":[{"time":0,"x":0.57,"y":-1.01},{"time":0.5,"x":-2.07,"y":-1.06},{"time":1,"x":0.57,"y":-1.01}]},"r_arm2":{"rotate":[{"time":0,"angle":-3.32}],"translate":[{"time":0,"x":-0.53,"y":-0.8}]},"r_arm":{"rotate":[{"time":0,"angle":-3.72},{"time":0.5,"angle":-2.71},{"time":1,"angle":-3.72}]},"nan":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-3.71},{"time":0.5,"angle":0},{"time":0.7667,"angle":7.36},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/211101.png b/m78-all/m78-fe/public/images/character/211101.png new file mode 100644 index 000000000..09694474f Binary files /dev/null and b/m78-all/m78-fe/public/images/character/211101.png differ diff --git a/m78-all/m78-fe/public/images/character/211201.atlas b/m78-all/m78-fe/public/images/character/211201.atlas new file mode 100644 index 000000000..b93b6581c --- /dev/null +++ b/m78-all/m78-fe/public/images/character/211201.atlas @@ -0,0 +1,370 @@ + +211201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 2, 8 + size: 53, 72 + orig: 53, 72 + offset: 0, 0 + index: -1 +guitar + rotate: false + xy: 180, 145 + size: 138, 109 + orig: 138, 109 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 63 + size: 176, 191 + orig: 176, 191 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 227, 2 + size: 28, 29 + orig: 28, 29 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 166, 20 + size: 36, 23 + orig: 36, 23 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 227, 58 + size: 28, 43 + orig: 28, 43 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 320, 133 + size: 29, 43 + orig: 29, 43 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 156, 2 + size: 28, 16 + orig: 28, 16 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: true + xy: 283, 2 + size: 29, 13 + orig: 29, 13 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 180, 128 + size: 85, 15 + orig: 85, 15 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: true + xy: 257, 2 + size: 29, 24 + orig: 29, 24 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: false + xy: 410, 180 + size: 25, 23 + orig: 25, 23 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: false + xy: 364, 105 + size: 27, 24 + orig: 27, 24 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: true + xy: 466, 226 + size: 28, 44 + orig: 28, 44 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: true + xy: 319, 103 + size: 28, 43 + orig: 28, 43 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 191, 19 + size: 28, 43 + orig: 28, 43 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 392, 69 + size: 32, 13 + orig: 32, 13 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 392, 133 + size: 32, 15 + orig: 32, 15 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: true + xy: 390, 167 + size: 30, 18 + orig: 30, 18 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 122, 2 + size: 32, 16 + orig: 32, 16 + offset: 0, 0 + index: -1 +l_hand + rotate: true + xy: 221, 33 + size: 23, 43 + orig: 23, 43 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 267, 89 + size: 24, 54 + orig: 24, 54 + offset: 0, 0 + index: -1 +l_shirt + rotate: false + xy: 323, 67 + size: 27, 34 + orig: 27, 34 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 407, 69 + size: 32, 7 + orig: 32, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 375, 199 + size: 33, 13 + orig: 33, 13 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 352, 66 + size: 35, 21 + orig: 35, 21 + offset: 0, 0 + index: -1 +mouth_happy + rotate: true + xy: 301, 59 + size: 37, 20 + orig: 37, 20 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 476, 189 + size: 23, 12 + orig: 23, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 393, 103 + size: 28, 19 + orig: 28, 19 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: true + xy: 501, 188 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: true + xy: 304, 21 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 293, 98 + size: 24, 45 + orig: 24, 45 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 227, 88 + size: 38, 38 + orig: 38, 38 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 76, 21 + size: 45, 40 + orig: 45, 40 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 366, 214 + size: 42, 40 + orig: 42, 40 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 266, 33 + size: 36, 19 + orig: 36, 19 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 375, 66 + size: 37, 15 + orig: 37, 15 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 186, 2 + size: 39, 15 + orig: 39, 15 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: true + xy: 362, 164 + size: 33, 26 + orig: 33, 26 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 365, 131 + size: 31, 25 + orig: 31, 25 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: true + xy: 272, 54 + size: 33, 27 + orig: 33, 27 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 123, 20 + size: 41, 41 + orig: 41, 41 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 180, 86 + size: 45, 40 + orig: 45, 40 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: true + xy: 320, 164 + size: 45, 40 + orig: 45, 40 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 76, 2 + size: 44, 17 + orig: 44, 17 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 180, 64 + size: 45, 20 + orig: 45, 20 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 456, 203 + size: 43, 21 + orig: 43, 21 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 410, 205 + size: 44, 21 + orig: 44, 21 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 410, 228 + size: 26, 54 + orig: 26, 54 + offset: 0, 0 + index: -1 +r_shirt + rotate: false + xy: 320, 211 + size: 44, 43 + orig: 44, 43 + offset: 0, 0 + index: -1 +shirt1 + rotate: false + xy: 453, 177 + size: 21, 24 + orig: 21, 24 + offset: 0, 0 + index: -1 +shirt2 + rotate: false + xy: 437, 175 + size: 14, 28 + orig: 14, 28 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/211201.json b/m78-all/m78-fe/public/images/character/211201.json new file mode 100644 index 000000000..2605b3441 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/211201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"TvGZKoNjzs66oPGrpYHLsmn1VtY","spine":"3.5.25","width":186,"height":286,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":57.43,"rotation":90.77,"x":0.16,"y":39.02},{"name":"eff_exclamation","parent":"root","length":33.27,"rotation":31.68,"x":82.76,"y":242.33},{"name":"eff_panic","parent":"root","length":31.06,"rotation":-18.08,"x":89.39,"y":162.2},{"name":"eff_sad1","parent":"root","length":24.11,"rotation":-91.43,"x":-5.24,"y":125.83},{"name":"eff_sad2","parent":"root","length":20.49,"rotation":-91.68,"x":50.89,"y":108.55},{"name":"eff_star1","parent":"root","length":22.49,"rotation":20.38,"x":55.65,"y":72.43},{"name":"eff_star2","parent":"root","length":27.32,"rotation":165.96,"x":-52.19,"y":76.65},{"name":"eff_star3","parent":"root","length":18.48,"rotation":-19.03,"x":56.25,"y":39.3},{"name":"l_arm1","parent":"body","length":24.81,"rotation":-164.18,"x":53.76,"y":-13.14},{"name":"l_arm2","parent":"l_arm1","length":27.36,"rotation":55.23,"x":22.71,"y":0.12},{"name":"guitar","parent":"l_arm2","length":39.75,"rotation":56.84,"x":-9.45,"y":-28.42},{"name":"head","parent":"body","length":137.36,"rotation":-1.26,"x":57.43,"y":0.39},{"name":"l_eye","parent":"head","length":14.58,"rotation":25.69,"x":27.54,"y":-44.39},{"name":"l_eyebrow","parent":"head","length":23.82,"rotation":-101.74,"x":73.95,"y":-26.92},{"name":"l_hand","parent":"l_arm2","length":19.43,"rotation":134.23,"x":24.42,"y":0.26},{"name":"l_leg","parent":"root","length":42.3,"rotation":-91.05,"x":9.47,"y":43.68},{"name":"l_shirt","parent":"body","length":26.8,"rotation":-146.39,"x":8.03,"y":-9.03},{"name":"mouth","parent":"head","length":13.19,"rotation":28.56,"x":1.76,"y":-24.04},{"name":"r_arm1","parent":"body","length":33.76,"rotation":179.88,"x":54.95,"y":17.5},{"name":"r_arm2","parent":"r_arm1","length":31.06,"rotation":40.8,"x":30.66,"y":0.42},{"name":"r_eye","parent":"head","length":18.3,"rotation":-31.52,"x":25.03,"y":23.1},{"name":"r_eyebrow","parent":"head","length":29.98,"rotation":100.92,"x":74.85,"y":4.9},{"name":"r_leg","parent":"root","length":43.46,"rotation":-89.49,"x":-10.31,"y":43.29},{"name":"r_shirt","parent":"body","length":37.35,"rotation":146.53,"x":17.15,"y":5.98},{"name":"shirt1","parent":"body","length":21.76,"rotation":148.09,"x":4.2,"y":-5.1},{"name":"shirt2","parent":"body","length":22.52,"rotation":177.25,"x":1.49,"y":-4.68}],"slots":[{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"r_shirt","bone":"r_shirt","attachment":"r_shirt"},{"name":"l_shirt","bone":"l_shirt","attachment":"l_shirt"},{"name":"shirt2","bone":"shirt2","attachment":"shirt2"},{"name":"shirt1","bone":"shirt1","attachment":"shirt1"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body","bone":"body","attachment":"body"},{"name":"head","bone":"head","attachment":"head"},{"name":"guitar","bone":"guitar","attachment":"guitar"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_hand","bone":"l_hand","attachment":"l_hand"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy2"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy2"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy2"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"}],"skins":{"default":{"body":{"body":{"x":33.31,"y":1.94,"rotation":-90.77,"width":53,"height":72}},"guitar":{"guitar":{"x":25.97,"y":0.53,"rotation":-38.66,"width":138,"height":109}},"head":{"head":{"x":91.3,"y":7.5,"rotation":-89.51,"width":176,"height":191}},"l_arm1":{"l_arm1":{"x":12.99,"y":1.03,"rotation":73.41,"width":28,"height":29}},"l_arm2":{"l_arm2":{"x":11.93,"y":-0.74,"rotation":18.18,"width":36,"height":23}},"l_eye1":{"l_eye1":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":28,"height":43},"l_eye2":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":29,"height":43},"l_eye3":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":28,"height":16},"l_eye_happy":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":29,"height":13},"l_eye_sad":{"x":26.28,"y":24.85,"rotation":-115.2,"width":85,"height":15},"l_eye_sad1":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":29,"height":24},"l_eye_sad2":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":25,"height":23},"l_eye_sad3":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":27,"height":24},"l_eye_surprised":{"x":13.51,"y":-0.45,"rotation":-115.2,"width":28,"height":44},"l_eye_uneasy1":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":28,"height":43},"l_eye_uneasy2":{"x":14.22,"y":-0.78,"rotation":-115.2,"width":28,"height":43}},"l_eyebrow":{"l_eyebrow":{"x":14.71,"y":-12.53,"rotation":12.23,"width":32,"height":13},"l_eyebrow_sad":{"x":14.71,"y":-12.53,"rotation":12.23,"width":32,"height":15},"l_eyebrow_surprised":{"x":14.71,"y":-12.53,"rotation":12.23,"width":30,"height":18},"l_eyebrow_uneasy":{"x":14.71,"y":-12.53,"rotation":12.23,"width":32,"height":16}},"l_hand":{"l_hand":{"x":1.55,"y":5.57,"rotation":-116.05,"width":23,"height":43}},"l_leg":{"l_leg":{"x":19.36,"y":1.15,"rotation":91.05,"width":24,"height":54}},"l_shirt":{"l_shirt":{"x":13.57,"y":-1.18,"rotation":55.62,"width":27,"height":34}},"mouth1":{"mouth1":{"x":18.25,"y":7.02,"rotation":-118.07,"width":32,"height":7},"mouth2":{"x":19.97,"y":6.1,"rotation":-118.07,"width":33,"height":13},"mouth3":{"x":20.99,"y":5.56,"rotation":-118.07,"width":35,"height":21},"mouth_happy":{"x":21.33,"y":5.37,"rotation":-118.07,"width":37,"height":20},"mouth_sad":{"x":18.25,"y":7.02,"rotation":-118.07,"width":23,"height":12},"mouth_surprised":{"x":18.25,"y":7.02,"rotation":-118.07,"width":28,"height":19},"mouth_uneasy1":{"x":18.25,"y":7.02,"rotation":-118.07,"width":36,"height":8},"mouth_uneasy2":{"x":18.25,"y":7.02,"rotation":-118.07,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":19.9,"y":-2.88,"rotation":89.34,"width":24,"height":45}},"r_arm2":{"r_arm2":{"x":11.5,"y":1.28,"rotation":48.54,"width":38,"height":38}},"r_eye1":{"r_eye1":{"x":15.41,"y":2.95,"rotation":-57.99,"width":45,"height":40},"r_eye2":{"x":15.74,"y":3.16,"rotation":-57.99,"width":42,"height":40},"r_eye3":{"x":15.41,"y":2.95,"rotation":-57.99,"width":36,"height":19},"r_eye_happy":{"x":15.41,"y":2.95,"rotation":-57.99,"width":37,"height":15},"r_eye_sad":{"x":15.41,"y":2.95,"rotation":-57.99,"width":39,"height":15},"r_eye_sad1":{"x":15.41,"y":2.95,"rotation":-57.99,"width":33,"height":26},"r_eye_sad2":{"x":15.41,"y":2.95,"rotation":-57.99,"width":31,"height":25},"r_eye_sad3":{"x":15.41,"y":2.95,"rotation":-57.99,"width":33,"height":27},"r_eye_surprised":{"x":15.6,"y":3.07,"rotation":-57.99,"width":41,"height":41},"r_eye_uneasy1":{"x":15.41,"y":2.95,"rotation":-57.99,"width":45,"height":40},"r_eye_uneasy2":{"x":15.41,"y":2.95,"rotation":-57.99,"width":45,"height":40}},"r_eyebrow":{"r_eyebrow":{"x":17.57,"y":15.6,"rotation":169.56,"width":44,"height":17},"r_eyebrow_sad":{"x":17.57,"y":15.6,"rotation":169.56,"width":45,"height":20},"r_eyebrow_surprised":{"x":17.57,"y":15.6,"rotation":169.56,"width":43,"height":21},"r_eyebrow_uneasy":{"x":17.57,"y":15.6,"rotation":169.56,"width":44,"height":21}},"r_leg":{"r_leg":{"x":18.98,"y":-0.58,"rotation":89.49,"width":26,"height":54}},"r_shirt":{"r_shirt":{"x":21.46,"y":2.28,"rotation":122.7,"width":44,"height":43}},"shirt1":{"shirt1":{"x":12.21,"y":1.03,"rotation":121.14,"width":21,"height":24}},"shirt2":{"shirt2":{"x":12.25,"y":0.88,"rotation":91.97,"width":14,"height":28}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1,"name":"mouth2"},{"time":0.1667,"name":"mouth3"},{"time":0.4333,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.5667,"name":"mouth3"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":9.32},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.68,"y":1.37},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.23},{"time":0.5,"angle":2.03},{"time":0.7667,"angle":-1.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.1},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":3.78},{"time":0.5,"angle":0.28},{"time":0.8,"angle":-3.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.05,"y":0.07},{"time":0.5,"x":-0.55,"y":0.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-21.92,"curve":"stepped"},{"time":0.3333,"angle":-21.92,"curve":"stepped"},{"time":0.5,"angle":-21.92},{"time":0.6667,"angle":-0.14},{"time":0.8333,"angle":-1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.73,"y":-0.17,"curve":"stepped"},{"time":0.5,"x":2.73,"y":-0.17},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0.73,"y":0.64},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-0.68,"y":0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.21},{"time":0.3333,"angle":-14.99},{"time":0.5,"angle":-5.38},{"time":0.6667,"angle":2.51},{"time":0.8333,"angle":-7.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.02,"y":-0.47},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.93},{"time":0.5,"angle":0},{"time":0.6667,"angle":5.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":4.27,"curve":"stepped"},{"time":0.5,"angle":4.27},{"time":0.6667,"angle":1.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-351.37},{"time":0.6,"angle":-5.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.4,"angle":8.03},{"time":0.6667,"angle":-3.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5667,"x":-3.63,"y":0},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5667,"x":-3.63,"y":0},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":32.01},{"time":0.5,"angle":0},{"time":0.7667,"angle":34.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":8.04},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":6.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-31.58},{"time":0.5,"angle":0},{"time":0.7667,"angle":-31.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":6.7},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":6.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.06},{"time":0.5,"angle":0},{"time":0.7667,"angle":-7.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":6.7},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":6.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":9.66},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-356.2},{"time":0.5,"angle":-347.15},{"time":1,"angle":-356.2}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":14.14},{"time":0.5,"angle":0},{"time":0.7667,"angle":9.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-9.71},{"time":0.5,"angle":0},{"time":0.7667,"angle":-11.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-6.68,"y":10.81},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-6.68,"y":10.81},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.74},{"time":0.5,"angle":0},{"time":0.8333,"angle":-14.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-349.01},{"time":0.5,"angle":0},{"time":0.8333,"angle":-343.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":13.54},{"time":0.5,"angle":0},{"time":0.8333,"angle":20.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":1.62,"y":1.26},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.85,"y":-0.58},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":1.62,"y":1.26},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.85,"y":-0.58},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":0.4667,"name":"l_eye1"},{"time":0.9333,"name":"l_eye2"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"},{"time":1,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":0.4667,"name":"r_eye1"},{"time":0.9333,"name":"r_eye2"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.92},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.24},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.5},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.47},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.35},{"time":0.5,"angle":14.43},{"time":0.6667,"angle":-3.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-356.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.18,"y":-0.02,"curve":"stepped"},{"time":0.4,"x":-2.18,"y":-0.02},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0},{"time":1,"x":-2.18,"y":-0.02}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.18,"y":-0.02,"curve":"stepped"},{"time":0.4,"x":-2.18,"y":-0.02},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0},{"time":1,"x":-2.18,"y":-0.02}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad1"},{"time":0.1667,"name":"l_eye_sad2"},{"time":0.3333,"name":"l_eye_sad3"},{"time":0.5,"name":"l_eye_sad1"},{"time":0.6667,"name":"l_eye_sad2"},{"time":0.8333,"name":"l_eye_sad3"},{"time":1,"name":"l_eye_sad1"},{"time":1.1667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.6667,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad1"},{"time":0.1667,"name":"r_eye_sad2"},{"time":0.3333,"name":"r_eye_sad3"},{"time":0.5,"name":"r_eye_sad1"},{"time":0.6667,"name":"r_eye_sad2"},{"time":0.8333,"name":"r_eye_sad3"},{"time":1,"name":"r_eye_sad1"},{"time":1.1667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.6667,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.5},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-2.37},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-9.48},{"time":0.6667,"angle":-5.59},{"time":1,"angle":-16.99},{"time":1.3333,"angle":-9.48}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-12.63,"curve":"stepped"},{"time":0.9333,"angle":-12.63,"curve":"stepped"},{"time":1.3333,"angle":-12.63}],"translate":[{"time":0,"x":-2.98,"y":-1.73,"curve":"stepped"},{"time":0.4333,"x":-2.98,"y":-1.73},{"time":0.9333,"x":-4.75,"y":-1.88},{"time":1.3333,"x":-2.98,"y":-1.73}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.9333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.9333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.9333,"x":-1.77,"y":-0.15},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.9333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-32.31,"curve":"stepped"},{"time":0.6667,"angle":-32.31,"curve":"stepped"},{"time":1.3333,"angle":-32.31}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-21.1,"curve":"stepped"},{"time":0.6667,"angle":-21.1,"curve":"stepped"},{"time":1.3333,"angle":-21.1}],"translate":[{"time":0,"x":0.12,"y":-0.58,"curve":"stepped"},{"time":0.6667,"x":0.12,"y":-0.58,"curve":"stepped"},{"time":1.3333,"x":0.12,"y":-0.58}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":27.37},{"time":0.3333,"angle":23.17},{"time":0.6667,"angle":30.62},{"time":1,"angle":25.67},{"time":1.3333,"angle":27.37}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":29.81},{"time":0.6667,"angle":32.23},{"time":1.3333,"angle":29.81}],"translate":[{"time":0,"x":20.18,"y":-27.42,"curve":"stepped"},{"time":0.6667,"x":20.18,"y":-27.42,"curve":"stepped"},{"time":1.3333,"x":20.18,"y":-27.42}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.48},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":-7.55},{"time":0.8333,"angle":-10.72},{"time":1.3333,"angle":-7.55}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":3.61,"y":0.03},{"time":0.6667,"x":0.62,"y":-0.28},{"time":1.3333,"x":3.61,"y":0.03}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":3.61,"y":0.03},{"time":0.6667,"x":0.62,"y":-0.28},{"time":1.3333,"x":3.61,"y":0.03}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.57},{"time":0.6667,"angle":0},{"time":1,"angle":1.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-1.26},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.033,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.99,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.03},{"time":0.6667,"angle":0},{"time":1,"angle":7.09},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-355.86},{"time":0.6667,"angle":0},{"time":1,"angle":-19.35},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":7.26},{"time":0.6667,"angle":0},{"time":1,"angle":-5.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":23.49},{"time":0.6667,"angle":0},{"time":1,"angle":32.22},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.9},{"time":1,"angle":-0.82},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":3.02},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":5.72},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-354.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":6.85},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7667,"x":-3.63,"y":-0.03},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6,"x":0,"y":0},{"time":0.7667,"x":-3.63,"y":-0.03},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5667,"x":-3.62,"y":-0.29},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5667,"x":-3.62,"y":-0.29},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.98},{"time":0.3333,"angle":3.88},{"time":0.5,"angle":0},{"time":0.7333,"angle":-3.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0,"y":2.37},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6333,"angle":-3.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.4333,"x":-2.95,"y":0.16},{"time":0.6333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":9},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":9.91},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-1.12,"y":2.17},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-6.94},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-350.87},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":8.35},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.5,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.22},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.86},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.07},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":7.25},{"time":0.3333,"angle":-6.72},{"time":0.5,"angle":3.11},{"time":0.6667,"angle":-2.32},{"time":0.8333,"angle":3.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":6.44},{"time":0.5,"angle":0},{"time":0.7333,"angle":-8.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"guitar":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":7.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"shirt2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-356.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shirt":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/211201.png b/m78-all/m78-fe/public/images/character/211201.png new file mode 100644 index 000000000..ee54db37b Binary files /dev/null and b/m78-all/m78-fe/public/images/character/211201.png differ diff --git a/m78-all/m78-fe/public/images/character/211301.atlas b/m78-all/m78-fe/public/images/character/211301.atlas new file mode 100644 index 000000000..f84a5d474 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/211301.atlas @@ -0,0 +1,363 @@ + +211301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 431, 177 + size: 68, 77 + orig: 68, 77 + offset: 0, 0 + index: -1 +cloak + rotate: false + xy: 2, 5 + size: 132, 95 + orig: 132, 95 + offset: 0, 0 + index: -1 +hat + rotate: false + xy: 2, 102 + size: 251, 152 + orig: 251, 152 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 255, 97 + size: 174, 157 + orig: 174, 157 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 184, 35 + size: 37, 65 + orig: 37, 65 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 396, 59 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +l_arm3 + rotate: false + xy: 223, 63 + size: 30, 37 + orig: 30, 37 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 243, 5 + size: 29, 38 + orig: 29, 38 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 223, 36 + size: 30, 25 + orig: 30, 25 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 301, 5 + size: 29, 16 + orig: 29, 16 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 544, 128 + size: 30, 14 + orig: 30, 14 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 501, 238 + size: 88, 16 + orig: 88, 16 + offset: 0, 0 + index: -1 +l_eye_sad1 + rotate: false + xy: 865, 230 + size: 29, 24 + orig: 29, 24 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: false + xy: 352, 31 + size: 25, 23 + orig: 25, 23 + offset: 0, 0 + index: -1 +l_eye_sad3 + rotate: true + xy: 171, 2 + size: 27, 24 + orig: 27, 24 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 544, 144 + size: 29, 43 + orig: 29, 43 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: true + xy: 303, 23 + size: 29, 33 + orig: 29, 33 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: true + xy: 795, 225 + size: 29, 33 + orig: 29, 33 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 960, 241 + size: 33, 13 + orig: 33, 13 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: false + xy: 960, 241 + size: 33, 13 + orig: 33, 13 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 283, 2 + size: 32, 16 + orig: 32, 16 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 896, 236 + size: 31, 18 + orig: 31, 18 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: true + xy: 224, 2 + size: 32, 17 + orig: 32, 17 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 501, 177 + size: 41, 59 + orig: 41, 59 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 960, 231 + size: 32, 8 + orig: 32, 8 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 338, 19 + size: 33, 12 + orig: 33, 12 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 677, 232 + size: 35, 22 + orig: 35, 22 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 637, 233 + size: 38, 21 + orig: 38, 21 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 995, 242 + size: 25, 12 + orig: 25, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 929, 234 + size: 29, 20 + orig: 29, 20 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 431, 99 + size: 37, 10 + orig: 37, 10 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: true + xy: 575, 151 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 431, 111 + size: 43, 64 + orig: 43, 64 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 586, 193 + size: 29, 37 + orig: 29, 37 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 476, 135 + size: 47, 40 + orig: 47, 40 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 304, 54 + size: 45, 41 + orig: 45, 41 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 714, 235 + size: 37, 19 + orig: 37, 19 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 617, 193 + size: 37, 15 + orig: 37, 15 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 753, 239 + size: 40, 15 + orig: 40, 15 + offset: 0, 0 + index: -1 +r_eye_sad1 + rotate: false + xy: 830, 228 + size: 33, 26 + orig: 33, 26 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 197, 2 + size: 31, 25 + orig: 31, 25 + offset: 0, 0 + index: -1 +r_eye_sad3 + rotate: false + xy: 136, 2 + size: 33, 27 + orig: 33, 27 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 351, 56 + size: 43, 39 + orig: 43, 39 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: true + xy: 544, 189 + size: 47, 40 + orig: 47, 40 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 255, 55 + size: 47, 40 + orig: 47, 40 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: true + xy: 525, 129 + size: 46, 17 + orig: 46, 17 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: true + xy: 525, 129 + size: 46, 17 + orig: 46, 17 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 476, 113 + size: 47, 20 + orig: 47, 20 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 591, 232 + size: 44, 22 + orig: 44, 22 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 255, 36 + size: 46, 17 + orig: 46, 17 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 136, 31 + size: 46, 69 + orig: 46, 69 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/211301.json b/m78-all/m78-fe/public/images/character/211301.json new file mode 100644 index 000000000..4e8e29b15 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/211301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"RnKdvVcyGd9DOB9koTPx+K05k9o","spine":"3.5.25","width":251,"height":282,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":51.05,"rotation":90,"x":0.14,"y":49.77},{"name":"cloak","parent":"body","length":78.49,"rotation":179.17,"x":44.58,"y":-3.43},{"name":"eff_exclamation","parent":"root","length":17.6,"rotation":29.05,"x":100.25,"y":261.71},{"name":"eff_panic","parent":"root","length":20.53,"rotation":-12.01,"x":97.69,"y":136.94},{"name":"eff_sad1","parent":"root","length":17.44,"rotation":-93.58,"x":-8.78,"y":131.62},{"name":"eff_sad2","parent":"root","length":15.24,"rotation":-92.05,"x":46.71,"y":126.73},{"name":"eff_star1","parent":"root","length":17.16,"rotation":18.89,"x":51.54,"y":86.09},{"name":"eff_star2","parent":"root","length":19.31,"rotation":155.14,"x":-53.58,"y":86.94},{"name":"eff_star3","parent":"root","length":15.71,"rotation":-22.38,"x":60.09,"y":40.79},{"name":"head","parent":"body","length":123.07,"rotation":-0.53,"x":50.29,"y":0.38},{"name":"hat","parent":"head","length":99.1,"rotation":2.07,"x":71.37,"y":-12.67},{"name":"l_arm1","parent":"body","length":31.18,"rotation":-147.48,"x":43.81,"y":-19.43},{"name":"l_arm2","parent":"l_arm1","length":26.95,"rotation":-78.67,"x":31.65,"y":2.86},{"name":"l_eye","parent":"head","length":13.4,"rotation":15.36,"x":21.76,"y":-45.9},{"name":"l_eyebrow","parent":"head","length":35.53,"rotation":-93.77,"x":67.35,"y":-31.38},{"name":"l_leg","parent":"root","length":54.93,"rotation":-92.78,"x":13.85,"y":51.67,"scaleX":0.917},{"name":"mouth","parent":"head","length":14.38,"rotation":32.54,"x":1.03,"y":-28.95},{"name":"r_arm1","parent":"body","length":37.87,"rotation":156.27,"x":46.86,"y":19.43},{"name":"r_arm2","parent":"r_arm1","length":31.22,"rotation":-0.02,"x":32.42,"y":0.1},{"name":"r_eye","parent":"head","length":14.88,"rotation":-12.79,"x":19.99,"y":21.9},{"name":"r_eyebrow","parent":"head","length":35.47,"rotation":92.99,"x":67.05,"y":1.38},{"name":"r_leg","parent":"root","length":54.93,"rotation":-87.22,"x":-13.96,"y":55.48}],"slots":[{"name":"cloak","bone":"cloak","attachment":"cloak"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body","bone":"body","attachment":"body"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm3"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"hat","bone":"hat","attachment":"hat"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"}],"skins":{"default":{"body":{"body":{"x":24.49,"y":1.72,"rotation":-90,"width":68,"height":77}},"cloak":{"cloak":{"x":36.18,"y":-6.63,"rotation":90.83,"width":132,"height":95}},"hat":{"hat":{"x":32.82,"y":13.3,"rotation":-91.54,"width":251,"height":152}},"head":{"head":{"x":73.2,"y":0.02,"rotation":-89.47,"width":174,"height":157}},"l_arm1":{"l_arm1":{"x":26.14,"y":-7.96,"rotation":57.48,"width":37,"height":65}},"l_arm2":{"l_arm2":{"x":17.83,"y":1.84,"rotation":136.15,"width":36,"height":32},"l_arm3":{"x":15.52,"y":-1.65,"rotation":57.97,"width":30,"height":37}},"l_eye1":{"l_eye1":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":29,"height":38},"l_eye2":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":30,"height":25},"l_eye3":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":29,"height":16},"l_eye_happy":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":30,"height":14},"l_eye_sad":{"x":25.44,"y":28.25,"rotation":-104.83,"width":88,"height":16},"l_eye_sad1":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":29,"height":24},"l_eye_sad2":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":25,"height":23},"l_eye_sad3":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":27,"height":24},"l_eye_surprised":{"x":17.38,"y":-0.52,"rotation":-104.83,"width":29,"height":43},"l_eye_uneasy1":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":29,"height":33},"l_eye_uneasy2":{"x":17.8,"y":-0.63,"rotation":-104.83,"width":29,"height":33}},"l_eyebrow":{"l_eyebrow":{"x":10.71,"y":-7.07,"rotation":4.3,"width":33,"height":13},"l_eyebrow_happy":{"x":10.71,"y":-7.07,"rotation":4.3,"width":33,"height":13},"l_eyebrow_sad":{"x":10.71,"y":-7.07,"rotation":4.3,"width":32,"height":16},"l_eyebrow_surprised":{"x":10.71,"y":-7.07,"rotation":4.3,"width":31,"height":18},"l_eyebrow_uneasy":{"x":10.71,"y":-7.07,"rotation":4.3,"width":32,"height":17}},"l_leg":{"l_leg":{"x":27.84,"y":-1.7,"rotation":92.78,"width":41,"height":59}},"mouth1":{"mouth1":{"x":20.14,"y":7.81,"rotation":-122.01,"width":32,"height":8},"mouth2":{"x":20.98,"y":7.29,"rotation":-122.01,"width":33,"height":12},"mouth3":{"x":23.51,"y":5.71,"rotation":-122.01,"width":35,"height":22},"mouth_happy":{"x":24.08,"y":5.35,"rotation":-122.01,"width":38,"height":21},"mouth_sad":{"x":20.14,"y":7.81,"rotation":-122.01,"width":25,"height":12},"mouth_surprised":{"x":20.14,"y":7.81,"rotation":-122.01,"width":29,"height":20},"mouth_uneasy":{"x":20.14,"y":7.81,"rotation":-122.01,"width":37,"height":10},"mouth_uneasy2":{"x":20.14,"y":7.81,"rotation":-122.01,"width":36,"height":8}},"r_arm1":{"r_arm1":{"x":27.62,"y":1.45,"rotation":113.73,"width":43,"height":64}},"r_arm2":{"r_arm2":{"x":14.85,"y":0.15,"rotation":113.75,"width":29,"height":37}},"r_eye1":{"r_eye1":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":47,"height":40},"r_eye2":{"x":20.54,"y":-2.06,"rotation":-76.68,"width":45,"height":41},"r_eye3":{"x":18.14,"y":-1.74,"rotation":-76.68,"width":37,"height":19},"r_eye_happy":{"x":19.08,"y":-1.52,"rotation":-76.68,"width":37,"height":15},"r_eye_sad":{"x":17.19,"y":-1.96,"rotation":-76.68,"width":40,"height":15},"r_eye_sad1":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":33,"height":26},"r_eye_sad2":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":31,"height":25},"r_eye_sad3":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":33,"height":27},"r_eye_surprised":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":43,"height":39},"r_eye_uneasy1":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":47,"height":40},"r_eye_uneasy2":{"x":20.34,"y":-1.22,"rotation":-76.68,"width":47,"height":40}},"r_eyebrow":{"r_eyebrow":{"x":16.99,"y":9.13,"rotation":177.54,"width":46,"height":17},"r_eyebrow_happy":{"x":16.99,"y":9.13,"rotation":177.54,"width":46,"height":17},"r_eyebrow_sad":{"x":16.99,"y":9.13,"rotation":177.54,"width":47,"height":20},"r_eyebrow_surprised":{"x":16.99,"y":9.13,"rotation":177.54,"width":44,"height":22},"r_eyebrow_uneasy":{"x":16.99,"y":9.13,"rotation":177.54,"width":46,"height":17}},"r_leg":{"r_leg":{"x":23.26,"y":0.24,"rotation":87.22,"width":46,"height":69}}}},"animations":{"action":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.8333,"name":"mouth2"},{"time":0.9333,"name":"mouth3"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.82,"curve":"stepped"},{"time":0.8333,"angle":1.82},{"time":1,"angle":-1.88},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":0,"y":-1.08},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":1.35,"y":-0.1},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.01,"curve":"stepped"},{"time":0.8333,"angle":1.01},{"time":1,"angle":-4.04},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.03,"y":1.25,"curve":"stepped"},{"time":0.8333,"x":0.03,"y":1.25},{"time":1,"x":-3.63,"y":-3.25},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-358.83},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.037,"y":1.006},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1.1667,"angle":1.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":40.19},{"time":0.5,"angle":50.97},{"time":0.6667,"angle":46.35},{"time":0.8333,"angle":65.12},{"time":1,"angle":-2.21},{"time":1.1667,"angle":-4.61},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.03,"y":0.75,"curve":"stepped"},{"time":0.6667,"x":3.03,"y":0.75},{"time":0.8333,"x":2.51,"y":-0.38},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-232.38,"curve":"stepped"},{"time":0.6667,"angle":-232.38},{"time":0.8333,"angle":-281.78},{"time":1,"angle":-5.64},{"time":1.1667,"angle":-5.39},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-8.74,"y":5,"curve":"stepped"},{"time":0.6667,"x":-8.74,"y":5},{"time":0.8333,"x":-2.65,"y":1.87},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.67},{"time":0.6667,"angle":3.07,"curve":"stepped"},{"time":0.8333,"angle":3.07},{"time":1,"angle":-1.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.62,"y":0},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"happy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.2},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.57},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.57},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":1,"angle":-360}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.69},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.32,"y":3.95},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.51,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.006,"y":1.006},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.43},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":9.19},{"time":0.5,"angle":0},{"time":0.8,"angle":9.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":9.19},{"time":0.5,"angle":0},{"time":0.8,"angle":9.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.73},{"time":0.5,"angle":-3.36},{"time":0.7667,"angle":-12.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.73},{"time":0.5,"angle":-3.36},{"time":0.7667,"angle":-12.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.15},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.33},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.57,"y":0.11},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.57,"y":0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye_happy"},{"time":1,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.4333,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye_happy"},{"time":1,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.55},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.48},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.48},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.994,"y":0.986},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.62},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.07},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.14},{"time":0.5,"angle":0},{"time":0.8333,"angle":-6.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-7.75},{"time":0.5,"angle":0},{"time":0.7667,"angle":-7.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":-1.36,"y":-2.04},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":1,"name":"l_arm3"},{"time":1.3333,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad1"},{"time":0.1667,"name":"l_eye_sad2"},{"time":0.3333,"name":"l_eye_sad3"},{"time":0.5,"name":"l_eye_sad1"},{"time":0.6667,"name":"l_eye_sad2"},{"time":0.8333,"name":"l_eye_sad3"},{"time":1,"name":"l_eye_sad1"},{"time":1.1667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.6667,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad1"},{"time":0.1667,"name":"r_eye_sad2"},{"time":0.3333,"name":"r_eye_sad3"},{"time":0.5,"name":"r_eye_sad1"},{"time":0.6667,"name":"r_eye_sad2"},{"time":0.8333,"name":"r_eye_sad3"},{"time":1,"name":"r_eye_sad1"},{"time":1.1667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.8333,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5.46},{"time":0.6667,"angle":-9.61},{"time":1.3333,"angle":-5.46}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":-9,"curve":"stepped"},{"time":1.3333,"angle":-9}],"translate":[{"time":0,"x":-1.01,"y":3.24,"curve":"stepped"},{"time":1.3333,"x":-1.01,"y":3.24}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":4.14,"curve":"stepped"},{"time":1.3333,"angle":4.14}],"translate":[{"time":0,"x":0.35,"y":-3.31,"curve":"stepped"},{"time":1.3333,"x":0.35,"y":-3.31}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-1.31,"y":-0.23},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-1.11,"y":-1.55},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-2.2},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-2.23,"y":-0.38},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":-356.21},{"time":0.6667,"angle":-351.25},{"time":1.3333,"angle":-356.21}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.006,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":79.6},{"time":1,"angle":84.17},{"time":1.3333,"angle":79.6}],"translate":[{"time":0,"x":-2.89,"y":-3.38,"curve":"stepped"},{"time":1,"x":-2.89,"y":-3.38,"curve":"stepped"},{"time":1.3333,"x":-2.89,"y":-3.38}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-14.22},{"time":0.8333,"angle":-9.54},{"time":1.3333,"angle":-14.22}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":6.16},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-333.28},{"time":0.6667,"angle":-326.65},{"time":1.3333,"angle":-333.28}],"translate":[{"time":0,"x":-3.78,"y":-2.37,"curve":"stepped"},{"time":0.6667,"x":-3.78,"y":-2.37,"curve":"stepped"},{"time":1.3333,"x":-3.78,"y":-2.37}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-0.91},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-1.49,"y":-0.25},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.1},{"time":0.6667,"angle":0},{"time":1,"angle":-3.61},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-1.4},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.4},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.01,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.98},{"time":0.6667,"angle":0},{"time":1,"angle":-1.1},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.7,"y":-0.07},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.26},{"time":0.6667,"angle":0},{"time":1,"angle":-3.75},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.959,"y":0.973},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-1.26},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.29},{"time":0.6667,"angle":0},{"time":1,"angle":-13.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.01},{"time":0.6667,"angle":0},{"time":1,"angle":-12.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.37},{"time":0.6667,"angle":0},{"time":1,"angle":-1.71},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm3"},{"time":0.5,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.37,"y":0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":88.31},{"time":0.3333,"angle":98.06},{"time":0.5,"angle":88.31},{"time":0.8333,"angle":95.19},{"time":1,"angle":88.31}],"translate":[{"time":0,"x":-2.58,"y":-4.05,"curve":"stepped"},{"time":0.5,"x":-2.58,"y":-4.05,"curve":"stepped"},{"time":1,"x":-2.58,"y":-4.05}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.54},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":1.37},{"time":0.5,"x":0,"y":-0.69},{"time":0.7667,"x":0,"y":0.69},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.73,"y":1.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-357.09},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.016,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.017,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":23.87},{"time":0.5,"angle":0},{"time":0.7667,"angle":23.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.61},{"time":0.5,"angle":0},{"time":0.8333,"angle":-5.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-32.28},{"time":0.5,"angle":0},{"time":0.7667,"angle":-32.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.39},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.2667,"name":"mouth_uneasy2"},{"time":0.5,"name":"mouth_uneasy"},{"time":0.7667,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":3.46,"y":0.03,"curve":"stepped"},{"time":0.5,"x":3.46,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.61},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.89,"y":-2.29},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-358.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.014,"y":1.007},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.66,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":80.74,"curve":"stepped"},{"time":0.5,"angle":80.74,"curve":"stepped"},{"time":1,"angle":80.74}],"translate":[{"time":0,"x":2.71,"y":-1.06,"curve":"stepped"},{"time":0.5,"x":2.71,"y":-1.06,"curve":"stepped"},{"time":1,"x":2.71,"y":-1.06}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.84},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.66,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.96},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.37,"y":0.09},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.69,"y":-0.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/211301.png b/m78-all/m78-fe/public/images/character/211301.png new file mode 100644 index 000000000..b8f70a7c1 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/211301.png differ diff --git a/m78-all/m78-fe/public/images/character/212101.atlas b/m78-all/m78-fe/public/images/character/212101.atlas new file mode 100644 index 000000000..8b2467b7e --- /dev/null +++ b/m78-all/m78-fe/public/images/character/212101.atlas @@ -0,0 +1,300 @@ + +212101.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 529, 208 + size: 40, 51 + orig: 40, 51 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 472, 205 + size: 55, 43 + orig: 55, 43 + offset: 0, 0 + index: -1 +body_l + rotate: false + xy: 316, 119 + size: 49, 63 + orig: 49, 63 + offset: 0, 0 + index: -1 +body_r + rotate: true + xy: 273, 30 + size: 38, 25 + orig: 38, 25 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 380, 217 + size: 90, 12 + orig: 90, 12 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 380, 231 + size: 90, 17 + orig: 90, 17 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 112 + size: 166, 136 + orig: 166, 136 + offset: 0, 0 + index: -1 +f_hair2 + rotate: false + xy: 2, 6 + size: 153, 104 + orig: 153, 104 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 170, 108 + size: 144, 140 + orig: 144, 140 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 237, 6 + size: 23, 30 + orig: 23, 30 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 316, 184 + size: 62, 64 + orig: 62, 64 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 582, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 629, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 676, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: true + xy: 723, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: true + xy: 770, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: true + xy: 817, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye7 + rotate: true + xy: 864, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: true + xy: 911, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 1005, 210 + size: 17, 38 + orig: 17, 38 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 283, 70 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 535, 180 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 535, 152 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 367, 149 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 367, 121 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 269, 2 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 316, 91 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 311, 63 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 300, 35 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 573, 202 + size: 4, 4 + orig: 4, 4 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 307, 6 + size: 27, 27 + orig: 27, 27 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 237, 70 + size: 44, 36 + orig: 44, 36 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 237, 31 + size: 34, 37 + orig: 34, 37 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 958, 210 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 380, 177 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 427, 170 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 467, 165 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 157, 61 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 157, 14 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 197, 61 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 197, 14 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 514, 164 + size: 19, 39 + orig: 19, 39 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/212101.json b/m78-all/m78-fe/public/images/character/212101.json new file mode 100644 index 000000000..60d01974a --- /dev/null +++ b/m78-all/m78-fe/public/images/character/212101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"KrAJsclQK0liB1Cv/2VqrCEDJvw","spine":"3.5.25","width":166.99,"height":233.29,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.1,"x":1.7,"y":59.1},{"name":"body2","parent":"body","length":6.77,"rotation":177.8,"x":-5.14,"y":0.28},{"name":"body_l","parent":"body","length":29.51,"rotation":-119.48,"x":28.85,"y":-9.22},{"name":"body_r","parent":"body","length":36.1,"rotation":125.89,"x":27.13,"y":25.65},{"name":"l_arm","parent":"body","length":13.57,"rotation":-146.23,"x":19.22,"y":-11.67},{"name":"bone2","parent":"l_arm","length":12.12,"rotation":-0.43,"x":18.04,"y":-0.45},{"name":"eff_exclamation","parent":"root","length":22.03,"rotation":62.33,"x":37.19,"y":229.46},{"name":"eff_panic","parent":"root","length":18.48,"rotation":47.46,"x":68.21,"y":193.15},{"name":"eff_sad1","parent":"root","length":22.05,"rotation":-90.9,"x":0.89,"y":116.3},{"name":"eff_sad2","parent":"root","length":18.04,"rotation":-90,"x":50.37,"y":103.1},{"name":"eff_star1","parent":"root","length":15.56,"rotation":33.17,"x":59.3,"y":93.14},{"name":"eff_star2","parent":"root","length":13.15,"rotation":162.52,"x":-56.64,"y":84.03},{"name":"eff_star3","parent":"root","length":11.65,"rotation":-25.29,"x":61.12,"y":54.88},{"name":"head","parent":"body","length":132.6,"x":26.14,"y":0.57},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":65.56,"y":-9.21},{"name":"hair1","parent":"head","length":38.65,"rotation":178.68,"x":128.63,"y":-6.72},{"name":"hair4","parent":"head","length":22.17,"rotation":179.6,"x":91.52,"y":-5.97},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.65,"x":6.9,"y":43.08},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":15.2,"y":-5.16},{"name":"r_arm","parent":"body","length":21.99,"rotation":124.02,"x":17.6,"y":18.27},{"name":"r_arm2","parent":"r_arm","length":21.46,"rotation":123.23,"x":19.79,"y":3.35},{"name":"r_leg","parent":"root","length":44.6,"rotation":-88.73,"x":-8.57,"y":44.9}],"slots":[{"name":"body_r","bone":"body_r","attachment":"body_r"},{"name":"body_l","bone":"body_l","attachment":"body_l"},{"name":"f_hair4","bone":"hair4","attachment":"f_hair2"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm","attachment":"l_arm1"},{"name":"body1","bone":"body","attachment":"body"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_arm2","bone":"bone2","attachment":"l_arm2"},{"name":"f_hair1","bone":"hair1","attachment":"f_hair"}],"skins":{"default":{"body1":{"body":{"x":13.27,"y":4.13,"rotation":-89.1,"width":40,"height":51}},"body2":{"body2":{"x":13.9,"y":0.24,"rotation":93.1,"width":55,"height":43}},"body_l":{"body_l":{"x":11,"y":20.57,"rotation":30.38,"width":49,"height":63}},"body_r":{"body_r":{"x":16.44,"y":-0.82,"rotation":145.01,"width":38,"height":25}},"eyebrow":{"eyebrow1":{"x":1.05,"y":2.47,"rotation":-91.35,"width":90,"height":12},"eyebrow2":{"rotation":-91.35,"width":90,"height":17}},"f_hair1":{"f_hair":{"x":50.78,"y":-18.96,"rotation":92.22,"width":166,"height":136}},"f_hair4":{"f_hair2":{"x":51.35,"y":-13.88,"rotation":91.3,"width":153,"height":104}},"head":{"head":{"x":67.57,"y":9.95,"rotation":-89.55,"width":144,"height":140}},"l_arm1":{"l_arm1":{"x":7.02,"y":0.78,"rotation":57.13,"width":23,"height":30}},"l_arm2":{"l_arm2":{"x":30.24,"y":3.57,"rotation":57.65,"width":62,"height":64}},"l_eye":{"l_eye1":{"x":42.1,"y":-31.54,"rotation":-89.55,"width":38,"height":45},"l_eye2":{"x":42.77,"y":-30.48,"rotation":-89.55,"width":38,"height":45},"l_eye3":{"x":43.54,"y":-34.24,"rotation":-89.55,"width":38,"height":45},"l_eye4":{"x":40.43,"y":-32.92,"rotation":-89.55,"width":38,"height":45},"l_eye5":{"x":42.15,"y":-32.89,"rotation":-89.55,"width":38,"height":45},"l_eye6":{"path":"l_eye5","x":44.18,"y":-33.89,"rotation":-89.1,"width":38,"height":45},"l_eye7":{"path":"l_eye6","x":42.46,"y":-32.18,"rotation":-89.1,"width":38,"height":45},"l_eye8":{"path":"l_eye7","x":43.17,"y":-33.54,"rotation":-89.1,"width":38,"height":45},"l_happyeye":{"x":42.28,"y":-32.68,"rotation":-89.55,"width":38,"height":45}},"mouth":{"mouth1":{"x":-0.64,"y":0.63,"rotation":87.75,"width":36,"height":26},"mouth2":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth3":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth4":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth5":{"x":-0.64,"y":0.64,"rotation":87.75,"width":36,"height":26},"mouth6":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26},"mouth7":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26},"mouth8":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-0.64,"y":0.64,"rotation":88.64,"width":36,"height":26}},"nose":{"nose":{"x":26.7,"y":-18.08,"rotation":-89.55,"width":4,"height":4}},"png/l_leg":{"l_leg":{"x":25.42,"y":1.07,"rotation":88.65,"width":17,"height":38}},"png/r_leg":{"r_leg":{"x":26.92,"y":-1.14,"rotation":88.73,"width":19,"height":39}},"r_arm1":{"r_arm1":{"x":13.22,"y":1,"rotation":148.19,"width":27,"height":27}},"r_arm2":{"r_arm2":{"x":9.32,"y":-2.92,"rotation":40.47,"width":44,"height":36},"r_arm3":{"x":-3.14,"y":-7.37,"rotation":23.65,"width":34,"height":37}},"r_eye":{"r_eye1":{"x":41.53,"y":24.16,"rotation":-89.55,"width":38,"height":45},"r_eye2":{"x":41.38,"y":22.1,"rotation":-89.55,"width":38,"height":45},"r_eye3":{"x":46.12,"y":25.61,"rotation":-89.55,"width":38,"height":45},"r_eye4":{"x":43.44,"y":21.79,"rotation":-89.55,"width":38,"height":45},"r_eye5":{"x":43.47,"y":19.74,"rotation":-89.55,"width":38,"height":45},"r_eye6":{"path":"r_eye5","x":41.61,"y":22.13,"rotation":-89.1,"width":38,"height":45},"r_eye7":{"path":"r_eye6","x":40.91,"y":23.49,"rotation":-89.1,"width":38,"height":45},"r_eye8":{"path":"r_eye7","x":37.83,"y":22.75,"rotation":-89.1,"width":38,"height":45},"r_happyeye":{"x":43.03,"y":22.54,"rotation":-89.55,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1667,"name":"l_eye2"},{"time":0.2,"name":"l_eye3"},{"time":0.5,"name":"l_eye1"},{"time":0.6667,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.2333,"name":"mouth2"},{"time":0.2667,"name":"mouth3"},{"time":0.3667,"name":"mouth2"},{"time":0.4,"name":"mouth1"},{"time":0.5,"name":"mouth3"},{"time":0.6667,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1667,"name":"r_eye2"},{"time":0.2,"name":"r_eye3"},{"time":0.5,"name":"r_eye1"},{"time":0.6667,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.64},{"time":0.3333,"angle":-0.53},{"time":0.5,"angle":2.64},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":0.92},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.59,"y":0.2},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":5},{"time":0.3333,"angle":5.92},{"time":0.5,"angle":-1.84},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-358.33},{"time":0.6667,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":43.18},{"time":0.3333,"angle":50.98},{"time":0.5,"angle":22.82},{"time":0.6667,"angle":13.12}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-37.47},{"time":0.3333,"angle":39.33},{"time":0.5,"angle":8.93},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.5,"y":0.69},{"time":0.3333,"x":-3.49,"y":2.47},{"time":0.5,"x":1.5,"y":0.69},{"time":0.6667,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1333,"x":0,"y":0},{"time":0.1667,"x":-1.14,"y":-0.04},{"time":0.2,"x":-11.19,"y":0,"curve":"stepped"},{"time":0.4667,"x":-11.19,"y":0},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.19},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.19},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.976,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.03,"y":-1.43},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.03,"y":-1.43},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.968,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.968,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.12},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.12},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.949,"y":1.074},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.949,"y":1.074},{"time":0.6667,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1667,"angle":76.75},{"time":0.3333,"angle":79.74},{"time":0.5,"angle":74.05},{"time":0.6667,"angle":-13.78}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.51,"y":-0.58,"curve":"stepped"},{"time":0.3333,"x":-1.51,"y":-0.58,"curve":"stepped"},{"time":0.5,"x":-1.51,"y":-0.58},{"time":0.6667,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-9.68},{"time":0.3333,"angle":3.26},{"time":0.5,"angle":-7.07},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.7,"y":-1.28},{"time":0.3333,"x":-1.26,"y":-1.07},{"time":0.5,"x":0.24,"y":-2.2},{"time":0.6667,"x":0,"y":0}]},"hair4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.017,"y":1},{"time":0.6667,"x":1,"y":1}]},"body_r":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-17.46},{"time":0.3333,"angle":0},{"time":0.5,"angle":-10.18},{"time":0.6667,"angle":0}]},"body_l":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":8.89},{"time":0.3333,"angle":0},{"time":0.5,"angle":-5.24},{"time":0.6667,"angle":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.22},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":-3.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.06,"y":2.79},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.7333,"x":0.18,"y":2.16},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.051,"y":1},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1},{"time":0.7333,"x":1.037,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":11.1},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":-4.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.09,"y":1.56},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.7333,"x":-0.76,"y":-0.01},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":-9.21,"y":0,"curve":"stepped"},{"time":1,"x":-9.21,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-12.03},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":-34.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":48.05},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":20.33},{"time":1,"angle":0}]},"root":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.8},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":3.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-6.52,"y":8.82},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.7333,"x":3.12,"y":10.96},{"time":1,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":13.11},{"time":0.2667,"angle":-35.83},{"time":0.4667,"angle":18.71,"curve":"stepped"},{"time":0.5333,"angle":18.71},{"time":0.7333,"angle":-54.94},{"time":1,"angle":13.11}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-18.67},{"time":0.4667,"angle":9.44},{"time":0.5333,"angle":0},{"time":0.7333,"angle":2.54},{"time":1,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":73.08},{"time":0.4667,"angle":0},{"time":0.5333,"angle":-8.53},{"time":0.7333,"angle":54.9},{"time":1,"angle":0}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.3},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":6.81},{"time":1,"angle":0}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-351.05},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":-2.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.75,"y":0.22},{"time":0.4667,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0},{"time":0.7333,"x":1.68,"y":-0.15},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.768,"y":1},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1},{"time":0.7333,"x":0.739,"y":1},{"time":1,"x":1,"y":1}]},"body_r":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-15.79},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":-34.24},{"time":1,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.973,"y":1},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1},{"time":0.7333,"x":0.952,"y":1},{"time":1,"x":1,"y":1}]},"hair4":{"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.952,"y":1},{"time":0.4667,"x":1,"y":1,"curve":"stepped"},{"time":0.5333,"x":1,"y":1},{"time":0.7333,"x":0.949,"y":1},{"time":1,"x":1,"y":1}]},"body_l":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":50.77},{"time":0.4667,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0},{"time":0.7333,"angle":24.01},{"time":1,"angle":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye1"},{"time":0.6,"name":"l_eye2"},{"time":0.6667,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":1,"name":"mouth3"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye1"},{"time":0.6,"name":"r_eye2"},{"time":0.6667,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-16.32},{"time":0.3333,"angle":-13.24},{"time":0.5,"angle":-14.57},{"time":0.6667,"angle":-16.32},{"time":0.8333,"angle":-13.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.73,"y":0.91,"curve":"stepped"},{"time":0.8333,"x":3.73,"y":0.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.008,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.008,"y":1,"curve":"stepped"},{"time":0.5,"x":1.008,"y":1,"curve":"stepped"},{"time":0.6667,"x":1.008,"y":1,"curve":"stepped"},{"time":0.8333,"x":1.008,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.5,"angle":-9.93},{"time":0.8333,"angle":0.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.57,"y":-0.18,"curve":"stepped"},{"time":0.8333,"x":-1.57,"y":-0.18},{"time":1,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":13.12},{"time":0.1667,"angle":42.95,"curve":"stepped"},{"time":0.8333,"angle":42.95},{"time":1,"angle":13.12}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":26.2},{"time":0.8333,"angle":32.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-4.69,"y":-1.57},{"time":0.8333,"x":-4.7,"y":-0.62},{"time":1,"x":0,"y":0}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-355.44,"curve":"stepped"},{"time":0.8333,"angle":-355.44},{"time":1,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":-13.78},{"time":0.1667,"angle":-6.17,"curve":"stepped"},{"time":0.8333,"angle":-6.17},{"time":1,"angle":-13.78}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-11.32},{"time":0.8333,"angle":-45.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-3.84,"y":-2.35,"curve":"stepped"},{"time":0.8333,"x":-3.84,"y":-2.35},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":2.13,"y":0},{"time":0.3333,"x":3.46,"y":0},{"time":0.4,"x":4.88,"y":0.05,"curve":"stepped"},{"time":0.5667,"x":4.88,"y":0.05},{"time":0.6,"x":2.13,"y":0,"curve":"stepped"},{"time":0.6667,"x":2.13,"y":0},{"time":0.7,"x":0,"y":0}]},"hair4":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.5,"x":3.23,"y":-0.02},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body_r":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-24.97},{"time":0.5,"angle":0},{"time":0.7667,"angle":-33.34},{"time":1,"angle":0}]},"body_l":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":31.02},{"time":0.5,"angle":-8.43},{"time":0.7333,"angle":19.99},{"time":1,"angle":0}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5.42},{"time":0.2667,"angle":-9.26},{"time":0.5,"angle":-12.25},{"time":0.7667,"angle":-10.61},{"time":1,"angle":-5.42}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.02,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.02,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.2667,"angle":-19.81,"curve":[0.37,0.82,0.779,1]},{"time":0.5,"angle":-13.5,"curve":[0.084,0.53,0.517,0.83]},{"time":0.7667,"angle":-9.91},{"time":1,"angle":-13.5}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.94,"y":0},{"time":1,"x":0,"y":0}]},"mouth":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":3.01,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":3.01,"y":0},{"time":1,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.01,"y":-0.42},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.01,"y":-0.42},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.983,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.983,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.02,"y":-0.99},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.02,"y":-0.99},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.977,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.977,"y":1},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.75},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.027,"y":1},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":-269.99},{"time":0.2667,"angle":-270.39},{"time":0.5,"angle":-268.47},{"time":0.7667,"angle":-268.87},{"time":1,"angle":-269.99}],"translate":[{"time":0,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":-0.88},{"time":0.2667,"angle":1.85},{"time":0.5,"angle":-7.8},{"time":0.7667,"angle":-2.17},{"time":1,"angle":2.54}],"translate":[{"time":0,"x":-0.08,"y":2.91}]},"l_arm":{"rotate":[{"time":0,"angle":-13.35},{"time":0.2667,"angle":-16.26},{"time":0.5,"angle":-13.35},{"time":0.7667,"angle":-16.26},{"time":1,"angle":-13.35}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"bone2":{"rotate":[{"time":0,"angle":-16.21},{"time":0.2667,"angle":-45.93},{"time":0.5,"angle":-16.21},{"time":0.7667,"angle":-27.56},{"time":1,"angle":-16.21}],"translate":[{"time":0,"x":1.07,"y":1.68}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.48},{"time":0.5,"angle":0},{"time":0.7667,"angle":-355.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body_r":{"rotate":[{"time":0,"angle":20.67},{"time":0.2667,"angle":11.46},{"time":0.5,"angle":20.67},{"time":0.7667,"angle":12.18},{"time":1,"angle":20.67}],"translate":[{"time":0,"x":-2.09,"y":-4.04,"curve":"stepped"},{"time":0.2667,"x":-2.09,"y":-4.04,"curve":"stepped"},{"time":0.5,"x":-2.09,"y":-4.04,"curve":"stepped"},{"time":0.7667,"x":-2.09,"y":-4.04,"curve":"stepped"},{"time":1,"x":-2.09,"y":-4.04}]},"body_l":{"rotate":[{"time":0,"angle":-18.83},{"time":0.2667,"angle":-28.36},{"time":0.5,"angle":-18.83},{"time":0.7667,"angle":-16.04},{"time":1,"angle":-18.83}],"translate":[{"time":0,"x":-1.25,"y":-0.14,"curve":"stepped"},{"time":0.2667,"x":-1.25,"y":-0.14,"curve":"stepped"},{"time":0.5,"x":-1.25,"y":-0.14,"curve":"stepped"},{"time":0.7667,"x":-1.25,"y":-0.14,"curve":"stepped"},{"time":1,"x":-1.25,"y":-0.14}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.4333,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.4333,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.21},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.49,"y":1.48},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.97,"y":2.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.034,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.046,"y":1},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.73},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":-1.7,"y":0.28},{"time":0.2667,"x":-1.81,"y":-0.56},{"time":0.5,"x":-1.7,"y":0.28,"curve":"stepped"},{"time":0.7667,"x":-1.7,"y":0.28,"curve":"stepped"},{"time":1,"x":-1.7,"y":0.28}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5,"x":-2.78,"y":-0.09},{"time":0.5667,"x":-7.79,"y":-0.24,"curve":"stepped"},{"time":0.6333,"x":-7.79,"y":-0.24},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.08},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.03,"y":-1.19},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.03,"y":-1.19},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.976,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.976,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.02},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.03,"y":-1.43},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.03,"y":-1.43},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.968,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.968,"y":1},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-354.22},{"time":0.5,"angle":0},{"time":0.7667,"angle":-8.89},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":0.924,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.015,"y":1.055},{"time":1,"x":1,"y":1}]},"hair4":{"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.027,"y":1},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":0.978,"y":1},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":338.42},{"time":0.2667,"angle":-11.94},{"time":0.5,"angle":338.42},{"time":0.7667,"angle":-11.94},{"time":1,"angle":338.42}],"translate":[{"time":0,"x":-1.15,"y":0.02,"curve":"stepped"},{"time":0.2667,"x":-1.15,"y":0.02,"curve":"stepped"},{"time":0.5,"x":-1.15,"y":0.02,"curve":"stepped"},{"time":0.7667,"x":-1.15,"y":0.02,"curve":"stepped"},{"time":1,"x":-1.15,"y":0.02}]},"r_arm2":{"rotate":[{"time":0,"angle":-12.35},{"time":0.2667,"angle":-15.89},{"time":0.5,"angle":-10.36},{"time":0.7667,"angle":-15.89},{"time":1,"angle":-12.35}],"translate":[{"time":0,"x":4.29,"y":-0.77,"curve":"stepped"},{"time":0.5,"x":4.29,"y":-0.77,"curve":"stepped"},{"time":1,"x":4.29,"y":-0.77}]},"bone2":{"rotate":[{"time":0,"angle":16.14},{"time":0.2667,"angle":24.42},{"time":0.5,"angle":16.14},{"time":0.7667,"angle":28.66},{"time":1,"angle":16.14}],"translate":[{"time":0,"x":0.38,"y":3.91,"curve":"stepped"},{"time":0.2667,"x":0.38,"y":3.91,"curve":"stepped"},{"time":0.5,"x":0.38,"y":3.91,"curve":"stepped"},{"time":0.7667,"x":0.38,"y":3.91,"curve":"stepped"},{"time":1,"x":0.38,"y":3.91}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.17},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.17},{"time":1,"angle":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.68},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.32},{"time":1,"angle":0}]},"body_r":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-22.55},{"time":0.5,"angle":0},{"time":0.7667,"angle":-22.55},{"time":1,"angle":0}]},"body_l":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":372.65},{"time":0.5,"angle":0},{"time":0.7667,"angle":372.65},{"time":1,"angle":0}]},"root":{"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.28,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.28,"y":0},{"time":1,"x":0,"y":0}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":6.62},{"time":0.3333,"angle":8.87},{"time":0.6667,"angle":6.62}],"translate":[{"time":0,"x":-0.97,"y":0.97,"curve":"stepped"},{"time":0.3333,"x":-0.97,"y":0.97,"curve":"stepped"},{"time":0.6667,"x":-0.97,"y":0.97}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.024,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.29},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-358.65},{"time":0.6667,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":1.19,"y":0.04}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-353.22},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-246.44}],"translate":[{"time":0,"x":-6.28,"y":3.46}]},"body_r":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-34.45},{"time":0.6667,"angle":0}]},"body_l":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":32.66},{"time":0.6667,"angle":0}]},"l_arm":{"rotate":[{"time":0,"angle":47.94},{"time":0.3333,"angle":32.01},{"time":0.6667,"angle":47.94}]},"r_arm":{"rotate":[{"time":0,"angle":-280.88},{"time":0.3333,"angle":-276.75},{"time":0.6667,"angle":-280.88}]},"bone2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":19.74},{"time":0.6667,"angle":0}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-356.69},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1,"y":1.025},{"time":0.6667,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.3333,"name":"l_eye5"},{"time":0.6667,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1,"name":"mouth7"},{"time":0.2,"name":"mouth5"},{"time":0.3,"name":"mouth7"},{"time":0.4,"name":"mouth5"},{"time":0.5,"name":"mouth7"},{"time":0.6,"name":"mouth5"},{"time":0.6667,"name":"mouth7"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.3333,"name":"r_eye5"},{"time":0.6667,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.94},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.25},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.83,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.37},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.6},{"time":0.3333,"angle":0},{"time":0.5,"angle":-4.32},{"time":0.6667,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.69,"y":-0.05},{"time":0.6667,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.04,"y":-2.36},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.04,"y":-2.36},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.07,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.07,"y":-2.85},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.78},{"time":0.3333,"angle":0},{"time":0.5,"angle":-355.9},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}]},"r_arm":{"rotate":[{"time":0,"angle":-282.41},{"time":0.3333,"angle":-270.35},{"time":0.6667,"angle":-282.41}],"translate":[{"time":0,"x":3.58,"y":0.96,"curve":"stepped"},{"time":0.3333,"x":3.58,"y":0.96,"curve":"stepped"},{"time":0.6667,"x":3.58,"y":0.96}]},"l_arm":{"rotate":[{"time":0,"angle":-16.28},{"time":0.3333,"angle":-19.97},{"time":0.6667,"angle":-16.28}],"translate":[{"time":0,"x":1.35,"y":0.02,"curve":"stepped"},{"time":0.3333,"x":1.35,"y":0.02,"curve":"stepped"},{"time":0.6667,"x":1.35,"y":0.02}]},"r_arm2":{"rotate":[{"time":0,"angle":20.59},{"time":0.3333,"angle":11.82},{"time":0.6667,"angle":20.59}],"translate":[{"time":0,"x":2.14,"y":3.54,"curve":"stepped"},{"time":0.3333,"x":2.14,"y":3.54,"curve":"stepped"},{"time":0.6667,"x":2.14,"y":3.54}]},"bone2":{"rotate":[{"time":0,"angle":1.36},{"time":0.3333,"angle":-9.43},{"time":0.6667,"angle":1.36}],"translate":[{"time":0,"x":1.1,"y":3.54,"curve":"stepped"},{"time":0.3333,"x":1.1,"y":3.54,"curve":"stepped"},{"time":0.6667,"x":1.1,"y":3.54}]},"hair1":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"hair4":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.022,"y":1},{"time":0.6667,"x":1,"y":1}]},"body_r":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-22.43},{"time":0.6667,"angle":0}]},"body_l":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":16.04},{"time":0.6667,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/212101.png b/m78-all/m78-fe/public/images/character/212101.png new file mode 100644 index 000000000..4cfaaacd7 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/212101.png differ diff --git a/m78-all/m78-fe/public/images/character/212301.atlas b/m78-all/m78-fe/public/images/character/212301.atlas new file mode 100644 index 000000000..abea6c5d0 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/212301.atlas @@ -0,0 +1,314 @@ + +212301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_hair + rotate: false + xy: 2, 9 + size: 155, 106 + orig: 155, 106 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 159, 2 + size: 45, 44 + orig: 45, 44 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 495, 210 + size: 60, 44 + orig: 60, 44 + offset: 0, 0 + index: -1 +hat + rotate: false + xy: 2, 117 + size: 199, 137 + orig: 199, 137 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 203, 108 + size: 146, 147 + orig: 146, 147 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 557, 182 + size: 30, 33 + orig: 30, 33 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 970, 226 + size: 35, 28 + orig: 35, 28 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 352, 108 + size: 40, 32 + orig: 40, 32 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 933, 221 + size: 35, 33 + orig: 35, 33 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 273, 63 + size: 28, 12 + orig: 28, 12 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 557, 163 + size: 30, 17 + orig: 30, 17 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 589, 174 + size: 30, 15 + orig: 30, 15 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 767, 222 + size: 40, 32 + orig: 40, 32 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 394, 108 + size: 40, 32 + orig: 40, 32 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 809, 222 + size: 40, 32 + orig: 40, 32 + offset: 0, 0 + index: -1 +l_eyebrow1 + rotate: false + xy: 273, 77 + size: 36, 14 + orig: 36, 14 + offset: 0, 0 + index: -1 +l_eyebrowsad + rotate: true + xy: 1007, 218 + size: 36, 15 + orig: 36, 15 + offset: 0, 0 + index: -1 +l_hair + rotate: false + xy: 438, 148 + size: 55, 106 + orig: 55, 106 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 630, 194 + size: 21, 41 + orig: 21, 41 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 589, 163 + size: 24, 9 + orig: 24, 9 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 381, 92 + size: 23, 14 + orig: 23, 14 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 589, 191 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +mouth_sad1 + rotate: false + xy: 725, 209 + size: 12, 7 + orig: 12, 7 + offset: 0, 0 + index: -1 +mouth_sad2 + rotate: true + xy: 715, 201 + size: 14, 8 + orig: 14, 8 + offset: 0, 0 + index: -1 +mouth_sad3 + rotate: false + xy: 534, 151 + size: 18, 12 + orig: 18, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 354, 90 + size: 25, 16 + orig: 25, 16 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 197, 80 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 197, 52 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 895, 222 + size: 32, 36 + orig: 32, 36 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 235, 80 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 557, 217 + size: 40, 37 + orig: 40, 37 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 725, 218 + size: 40, 36 + orig: 40, 36 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 273, 93 + size: 41, 13 + orig: 41, 13 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 851, 226 + size: 42, 28 + orig: 42, 28 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 235, 62 + size: 36, 16 + orig: 36, 16 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 599, 217 + size: 40, 37 + orig: 40, 37 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 641, 217 + size: 40, 37 + orig: 40, 37 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 683, 217 + size: 40, 37 + orig: 40, 37 + offset: 0, 0 + index: -1 +r_eyebrow1 + rotate: false + xy: 316, 92 + size: 36, 14 + orig: 36, 14 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 673, 197 + size: 40, 18 + orig: 40, 18 + offset: 0, 0 + index: -1 +r_hair + rotate: false + xy: 352, 142 + size: 84, 112 + orig: 84, 112 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 534, 165 + size: 21, 43 + orig: 21, 43 + offset: 0, 0 + index: -1 +rope1 + rotate: false + xy: 495, 151 + size: 37, 57 + orig: 37, 57 + offset: 0, 0 + index: -1 +rope2 + rotate: false + xy: 159, 48 + size: 36, 67 + orig: 36, 67 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/212301.json b/m78-all/m78-fe/public/images/character/212301.json new file mode 100644 index 000000000..0855914ee --- /dev/null +++ b/m78-all/m78-fe/public/images/character/212301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"SDniL5vToeGAf8vhUaz/XK0RODM","spine":"3.5.25","width":199,"height":255.31,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":36.97,"rotation":88.64,"x":0.66,"y":53.84},{"name":"head","parent":"body1","length":121.46,"rotation":0.45,"x":33.88,"y":0.37},{"name":"b_hair","parent":"head","length":28.6,"rotation":-179.97,"x":82.85,"y":-7.49},{"name":"body2","parent":"body1","length":36.96,"rotation":-179.32,"x":3.08,"y":0.07},{"name":"eff_exclamation","parent":"root","length":25.78,"rotation":30.76,"x":93.45,"y":190.31},{"name":"eff_panic","parent":"root","length":20.53,"rotation":-25.91,"x":87.12,"y":127.54},{"name":"eff_sad1","parent":"root","length":16.36,"rotation":-91.85,"x":-18.92,"y":121.21},{"name":"eff_sad2","parent":"root","length":16.91,"rotation":-93.58,"x":35.42,"y":121.21},{"name":"eff_star1","parent":"root","length":21,"rotation":25.28,"x":47.55,"y":73.2},{"name":"eff_star2","parent":"root","length":20.87,"rotation":159.27,"x":-54.79,"y":71.62},{"name":"eff_star3","parent":"root","length":13.45,"rotation":-25.56,"x":42.8,"y":32.06},{"name":"hat","parent":"head","length":71.29,"rotation":0.2,"x":94.72,"y":-6.86},{"name":"l_arm1","parent":"body1","length":25.22,"rotation":-135.76,"x":25.72,"y":-8.19},{"name":"l_arm2","parent":"l_arm1","length":23.96,"rotation":1.38,"x":21.19,"y":-0.46},{"name":"l_eye","parent":"head","length":15.86,"rotation":4.09,"x":25.59,"y":-32.16},{"name":"l_eyebrow","parent":"head","length":27.29,"rotation":-90.94,"x":65.39,"y":-16.56},{"name":"l_hair","parent":"head","length":58.8,"rotation":-134.39,"x":102.87,"y":-21.25},{"name":"l_leg","parent":"root","length":35.21,"rotation":-91.43,"x":8.14,"y":36.68},{"name":"mouth","parent":"head","length":18.06,"rotation":34.99,"x":1.19,"y":-19.78},{"name":"r_arm1","parent":"body1","length":31.44,"rotation":138.07,"x":32.22,"y":14.85},{"name":"r_arm2","parent":"r_arm1","length":25.75,"rotation":150.19,"x":32.12,"y":1.85},{"name":"r_eye","parent":"head","length":17.18,"rotation":-2.03,"x":22.52,"y":22.8},{"name":"r_eyebrow","parent":"head","length":33,"rotation":90.91,"x":64.13,"y":7.18},{"name":"r_hair","parent":"head","length":79.89,"rotation":131.44,"x":114.01,"y":-2.15},{"name":"r_leg","parent":"root","length":36.1,"rotation":-87.9,"x":-8.14,"y":36.24},{"name":"rope1","parent":"r_arm2","length":11.81,"rotation":46.55,"x":20.57,"y":1.11},{"name":"rope2","parent":"rope1","length":38.8,"rotation":-159.09,"x":-3.94,"y":10.82}],"slots":[{"name":"rope2","bone":"rope2","attachment":"rope2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"b_hair","bone":"b_hair","attachment":"b_hair"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eyebrow1","bone":"l_eyebrow","attachment":"l_eyebrow1"},{"name":"r_eyebrow1","bone":"r_eyebrow","attachment":"r_eyebrow1"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"rope1","bone":"rope1","attachment":"rope1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"hat","bone":"hat","attachment":"hat"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy1"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy1"}],"skins":{"default":{"b_hair":{"b_hair":{"x":43.41,"y":-14.46,"rotation":90.88,"width":155,"height":106}},"body1":{"body1":{"x":14.41,"y":0.23,"rotation":-88.64,"width":45,"height":44}},"body2":{"body2":{"x":15.68,"y":-1.2,"rotation":90.68,"width":60,"height":44}},"hat":{"hat":{"x":0.28,"y":12.69,"rotation":-89.29,"width":199,"height":137}},"head":{"head":{"x":62.89,"y":9.82,"rotation":-89.09,"width":146,"height":147}},"l_arm1":{"l_arm1":{"x":15.81,"y":1.44,"rotation":47.12,"width":30,"height":33}},"l_arm2":{"l_arm2":{"x":13.76,"y":2.28,"rotation":45.74,"width":35,"height":28}},"l_eye1":{"l_eye1":{"x":15.51,"y":0.52,"rotation":-93.18,"width":40,"height":32},"l_eye2":{"x":15.4,"y":-1.45,"rotation":-93.18,"width":35,"height":33},"l_eye3":{"x":14.19,"y":0.6,"rotation":-93.18,"width":28,"height":12},"l_eye_happy":{"x":15.51,"y":0.52,"rotation":-93.18,"width":30,"height":17},"l_eye_sad":{"x":14.52,"y":0.58,"rotation":-93.18,"width":30,"height":15},"l_eye_surprised":{"x":15.51,"y":0.52,"rotation":-93.18,"width":40,"height":32},"l_eye_uneasy1":{"x":15.51,"y":0.52,"rotation":-93.18,"width":40,"height":32},"l_eye_uneasy2":{"x":15.51,"y":0.52,"rotation":-93.18,"width":40,"height":32}},"l_eyebrow1":{"l_eyebrow1":{"x":19.68,"y":-2.95,"rotation":1.85,"width":36,"height":14},"l_eyebrowsad":{"x":19.68,"y":-2.95,"rotation":1.85,"width":36,"height":15}},"l_hair":{"l_hair":{"x":38.1,"y":-12.66,"rotation":45.3,"width":55,"height":106}},"l_leg":{"l_leg":{"x":17.93,"y":0.09,"rotation":91.43,"width":21,"height":41}},"mouth1":{"mouth1":{"x":18.53,"y":3.91,"rotation":-124.08,"width":24,"height":9},"mouth2":{"x":18.53,"y":3.91,"rotation":-124.08,"width":23,"height":14},"mouth_happy":{"x":20.08,"y":4.45,"rotation":-124.08,"width":39,"height":24},"mouth_sad1":{"x":18.53,"y":3.91,"rotation":-124.08,"width":12,"height":7},"mouth_sad2":{"x":18.53,"y":3.91,"rotation":-124.08,"width":14,"height":8},"mouth_sad3":{"x":18.53,"y":3.91,"rotation":-124.08,"width":18,"height":12},"mouth_surprised":{"x":18.53,"y":3.91,"rotation":-124.08,"width":25,"height":16},"mouth_uneasy1":{"x":17.71,"y":4.47,"rotation":-124.08,"width":36,"height":26},"mouth_uneasy2":{"x":19.07,"y":3.54,"rotation":-124.08,"width":36,"height":26}},"r_arm1":{"r_arm1":{"x":20.92,"y":2.8,"rotation":133.3,"width":32,"height":36}},"r_arm2":{"r_arm2":{"x":17.27,"y":0.5,"rotation":-16.89,"width":36,"height":26}},"r_eye1":{"r_eye1":{"x":18.16,"y":0.31,"rotation":-87.06,"width":40,"height":37},"r_eye2":{"x":18.2,"y":-0.34,"rotation":-87.06,"width":40,"height":36},"r_eye3":{"x":16.81,"y":0.9,"rotation":-87.06,"width":41,"height":13},"r_eye_happy":{"x":17.66,"y":-2.68,"rotation":-87.06,"width":42,"height":28},"r_eye_sad":{"x":16.85,"y":0.25,"rotation":-87.06,"width":36,"height":16},"r_eye_surprised":{"x":18.16,"y":0.31,"rotation":-87.06,"width":40,"height":37},"r_eye_uneasy1":{"x":18.16,"y":0.31,"rotation":-87.06,"width":40,"height":37},"r_eye_uneasy2":{"x":18.16,"y":0.31,"rotation":-87.06,"width":40,"height":37}},"r_eyebrow1":{"r_eyebrow1":{"x":12.66,"y":2.71,"rotation":-180,"width":36,"height":14},"r_eyebrow_sad":{"x":12.66,"y":2.71,"rotation":-180,"width":40,"height":18}},"r_hair":{"r_hair":{"x":57.91,"y":14.2,"rotation":139.47,"width":84,"height":112}},"r_leg":{"r_leg":{"x":17.43,"y":-1.72,"rotation":87.9,"width":21,"height":43}},"rope1":{"rope1":{"x":-6.07,"y":5.33,"rotation":-63.43,"width":37,"height":57}},"rope2":{"rope2":{"x":36.32,"y":1.34,"rotation":119.18,"width":36,"height":67}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6,"name":"l_eye2"},{"time":0.6667,"name":"l_eye3"},{"time":0.7333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrow1"},{"time":1,"name":"l_eyebrow1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.5,"name":"mouth2"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6,"name":"r_eye2"},{"time":0.6667,"name":"r_eye3"},{"time":0.7333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow1"},{"time":1,"name":"r_eyebrow1"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.37},{"time":0.3333,"angle":2.59},{"time":0.5,"angle":-3.75},{"time":0.8333,"angle":-5.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6,"x":0,"y":1.78},{"time":0.8333,"x":0,"y":-2.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.98},{"time":0.5,"angle":355.11},{"time":0.6667,"angle":352.53},{"time":0.8333,"angle":358.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.75},{"time":0.6,"angle":-0.92},{"time":0.8333,"angle":0.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.29,"y":0.03},{"time":0.6,"x":0.51,"y":0.14},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.64},{"time":0.5,"angle":4.22},{"time":0.8333,"angle":4.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.64},{"time":0.5,"angle":4.22},{"time":0.8333,"angle":4.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.4,"x":3.58,"y":-1.17},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":3.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.22,"y":-0.63},{"time":0.5,"x":0.52,"y":1.7},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.34},{"time":0.5,"angle":-1.87},{"time":0.8333,"angle":4.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.09},{"time":0.6667,"angle":1.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.5},{"time":0.8333,"angle":0.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":359.02},{"time":0.6667,"angle":1.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.26},{"time":0.5,"angle":-1.63},{"time":0.6667,"angle":-5.58},{"time":0.8333,"angle":-4.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":3.4,"y":-2.37},{"time":0.6667,"x":-3.24,"y":-5.54},{"time":0.8333,"x":-2.16,"y":-4.17},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0},{"time":0.6667,"x":-3.84,"y":1.5},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0},{"time":0.6667,"x":-3.84,"y":1.5},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrow1"},{"time":1,"name":"l_eyebrow1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow1"},{"time":1,"name":"r_eyebrow1"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":18.19},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-5.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.48},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.3},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.3},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.65},{"time":0.5,"angle":0},{"time":0.7667,"angle":-0.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.18,"y":0.04},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.18,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.34},{"time":0.5,"angle":0},{"time":0.7667,"angle":18.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.09},{"time":0.5,"angle":0},{"time":0.8333,"angle":10.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.72},{"time":0.5,"angle":-1.39},{"time":0.8333,"angle":1.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrow1"},{"time":1,"name":"l_eyebrow1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.7,"name":"mouth1"},{"time":1,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow1"},{"time":1,"name":"r_eyebrow1"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.13},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.52},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.91},{"time":0.5,"angle":0},{"time":0.7667,"angle":7.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.91},{"time":0.5,"angle":0},{"time":0.7667,"angle":7.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.94},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5667,"x":-2.88,"y":-0.11},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4667,"x":0,"y":0},{"time":0.5667,"x":-2.88,"y":-0.11},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrowsad"},{"time":1.3333,"name":"l_eyebrowsad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad1"},{"time":1.3333,"name":"mouth_sad1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-7.35},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.53},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.5},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-27.42},{"time":0.8333,"angle":-22.67},{"time":1.3333,"angle":-27.42}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.49},{"time":0.6667,"angle":2.33},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.71},{"time":0.8333,"angle":7.76},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.51},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":2.7},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.6667,"angle":-4.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-1.52,"y":-3.55},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-2.07,"y":-1.3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-2.07,"y":-1.3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrow1"},{"time":1.3333,"name":"l_eyebrow1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow1"},{"time":1.3333,"name":"r_eyebrow1"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.67},{"time":0.6667,"angle":0},{"time":1,"angle":-4.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.18},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.18},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.023,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.982,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":7.09},{"time":1,"angle":353.24},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-4.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.19},{"time":0.6667,"angle":0},{"time":1,"angle":-2.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.65},{"time":0.6667,"angle":0},{"time":1,"angle":-19.27},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-12.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.31},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.4,"y":0.59},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-1.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":358.37},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.41},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.7333,"x":-2.88,"y":-0.09},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.7333,"x":-2.88,"y":-0.09},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":0.3333,"name":"l_eye3"},{"time":0.4,"name":"l_eye_surprised"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrow1"},{"time":1,"name":"l_eyebrow1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":0.3333,"name":"r_eye3"},{"time":0.4,"name":"r_eye_surprised"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow1"},{"time":1,"name":"r_eyebrow1"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.36},{"time":0.5,"angle":0},{"time":0.7333,"angle":-2.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":1.55},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":1.55},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.02},{"time":0.5,"angle":0},{"time":0.8333,"angle":358.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.2667,"x":1.93,"y":-0.02},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":1.93,"y":-0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":8.54},{"time":0.5,"angle":0},{"time":0.8,"angle":5.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.24,"y":0.73},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.24,"y":0.73},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.4},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.37},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":1.61},{"time":0.5,"angle":0},{"time":0.8667,"angle":0.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.3333,"x":3.48,"y":-0.02},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":4.44,"y":0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.008,"y":1.008},{"time":0.5,"x":1,"y":1},{"time":0.8333,"x":1.007,"y":1.007},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.99,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":2.21,"y":0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.99,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":2.21,"y":0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.3333,"name":"l_eye_uneasy1"},{"time":0.6667,"name":"l_eye_uneasy1"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow1":{"attachment":[{"time":0,"name":"l_eyebrow1"},{"time":0.3333,"name":"l_eyebrow1"},{"time":0.6667,"name":"l_eyebrow1"},{"time":1,"name":"l_eyebrow1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth_uneasy1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.3333,"name":"r_eye_uneasy1"},{"time":0.6667,"name":"r_eye_uneasy1"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow1":{"attachment":[{"time":0,"name":"r_eyebrow1"},{"time":0.3333,"name":"r_eyebrow1"},{"time":0.6667,"name":"r_eyebrow1"},{"time":1,"name":"r_eyebrow1"}]}},"bones":{"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.64},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.32},{"time":0.6667,"angle":0.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.83,"y":-0.29},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":16.26},{"time":0.5,"angle":2.33},{"time":0.7333,"angle":19.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":11},{"time":0.5,"angle":0.08},{"time":0.7667,"angle":3.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.22,"y":0.18},{"time":0.6667,"x":-0.61,"y":-0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":5.55},{"time":0.7333,"angle":0.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":1.34,"y":-0.28},{"time":0.6667,"x":0.65,"y":-0.23},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"rope2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.67},{"time":0.6667,"angle":-4.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.04},{"time":0.6667,"angle":1.07},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.37},{"time":0.7333,"angle":1.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.6667,"angle":1.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.77},{"time":0.6667,"angle":4.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.95,"y":1.71},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/212301.png b/m78-all/m78-fe/public/images/character/212301.png new file mode 100644 index 000000000..ef4c3fb68 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/212301.png differ diff --git a/m78-all/m78-fe/public/images/character/213101.atlas b/m78-all/m78-fe/public/images/character/213101.atlas new file mode 100644 index 000000000..ac8d1a613 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/213101.atlas @@ -0,0 +1,223 @@ + +213101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 161, 165 + size: 72, 89 + orig: 72, 89 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 314, 194 + size: 81, 60 + orig: 81, 60 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 96 + size: 157, 158 + orig: 157, 158 + offset: 0, 0 + index: -1 +l_arm + rotate: false + xy: 175, 51 + size: 34, 44 + orig: 34, 44 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 235, 183 + size: 77, 71 + orig: 77, 71 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 175, 3 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: true + xy: 143, 46 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 241, 56 + size: 41, 27 + orig: 41, 27 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 235, 161 + size: 49, 20 + orig: 49, 20 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 226, 130 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy2 + rotate: false + xy: 224, 99 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 211, 52 + size: 28, 43 + orig: 28, 43 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 344, 165 + size: 32, 7 + orig: 32, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 286, 138 + size: 32, 8 + orig: 32, 8 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 274, 126 + size: 33, 10 + orig: 33, 10 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 344, 174 + size: 38, 7 + orig: 38, 7 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 492, 210 + size: 44, 12 + orig: 44, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 325, 152 + size: 29, 17 + orig: 29, 17 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 314, 183 + size: 37, 9 + orig: 37, 9 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 353, 183 + size: 37, 9 + orig: 37, 9 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 286, 148 + size: 33, 37 + orig: 33, 37 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 100, 2 + size: 43, 42 + orig: 43, 42 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 54, 2 + size: 44, 42 + orig: 44, 42 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 397, 186 + size: 60, 32 + orig: 60, 32 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 161, 97 + size: 61, 32 + orig: 61, 32 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 459, 197 + size: 57, 31 + orig: 57, 31 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 397, 220 + size: 60, 34 + orig: 60, 34 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 161, 131 + size: 63, 32 + orig: 63, 32 + offset: 0, 0 + index: -1 +r_hair + rotate: true + xy: 2, 2 + size: 42, 50 + orig: 42, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 145, 2 + size: 28, 42 + orig: 28, 42 + offset: 0, 0 + index: -1 +sunglass + rotate: false + xy: 2, 46 + size: 139, 48 + orig: 139, 48 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/213101.json b/m78-all/m78-fe/public/images/character/213101.json new file mode 100644 index 000000000..3efddf479 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/213101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"ih3fZFzP3FkljdTj7ZG/xP2GRy0","spine":"3.5.25","width":173.98,"height":253.61,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":49.68,"rotation":88.66,"x":-0.23,"y":33.8},{"name":"eff_exclamation","parent":"root","length":26.57,"rotation":28.81,"x":83.71,"y":236.45},{"name":"eff_panic","parent":"root","length":19.8,"rotation":-2.25,"x":85.26,"y":179.42},{"name":"eff_sad1","parent":"root","length":20.61,"rotation":-90,"x":-4.35,"y":111.04,"scaleX":1.184},{"name":"eff_sad2","parent":"root","length":25.03,"rotation":-91.68,"x":56.89,"y":95.14},{"name":"eff_star1","parent":"root","length":19.39,"rotation":19.89,"x":59.51,"y":93.97},{"name":"eff_star2","parent":"root","length":17.94,"rotation":158.43,"x":-55.19,"y":94.45},{"name":"eff_star3","parent":"root","length":17.57,"rotation":-10.9,"x":67.55,"y":46.72},{"name":"head","parent":"body","length":142.01,"rotation":0.87,"x":64.59,"y":-2.09},{"name":"f_hair","parent":"head","length":42.83,"rotation":-55.98,"x":101.26,"y":-2.63},{"name":"l_arm","parent":"body","length":50.84,"rotation":-116.9,"x":59.07,"y":3.02},{"name":"l_arm2","parent":"l_arm","length":31.78,"rotation":-18.23,"x":32.1,"y":-4.77,"scaleX":0.904,"scaleY":0.904},{"name":"l_eyebrow","parent":"head","length":35.18,"rotation":-82.56,"x":70.06,"y":-21.9},{"name":"l_leg","parent":"root","length":60.41,"rotation":-98.49,"x":28.74,"y":43.76},{"name":"mouth","parent":"head","length":14.27,"rotation":22.85,"x":0.14,"y":-22.06},{"name":"r_arm1","parent":"body","length":27.57,"rotation":142.05,"x":66.48,"y":21.95},{"name":"r_arm2","parent":"r_arm1","length":37.81,"rotation":90.7,"x":32.92,"y":-1.64},{"name":"r_eyebrow","parent":"head","length":38.53,"rotation":81.2,"x":67.43,"y":7.23},{"name":"r_leg","parent":"root","length":58.65,"rotation":-87.35,"x":-25.62,"y":38.15},{"name":"sunglass","parent":"head","length":28.46,"rotation":-78.53,"x":38.92,"y":68.62}],"slots":[{"name":"l_arm","bone":"l_arm","attachment":"l_arm"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body","bone":"body","attachment":"body"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"r_hair","bone":"head","attachment":"r_hair"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"sunglass","bone":"sunglass","attachment":"sunglass"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"}],"skins":{"default":{"body":{"body":{"x":28.88,"y":3.65,"rotation":-88.66,"width":72,"height":89}},"f_hair":{"f_hair":{"x":24.26,"y":-13.85,"rotation":-33.55,"width":81,"height":60}},"head":{"head":{"x":73.83,"y":9.47,"rotation":-89.53,"width":157,"height":158}},"l_arm":{"l_arm":{"x":32.04,"y":-3.66,"rotation":28.24,"width":34,"height":44}},"l_arm2":{"l_arm2":{"x":22.43,"y":20.38,"scaleX":1.106,"scaleY":1.106,"rotation":46.47,"width":77,"height":71}},"l_eyebrow":{"l_eyebrow":{"x":8.73,"y":-13.98,"rotation":-6.97,"width":46,"height":29},"l_eyebrow_happy":{"x":8.87,"y":-12.82,"rotation":-6.97,"width":48,"height":30},"l_eyebrow_sad":{"x":10.59,"y":-8.34,"rotation":-6.97,"width":41,"height":27},"l_eyebrow_surprised":{"x":9.57,"y":-3.92,"rotation":-6.97,"width":49,"height":20},"l_eyebrow_uneasy":{"x":8.92,"y":-12.44,"rotation":-6.97,"width":46,"height":29},"l_eyebrow_uneasy2":{"x":8.92,"y":-12.44,"rotation":-6.97,"width":46,"height":29}},"l_leg":{"l_leg":{"x":24.85,"y":-10.39,"rotation":98.49,"width":28,"height":43}},"mouth1":{"mouth1":{"x":20.96,"y":10.87,"rotation":-112.38,"width":32,"height":7},"mouth2":{"x":20.96,"y":10.87,"rotation":-112.38,"width":32,"height":8},"mouth3":{"x":20.96,"y":10.87,"rotation":-112.38,"width":33,"height":10},"mouth_happy":{"x":20.96,"y":10.87,"rotation":-112.38,"width":38,"height":7},"mouth_sad":{"x":20.96,"y":10.87,"rotation":-112.38,"width":44,"height":12},"mouth_surprised":{"x":20.96,"y":10.87,"rotation":-112.38,"width":29,"height":17},"mouth_uneasy1":{"x":20.96,"y":10.87,"rotation":-112.38,"width":37,"height":9},"mouth_uneasy2":{"x":20.96,"y":10.87,"rotation":-112.38,"width":37,"height":9}},"r_arm1":{"r_arm1":{"x":29.93,"y":5.15,"rotation":129.29,"width":33,"height":37}},"r_arm2":{"r_arm2":{"x":18.77,"y":-1.63,"rotation":38.59,"width":43,"height":42},"r_arm3":{"x":3.37,"y":-10.94,"rotation":38.59,"width":44,"height":42}},"r_eyebrow":{"r_eyebrow":{"x":10.08,"y":7.1,"rotation":-170.73,"width":60,"height":32},"r_eyebrow_happy":{"x":10.08,"y":7.1,"rotation":-170.73,"width":61,"height":32},"r_eyebrow_sad":{"x":10.08,"y":7.1,"rotation":-170.73,"width":57,"height":31},"r_eyebrow_surprised":{"x":10.08,"y":7.1,"rotation":-170.73,"width":60,"height":34},"r_eyebrow_uneasy":{"x":10.08,"y":7.1,"rotation":-170.73,"width":63,"height":32}},"r_hair":{"r_hair":{"x":82.39,"y":64.04,"rotation":-89.53,"width":42,"height":50}},"r_leg":{"r_leg":{"x":19.96,"y":8.92,"rotation":87.35,"width":28,"height":42}},"sunglass":{"sunglass":{"x":62.42,"y":-17.11,"rotation":-11,"width":139,"height":48}}}},"animations":{"action":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":0.6667,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.2667,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6667,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":0.6667,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":0.6667,"name":"r_eyebrow"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.61},{"time":0.3333,"angle":0},{"time":0.4333,"angle":-24.88},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.82},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":16.71},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.14},{"time":0.3333,"angle":8.59},{"time":0.4667,"angle":-12.44},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.033,"y":1},{"time":0.6667,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":24.02},{"time":0.3333,"angle":-6.2},{"time":0.4667,"angle":-19.14},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":5.32,"y":-0.61},{"time":0.3333,"x":1.53,"y":-1.58},{"time":0.4,"x":0.67,"y":0.03},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-5.06},{"time":0.3333,"angle":2.43},{"time":0.6667,"angle":-5.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.61},{"time":0.3333,"angle":0},{"time":0.4667,"angle":-2.29},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.14},{"time":0.3333,"angle":5.98},{"time":0.4667,"angle":-5.7},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":67.28},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.52,"y":-1.55},{"time":0.6667,"x":0,"y":0}]},"root":{"translate":[{"time":0,"x":0,"y":0}]}}},"happy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":-174.67},{"time":0.1667,"angle":-63.51},{"time":0.3333,"angle":-135.7},{"time":0.6667,"angle":-174.67,"curve":"stepped"},{"time":1,"angle":-174.67}],"translate":[{"time":0,"x":0.99,"y":12.68},{"time":0.1667,"x":-2.88,"y":5.12},{"time":0.3333,"x":-0.08,"y":9.16},{"time":0.6667,"x":0.99,"y":12.68,"curve":"stepped"},{"time":1,"x":0.99,"y":12.68}],"scale":[{"time":0,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":7.06},{"time":0.3333,"angle":-2.35},{"time":0.6667,"angle":-12.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":-1.81},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":0,"y":-2.72},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.041,"y":1},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-22.25},{"time":0.6667,"angle":22.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.52,"y":-0.08},{"time":0.3333,"x":0,"y":0},{"time":0.5667,"x":0.82,"y":-0.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.41},{"time":0.3333,"angle":-3.9},{"time":0.6667,"angle":-6.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":17.2},{"time":0.1667,"angle":-15.56},{"time":0.3333,"angle":0},{"time":0.6667,"angle":3.02},{"time":1,"angle":17.2}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.11,"y":-4.17},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.6667,"angle":21.27},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-2.01,"y":5.01},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.6667,"x":1.082,"y":1},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-20.67},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-1.81},{"time":0.1667,"angle":11.81},{"time":0.3333,"angle":8.38},{"time":0.6667,"angle":19.58},{"time":1,"angle":-1.81}],"translate":[{"time":0,"x":3.15,"y":-3.37}]}}},"joy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.2},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.99},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.99},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.026,"y":1},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":18.98},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0.76,"y":0.87},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":0.76,"y":-0.84},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":21.71},{"time":0.3333,"angle":-1.21},{"time":0.5,"angle":21.47},{"time":0.6667,"angle":2.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.95,"y":0.63},{"time":0.5,"x":-4.17,"y":1.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-5.12},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.06},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":16.2},{"time":0.3333,"angle":24.64},{"time":0.5,"angle":21.8},{"time":0.6667,"angle":16.54},{"time":0.8333,"angle":12.7},{"time":1,"angle":0}]}}},"sad":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.5,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":0.6667,"name":"r_arm2"},{"time":1.3333,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.5,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":-50.31},{"time":0.6667,"angle":0.07},{"time":1.3333,"angle":-50.31}],"translate":[{"time":0,"x":0.66,"y":2.32},{"time":0.6667,"x":5.48,"y":-0.45},{"time":1.3333,"x":0.66,"y":2.32}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-1.5,"y":-0.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-1.5,"y":-0.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":-4.53},{"time":0.6667,"angle":-7.66},{"time":1.3333,"angle":-4.53}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":0.983,"y":1},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-35.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":-3.21,"curve":"stepped"},{"time":0.6667,"angle":-3.21,"curve":"stepped"},{"time":1.3333,"angle":-3.21}],"translate":[{"time":0,"x":1.02,"y":-2.96,"curve":"stepped"},{"time":0.3333,"x":1.02,"y":-2.96},{"time":0.6667,"x":-0.23,"y":-3.89},{"time":1,"x":1.02,"y":-2.96,"curve":"stepped"},{"time":1.3333,"x":1.02,"y":-2.96}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-6.82},{"time":0.6667,"angle":2.99},{"time":1.3333,"angle":-6.82}],"translate":[{"time":0,"x":3.7,"y":0.92,"curve":"stepped"},{"time":0.6667,"x":3.7,"y":0.92,"curve":"stepped"},{"time":1.3333,"x":3.7,"y":0.92}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":33.03},{"time":0.6667,"angle":15.9},{"time":1.3333,"angle":33.03}],"translate":[{"time":0,"x":1.38,"y":7.74},{"time":0.6667,"x":3.74,"y":3.19},{"time":1.3333,"x":1.38,"y":7.74}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-14.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-0.75,"y":-0.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":56.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":2.83,"y":-2.57},{"time":0.6667,"x":6.3,"y":-1.8},{"time":1.3333,"x":2.83,"y":-2.57}]}}},"stand":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1.3333,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.19},{"time":0.6667,"angle":0},{"time":1,"angle":-4.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.39},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.02,"y":1},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.23},{"time":0.6667,"angle":0},{"time":1,"angle":16.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5333,"angle":-4.58},{"time":0.5667,"angle":-7.08},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.5333,"x":-3.04,"y":0.15},{"time":0.5667,"x":-5.38,"y":-1.3},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0},{"time":0.5333,"angle":1.81},{"time":0.5667,"angle":5.58},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.5333,"x":-5.33,"y":0.19},{"time":0.5667,"x":-6.34,"y":0.09},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.07,"y":0.67},{"time":0.5,"x":0.04,"y":0.34},{"time":0.6,"x":-1.01,"y":0.16},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.08,"y":-0.67},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.81},{"time":0.6667,"angle":0},{"time":1,"angle":-5.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.9},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.16},{"time":0.6667,"angle":0},{"time":1,"angle":-3.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.21},{"time":0.6667,"angle":0},{"time":1,"angle":-4.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":16.93},{"time":0.6667,"angle":0},{"time":1,"angle":17.53},{"time":1.3333,"angle":0}]}}},"surprised":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":0.1667,"name":"mouth1"},{"time":0.3333,"name":"mouth_surprised"},{"time":0.5,"name":"mouth1"},{"time":0.6667,"name":"mouth_surprised"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth_surprised"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.39,"y":-0.08},{"time":0.3333,"x":-0.7,"y":0.06},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.7,"y":-0.04},{"time":0.8333,"x":-1.04,"y":0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.39,"y":-0.08},{"time":0.3333,"x":-0.7,"y":0.06},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.7,"y":-0.04},{"time":0.8333,"x":-1.04,"y":0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-45.17},{"time":0.5,"angle":0},{"time":0.8333,"angle":-30.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":3.78,"y":2.63,"curve":"stepped"},{"time":0.3333,"x":3.78,"y":2.63,"curve":"stepped"},{"time":0.5,"x":3.78,"y":2.63,"curve":"stepped"},{"time":0.8333,"x":3.78,"y":2.63,"curve":"stepped"},{"time":1,"x":3.78,"y":2.63}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.03},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":1.4},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":1.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.033,"y":1.009},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.033,"y":1.009},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":17.67},{"time":0.3333,"angle":-1.46},{"time":0.5,"angle":0},{"time":0.6667,"angle":17.67},{"time":0.8333,"angle":-1.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":2.09,"y":-0.13},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.39,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.56},{"time":0.5,"angle":0},{"time":0.8333,"angle":7.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":2.37},{"time":0.2667,"angle":-17.38},{"time":0.5,"angle":0},{"time":0.7667,"angle":-17.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.99,"y":-4.85},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.99,"y":-4.85},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.78},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-4.9},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":9.16},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":19.38},{"time":0.3333,"angle":42.42},{"time":0.5,"angle":0},{"time":0.6667,"angle":19.38},{"time":0.8333,"angle":42.42},{"time":1,"angle":0}]}}},"uneasy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.5,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.1667,"name":"mouth_uneasy2"},{"time":0.3333,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy2"},{"time":0.6667,"name":"mouth_uneasy1"},{"time":0.8333,"name":"mouth_uneasy2"},{"time":1,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":0.5,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":39.92},{"time":0.2667,"angle":34.31},{"time":0.5,"angle":36.95},{"time":0.7667,"angle":29.59},{"time":1,"angle":39.92}],"translate":[{"time":0,"x":10.58,"y":3.21},{"time":0.5,"x":7.31,"y":2.09},{"time":1,"x":10.58,"y":3.21}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":6.91},{"time":0.5,"angle":15.46},{"time":1,"angle":6.91}],"translate":[{"time":0,"x":6.91,"y":0.06},{"time":0.5,"x":2.73,"y":4.17},{"time":1,"x":6.91,"y":0.06}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-18.86},{"time":0.5,"angle":-21.66},{"time":1,"angle":-18.86}],"translate":[{"time":0,"x":8.32,"y":-2.7},{"time":0.5,"x":2.1,"y":-2.75},{"time":1,"x":8.32,"y":-2.7}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.05},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-28.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.69,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1,"y":0.896},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.22},{"time":0.5,"angle":0.95},{"time":0.7667,"angle":2.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":22.41},{"time":0.2667,"angle":16.94},{"time":0.5,"angle":23.35},{"time":0.7667,"angle":17.05},{"time":1,"angle":22.41}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.02,"y":0.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.87},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":21.81},{"time":0.3333,"angle":26.08},{"time":0.5,"angle":0},{"time":0.6667,"angle":21.81},{"time":0.8333,"angle":26.08},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/213101.png b/m78-all/m78-fe/public/images/character/213101.png new file mode 100644 index 000000000..1297af8da Binary files /dev/null and b/m78-all/m78-fe/public/images/character/213101.png differ diff --git a/m78-all/m78-fe/public/images/character/213201.atlas b/m78-all/m78-fe/public/images/character/213201.atlas new file mode 100644 index 000000000..66178f532 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/213201.atlas @@ -0,0 +1,279 @@ + +213201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +bag + rotate: false + xy: 180, 155 + size: 144, 99 + orig: 144, 99 + offset: 0, 0 + index: -1 +beard1 + rotate: true + xy: 449, 146 + size: 108, 30 + orig: 108, 30 + offset: 0, 0 + index: -1 +beard2 + rotate: false + xy: 180, 100 + size: 120, 53 + orig: 120, 53 + offset: 0, 0 + index: -1 +body + rotate: true + xy: 180, 19 + size: 79, 83 + orig: 79, 83 + offset: 0, 0 + index: -1 +glass + rotate: false + xy: 2, 24 + size: 138, 47 + orig: 138, 47 + offset: 0, 0 + index: -1 +hat_tail + rotate: false + xy: 326, 136 + size: 121, 118 + orig: 121, 118 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 73 + size: 176, 181 + orig: 176, 181 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 265, 2 + size: 27, 38 + orig: 27, 38 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 302, 93 + size: 51, 41 + orig: 51, 41 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 350, 35 + size: 44, 24 + orig: 44, 24 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: false + xy: 302, 29 + size: 46, 26 + orig: 46, 26 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 2, 2 + size: 40, 20 + orig: 40, 20 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 396, 35 + size: 44, 24 + orig: 44, 24 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy2 + rotate: false + xy: 367, 6 + size: 41, 27 + orig: 41, 27 + offset: 0, 0 + index: -1 +l_eyebrow_upset + rotate: false + xy: 294, 2 + size: 41, 25 + orig: 41, 25 + offset: 0, 0 + index: -1 +l_frownline + rotate: false + xy: 448, 100 + size: 19, 18 + orig: 19, 18 + offset: 0, 0 + index: -1 +l_frownline_happy + rotate: false + xy: 475, 118 + size: 19, 18 + orig: 19, 18 + offset: 0, 0 + index: -1 +l_frownline_surprised + rotate: false + xy: 232, 2 + size: 12, 15 + orig: 12, 15 + offset: 0, 0 + index: -1 +l_frownline_uneasy + rotate: false + xy: 469, 98 + size: 19, 18 + orig: 19, 18 + offset: 0, 0 + index: -1 +l_frownline_upset + rotate: false + xy: 216, 2 + size: 14, 15 + orig: 14, 15 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 142, 16 + size: 34, 55 + orig: 34, 55 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 88, 15 + size: 37, 7 + orig: 37, 7 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 413, 61 + size: 29, 18 + orig: 29, 18 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 88, 5 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 178, 9 + size: 36, 8 + orig: 36, 8 + offset: 0, 0 + index: -1 +mouth_upset + rotate: false + xy: 44, 10 + size: 42, 12 + orig: 42, 12 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 413, 92 + size: 33, 42 + orig: 33, 42 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 302, 57 + size: 46, 34 + orig: 46, 34 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 355, 111 + size: 56, 23 + orig: 56, 23 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 355, 86 + size: 56, 23 + orig: 56, 23 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: true + xy: 481, 199 + size: 55, 29 + orig: 55, 29 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 350, 61 + size: 56, 23 + orig: 56, 23 + offset: 0, 0 + index: -1 +r_eyebrow_upset + rotate: true + xy: 481, 138 + size: 59, 25 + orig: 59, 25 + offset: 0, 0 + index: -1 +r_frownline + rotate: true + xy: 433, 65 + size: 25, 24 + orig: 25, 24 + offset: 0, 0 + index: -1 +r_frownline_happy + rotate: false + xy: 449, 120 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 +r_frownline_surprised + rotate: false + xy: 442, 38 + size: 25, 25 + orig: 25, 25 + offset: 0, 0 + index: -1 +r_frownline_uneasy + rotate: false + xy: 337, 2 + size: 28, 25 + orig: 28, 25 + offset: 0, 0 + index: -1 +r_frownline_upset + rotate: false + xy: 410, 9 + size: 28, 24 + orig: 28, 24 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 265, 42 + size: 35, 56 + orig: 35, 56 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/213201.json b/m78-all/m78-fe/public/images/character/213201.json new file mode 100644 index 000000000..cbf2f2694 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/213201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"dm1ZpGNboP+RIA4Lrt6PZl2mG7A","spine":"3.5.25","width":202,"height":271,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":74.97,"rotation":90.29,"x":1.41,"y":28.49},{"name":"bag","parent":"body","length":124.99,"rotation":88.35,"x":55.8,"y":-30.12},{"name":"head","parent":"body","length":163.37,"rotation":-0.29,"x":66.4,"y":0.42},{"name":"beard1","parent":"head","length":13.45,"rotation":-176.82,"x":27.97,"y":-14.17},{"name":"beard2","parent":"head","length":40.66,"rotation":178.95,"x":22.38,"y":-12.31},{"name":"eff_exclamation","parent":"root","length":31.99,"rotation":31.65,"x":76.01,"y":188.51},{"name":"eff_panic","parent":"root","length":30.77,"rotation":6.26,"x":73.4,"y":146.73},{"name":"eff_sad1","parent":"root","length":23.21,"rotation":-90,"x":-15.67,"y":115.15},{"name":"eff_sad2","parent":"root","length":18.77,"rotation":-92.73,"x":39.67,"y":112.17},{"name":"eff_star1","parent":"root","length":19.27,"rotation":14.57,"x":65.57,"y":64.3},{"name":"eff_star2","parent":"root","length":24.08,"rotation":163.81,"x":-58.64,"y":63.55},{"name":"eff_star3","parent":"root","length":18.77,"rotation":-20.96,"x":60.35,"y":25.5},{"name":"glass","parent":"head","length":40.46,"rotation":-77.76,"x":34.32,"y":70.87},{"name":"hat_tail","parent":"head","length":129.7,"rotation":131.85,"x":161.51,"y":14.17},{"name":"l_arm1","parent":"body","length":31.65,"rotation":-158.86,"x":58.87,"y":-12.6},{"name":"l_arm2","parent":"l_arm1","length":34.24,"rotation":134.8,"x":31.73,"y":-0.83},{"name":"l_eyebrow","parent":"head","length":30.3,"rotation":-85.76,"x":69.75,"y":-19.02},{"name":"l_frownline","parent":"head","length":15.74,"rotation":-31.43,"x":60.43,"y":-12.31},{"name":"l_leg","parent":"root","length":46.25,"rotation":-90,"x":11.49,"y":47.51},{"name":"mouth","parent":"head","length":16.92,"rotation":75.96,"x":3.73,"y":-38.79},{"name":"r_arm1","parent":"body","length":34.45,"rotation":146.2,"x":61.29,"y":22.82},{"name":"r_arm2","parent":"r_arm1","length":32.38,"rotation":90.74,"x":31.45,"y":-0.2},{"name":"r_eyebrow","parent":"head","length":33.57,"rotation":90.64,"x":72.73,"y":7.46},{"name":"r_frownline","parent":"head","length":16.19,"rotation":38.45,"x":58.19,"y":-5.59},{"name":"r_leg","parent":"root","length":47,"rotation":-89.55,"x":-12.39,"y":47.14}],"slots":[{"name":"bag","bone":"bag","attachment":"bag"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body","bone":"body","attachment":"body"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"hat_tail","bone":"hat_tail","attachment":"hat_tail"},{"name":"head","bone":"head","attachment":"head"},{"name":"beard2","bone":"beard2","attachment":"beard2"},{"name":"beard1","bone":"beard1","attachment":"beard1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_frownline","bone":"l_frownline","attachment":"l_frownline_uneasy"},{"name":"r_frownline","bone":"r_frownline","attachment":"r_frownline_uneasy"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"glass","bone":"glass","attachment":"glass"},{"name":"mouth_happy","bone":"mouth"}],"skins":{"default":{"bag":{"bag":{"x":57.45,"y":2.23,"rotation":-178.63,"width":144,"height":99}},"beard1":{"beard1":{"x":12.25,"y":-9.77,"rotation":86.82,"width":108,"height":30}},"beard2":{"beard2":{"x":25.01,"y":-17.75,"rotation":91.05,"width":120,"height":53}},"body":{"body":{"x":33.12,"y":4.98,"rotation":-90.29,"width":79,"height":83}},"glass":{"glass":{"x":62.72,"y":-17.31,"rotation":-12.24,"width":138,"height":47}},"hat_tail":{"hat_tail":{"x":71.96,"y":-0.94,"rotation":138.15,"width":121,"height":118}},"head":{"head":{"x":82.7,"y":14.9,"rotation":-90,"width":176,"height":181}},"l_arm1":{"l_arm1":{"x":16.47,"y":2.71,"rotation":68.57,"width":27,"height":38}},"l_arm2":{"l_arm2":{"x":21.38,"y":-8.86,"rotation":-66.23,"width":51,"height":41}},"l_eyebrow":{"l_eyebrow":{"x":7.61,"y":-20.17,"rotation":-4.24,"width":44,"height":24},"l_eyebrow_happy":{"x":7.61,"y":-20.17,"rotation":-4.24,"width":46,"height":26},"l_eyebrow_surprised":{"x":7.61,"y":-20.17,"rotation":-4.24,"width":40,"height":20},"l_eyebrow_uneasy":{"x":7.61,"y":-20.17,"rotation":-4.24,"width":44,"height":24},"l_eyebrow_uneasy2":{"x":7.61,"y":-20.17,"rotation":-4.24,"width":41,"height":27},"l_eyebrow_upset":{"x":7.61,"y":-20.17,"rotation":-4.24,"width":41,"height":25}},"l_frownline":{"l_frownline":{"x":-0.52,"y":-5.34,"rotation":-58.57,"width":19,"height":18},"l_frownline_happy":{"x":-0.52,"y":-5.34,"rotation":-58.57,"width":19,"height":18},"l_frownline_surprised":{"x":-0.52,"y":-5.34,"rotation":-58.57,"width":12,"height":15},"l_frownline_uneasy":{"x":-0.52,"y":-5.34,"rotation":-58.57,"width":19,"height":18},"l_frownline_upset":{"x":-0.52,"y":-5.34,"rotation":-58.57,"width":14,"height":15}},"l_leg":{"l_leg":{"x":22.93,"y":-0.72,"rotation":90,"width":34,"height":55}},"mouth_happy":{"mouth_happy":{"x":25.4,"y":2.26,"rotation":-165.96,"width":37,"height":7},"mouth_surprised":{"x":25.4,"y":2.26,"rotation":-165.96,"width":29,"height":18},"mouth_uneasy1":{"x":25.4,"y":2.26,"rotation":-165.96,"width":36,"height":8},"mouth_uneasy2":{"x":25.4,"y":2.26,"rotation":-165.96,"width":36,"height":8},"mouth_upset":{"x":25.4,"y":2.26,"rotation":-165.96,"width":42,"height":12}},"r_arm1":{"r_arm1":{"x":20.74,"y":0.52,"rotation":123.52,"width":33,"height":42}},"r_arm2":{"r_arm2":{"x":15.52,"y":-0.08,"rotation":32.77,"width":46,"height":34}},"r_eyebrow":{"r_eyebrow":{"x":10.67,"y":20.92,"rotation":179.36,"width":56,"height":23},"r_eyebrow_happy":{"x":10.67,"y":20.92,"rotation":179.36,"width":56,"height":23},"r_eyebrow_surprised":{"x":10.67,"y":20.92,"rotation":179.36,"width":55,"height":29},"r_eyebrow_uneasy":{"x":10.67,"y":20.92,"rotation":179.36,"width":56,"height":23},"r_eyebrow_upset":{"x":10.67,"y":20.92,"rotation":179.36,"width":59,"height":25}},"r_frownline":{"r_frownline":{"x":9.03,"y":8.14,"rotation":-128.45,"width":25,"height":24},"r_frownline_happy":{"x":9.03,"y":8.14,"rotation":-128.45,"width":24,"height":24},"r_frownline_surprised":{"x":9.03,"y":8.14,"rotation":-128.45,"width":25,"height":25},"r_frownline_uneasy":{"x":9.03,"y":8.14,"rotation":-128.45,"width":28,"height":25},"r_frownline_upset":{"x":9.03,"y":8.14,"rotation":-128.45,"width":28,"height":24}},"r_leg":{"r_leg":{"x":22.07,"y":1.48,"rotation":89.55,"width":35,"height":56}}}},"animations":{"action":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-9.38},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0,"y":11.74},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-354.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":3.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.74},{"time":0.6667,"angle":-13.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":4.89,"y":-3.35},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3667,"x":1.37,"y":-0.66,"curve":"stepped"},{"time":0.5,"x":1.37,"y":-0.66},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.3667,"x":1.37,"y":-0.66,"curve":"stepped"},{"time":0.5,"x":1.37,"y":-0.66},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":8.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":32.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":18.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":28.75},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.76,"y":11.74},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-34.97},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":3.45,"y":11.74},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":0.3333,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"l_frownline":{"attachment":[{"time":0,"name":"l_frownline_happy"},{"time":0.3333,"name":"l_frownline_happy"},{"time":1,"name":"l_frownline_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":0.3333,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]},"r_frownline":{"attachment":[{"time":0,"name":"r_frownline_happy"},{"time":0.3333,"name":"r_frownline_happy"},{"time":1,"name":"r_frownline_happy"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.24},{"time":0.5,"angle":0},{"time":0.7333,"angle":-2.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-6.26},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":-6.26},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-3.92,"y":0},{"time":0.8333,"x":-4.44,"y":-0.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-3.91,"y":0},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":-3.91,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.35},{"time":0.6667,"angle":-2.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.33},{"time":0.6667,"angle":-3.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-1.04,"y":0.04},{"time":0.5,"x":1.57,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":-3.13,"y":0.02},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":-3.13,"y":0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":2.35,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":28.21},{"time":0.3333,"angle":-8.02},{"time":0.5,"angle":28.21},{"time":0.6667,"angle":-8.02},{"time":0.8333,"angle":28.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":28.21},{"time":0.3333,"angle":-8.02},{"time":0.5,"angle":28.21},{"time":0.6667,"angle":-8.02},{"time":0.8333,"angle":28.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"l_frownline":{"attachment":[{"time":0,"name":"l_frownline_happy"},{"time":1,"name":"l_frownline_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]},"r_frownline":{"attachment":[{"time":0,"name":"r_frownline_happy"},{"time":1,"name":"r_frownline_happy"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.71},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.07},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.38},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.33},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-2.13,"y":0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.88},{"time":0.6667,"angle":-6.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.69,"y":-0.04},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":0.69,"y":0.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.48},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.43},{"time":0.6667,"angle":28.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-23.65},{"time":0.6667,"angle":13.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":8.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.98},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-10.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":0.2333,"name":"l_eyebrow_surprised"},{"time":1.3333,"name":"l_eyebrow_surprised"}]},"l_frownline":{"attachment":[{"time":0,"name":"l_frownline_surprised"},{"time":0.3333,"name":"l_frownline_surprised"},{"time":1.3333,"name":"l_frownline_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":0.2333,"name":"r_eyebrow_surprised"},{"time":1.3333,"name":"r_eyebrow_surprised"}]},"r_frownline":{"attachment":[{"time":0,"name":"r_frownline_surprised"},{"time":0.3333,"name":"r_frownline_surprised"},{"time":1.3333,"name":"r_frownline_surprised"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-10.63},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-5.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"beard2":{"rotate":[{"time":0,"angle":0},{"time":1,"angle":-355.85},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"beard1":{"rotate":[{"time":0,"angle":0},{"time":1,"angle":1.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-4.04,"y":1.26,"curve":"stepped"},{"time":0.9333,"x":-4.04,"y":1.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.9333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-3.43,"y":-3.01,"curve":"stepped"},{"time":0.9333,"x":-3.43,"y":-3.01},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.9333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.72},{"time":0.5,"angle":1.2},{"time":1,"angle":4.38},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.8333,"angle":-0.96},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.69,"y":-0.06},{"time":0.6667,"x":-2.77,"y":-0.6,"curve":"stepped"},{"time":0.8333,"x":-2.77,"y":-0.6},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.5,"x":-3.01,"y":-1.75,"curve":"stepped"},{"time":0.8333,"x":-3.01,"y":-1.75},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":5.18,"y":-2.3,"curve":"stepped"},{"time":0.2333,"x":5.18,"y":-2.3},{"time":0.5,"x":0.94,"y":0,"curve":"stepped"},{"time":0.8333,"x":0.94,"y":0},{"time":1.1667,"x":5.18,"y":-2.3,"curve":"stepped"},{"time":1.3333,"x":5.18,"y":-2.3}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-6.88},{"time":0.4333,"angle":-8.88,"curve":"stepped"},{"time":0.9,"angle":-8.88},{"time":1.3333,"angle":-6.88}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4333,"x":-1.68,"y":-0.2,"curve":"stepped"},{"time":0.9,"x":-1.68,"y":-0.2},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":0.9,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.01},{"time":0.8,"angle":10.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-62.81},{"time":0.3333,"angle":-70.83},{"time":0.8333,"angle":-80.17},{"time":1.3333,"angle":-62.81}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":7.36},{"time":0.5,"angle":-325.61,"curve":"stepped"},{"time":0.8333,"angle":-325.61},{"time":1.3333,"angle":7.36}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-6.22,"y":5.75,"curve":"stepped"},{"time":0.8333,"x":-6.22,"y":5.75},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":11.82},{"time":1,"angle":5.59},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":1,"x":1.37,"y":-0.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"beard2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-357.5},{"time":0.6667,"angle":0},{"time":1,"angle":-2.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"beard1":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":2.37},{"time":0.6667,"angle":0},{"time":1.0667,"angle":-2.57},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.02},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.69,"y":-0.02},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":-2.03,"y":-0.04},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":-2.03,"y":-0.04},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.38},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-9.31},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-9.31},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.03},{"time":0.6667,"angle":0},{"time":1,"angle":-4.1},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.76},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.76},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":0.4,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"l_frownline":{"attachment":[{"time":0,"name":"l_frownline_surprised"},{"time":1,"name":"l_frownline_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]},"r_frownline":{"attachment":[{"time":0,"name":"r_frownline_surprised"},{"time":1,"name":"r_frownline_surprised"}]}},"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"beard2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-2.84,"y":0},{"time":1,"x":0,"y":0}]},"beard1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":1.42,"y":0},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.8},{"time":0.5,"angle":-8.38},{"time":0.6667,"angle":-3.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.5,"x":3.55,"y":0},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.4,"x":3.49,"y":-0.06},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":4.98,"y":0,"curve":"stepped"},{"time":0.1667,"x":4.98,"y":0},{"time":0.4,"x":8.46,"y":-0.06},{"time":0.5667,"x":4.98,"y":0,"curve":"stepped"},{"time":1,"x":4.98,"y":0}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":38.94,"curve":"stepped"},{"time":0.5,"angle":38.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-321.06,"curve":"stepped"},{"time":0.5,"angle":-321.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":8.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":14.75},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":-0.71,"y":4.27},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":6.66},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0.71,"y":4.98},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"uneasy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.3333,"name":"l_eyebrow_uneasy"},{"time":0.5,"name":"l_eyebrow_uneasy2"},{"time":0.6667,"name":"l_eyebrow_uneasy2"},{"time":0.8333,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"l_frownline":{"attachment":[{"time":0,"name":"l_frownline_uneasy"},{"time":0.5,"name":"l_frownline_upset"},{"time":0.6667,"name":"l_frownline_upset"},{"time":0.8333,"name":"l_frownline_uneasy"},{"time":1,"name":"l_frownline_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]},"r_frownline":{"attachment":[{"time":0,"name":"r_frownline_uneasy"},{"time":1,"name":"r_frownline_uneasy"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.11},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.42,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.67},{"time":0.6667,"angle":-2.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.63,"y":-0.01,"curve":"stepped"},{"time":0.6667,"x":-2.63,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"beard1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.32,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_frownline":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hat_tail":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":1.5},{"time":0.7333,"angle":-2.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-1.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.66,"y":-0.06},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.31,"y":0.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.97,"y":-0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.87},{"time":0.6667,"angle":-1.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bag":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-48.16},{"time":0.2333,"angle":-77.37},{"time":0.5,"angle":-58.33},{"time":0.7333,"angle":-77.37},{"time":1,"angle":-48.16}],"translate":[{"time":0,"x":-5.52,"y":-1.98},{"time":0.2333,"x":-9.04,"y":-1.06,"curve":"stepped"},{"time":0.5,"x":-9.04,"y":-1.06,"curve":"stepped"},{"time":0.7333,"x":-9.04,"y":-1.06},{"time":1,"x":-5.52,"y":-1.98}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-0.3},{"time":0.2333,"angle":-15.45},{"time":0.5,"angle":3.59},{"time":0.7333,"angle":-15.45},{"time":1,"angle":-0.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.98},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/213201.png b/m78-all/m78-fe/public/images/character/213201.png new file mode 100644 index 000000000..db267783a Binary files /dev/null and b/m78-all/m78-fe/public/images/character/213201.png differ diff --git a/m78-all/m78-fe/public/images/character/213301.atlas b/m78-all/m78-fe/public/images/character/213301.atlas new file mode 100644 index 000000000..af6d9b9f7 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/213301.atlas @@ -0,0 +1,258 @@ + +213301.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 173, 47 + size: 60, 66 + orig: 60, 66 + offset: 0, 0 + index: -1 +f_hair + rotate: true + xy: 111, 13 + size: 81, 60 + orig: 81, 60 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 96 + size: 157, 158 + orig: 157, 158 + offset: 0, 0 + index: -1 +l_arm + rotate: true + xy: 278, 140 + size: 69, 49 + orig: 69, 49 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 464, 225 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +l_eyebrow_happy + rotate: true + xy: 346, 24 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 386, 78 + size: 41, 27 + orig: 41, 27 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 385, 170 + size: 49, 20 + orig: 49, 20 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 464, 194 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy2 + rotate: false + xy: 464, 163 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +l_horn + rotate: true + xy: 305, 215 + size: 39, 82 + orig: 39, 82 + offset: 0, 0 + index: -1 +l_jacket + rotate: true + xy: 392, 107 + size: 24, 47 + orig: 24, 47 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 389, 192 + size: 62, 73 + orig: 62, 73 + offset: 0, 0 + index: -1 +l_shoulder + rotate: false + xy: 367, 112 + size: 23, 22 + orig: 23, 22 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 36, 3 + size: 32, 7 + orig: 32, 7 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 2, 2 + size: 32, 8 + orig: 32, 8 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 346, 12 + size: 33, 10 + orig: 33, 10 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 189, 4 + size: 38, 7 + orig: 38, 7 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 278, 126 + size: 44, 12 + orig: 44, 12 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 367, 81 + size: 29, 17 + orig: 29, 17 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 111, 2 + size: 37, 9 + orig: 37, 9 + offset: 0, 0 + index: -1 +mouth_uneasy2 + rotate: false + xy: 150, 2 + size: 37, 9 + orig: 37, 9 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 235, 61 + size: 60, 63 + orig: 60, 63 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 392, 133 + size: 45, 35 + orig: 45, 35 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 329, 170 + size: 54, 43 + orig: 54, 43 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 173, 13 + size: 60, 32 + orig: 60, 32 + offset: 0, 0 + index: -1 +r_eyebrow_happy + rotate: false + xy: 329, 136 + size: 61, 32 + orig: 61, 32 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 235, 2 + size: 57, 31 + orig: 57, 31 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: true + xy: 331, 74 + size: 60, 34 + orig: 60, 34 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: true + xy: 297, 61 + size: 63, 32 + orig: 63, 32 + offset: 0, 0 + index: -1 +r_hair + rotate: false + xy: 302, 9 + size: 42, 50 + orig: 42, 50 + offset: 0, 0 + index: -1 +r_horn + rotate: false + xy: 161, 115 + size: 51, 94 + orig: 51, 94 + offset: 0, 0 + index: -1 +r_jacket + rotate: false + xy: 268, 7 + size: 32, 52 + orig: 32, 52 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 214, 126 + size: 62, 83 + orig: 62, 83 + offset: 0, 0 + index: -1 +red_cloth + rotate: false + xy: 2, 12 + size: 107, 82 + orig: 107, 82 + offset: 0, 0 + index: -1 +sunglass + rotate: false + xy: 161, 211 + size: 142, 43 + orig: 142, 43 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/213301.json b/m78-all/m78-fe/public/images/character/213301.json new file mode 100644 index 000000000..24cb95881 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/213301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"z+MVJ4d0fWQM9uE8d9JJvrG92u8","spine":"3.5.25","width":211,"height":283,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":49.68,"rotation":88.66,"x":0.29,"y":50.13},{"name":"eff_exclamation","parent":"root","length":26.57,"rotation":28.81,"x":83.71,"y":236.45},{"name":"eff_panic","parent":"root","length":19.8,"rotation":-2.25,"x":85.26,"y":179.42},{"name":"eff_sad1","parent":"root","length":20.61,"rotation":-90,"x":-9.75,"y":116.98,"scaleX":1.184},{"name":"eff_sad2","parent":"root","length":25.03,"rotation":-91.68,"x":49.87,"y":114.04},{"name":"eff_star1","parent":"root","length":19.39,"rotation":19.89,"x":63.53,"y":96.39},{"name":"eff_star2","parent":"root","length":17.94,"rotation":158.43,"x":-55.19,"y":94.45},{"name":"eff_star3","parent":"root","length":17.57,"rotation":-10.9,"x":67.55,"y":46.72},{"name":"head","parent":"body","length":142.01,"rotation":0.87,"x":50.05,"y":0.78},{"name":"f_hair","parent":"head","length":42.83,"rotation":-55.98,"x":102.08,"y":-3.43},{"name":"l_arm","parent":"body","length":50.84,"rotation":-116.9,"x":44.11,"y":-11},{"name":"l_eyebrow","parent":"head","length":35.18,"rotation":-82.56,"x":68.86,"y":-22.72},{"name":"l_horn","parent":"head","length":66.14,"rotation":-16.59,"x":108.35,"y":-48.39},{"name":"l_jacket","parent":"body","length":38.14,"rotation":-169.29,"x":47.68,"y":-14.02},{"name":"l_leg","parent":"root","length":60.41,"rotation":-98.49,"x":13.87,"y":59.44},{"name":"l_shoulder","parent":"body","length":19.4,"rotation":-104.92,"x":49.24,"y":-10.88},{"name":"mouth","parent":"head","length":14.27,"rotation":22.85,"x":1.36,"y":-23.66},{"name":"r_arm1","parent":"body","length":27.57,"rotation":142.05,"x":48.43,"y":20.15},{"name":"r_arm2","parent":"r_arm1","length":37.81,"rotation":90.7,"x":32.92,"y":-1.64},{"name":"r_eyebrow","parent":"head","length":38.53,"rotation":81.2,"x":68.25,"y":4.83},{"name":"r_horn","parent":"head","length":81.82,"rotation":23.26,"x":93.48,"y":61.68},{"name":"r_jacket","parent":"body","length":41.44,"rotation":174.35,"x":48.47,"y":18.21},{"name":"r_leg","parent":"root","length":58.65,"rotation":-87.35,"x":-12.51,"y":57.11},{"name":"red_cloth","parent":"l_arm","length":65.17,"rotation":-55.61,"x":50.22,"y":-1.66},{"name":"sunglass","parent":"head","length":28.46,"rotation":-78.53,"x":41.73,"y":68.24}],"slots":[{"name":"l_arm","bone":"l_arm","attachment":"l_arm"},{"name":"red_cloth","bone":"red_cloth","attachment":"red_cloth"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body","bone":"body","attachment":"body"},{"name":"l_jacket","bone":"l_jacket","attachment":"l_jacket"},{"name":"r_jacket","bone":"r_jacket","attachment":"r_jacket"},{"name":"l_shoulder","bone":"l_shoulder","attachment":"l_shoulder"},{"name":"l_horn","bone":"l_horn","attachment":"l_horn"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"r_horn","bone":"r_horn","attachment":"r_horn"},{"name":"r_hair","bone":"head","attachment":"r_hair"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy2"},{"name":"sunglass","bone":"sunglass","attachment":"sunglass"}],"skins":{"default":{"body":{"body":{"x":28.88,"y":3.65,"rotation":-88.66,"width":60,"height":66}},"f_hair":{"f_hair":{"x":24.26,"y":-13.85,"rotation":-33.55,"width":81,"height":60}},"head":{"head":{"x":73.83,"y":9.47,"rotation":-89.53,"width":157,"height":158}},"l_arm":{"l_arm":{"x":32.04,"y":-3.66,"rotation":28.24,"width":69,"height":49}},"l_eyebrow":{"l_eyebrow":{"x":8.73,"y":-13.98,"rotation":-6.97,"width":46,"height":29},"l_eyebrow_happy":{"x":8.87,"y":-12.82,"rotation":-6.97,"width":48,"height":30},"l_eyebrow_sad":{"x":10.59,"y":-8.34,"rotation":-6.97,"width":41,"height":27},"l_eyebrow_surprised":{"x":9.57,"y":-3.92,"rotation":-6.97,"width":49,"height":20},"l_eyebrow_uneasy":{"x":8.92,"y":-12.44,"rotation":-6.97,"width":46,"height":29},"l_eyebrow_uneasy2":{"x":8.92,"y":-12.44,"rotation":-6.97,"width":46,"height":29}},"l_horn":{"l_horn":{"x":31.24,"y":0.31,"rotation":-72.94,"width":39,"height":82}},"l_jacket":{"l_jacket":{"x":19.26,"y":0.77,"rotation":80.63,"width":24,"height":47}},"l_leg":{"l_leg":{"x":25.89,"y":-11.86,"rotation":98.49,"width":62,"height":73}},"l_shoulder":{"l_shoulder":{"x":11.08,"y":-4.07,"rotation":16.26,"width":23,"height":22}},"mouth1":{"mouth1":{"x":20.96,"y":10.87,"rotation":-112.38,"width":32,"height":7},"mouth2":{"x":20.96,"y":10.87,"rotation":-112.38,"width":32,"height":8},"mouth3":{"x":20.96,"y":10.87,"rotation":-112.38,"width":33,"height":10},"mouth_happy":{"x":20.96,"y":10.87,"rotation":-112.38,"width":38,"height":7},"mouth_sad":{"x":20.96,"y":10.87,"rotation":-112.38,"width":44,"height":12},"mouth_surprised":{"x":20.96,"y":10.87,"rotation":-112.38,"width":29,"height":17},"mouth_uneasy1":{"x":20.96,"y":10.87,"rotation":-112.38,"width":37,"height":9},"mouth_uneasy2":{"x":20.96,"y":10.87,"rotation":-112.38,"width":37,"height":9}},"r_arm1":{"r_arm1":{"x":29.93,"y":5.15,"rotation":129.29,"width":60,"height":63}},"r_arm2":{"r_arm2":{"x":18.77,"y":-1.63,"rotation":38.59,"width":45,"height":35},"r_arm3":{"x":3.37,"y":-10.94,"rotation":38.59,"width":54,"height":43}},"r_eyebrow":{"r_eyebrow":{"x":10.08,"y":7.1,"rotation":-170.73,"width":60,"height":32},"r_eyebrow_happy":{"x":10.08,"y":7.1,"rotation":-170.73,"width":61,"height":32},"r_eyebrow_sad":{"x":10.08,"y":7.1,"rotation":-170.73,"width":57,"height":31},"r_eyebrow_surprised":{"x":10.08,"y":7.1,"rotation":-170.73,"width":60,"height":34},"r_eyebrow_uneasy":{"x":10.08,"y":7.1,"rotation":-170.73,"width":63,"height":32}},"r_hair":{"r_hair":{"x":82.39,"y":64.04,"rotation":-89.53,"width":42,"height":50}},"r_horn":{"r_horn":{"x":39.45,"y":-1.45,"rotation":-112.79,"width":51,"height":94}},"r_jacket":{"r_jacket":{"x":19.02,"y":0.42,"rotation":96.99,"width":32,"height":52}},"r_leg":{"r_leg":{"x":19.96,"y":8.92,"rotation":87.35,"width":62,"height":83}},"red_cloth":{"red_cloth":{"x":29.71,"y":-1.15,"rotation":83.85,"width":107,"height":82}},"sunglass":{"sunglass":{"x":62.42,"y":-17.11,"rotation":-11,"width":142,"height":43}}}},"animations":{"action":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.61},{"time":0.5,"angle":0},{"time":0.7333,"angle":-24.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":1.46,"y":0.16},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":1.46,"y":0.16},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.14},{"time":0.5,"angle":-7.01},{"time":0.7667,"angle":-12.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":17.04},{"time":0.6667,"angle":-0.16},{"time":0.8333,"angle":16.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0.3333,"angle":0},{"time":0.6667,"angle":-9.74},{"time":1,"angle":0}],"translate":[{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0.3333,"angle":0},{"time":0.6667,"angle":-13.98},{"time":1,"angle":0}],"translate":[{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.13},{"time":0.5,"angle":3.98},{"time":0.7667,"angle":-4.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.53,"y":-1.58},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":2.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-0.68,"y":-0.14},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.1},{"time":0.5,"angle":0},{"time":0.6667,"angle":2.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-0.68,"y":-0.14},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":6.88},{"time":0.6667,"angle":-0.52},{"time":0.8333,"angle":4.49},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.045,"y":1.045},{"time":0.6667,"x":1,"y":1},{"time":0.8333,"x":1.077,"y":1.077},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-5.06},{"time":0.3333,"angle":2.43},{"time":0.5,"angle":14.31},{"time":0.6667,"angle":0},{"time":0.8333,"angle":14.31},{"time":1,"angle":-5.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.61},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.03},{"time":0.5,"angle":-12.03},{"time":0.8333,"angle":-13.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0},{"time":0.5,"angle":5.98},{"time":0.7667,"angle":3.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_happy"},{"time":1,"name":"l_eyebrow_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_happy"},{"time":1,"name":"r_eyebrow_happy"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.04},{"time":0.5,"angle":0},{"time":0.7667,"angle":-8.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.18,"y":-1.38},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.9,"y":-1.58},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":5.31,"y":1.1},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":5.31,"y":1.1},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.45},{"time":0.5,"angle":0},{"time":0.7667,"angle":-6.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.81},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.72},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.95},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.95},{"time":0.8333,"angle":1.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.76,"y":-0.05},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5333,"angle":5.73},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.52,"y":-0.08},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.82,"y":-0.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.2},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.49},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.61},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.062,"y":1.062},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.02,"y":1.02},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":7.09},{"time":0.5,"angle":0},{"time":0.7667,"angle":7.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.76,"y":-0.05},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":17.2},{"time":0.2667,"angle":-15.56},{"time":0.5,"angle":0},{"time":0.7667,"angle":3.02},{"time":1,"angle":17.2}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.76,"y":-0.05},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-20.67},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.2},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.99},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.99},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":9.81},{"time":0.3333,"angle":0.26},{"time":0.5,"angle":7.89},{"time":0.6667,"angle":0.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.82},{"time":0.5,"angle":0},{"time":0.8333,"angle":-1.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.55},{"time":0.5,"angle":0},{"time":0.8333,"angle":-2.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":7.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":0.76,"y":0.87},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.8333,"x":0.76,"y":-0.84},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.41},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.03},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.88},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.022,"y":1.022},{"time":0.3333,"x":1.004,"y":1.004},{"time":0.5,"x":1.037,"y":1.037},{"time":0.6667,"x":1.014,"y":1.014},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":12.22},{"time":0.3333,"angle":-1.21},{"time":0.5,"angle":8.87},{"time":0.6667,"angle":2.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-5.12},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.06},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.5,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"},{"time":1.3333,"name":"r_arm3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.5,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-10.17},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0.18,"y":-0.74},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-1.5,"y":-0.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-1.5,"y":-0.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":-4.53},{"time":0.6667,"angle":-7.66},{"time":1.3333,"angle":-4.53}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-0.57,"y":-0.09},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":6.68,"curve":"stepped"},{"time":0.6667,"angle":6.68,"curve":"stepped"},{"time":1.3333,"angle":6.68}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":-10.69,"curve":"stepped"},{"time":0.6667,"angle":-10.69,"curve":"stepped"},{"time":1.3333,"angle":-10.69}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.8333,"angle":-9},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":-3.21,"curve":"stepped"},{"time":0.6667,"angle":-3.21,"curve":"stepped"},{"time":1.3333,"angle":-3.21}],"translate":[{"time":0,"x":1.02,"y":-2.96,"curve":"stepped"},{"time":0.3333,"x":1.02,"y":-2.96},{"time":0.6667,"x":-0.23,"y":-3.89},{"time":1,"x":1.02,"y":-2.96,"curve":"stepped"},{"time":1.3333,"x":1.02,"y":-2.96}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":3.53},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.01},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":3.39,"curve":"stepped"},{"time":0.6667,"angle":3.39,"curve":"stepped"},{"time":1.3333,"angle":3.39}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":-6.82,"curve":"stepped"},{"time":0.6667,"angle":-6.82,"curve":"stepped"},{"time":1.3333,"angle":-6.82}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":33.03,"curve":"stepped"},{"time":0.6667,"angle":33.03,"curve":"stepped"},{"time":1.3333,"angle":33.03}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-1.33,"y":0.96},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-2.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-0.75,"y":-0.11},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1.3333,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.19},{"time":0.6667,"angle":0},{"time":1,"angle":-4.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-2.39},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-2.39},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":3.44},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.08},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":4.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":-1.47,"y":-0.06},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0},{"time":0.7667,"x":-1.47,"y":-0.06},{"time":0.8667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.07,"y":0.67},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.08,"y":-0.67},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.19},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":0,"curve":[0.314,0,0.649,0.35]},{"time":0.1667,"angle":0.84,"curve":[0.296,0.15,0.636,0.52]},{"time":0.6667,"angle":-3.93,"curve":[0.286,0,0.626,0.38]},{"time":1.1667,"angle":-2.09,"curve":[0.324,0.3,0.658,0.63]},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.006,"y":1.006},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.9},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.2},{"time":0.6667,"angle":0},{"time":1,"angle":2.66},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.24},{"time":0.6667,"angle":0},{"time":1,"angle":-1.22},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.39,"y":-0.08},{"time":0.3333,"x":-0.7,"y":0.06},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.7,"y":-0.04},{"time":0.8333,"x":-1.04,"y":0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.39,"y":-0.08},{"time":0.3333,"x":-0.7,"y":0.06},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.7,"y":-0.04},{"time":0.8333,"x":-1.04,"y":0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-12.85},{"time":0.5,"angle":0},{"time":0.8333,"angle":-8.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.92,"y":-1.05},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":-0.92,"y":-1.05},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.03},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":1.4},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":1.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.39,"y":-0.07},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.39,"y":-0.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.99},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.48},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":4.8},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":0.8333,"angle":4.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":2.09,"y":-0.13},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.39,"y":-0.12},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.11},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-10.8},{"time":0.5,"angle":0},{"time":0.7667,"angle":-9.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1.021},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.028,"y":1.028},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.56},{"time":0.5,"angle":0},{"time":0.8333,"angle":7.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-17.38},{"time":0.5,"angle":0},{"time":0.7667,"angle":-17.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.78},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-4.9},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.25},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy1"},{"time":0.2667,"name":"mouth_uneasy2"},{"time":0.5,"name":"mouth_uneasy1"},{"time":0.7667,"name":"mouth_uneasy2"},{"time":1,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"},{"time":1,"name":"r_arm2"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"r_arm2":{"rotate":[{"time":0,"angle":39.92},{"time":0.2667,"angle":34.31},{"time":0.5,"angle":36.95},{"time":0.7667,"angle":29.59},{"time":1,"angle":39.92}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.01,"y":0.74},{"time":0.5,"x":-2.53,"y":-0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.01,"y":0.74},{"time":0.5,"x":-2.53,"y":-0.02},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.05},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_shoulder":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_horn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"sunglass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_jacket":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.54,"curve":"stepped"},{"time":0.6667,"angle":-2.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_jacket":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.82},{"time":0.6667,"angle":0.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"red_cloth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.22},{"time":0.5,"angle":0.95},{"time":0.7667,"angle":2.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":22.41},{"time":0.2667,"angle":16.94},{"time":0.5,"angle":23.35},{"time":0.7667,"angle":17.05},{"time":1,"angle":22.41}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-0.02,"y":0.7},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.87},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/213301.png b/m78-all/m78-fe/public/images/character/213301.png new file mode 100644 index 000000000..cb55adae0 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/213301.png differ diff --git a/m78-all/m78-fe/public/images/character/214101.atlas b/m78-all/m78-fe/public/images/character/214101.atlas new file mode 100644 index 000000000..9e7ed82a7 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/214101.atlas @@ -0,0 +1,258 @@ + +214101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 172, 176 + size: 82, 78 + orig: 82, 78 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 2, 15 + size: 151, 91 + orig: 151, 91 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 108 + size: 168, 146 + orig: 168, 146 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 256, 172 + size: 26, 32 + orig: 26, 32 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 284, 225 + size: 44, 29 + orig: 44, 29 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 284, 167 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 255, 137 + size: 33, 25 + orig: 33, 25 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 396, 209 + size: 29, 12 + orig: 29, 12 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 155, 21 + size: 29, 17 + orig: 29, 17 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: true + xy: 198, 78 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 215, 111 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 282, 135 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: true + xy: 250, 102 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 427, 209 + size: 25, 12 + orig: 25, 12 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 172, 108 + size: 23, 41 + orig: 23, 41 + offset: 0, 0 + index: -1 +l_sideburn + rotate: false + xy: 256, 206 + size: 26, 48 + orig: 26, 48 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 298, 104 + size: 10, 5 + orig: 10, 5 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 12, 6 + size: 10, 7 + orig: 10, 7 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 494, 232 + size: 13, 8 + orig: 13, 8 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 324, 200 + size: 14, 5 + orig: 14, 5 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 2, 2 + size: 11, 8 + orig: 11, 8 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 494, 242 + size: 16, 12 + orig: 16, 12 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 282, 103 + size: 14, 6 + orig: 14, 6 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 282, 111 + size: 22, 35 + orig: 22, 35 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 453, 226 + size: 28, 39 + orig: 28, 39 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 214, 143 + size: 39, 31 + orig: 39, 31 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 284, 199 + size: 38, 24 + orig: 38, 24 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 182, 41 + size: 39, 13 + orig: 39, 13 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 155, 82 + size: 41, 24 + orig: 41, 24 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 324, 207 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 330, 223 + size: 39, 31 + orig: 39, 31 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 371, 223 + size: 39, 31 + orig: 39, 31 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 412, 223 + size: 39, 31 + orig: 39, 31 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 360, 209 + size: 34, 12 + orig: 34, 12 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 155, 40 + size: 25, 40 + orig: 25, 40 + offset: 0, 0 + index: -1 +r_sideburn + rotate: false + xy: 172, 133 + size: 40, 41 + orig: 40, 41 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/214101.json b/m78-all/m78-fe/public/images/character/214101.json new file mode 100644 index 000000000..dd5bf2007 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/214101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"dClZ4BfsDPusSpstama6b8CSqvc","spine":"3.5.25","width":168,"height":230,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":50.31,"rotation":90,"x":0.26,"y":35.18},{"name":"eff_exclamation","parent":"root","length":18.88,"rotation":36.03,"x":77.29,"y":199.66},{"name":"eff_panic","parent":"root","length":21.86,"rotation":0.91,"x":81.45,"y":143.1},{"name":"eff_sad1","parent":"root","length":20.64,"rotation":-92.05,"x":-14.81,"y":121.47},{"name":"eff_sad2","parent":"root","length":16.96,"rotation":-92.49,"x":38.22,"y":122.95},{"name":"eff_star1","parent":"root","length":11.21,"rotation":21.8,"x":34.96,"y":70.23},{"name":"eff_star2","parent":"root","length":14.04,"rotation":171.47,"x":-34.44,"y":73.7},{"name":"eff_star3","parent":"root","length":9.34,"rotation":-15.07,"x":37.38,"y":43.16},{"name":"head","parent":"body","length":136.05,"rotation":-1.02,"x":50.66,"y":0.35},{"name":"f_hair","parent":"head","length":75.82,"rotation":-170.29,"x":132.33,"y":-5.62},{"name":"l_arm1","parent":"body","length":24.73,"rotation":-145.86,"x":47.54,"y":-9.37},{"name":"l_arm2","parent":"l_arm1","length":34.09,"rotation":-102.01,"x":22.82,"y":0.88},{"name":"l_eye","parent":"head","length":13.19,"rotation":2.53,"x":25.35,"y":-39.81},{"name":"l_eyebrow","parent":"head","length":28.83,"rotation":-91.74,"x":65,"y":-24.87},{"name":"l_leg","parent":"root","length":31.59,"rotation":-91.89,"x":10.32,"y":33.44},{"name":"l_sideburn","parent":"head","length":37.52,"rotation":178.37,"x":72.61,"y":-62.56},{"name":"mouth","parent":"head","length":12.14,"rotation":31.99,"x":5.64,"y":-24.19},{"name":"r_arm1","parent":"body","length":26.81,"rotation":158.75,"x":48.93,"y":8.67},{"name":"r_arm2","parent":"r_arm1","length":35.01,"rotation":39.15,"x":20.73,"y":-1.62},{"name":"r_eye","parent":"head","length":13.54,"rotation":-0.45,"x":21.86,"y":19.83},{"name":"r_eyebrow","parent":"head","length":33.03,"rotation":94.64,"x":64.12,"y":4.96},{"name":"r_leg","parent":"root","length":30.63,"rotation":-80.22,"x":-12.58,"y":32.4},{"name":"r_sideburn","parent":"head","length":32.41,"rotation":168.03,"x":53.71,"y":43.3}],"slots":[{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"body","bone":"body","attachment":"body"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_sideburn","bone":"l_sideburn","attachment":"l_sideburn"},{"name":"r_sideburn","bone":"r_sideburn","attachment":"r_sideburn"},{"name":"l_eyebrow_sad","bone":"l_eyebrow","attachment":"l_eyebrow_sad"},{"name":"r_eyebrow_sad","bone":"r_eyebrow","attachment":"r_eyebrow_sad"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy1"}],"skins":{"default":{"body":{"body":{"x":18.75,"y":1.11,"rotation":-90,"width":82,"height":78}},"f_hair":{"f_hair":{"x":41.33,"y":-11.62,"rotation":81.31,"width":151,"height":91}},"head":{"head":{"x":68.98,"y":7,"rotation":-88.98,"width":168,"height":146}},"l_arm1":{"l_arm1":{"x":13.41,"y":-1.22,"rotation":55.86,"width":26,"height":32}},"l_arm2":{"l_arm2":{"x":18.73,"y":0.9,"rotation":157.87,"width":44,"height":29}},"l_eye1":{"l_eye1":{"x":17.44,"y":-0.94,"rotation":-91.51,"width":33,"height":30},"l_eye2":{"x":16.01,"y":-0.91,"rotation":-91.51,"width":33,"height":25},"l_eye3":{"x":14.57,"y":-0.87,"rotation":-91.51,"width":29,"height":12},"l_eye_happy":{"x":17.44,"y":-0.94,"rotation":-91.51,"width":29,"height":17},"l_eye_sad":{"x":17.44,"y":-0.94,"rotation":-91.51,"width":28,"height":13},"l_eye_surprised":{"x":17.44,"y":-0.94,"rotation":-91.51,"width":33,"height":30},"l_eye_uneasy1":{"x":17.44,"y":-0.94,"rotation":-91.51,"width":33,"height":30},"l_eye_uneasy2":{"x":17.44,"y":-0.94,"rotation":-91.51,"width":33,"height":30}},"l_eyebrow_sad":{"l_eyebrow_sad":{"x":12.54,"y":3.81,"rotation":2.76,"width":25,"height":12}},"l_leg":{"l_leg":{"x":15.02,"y":-0.18,"rotation":91.89,"width":23,"height":41}},"l_sideburn":{"l_sideburn":{"x":19.44,"y":-0.71,"rotation":92.65,"width":26,"height":48}},"mouth1":{"mouth1":{"x":15.79,"y":2.25,"rotation":-120.96,"width":10,"height":5},"mouth2":{"x":15.79,"y":2.25,"rotation":-120.96,"width":10,"height":7},"mouth3":{"x":15.79,"y":2.25,"rotation":-120.96,"width":13,"height":8},"mouth_happy":{"x":15.79,"y":2.25,"rotation":-120.96,"width":14,"height":5},"mouth_sad":{"x":15.79,"y":2.25,"rotation":-120.96,"width":11,"height":8},"mouth_surprised":{"x":15.79,"y":2.25,"rotation":-120.96,"width":16,"height":12},"mouth_uneasy":{"x":15.79,"y":2.25,"rotation":-120.96,"width":14,"height":6}},"r_arm1":{"r_arm1":{"x":16.01,"y":-0.68,"rotation":111.25,"width":22,"height":35}},"r_arm2":{"r_arm2":{"x":18.14,"y":1.06,"rotation":72.1,"width":28,"height":39}},"r_eye1":{"r_eye1":{"x":18.43,"y":-1.7,"rotation":-88.53,"width":39,"height":31},"r_eye2":{"x":16.29,"y":-1.75,"rotation":-88.53,"width":38,"height":24},"r_eye3":{"x":14.86,"y":-1.79,"rotation":-88.53,"width":39,"height":13},"r_eye_happy":{"x":17.76,"y":-4.33,"rotation":-88.53,"width":41,"height":24},"r_eye_sad":{"x":18.43,"y":-1.7,"rotation":-88.53,"width":34,"height":14},"r_eye_surprised":{"x":18.43,"y":-1.7,"rotation":-88.53,"width":39,"height":31},"r_eye_uneasy1":{"x":18.43,"y":-1.7,"rotation":-88.53,"width":39,"height":31},"r_eye_uneasy2":{"x":18.43,"y":-1.7,"rotation":-88.53,"width":39,"height":31}},"r_eyebrow_sad":{"r_eyebrow_sad":{"x":8.77,"y":-3.11,"rotation":176.39,"width":34,"height":12}},"r_leg":{"r_leg":{"x":14.64,"y":-0.26,"rotation":80.22,"width":25,"height":40}},"r_sideburn":{"r_sideburn":{"x":17,"y":1.43,"rotation":102.99,"width":40,"height":41}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.4667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.5,"name":"mouth3"},{"time":0.6,"name":"mouth2"},{"time":0.7333,"name":"mouth3"},{"time":0.8,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.4667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.8},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.64},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.64},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":256.64},{"time":0.5,"angle":270.22},{"time":0.6667,"angle":256.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.69,"y":-3.51,"curve":"stepped"},{"time":0.6667,"x":3.69,"y":-3.51},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.4,"curve":"stepped"},{"time":0.6667,"angle":17.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.32},{"time":0.5,"angle":-9.69},{"time":0.6667,"angle":-7.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-4.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.7},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-2.21},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.21},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":16.03},{"time":0.5,"angle":36.2},{"time":1,"angle":16.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":8.84,"curve":"stepped"},{"time":1,"angle":8.84}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.47,"y":-0.12},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.47,"y":0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-13.71},{"time":0.5,"angle":29.05},{"time":1,"angle":-13.71}],"translate":[{"time":0,"x":-3.09,"y":-0.08},{"time":0.5,"x":1.89,"y":-1.61},{"time":1,"x":-3.09,"y":-0.08}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-6.66,"curve":"stepped"},{"time":1,"angle":-6.66}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.47,"y":-0.12},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.73,"y":0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-11.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.47},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.47,"y":0.12},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.47,"y":-0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.82},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":-6.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":0.74},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.67},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.47},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.47},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":20.69},{"time":0.5,"angle":4.23},{"time":0.7667,"angle":30.05},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.86},{"time":0.5,"angle":12.9},{"time":0.7667,"angle":-11.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.09,"y":0.33},{"time":0.5,"x":0.27,"y":-0.69},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-4.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.25},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-1.47,"y":0.07},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.47,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]}},"bones":{"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-6.54},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-2.21},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":36.74,"curve":"stepped"},{"time":0.6667,"angle":36.74,"curve":"stepped"},{"time":1.3333,"angle":36.74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-2.2,"y":-0.25},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":25.54,"curve":"stepped"},{"time":0.6667,"angle":25.54,"curve":"stepped"},{"time":1.3333,"angle":25.54}],"translate":[{"time":0,"x":3.28,"y":-0.31,"curve":"stepped"},{"time":0.6667,"x":3.28,"y":-0.31,"curve":"stepped"},{"time":1.3333,"x":3.28,"y":-0.31}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.8333,"x":-2.2,"y":-0.25},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-12.52,"y":-0.22},{"time":0.6667,"x":-16.16,"y":-1.21},{"time":1,"x":-15.42,"y":-1.16},{"time":1.3333,"x":-12.52,"y":-0.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-12.52,"y":-0.22},{"time":0.6667,"x":-16.16,"y":-1.21},{"time":1,"x":-15.42,"y":-1.16},{"time":1.3333,"x":-12.52,"y":-0.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-352.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":7.6},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.44},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.84},{"time":0.6667,"angle":0},{"time":1,"angle":-1.94},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-1.26},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.03,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.977,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":38.63},{"time":0.3333,"angle":28.51},{"time":0.6667,"angle":33.66},{"time":1,"angle":31.15},{"time":1.3333,"angle":38.63}],"translate":[{"time":0,"x":-0.41,"y":-0.61}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.95},{"time":0.6667,"angle":0},{"time":1,"angle":2.25},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.95,"curve":"stepped"},{"time":0.6667,"x":0,"y":-2.95,"curve":"stepped"},{"time":1.3333,"x":0,"y":-2.95}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":13.95},{"time":0.3333,"angle":31.07},{"time":0.6667,"angle":13.95},{"time":1,"angle":16.07},{"time":1.3333,"angle":13.95}],"translate":[{"time":0,"x":0.27,"y":-0.69},{"time":0.3333,"x":3.55,"y":0.73},{"time":0.6667,"x":0.27,"y":-0.69,"curve":"stepped"},{"time":1.3333,"x":0.27,"y":-0.69}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.07},{"time":0.6667,"angle":0},{"time":1,"angle":3.34},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-4.39},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-2.75},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.37},{"time":0.6667,"angle":0},{"time":1,"angle":-2.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.26,"y":0.09},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-1.89,"y":-0.12},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]}},"bones":{"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.99},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.98},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-71.92},{"time":0.5,"angle":-60.85},{"time":1,"angle":-71.92}],"translate":[{"time":0,"x":2.55,"y":-1.48,"curve":"stepped"},{"time":1,"x":2.55,"y":-1.48}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-17.75},{"time":0.5,"angle":0},{"time":0.7667,"angle":-17.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.41,"y":1.41},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-0.41,"y":1.41},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.97},{"time":0.7333,"angle":2.03},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.4},{"time":0.5,"angle":0},{"time":0.7667,"angle":5.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.5,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.1667,"name":"mouth_surprised"},{"time":0.6667,"name":"mouth_uneasy"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]}},"bones":{"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.19},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.47},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.47},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":251.11},{"time":0.2667,"angle":256.05},{"time":0.5,"angle":251.11},{"time":0.7667,"angle":256.05},{"time":1,"angle":251.11}],"translate":[{"time":0,"x":5.3,"y":-0.34,"curve":"stepped"},{"time":0.5,"x":5.3,"y":-0.34,"curve":"stepped"},{"time":1,"x":5.3,"y":-0.34}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-207.93},{"time":0.2667,"angle":-216.11},{"time":0.5,"angle":-207.93},{"time":0.7667,"angle":-216.11},{"time":1,"angle":-207.93}],"translate":[{"time":0,"x":7.72,"y":4.84,"curve":"stepped"},{"time":0.5,"x":7.72,"y":4.84,"curve":"stepped"},{"time":1,"x":7.72,"y":4.84}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_sideburn":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.99},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-2.21,"y":0.12},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.47,"y":-0.06},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/214101.png b/m78-all/m78-fe/public/images/character/214101.png new file mode 100644 index 000000000..50e90cbeb Binary files /dev/null and b/m78-all/m78-fe/public/images/character/214101.png differ diff --git a/m78-all/m78-fe/public/images/character/214201.atlas b/m78-all/m78-fe/public/images/character/214201.atlas new file mode 100644 index 000000000..414a2ff5c --- /dev/null +++ b/m78-all/m78-fe/public/images/character/214201.atlas @@ -0,0 +1,321 @@ + +214201.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_mane + rotate: false + xy: 173, 142 + size: 189, 112 + orig: 189, 112 + offset: 0, 0 + index: -1 +body + rotate: true + xy: 2, 22 + size: 68, 104 + orig: 68, 104 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 92 + size: 169, 162 + orig: 169, 162 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 351, 35 + size: 25, 35 + orig: 25, 35 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 437, 116 + size: 32, 37 + orig: 32, 37 + offset: 0, 0 + index: -1 +l_arm3 + rotate: true + xy: 108, 8 + size: 38, 47 + orig: 38, 47 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 241, 62 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 268, 2 + size: 31, 28 + orig: 31, 28 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 298, 2 + size: 31, 24 + orig: 31, 24 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 499, 193 + size: 27, 11 + orig: 27, 11 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 71, 4 + size: 27, 16 + orig: 27, 16 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 41, 7 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: true + xy: 237, 2 + size: 31, 29 + orig: 31, 29 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 476, 112 + size: 32, 24 + orig: 32, 24 + offset: 0, 0 + index: -1 +l_eyeball + rotate: true + xy: 350, 11 + size: 22, 24 + orig: 22, 24 + offset: 0, 0 + index: -1 +l_eyeball_surprised + rotate: false + xy: 198, 71 + size: 13, 20 + orig: 13, 20 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 168, 67 + size: 23, 11 + orig: 23, 11 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 241, 103 + size: 37, 56 + orig: 37, 56 + offset: 0, 0 + index: -1 +l_mane1 + rotate: false + xy: 108, 48 + size: 58, 42 + orig: 58, 42 + offset: 0, 0 + index: -1 +l_mane2 + rotate: false + xy: 173, 93 + size: 66, 47 + orig: 66, 47 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 448, 199 + size: 8, 3 + orig: 8, 3 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 299, 103 + size: 7, 6 + orig: 7, 6 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 100, 9 + size: 11, 6 + orig: 11, 6 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 2, 2 + size: 12, 4 + orig: 12, 4 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 324, 6 + size: 10, 5 + orig: 10, 5 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 476, 193 + size: 14, 10 + orig: 14, 10 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 16, 2 + size: 12, 4 + orig: 12, 4 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 347, 72 + size: 25, 38 + orig: 25, 38 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 476, 154 + size: 33, 37 + orig: 33, 37 + offset: 0, 0 + index: -1 +r_arm3 + rotate: false + xy: 437, 150 + size: 37, 47 + orig: 37, 47 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 448, 209 + size: 49, 45 + orig: 49, 45 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 312, 41 + size: 37, 29 + orig: 37, 29 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 212, 2 + size: 37, 23 + orig: 37, 23 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 2, 8 + size: 37, 12 + orig: 37, 12 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 288, 62 + size: 39, 22 + orig: 39, 22 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 476, 138 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: true + xy: 181, 2 + size: 37, 29 + orig: 37, 29 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: true + xy: 157, 8 + size: 38, 22 + orig: 38, 22 + offset: 0, 0 + index: -1 +r_eyeball + rotate: true + xy: 324, 13 + size: 26, 24 + orig: 26, 24 + offset: 0, 0 + index: -1 +r_eyeball_surprised + rotate: false + xy: 181, 71 + size: 15, 20 + orig: 15, 20 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 499, 222 + size: 32, 11 + orig: 32, 11 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 312, 72 + size: 33, 38 + orig: 33, 38 + offset: 0, 0 + index: -1 +r_mane1 + rotate: false + xy: 364, 145 + size: 71, 52 + orig: 71, 52 + offset: 0, 0 + index: -1 +r_mane2 + rotate: false + xy: 364, 199 + size: 82, 55 + orig: 82, 55 + offset: 0, 0 + index: -1 +tail + rotate: false + xy: 299, 112 + size: 61, 28 + orig: 61, 28 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/214201.json b/m78-all/m78-fe/public/images/character/214201.json new file mode 100644 index 000000000..ae885b546 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/214201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"niWzuNJ2QtAWTqZBUV901YHUykY","spine":"3.5.25","width":238.16,"height":267.35,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":62.37,"rotation":-90,"x":1.7,"y":86.64},{"name":"head","parent":"body","length":145.87,"rotation":-179.8,"y":0.5},{"name":"b_mane","parent":"head","length":98.13,"rotation":1.56,"x":75.48,"y":8.79},{"name":"eff_exclamation","parent":"root","length":27.11,"rotation":24.44,"x":105.26,"y":222.64},{"name":"eff_panic","parent":"root","length":24.5,"rotation":-15.95,"x":117.04,"y":144.1},{"name":"eff_sad1","parent":"root","length":22.89,"rotation":-90.91,"x":-19.64,"y":123.44},{"name":"eff_sad2","parent":"root","length":20.02,"rotation":-88.48,"x":35.23,"y":125.95},{"name":"eff_star1","parent":"root","length":21.65,"rotation":16.56,"x":67.11,"y":68.36},{"name":"eff_star2","parent":"root","length":18.82,"rotation":169.7,"x":-60.24,"y":68.36},{"name":"eff_star3","parent":"root","length":23.13,"rotation":-14.04,"x":70.48,"y":22.92},{"name":"l_arm1","parent":"body","length":33.32,"rotation":28.89,"x":2.01,"y":8.55},{"name":"l_arm2","parent":"l_arm1","length":30.98,"rotation":3.51,"x":23.4,"y":-0.27},{"name":"l_ear","parent":"head","length":45.48,"rotation":-33.01,"x":118.11,"y":-29.08},{"name":"l_eye","parent":"head","length":17.66,"rotation":129.23,"x":58.6,"y":-53.66},{"name":"l_eyeball","parent":"head","length":12.73,"rotation":-0.2,"x":26.84,"y":-32.94},{"name":"l_eyebrow","parent":"head","length":24.25,"rotation":-90.91,"x":64.77,"y":-22.16},{"name":"l_leg","parent":"root","length":49.36,"rotation":-92.92,"x":13.77,"y":49.42},{"name":"l_mane1","parent":"head","length":48.81,"rotation":-116.5,"x":76.77,"y":-54.59},{"name":"l_mane2","parent":"head","length":54.85,"rotation":-98.1,"x":91.36,"y":-53.63},{"name":"mouth","parent":"head","length":13.85,"rotation":23,"x":7.2,"y":-15.59},{"name":"r_arm1","parent":"body","length":35.37,"rotation":-29.85,"x":2.01,"y":-13.58},{"name":"r_arm2","parent":"r_arm1","length":32.14,"rotation":-10.07,"x":24.02,"y":1.6},{"name":"r_ear","parent":"head","length":52.87,"rotation":33.95,"x":116.88,"y":51.91},{"name":"r_eye","parent":"head","length":19.4,"rotation":-119.17,"x":53.5,"y":51.84},{"name":"r_eyeball","parent":"head","length":13.04,"rotation":1.13,"x":24.9,"y":20.41},{"name":"r_eyebrow","parent":"head","length":24.32,"rotation":94.09,"x":63.98,"y":14.82},{"name":"r_leg","parent":"root","length":39.35,"rotation":-85.6,"x":-18.42,"y":40.37},{"name":"r_mane1","parent":"head","length":66.14,"rotation":124.58,"x":82.16,"y":49.01},{"name":"r_mane2","parent":"head","length":64.66,"rotation":103.3,"x":97.78,"y":58.51},{"name":"tail","parent":"body","length":50.7,"rotation":-68.75,"x":47.43,"y":-27.84}],"slots":[{"name":"tail","bone":"tail","attachment":"tail"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_arm3","bone":"l_arm2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"b_mane","bone":"b_mane","attachment":"b_mane"},{"name":"body","bone":"body","attachment":"body"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth_sad"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_sad"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_sad"},{"name":"l_eyeball","bone":"l_eyeball"},{"name":"r_eyeball","bone":"r_eyeball"},{"name":"l_eyebrow_sad","bone":"l_eyebrow","attachment":"l_eyebrow_sad"},{"name":"r_eyebrow_sad","bone":"r_eyebrow","attachment":"r_eyebrow_sad"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"r_arm3","bone":"r_arm2"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_mane2","bone":"l_mane2","attachment":"l_mane2"},{"name":"l_mane1","bone":"l_mane1","attachment":"l_mane1"},{"name":"r_mane2","bone":"r_mane2","attachment":"r_mane2"},{"name":"r_mane1","bone":"r_mane1","attachment":"r_mane1"}],"skins":{"default":{"b_mane":{"b_mane":{"x":47.79,"y":3.89,"rotation":-91.76,"width":189,"height":112}},"body":{"body":{"x":35.84,"y":-3.76,"rotation":90,"width":68,"height":104}},"head":{"head":{"x":70.78,"y":6.56,"rotation":-90.2,"width":169,"height":162}},"l_arm1":{"l_arm1":{"x":16.76,"y":-0.21,"rotation":61.11,"width":25,"height":35}},"l_arm2":{"l_arm2":{"x":12.45,"y":-0.72,"rotation":57.6,"width":32,"height":37}},"l_arm3":{"l_arm3":{"x":21.5,"y":-0.21,"rotation":-52.37,"width":38,"height":47}},"l_ear":{"l_ear":{"x":21.25,"y":2.03,"rotation":-57.19,"width":39,"height":45}},"l_eye1":{"l_eye1":{"x":21.51,"y":-3.91,"rotation":140.57,"width":31,"height":28},"l_eye2":{"x":21.51,"y":-3.91,"rotation":140.57,"width":31,"height":24},"l_eye3":{"x":22.68,"y":-2.48,"rotation":140.57,"width":27,"height":11},"l_eye_happy":{"x":22.68,"y":-2.48,"rotation":140.57,"width":27,"height":16},"l_eye_sad":{"x":22.77,"y":-2.38,"rotation":140.57,"width":28,"height":13},"l_eye_surprised":{"x":21.9,"y":-3.43,"rotation":140.57,"width":31,"height":29},"l_eye_uneasy":{"x":21.51,"y":-3.91,"rotation":140.57,"width":32,"height":24}},"l_eyeball":{"l_eyeball":{"x":17.73,"y":0.95,"rotation":-87.44,"width":22,"height":24},"l_eyeball_surprised":{"x":18.65,"y":1.87,"rotation":-87.44,"width":13,"height":20}},"l_eyebrow_sad":{"l_eyebrow_sad":{"x":10.9,"y":-10.24,"rotation":0.72,"width":23,"height":11}},"l_leg":{"l_leg":{"x":22.78,"y":0.04,"rotation":92.92,"width":37,"height":56}},"l_mane1":{"l_mane1":{"x":21.36,"y":-4.07,"rotation":26.3,"width":58,"height":42}},"l_mane2":{"l_mane2":{"x":23.69,"y":2.08,"rotation":7.91,"width":66,"height":47}},"mouth1":{"mouth1":{"x":16.82,"y":1.11,"rotation":-113.2,"width":8,"height":3},"mouth2":{"x":16.82,"y":1.11,"rotation":-113.2,"width":7,"height":6},"mouth3":{"x":16.51,"y":1.24,"rotation":-113.2,"width":11,"height":6},"mouth_happy":{"x":16.82,"y":1.11,"rotation":-113.2,"width":12,"height":4},"mouth_sad":{"x":16.82,"y":1.11,"rotation":-113.2,"width":10,"height":5},"mouth_surprised":{"x":16.82,"y":1.11,"rotation":-113.2,"width":14,"height":10},"mouth_uneasy":{"x":16.82,"y":1.11,"rotation":-113.2,"width":12,"height":4}},"r_arm1":{"r_arm1":{"x":16.45,"y":0.63,"rotation":119.85,"width":25,"height":38}},"r_arm2":{"r_arm2":{"x":14.34,"y":0.83,"rotation":129.92,"width":33,"height":37}},"r_arm3":{"r_arm3":{"x":20.94,"y":2.59,"rotation":-123.31,"width":37,"height":47}},"r_ear":{"r_ear":{"x":19.51,"y":-1.34,"rotation":-124.14,"width":49,"height":45}},"r_eye1":{"r_eye1":{"x":26.91,"y":5.77,"rotation":28.97,"width":37,"height":29},"r_eye2":{"x":26.91,"y":5.77,"rotation":28.97,"width":37,"height":23},"r_eye3":{"x":29.29,"y":5.6,"rotation":28.97,"width":37,"height":12},"r_eye_happy":{"x":34.03,"y":6.21,"rotation":28.97,"width":39,"height":22},"r_eye_sad":{"x":29.49,"y":5.55,"rotation":28.97,"width":34,"height":14},"r_eye_surprised":{"x":26.91,"y":5.77,"rotation":28.97,"width":37,"height":29},"r_eye_uneasy":{"x":26.91,"y":5.77,"rotation":28.97,"width":38,"height":22}},"r_eyeball":{"r_eyeball":{"x":18.15,"y":3.94,"rotation":-91.33,"width":26,"height":24},"r_eyeball_surprised":{"x":18.73,"y":2.7,"rotation":-91.33,"width":15,"height":20}},"r_eyebrow_sad":{"r_eyebrow_sad":{"x":5.36,"y":9.42,"rotation":175.71,"width":32,"height":11}},"r_leg":{"r_leg":{"x":22.99,"y":-0.68,"rotation":85.6,"width":33,"height":38}},"r_mane1":{"r_mane1":{"x":31.72,"y":0.27,"rotation":145.22,"width":71,"height":52}},"r_mane2":{"r_mane2":{"x":28.45,"y":-2.47,"rotation":166.5,"width":82,"height":55}},"tail":{"tail":{"x":30.15,"y":-2.94,"rotation":158.75,"width":61,"height":28}}}},"animations":{"action":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":0.4667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.3333,"name":null},{"time":0.4667,"name":"l_eyeball"},{"time":1,"name":"l_eyeball"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":0.1667,"name":"mouth_surprised"},{"time":0.4,"name":"mouth3"},{"time":0.5,"name":"mouth1"},{"time":0.8333,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_arm2":{"attachment":[{"time":0,"name":null},{"time":0.1667,"name":null},{"time":0.5,"name":null},{"time":0.6667,"name":null},{"time":1,"name":null}]},"r_arm3":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.1667,"name":"r_arm3"},{"time":0.5,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":0.4667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.3333,"name":null},{"time":0.4667,"name":"r_eyeball"},{"time":1,"name":"r_eyeball"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.35},{"time":0.5,"angle":-9.64,"curve":"stepped"},{"time":0.6667,"angle":-9.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.1667,"x":-0.56,"y":0},{"time":0.5,"x":7.62,"y":0},{"time":0.6667,"x":7.01,"y":0},{"time":1,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.35},{"time":0.5,"angle":359.37,"curve":"stepped"},{"time":0.6667,"angle":359.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.14,"y":-0.23},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-19.11},{"time":0.1667,"angle":-13.08},{"time":0.5,"angle":-69.22},{"time":0.6667,"angle":-78.91},{"time":1,"angle":-19.11}],"translate":[{"time":0,"x":5.26,"y":-1.75,"curve":"stepped"},{"time":0.1667,"x":5.26,"y":-1.75,"curve":"stepped"},{"time":0.5,"x":5.26,"y":-1.75,"curve":"stepped"},{"time":0.6667,"x":5.26,"y":-1.75,"curve":"stepped"},{"time":1,"x":5.26,"y":-1.75}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-20.52,"curve":"stepped"},{"time":0.1667,"angle":-20.52},{"time":0.2667,"angle":-27.94},{"time":0.5,"angle":-20.06},{"time":0.6667,"angle":-25.6},{"time":1,"angle":-20.52}],"translate":[{"time":0,"x":-5.25,"y":1.87,"curve":"stepped"},{"time":0.1667,"x":-5.25,"y":1.87},{"time":0.2667,"x":-1.7,"y":0.84},{"time":0.5,"x":-3.79,"y":1.81},{"time":0.6667,"x":-3.57,"y":1.95},{"time":1,"x":-5.25,"y":1.87}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":42.95},{"time":0.1667,"angle":43.74},{"time":0.5,"angle":24.38},{"time":0.6667,"angle":20.84},{"time":1,"angle":42.95}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":32.18},{"time":0.1667,"angle":32.97},{"time":0.5,"angle":26.42},{"time":0.6667,"angle":22.89},{"time":1,"angle":32.18}],"translate":[{"time":0,"x":0.4,"y":-0.83,"curve":"stepped"},{"time":0.1667,"x":0.4,"y":-0.83},{"time":0.5,"x":0.89,"y":-0.43,"curve":"stepped"},{"time":0.6667,"x":0.89,"y":-0.43},{"time":1,"x":0.4,"y":-0.83}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":55.91},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0},{"time":0.2667,"x":-9.84,"y":-4.03},{"time":0.5,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.8333,"x":-0.23,"y":0,"curve":"stepped"},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-2.86},{"time":0.5,"angle":-28.53},{"time":0.6667,"angle":-37.55},{"time":0.8333,"angle":-38.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.1667,"x":-0.23,"y":0},{"time":0.3333,"x":0.48,"y":0.49},{"time":0.5,"x":0.47,"y":4.39},{"time":0.6667,"x":0.96,"y":4.39},{"time":0.8333,"x":1.21,"y":3.97},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.93},{"time":0.5,"angle":-3.39,"curve":"stepped"},{"time":0.6667,"angle":-3.39},{"time":0.8333,"angle":-5.31},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-11.65,"curve":"stepped"},{"time":0.6667,"angle":-11.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":5.16,"curve":"stepped"},{"time":0.6667,"angle":5.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.5,"angle":-10.34},{"time":0.6667,"angle":-11.83},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.94},{"time":0.5,"angle":-8.21},{"time":0.6667,"angle":-18.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.31},{"time":0.5,"angle":7.95},{"time":0.6667,"angle":12.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.38},{"time":0.5,"angle":15.6},{"time":0.6667,"angle":22.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.5},{"time":0.5,"angle":-14.55},{"time":0.6667,"angle":-28.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":6.75},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.2667,"x":-3.59,"y":-2.2},{"time":0.5,"x":0.64,"y":0},{"time":0.7667,"x":3.7,"y":-2.2},{"time":1,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.006,"y":1.006},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.005,"y":1.005},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":357.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":2.2,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":3.66,"y":0},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.012,"y":1.012},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.014,"y":1.014},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-46.4},{"time":0.5,"angle":0},{"time":0.7667,"angle":-44.28},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.42},{"time":0.5,"angle":0},{"time":0.8333,"angle":-10.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.16,"y":-0.31},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":40.95},{"time":0.5,"angle":0},{"time":0.7667,"angle":48.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":13.92},{"time":0.5,"angle":0},{"time":0.8333,"angle":10.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.18,"y":-0.29},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":18.67},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.22,"y":0},{"time":0.2667,"x":-3.67,"y":0},{"time":0.5,"x":0,"y":0},{"time":1,"x":-0.22,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-41.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.22,"y":0},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":2.08,"y":1.85},{"time":1,"x":-0.22,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.41},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-11.59},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-16.81},{"time":0.5,"angle":0},{"time":0.7667,"angle":-15.69},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.46},{"time":0.5,"angle":0},{"time":0.7667,"angle":5.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":19.51},{"time":0.5,"angle":0},{"time":0.7667,"angle":11.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-16.04},{"time":0.5,"angle":0},{"time":0.7667,"angle":-17.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.1667,"name":"mouth2"},{"time":0.3333,"name":"mouth2"},{"time":0.4333,"name":"mouth_happy"},{"time":0.5,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.2667,"x":-1.63,"y":-1.77},{"time":0.5,"x":-7.05,"y":0.98},{"time":0.7667,"x":-1.37,"y":-1.77},{"time":1,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.96},{"time":0.5,"angle":0},{"time":0.7667,"angle":355.93},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.026,"y":1.026},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.018,"y":1.018},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":8.85},{"time":0.5,"angle":-8.02},{"time":1,"angle":8.85}],"translate":[{"time":0.5,"x":0.22,"y":-0.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-8.1},{"time":0.5,"angle":11.03},{"time":1,"angle":-8.1}],"translate":[{"time":0.5,"x":-0.51,"y":0.4},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.5,"x":-0.23,"y":0,"curve":"stepped"},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.5,"x":-0.23,"y":0,"curve":"stepped"},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":-3.95},{"time":0.5,"angle":3.88},{"time":1,"angle":-3.95}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.89},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.71},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.46},{"time":0.5,"angle":0},{"time":0.6667,"angle":-5.5},{"time":1,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-16.54},{"time":0.5,"angle":0},{"time":0.6667,"angle":-21.78},{"time":1,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.38},{"time":0.5,"angle":0},{"time":0.6667,"angle":5.97},{"time":1,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":14.78},{"time":0.5,"angle":0},{"time":0.6667,"angle":20.21},{"time":1,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-30.23},{"time":0.8333,"angle":5.53},{"time":1,"angle":0}],"translate":[{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_arm3":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null},{"time":1.3333,"name":null}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_arm3":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":0.6667,"name":null},{"time":1.3333,"name":null}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.51},{"time":0.6667,"angle":-13.35},{"time":1,"angle":-10.51},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.3333,"x":9.49,"y":-2.88},{"time":0.6667,"x":10.74,"y":-2.88},{"time":1,"x":9.49,"y":-2.88},{"time":1.3333,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.58,"curve":"stepped"},{"time":0.6667,"angle":3.58},{"time":1,"angle":369.05},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":3.31,"y":1.7},{"time":1,"x":3.11,"y":2.3},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":11.71},{"time":0.6667,"angle":54.6},{"time":1.3333,"angle":11.71}],"translate":[{"time":0,"x":4.18,"y":1.09},{"time":0.6667,"x":7.76,"y":2.28},{"time":1.3333,"x":4.18,"y":1.09}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":4.96},{"time":0.6667,"angle":27.23},{"time":1.3333,"angle":4.96}],"translate":[{"time":0,"x":1.74,"y":0.62},{"time":0.6667,"x":-0.11,"y":0.07},{"time":1.3333,"x":1.74,"y":0.62}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-13.77},{"time":0.6667,"angle":7.34},{"time":1.3333,"angle":-13.77}],"translate":[{"time":0,"x":2.28,"y":0},{"time":0.6667,"x":5.14,"y":0.57},{"time":1.3333,"x":2.28,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":6.24},{"time":0.6667,"angle":6.72},{"time":1.3333,"angle":6.24}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.23,"y":0,"curve":"stepped"},{"time":1.3333,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.23,"y":0},{"time":1,"x":0,"y":-0.77},{"time":1.3333,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.12},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":7.28,"curve":"stepped"},{"time":0.6667,"angle":7.28,"curve":"stepped"},{"time":1.3333,"angle":7.28}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-15.84,"curve":"stepped"},{"time":0.6667,"angle":-15.84,"curve":"stepped"},{"time":1.3333,"angle":-15.84}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":20.17},{"time":0.6667,"angle":21.62},{"time":1.3333,"angle":20.17}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":20.17},{"time":0.3333,"angle":16.22},{"time":0.8333,"angle":16.44},{"time":1,"angle":-343.78},{"time":1.3333,"angle":20.17}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":-28.69},{"time":0.6667,"angle":-24.66},{"time":1.3333,"angle":-28.69}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":-28.69},{"time":0.6667,"angle":-20.43},{"time":1.3333,"angle":-28.69}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.56,"y":-0.79,"curve":"stepped"},{"time":0.8333,"x":1.56,"y":-0.79},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.56,"y":-0.79,"curve":"stepped"},{"time":0.8333,"x":1.56,"y":-0.79},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":1.95,"y":-0.12},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":26.34},{"time":0.3333,"angle":42.4},{"time":0.6667,"angle":48.83},{"time":1,"angle":42.41},{"time":1.3333,"angle":26.34}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0.13}]}}},"stand":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1.3333,"name":"l_arm2"}]},"l_arm3":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball"},{"time":0.6667,"name":null},{"time":0.8,"name":"l_eyeball"},{"time":1.3333,"name":"l_eyeball"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_arm2":{"attachment":[{"time":0,"name":null}]},"r_arm3":{"attachment":[{"time":0,"name":"r_arm3"},{"time":1.3333,"name":null}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball"},{"time":0.6667,"name":null},{"time":0.8,"name":"r_eyeball"},{"time":1.3333,"name":"r_eyeball"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.63},{"time":0.6667,"angle":0},{"time":1,"angle":-5.72},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.3333,"x":-4.82,"y":0},{"time":0.6667,"x":0.64,"y":0},{"time":1,"x":4.21,"y":0},{"time":1.3333,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.66},{"time":0.6667,"angle":0},{"time":1,"angle":350.76},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.4,"y":-0.24},{"time":0.6667,"x":0,"y":0},{"time":1,"x":1.8,"y":0.18},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-17.71},{"time":0.6667,"angle":0},{"time":1,"angle":-14.83},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.92},{"time":0.6667,"angle":14.16},{"time":1,"angle":-1.03},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.79},{"time":0.6667,"angle":0},{"time":1,"angle":19.22},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.36},{"time":0.6667,"angle":-7.11},{"time":1,"angle":2.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.23,"y":0,"curve":"stepped"},{"time":1.3333,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.6667,"x":-0.23,"y":0,"curve":"stepped"},{"time":1.3333,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.52},{"time":0.6667,"angle":0},{"time":1,"angle":-3.81},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.75},{"time":0.6667,"angle":-9.27},{"time":1,"angle":4.3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.65},{"time":0.6667,"angle":9.76},{"time":1,"angle":-0.63},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.12},{"time":0.6667,"angle":0},{"time":1,"angle":4.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.12},{"time":0.6667,"angle":0},{"time":1,"angle":4.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.49},{"time":0.6667,"angle":0},{"time":1,"angle":-8.85},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.49},{"time":0.6667,"angle":0},{"time":1,"angle":-8.85},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.78},{"time":0.5,"angle":12.65},{"time":1,"angle":-23.38},{"time":1.1667,"angle":-17.07},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":null},{"time":0.1667,"name":null},{"time":0.5,"name":null},{"time":0.6667,"name":null},{"time":0.8333,"name":null},{"time":1,"name":null}]},"l_arm3":{"attachment":[{"time":0,"name":"l_arm3"},{"time":0.1667,"name":"l_arm3"},{"time":0.5,"name":"l_arm3"},{"time":0.6667,"name":"l_arm3"},{"time":0.8333,"name":"l_arm3"},{"time":1,"name":"l_arm3"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball":{"attachment":[{"time":0,"name":"l_eyeball_surprised"},{"time":1,"name":"l_eyeball_surprised"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_arm2":{"attachment":[{"time":0,"name":null},{"time":0.1667,"name":null},{"time":0.5,"name":null},{"time":0.6667,"name":null},{"time":0.8333,"name":null},{"time":1,"name":null}]},"r_arm3":{"attachment":[{"time":0,"name":"r_arm3"},{"time":0.1667,"name":"r_arm3"},{"time":0.5,"name":"r_arm3"},{"time":0.6667,"name":"r_arm3"},{"time":0.8333,"name":"r_arm3"},{"time":1,"name":"r_arm3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball":{"attachment":[{"time":0,"name":"r_eyeball_surprised"},{"time":1,"name":"r_eyeball_surprised"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.3333,"x":-7.49,"y":5.19},{"time":1,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.29},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.035,"y":1.035},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-48.93},{"time":0.1667,"angle":-60.92},{"time":0.3333,"angle":-48.93},{"time":0.5,"angle":-60.92},{"time":0.6667,"angle":-48.93},{"time":0.8333,"angle":-60.92},{"time":1,"angle":-48.93}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-10.59},{"time":0.1667,"angle":-24.82},{"time":0.3333,"angle":-10.59},{"time":0.5,"angle":-24.82},{"time":0.6667,"angle":-10.59},{"time":0.8333,"angle":-24.82},{"time":1,"angle":-10.59}],"translate":[{"time":0,"x":1.99,"y":2.48,"curve":"stepped"},{"time":0.1667,"x":1.99,"y":2.48,"curve":"stepped"},{"time":0.3333,"x":1.99,"y":2.48,"curve":"stepped"},{"time":0.5,"x":1.99,"y":2.48,"curve":"stepped"},{"time":0.6667,"x":1.99,"y":2.48,"curve":"stepped"},{"time":0.8333,"x":1.99,"y":2.48,"curve":"stepped"},{"time":1,"x":1.99,"y":2.48}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":44.36},{"time":0.1667,"angle":53.09},{"time":0.3333,"angle":44.36},{"time":0.5,"angle":53.09},{"time":0.6667,"angle":44.36},{"time":0.8333,"angle":53.09},{"time":1,"angle":44.36}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":15.93},{"time":0.1667,"angle":27.48},{"time":0.3333,"angle":15.93},{"time":0.5,"angle":27.48},{"time":0.6667,"angle":15.93},{"time":0.8333,"angle":27.48},{"time":1,"angle":15.93}],"translate":[{"time":0,"x":-1.04,"y":-3.88,"curve":"stepped"},{"time":0.1667,"x":-1.04,"y":-3.88,"curve":"stepped"},{"time":0.3333,"x":-1.04,"y":-3.88,"curve":"stepped"},{"time":0.5,"x":-1.04,"y":-3.88,"curve":"stepped"},{"time":0.6667,"x":-1.04,"y":-3.88,"curve":"stepped"},{"time":0.8333,"x":-1.04,"y":-3.88,"curve":"stepped"},{"time":1,"x":-1.04,"y":-3.88}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.83},{"time":0.3333,"angle":42.09},{"time":0.5,"angle":46.41},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":-9.34,"y":1.55},{"time":0.5,"x":-8.73,"y":-0.89},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0},{"time":0.5,"x":0,"y":0},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-20.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":29.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3.81},{"time":0.5,"angle":-17.93,"curve":"stepped"},{"time":0.8333,"angle":-17.93},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_arm2":{"attachment":[{"time":0,"name":"l_arm2"},{"time":1,"name":"l_arm2"}]},"l_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.0667,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_sad"}]},"l_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":1,"name":"mouth_uneasy"}]},"r_arm2":{"attachment":[{"time":0,"name":"r_arm2"}]},"r_arm3":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.0667,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye3"}]},"r_eyeball":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-9.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0.64,"y":0},{"time":0.5,"x":7.96,"y":0},{"time":1,"x":0.64,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-0.02},{"time":0.5,"angle":18.18},{"time":1,"angle":-0.02}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-34.38},{"time":0.5,"angle":-21.3},{"time":0.6667,"angle":-40.74},{"time":0.8333,"angle":-22.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":84.68},{"time":0.5,"angle":42.48},{"time":0.6667,"angle":84.68},{"time":0.8333,"angle":42.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.69,"y":0.71},{"time":0.5,"x":2.16,"y":1.09},{"time":0.6667,"x":1.69,"y":0.71},{"time":0.8333,"x":2.16,"y":1.09},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":17.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.5,"x":-0.23,"y":0,"curve":"stepped"},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.23,"y":0,"curve":"stepped"},{"time":0.5,"x":-0.23,"y":0,"curve":"stepped"},{"time":1,"x":-0.23,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_mane":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.92},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-8.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-17.69},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":9.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_mane2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":20.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":9.87},{"time":0.5,"angle":0},{"time":0.6667,"angle":-7.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/214201.png b/m78-all/m78-fe/public/images/character/214201.png new file mode 100644 index 000000000..36b8ac1ba Binary files /dev/null and b/m78-all/m78-fe/public/images/character/214201.png differ diff --git a/m78-all/m78-fe/public/images/character/214301.atlas b/m78-all/m78-fe/public/images/character/214301.atlas new file mode 100644 index 000000000..386b2b529 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/214301.atlas @@ -0,0 +1,293 @@ + +214301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +b_heart + rotate: false + xy: 2, 58 + size: 211, 196 + orig: 211, 196 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 463, 114 + size: 59, 57 + orig: 59, 57 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 385, 173 + size: 138, 81 + orig: 138, 81 + offset: 0, 0 + index: -1 +crown + rotate: true + xy: 2, 4 + size: 52, 67 + orig: 52, 67 + offset: 0, 0 + index: -1 +f_hair + rotate: false + xy: 215, 2 + size: 151, 91 + orig: 151, 91 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 215, 95 + size: 168, 159 + orig: 168, 159 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 937, 221 + size: 33, 33 + orig: 33, 33 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 863, 222 + size: 35, 32 + orig: 35, 32 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 645, 181 + size: 32, 30 + orig: 32, 30 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 525, 155 + size: 32, 25 + orig: 32, 25 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 109, 3 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 71, 33 + size: 52, 23 + orig: 52, 23 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 124, 11 + size: 28, 13 + orig: 28, 13 + offset: 0, 0 + index: -1 +l_eye_sad2 + rotate: true + xy: 1007, 223 + size: 31, 14 + orig: 31, 14 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 972, 224 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 125, 26 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: false + xy: 160, 26 + size: 33, 30 + orig: 33, 30 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 368, 2 + size: 27, 12 + orig: 27, 12 + offset: 0, 0 + index: -1 +l_sideburn + rotate: true + xy: 644, 229 + size: 25, 49 + orig: 25, 49 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 559, 174 + size: 11, 6 + orig: 11, 6 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 680, 219 + size: 13, 8 + orig: 13, 8 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 195, 31 + size: 18, 10 + orig: 18, 10 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 500, 106 + size: 14, 6 + orig: 14, 6 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 154, 16 + size: 12, 8 + orig: 12, 8 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 195, 43 + size: 18, 13 + orig: 18, 13 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: false + xy: 124, 2 + size: 13, 7 + orig: 13, 7 + offset: 0, 0 + index: -1 +r_arm1 + rotate: true + xy: 900, 220 + size: 34, 35 + orig: 34, 35 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 71, 2 + size: 29, 36 + orig: 29, 36 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 603, 179 + size: 40, 31 + orig: 40, 31 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 695, 228 + size: 40, 26 + orig: 40, 26 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 368, 51 + size: 42, 14 + orig: 42, 14 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 737, 224 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 644, 213 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +r_eye_sad2 + rotate: true + xy: 368, 16 + size: 33, 14 + orig: 33, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 779, 223 + size: 40, 31 + orig: 40, 31 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 779, 223 + size: 40, 31 + orig: 40, 31 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 821, 223 + size: 40, 31 + orig: 40, 31 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 463, 99 + size: 35, 13 + orig: 35, 13 + offset: 0, 0 + index: -1 +r_sideburn + rotate: false + xy: 603, 212 + size: 39, 42 + orig: 39, 42 + offset: 0, 0 + index: -1 +wand1 + rotate: false + xy: 385, 99 + size: 76, 72 + orig: 76, 72 + offset: 0, 0 + index: -1 +wand2 + rotate: false + xy: 525, 182 + size: 76, 72 + orig: 76, 72 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/214301.json b/m78-all/m78-fe/public/images/character/214301.json new file mode 100644 index 000000000..3e58b04ac --- /dev/null +++ b/m78-all/m78-fe/public/images/character/214301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"jutTxrlA79q8659Ft1frciXq/mQ","spine":"3.5.25","width":219,"height":286,"images":"./png/"},"bones":[{"name":"root"},{"name":"body1","parent":"root","length":32.76,"rotation":90.83,"x":-1.86,"y":64.72},{"name":"head","parent":"body1","length":122.51,"rotation":0.28,"x":34.66,"y":-0.03},{"name":"b_heart","parent":"head","length":41.35,"rotation":1.52,"x":-17.05,"y":2.23},{"name":"body2","parent":"body1","length":63.62,"rotation":179.6,"x":-1.89,"y":0.5},{"name":"crown","parent":"head","length":58.87,"rotation":-1.11,"x":119.67,"y":0.53},{"name":"eff_exclamation","parent":"root","length":22.06,"rotation":29.2,"x":89.41,"y":225.4},{"name":"eff_panic","parent":"root","length":18.1,"rotation":-20.14,"x":91.11,"y":152.32},{"name":"eff_sad1","parent":"root","length":25.55,"rotation":-91.79,"x":-19.03,"y":134.44},{"name":"eff_sad2","parent":"root","length":23.16,"rotation":-91.97,"x":39.45,"y":132.04},{"name":"eff_star1","parent":"root","length":20.27,"rotation":26.57,"x":65.05,"y":73.01},{"name":"eff_star2","parent":"root","length":24.73,"rotation":159.9,"x":-77.14,"y":74.15},{"name":"eff_star3","parent":"root","length":16.52,"rotation":-22.17,"x":66.75,"y":44.69},{"name":"f_hair","parent":"head","length":71.73,"rotation":-174.27,"x":129.79,"y":-16.29},{"name":"l_arm1","parent":"body1","length":19.66,"rotation":-143.68,"x":29.27,"y":-11.35},{"name":"l_arm2","parent":"l_arm1","length":26.87,"rotation":6.42,"x":18.33,"y":-0.18},{"name":"l_eye","parent":"head","length":15.92,"rotation":9.19,"x":25.33,"y":-40.85},{"name":"l_eyebrow","parent":"head","length":25.27,"rotation":-85.72,"x":59.35,"y":-24.89},{"name":"l_hair","parent":"head","length":33.79,"rotation":-177.08,"x":62.93,"y":-60.58},{"name":"mouth","parent":"head","length":12.64,"rotation":33.18,"x":1.03,"y":-20.44},{"name":"r_arm1","parent":"body1","length":25.82,"rotation":146.94,"x":33.46,"y":15.66},{"name":"r_arm2","parent":"r_arm1","length":28.91,"rotation":2.72,"x":24.91,"y":0.55},{"name":"r_eye","parent":"head","length":16.37,"rotation":-17.97,"x":23.82,"y":28.5},{"name":"r_eyebrow","parent":"head","length":27.6,"rotation":84.94,"x":60.5,"y":9.75},{"name":"r_hair","parent":"head","length":31.85,"rotation":168.58,"x":51.75,"y":48.38},{"name":"wand","parent":"l_arm2","length":58.83,"rotation":88.49,"x":23.53,"y":-0.76}],"slots":[{"name":"b_heart","bone":"b_heart","attachment":"b_heart"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"head","bone":"head","attachment":"head"},{"name":"wand1","bone":"wand","attachment":"wand1"},{"name":"l_sideburn","bone":"l_hair","attachment":"l_sideburn"},{"name":"r_sideburn","bone":"r_hair","attachment":"r_sideburn"},{"name":"f_hair","bone":"f_hair","attachment":"f_hair"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"crown","bone":"crown","attachment":"crown"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy2"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy2"},{"name":"l_eyebrow_sad","bone":"l_eyebrow"},{"name":"r_eyebrow_sad","bone":"r_eyebrow"}],"skins":{"default":{"b_heart":{"b_heart":{"x":90.99,"y":12.07,"rotation":-92.63,"width":211,"height":196}},"body1":{"body1":{"x":12.39,"y":-1.57,"rotation":-90.83,"width":59,"height":57}},"body2":{"body2":{"x":27.66,"y":-4.84,"rotation":89.57,"width":138,"height":81}},"crown":{"crown":{"x":28.11,"y":0.79,"rotation":-90,"width":52,"height":67}},"f_hair":{"f_hair":{"x":40.02,"y":-21.83,"rotation":83.16,"width":151,"height":91}},"head":{"head":{"x":60.96,"y":10.46,"rotation":-91.11,"width":168,"height":159}},"l_arm1":{"l_arm1":{"x":13.9,"y":0.09,"rotation":52.85,"width":33,"height":33}},"l_arm2":{"l_arm2":{"x":12.31,"y":-1.29,"rotation":46.43,"width":35,"height":32}},"l_eye1":{"l_eye1":{"x":14.8,"y":2.38,"rotation":-100.3,"width":32,"height":30},"l_eye2":{"x":14.8,"y":2.38,"rotation":-100.3,"width":32,"height":25},"l_eye3":{"x":12.94,"y":2.72,"rotation":-100.3,"width":28,"height":13},"l_eye_happy":{"x":16.76,"y":13.12,"rotation":-100.3,"width":52,"height":23},"l_eye_sad":{"x":14.8,"y":2.38,"rotation":-100.3,"width":28,"height":13},"l_eye_sad2":{"x":14.8,"y":2.38,"rotation":-100.3,"width":31,"height":14},"l_eye_surprised":{"x":14.8,"y":2.38,"rotation":-100.3,"width":33,"height":30},"l_eye_uneasy1":{"x":14.8,"y":2.38,"rotation":-100.3,"width":33,"height":30},"l_eye_uneasy2":{"x":14.8,"y":2.38,"rotation":-100.3,"width":33,"height":30}},"l_eyebrow_sad":{"l_eyebrow_sad":{"x":8,"y":-12.38,"rotation":-5.39,"width":27,"height":12}},"l_sideburn":{"l_sideburn":{"x":13.14,"y":-3.41,"rotation":85.97,"width":25,"height":49}},"mouth1":{"mouth1":{"x":18.76,"y":1.19,"rotation":-124.29,"width":11,"height":6},"mouth2":{"x":18.76,"y":1.19,"rotation":-124.29,"width":13,"height":8},"mouth3":{"x":18.76,"y":1.19,"rotation":-124.29,"width":18,"height":10},"mouth_happy":{"x":18.76,"y":1.19,"rotation":-124.29,"width":14,"height":6},"mouth_sad":{"x":18.76,"y":1.19,"rotation":-124.29,"width":12,"height":8},"mouth_surprised":{"x":18.76,"y":1.19,"rotation":-124.29,"width":18,"height":13},"mouth_uneasy":{"x":18.76,"y":1.19,"rotation":-124.29,"width":13,"height":7}},"r_arm1":{"r_arm1":{"x":17.01,"y":-1.06,"rotation":122.23,"width":34,"height":35}},"r_arm2":{"r_arm2":{"x":16.9,"y":-1.52,"rotation":119.51,"width":29,"height":36}},"r_eye1":{"r_eye1":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":40,"height":31},"r_eye2":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":40,"height":26},"r_eye3":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":42,"height":14},"r_eye_happy":{"x":17.47,"y":-4.24,"rotation":-73.14,"width":40,"height":30},"r_eye_sad":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":34,"height":14},"r_eye_sad2":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":33,"height":14},"r_eye_surprised":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":40,"height":31},"r_eye_uneasy1":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":40,"height":31},"r_eye_uneasy2":{"x":16.37,"y":-0.6,"rotation":-73.14,"width":40,"height":31}},"r_eyebrow_sad":{"r_eyebrow_sad":{"x":6.34,"y":13.01,"rotation":-176.05,"width":35,"height":13}},"r_sideburn":{"r_sideburn":{"x":15.43,"y":2.03,"rotation":100.3,"width":39,"height":42}},"wand1":{"wand1":{"x":26.29,"y":0.2,"rotation":-42.06,"width":76,"height":72},"wand2":{"x":26.29,"y":0.2,"rotation":-42.06,"width":76,"height":72}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.7667,"name":"mouth3"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":0.3333,"name":"wand1"},{"time":0.5,"name":"wand1"},{"time":1,"name":"wand1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.74},{"time":0.6667,"angle":3.43},{"time":0.8333,"angle":-0.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-1.12,"curve":"stepped"},{"time":0.6667,"x":0,"y":-1.12},{"time":0.8333,"x":0,"y":1.68},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.77},{"time":0.6667,"angle":-4.1},{"time":0.8333,"angle":-3.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.27},{"time":0.6,"angle":-2.63},{"time":0.8333,"angle":-15.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.63},{"time":0.3333,"angle":0},{"time":0.5,"angle":21.15},{"time":0.8333,"angle":21.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":35.24,"curve":"stepped"},{"time":0.6667,"angle":35.24},{"time":0.8333,"angle":6.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.87},{"time":0.6,"angle":-7.72},{"time":0.8333,"angle":-23.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":-6.37},{"time":0.6667,"angle":3.35},{"time":0.8333,"angle":-34.15},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.8},{"time":0.6667,"angle":3.54},{"time":0.8333,"angle":-3.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":0,"y":-0.71},{"time":0.8333,"x":4.68,"y":-0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.34},{"time":0.6667,"angle":-0.77},{"time":0.8333,"angle":1.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":-2.87},{"time":0.8333,"angle":5.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.56},{"time":0.6667,"angle":-4.29},{"time":0.8333,"angle":2.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":0.64},{"time":0.6667,"angle":0.74},{"time":0.8333,"angle":-1.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0.5,"offsets":[{"slot":"wand1","offset":13}]}]},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":0.6667,"name":"mouth3"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":0.5,"name":"wand1"},{"time":0.5333,"name":"wand2"},{"time":0.9333,"name":"wand2"},{"time":1,"name":"wand1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.48},{"time":0.5,"angle":0},{"time":0.6667,"angle":-0.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":0,"y":-4.41},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-2.28},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":3.14,"y":-0.18},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":-18.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.64},{"time":0.5,"angle":15.77},{"time":0.8333,"angle":18.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.64},{"time":0.5,"angle":15.77},{"time":0.8333,"angle":18.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":21.7},{"time":0.5,"angle":7.26},{"time":0.7333,"angle":-15.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-204.91},{"time":0.8333,"angle":-37.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6333,"x":9.16,"y":52.76},{"time":0.6667,"x":-2.33,"y":62.61},{"time":0.8333,"x":-7.91,"y":28.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.08},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":3.26},{"time":0.5,"angle":1.48},{"time":0.6667,"angle":0.38},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":3.15,"y":0.03},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.2,"curve":"stepped"},{"time":0.5,"angle":-3.2},{"time":0.6667,"angle":1.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":354.35},{"time":0.7667,"angle":2.94},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-6.14},{"time":0.8333,"angle":3.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":2.51},{"time":0.6667,"angle":-1.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}},"drawOrder":[{"time":0.2333,"offsets":[{"slot":"wand1","offset":2}]}]},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.5,"name":"l_eye2"},{"time":0.5667,"name":"l_eye3"},{"time":0.6333,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6,"name":"mouth2"},{"time":0.6667,"name":"mouth3"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.5,"name":"r_eye2"},{"time":0.5667,"name":"r_eye3"},{"time":0.6333,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":1,"name":"wand1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.79},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.34},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-1.34},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.87},{"time":0.5,"angle":0},{"time":0.8333,"angle":-1.55},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-5.9},{"time":0.8333,"angle":-0.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5667,"angle":353.19},{"time":0.8333,"angle":5.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":354.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.17},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.02},{"time":0.8333,"angle":-2.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-7.95},{"time":0.5,"angle":0},{"time":0.7667,"angle":-8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.65},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.26},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":7.13},{"time":0.5,"angle":0},{"time":0.7667,"angle":-6.33},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":14.27},{"time":0.5,"angle":0},{"time":0.7667,"angle":10.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-12.56},{"time":0.5,"angle":0},{"time":0.7667,"angle":-13.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad2"},{"time":0.6667,"name":"l_eye_sad2"},{"time":1.3333,"name":"l_eye_sad2"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":0.3333,"name":"l_eyebrow_sad"},{"time":1,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":0.6667,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad2"},{"time":0.6667,"name":"r_eye_sad2"},{"time":1.3333,"name":"r_eye_sad2"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":0.3333,"name":"r_eyebrow_sad"},{"time":1,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":1.3333,"name":"wand1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":-2.89},{"time":0.3333,"angle":-5.77},{"time":0.6667,"angle":-2.89},{"time":1,"angle":-3.03},{"time":1.3333,"angle":-2.89}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-356.35},{"time":0.6667,"angle":0},{"time":1,"angle":-359.12},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":27.92,"curve":"stepped"},{"time":0.6667,"angle":27.92,"curve":"stepped"},{"time":1.3333,"angle":27.92}],"translate":[{"time":0,"x":-3.15,"y":-0.11},{"time":0.5,"x":-3.15,"y":-0.05},{"time":0.6667,"x":-5.67,"y":-0.2},{"time":1.3333,"x":-3.15,"y":-0.11}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-30.51,"curve":"stepped"},{"time":0.6667,"angle":-30.51,"curve":"stepped"},{"time":1.3333,"angle":-30.51}],"translate":[{"time":0,"x":-3.15,"y":-0.11},{"time":0.5,"x":-3.78,"y":-0.1},{"time":0.6667,"x":-5.67,"y":-0.2},{"time":1.3333,"x":-3.15,"y":-0.11}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0},{"time":1,"angle":8.54},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":-46.36},{"time":0.3333,"angle":-41.45},{"time":0.6667,"angle":-44.3},{"time":1.3333,"angle":-46.36}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-5.33},{"time":1,"angle":-3.84},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.6667,"x":-2.51,"y":-0.22},{"time":1,"x":-0.31,"y":-0.06},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.22},{"time":0.6667,"angle":-1.79},{"time":1,"angle":-1.21},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.08,"y":-0.62},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0.19,"y":-1.88},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":1,"angle":3.86},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":2.68},{"time":0.6667,"angle":9.08},{"time":0.8333,"angle":11.32},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.58},{"time":0.6667,"angle":6.26},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.39},{"time":0.6667,"angle":-1.82},{"time":1,"angle":-2.26},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":6.32,"y":-0.43,"curve":"stepped"},{"time":0.3333,"x":6.32,"y":-0.43},{"time":0.6667,"x":3.2,"y":-0.23},{"time":1,"x":6.32,"y":-0.43,"curve":"stepped"},{"time":1.3333,"x":6.32,"y":-0.43}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":6.32,"y":-0.43,"curve":"stepped"},{"time":0.3333,"x":6.32,"y":-0.43},{"time":0.6667,"x":3.2,"y":-0.23},{"time":1,"x":6.32,"y":-0.43,"curve":"stepped"},{"time":1.3333,"x":6.32,"y":-0.43}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}},"drawOrder":[{"time":0,"offsets":[{"slot":"l_eyebrow_sad","offset":-9},{"slot":"r_eyebrow_sad","offset":-9}]},{"time":1.3333,"offsets":[{"slot":"l_eyebrow_sad","offset":-9},{"slot":"r_eyebrow_sad","offset":-9}]}]},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":1.3333,"name":"wand1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.5},{"time":0.6667,"angle":0},{"time":1,"angle":-3.3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-1.48},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-1.48},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.8},{"time":0.6667,"angle":0},{"time":1,"angle":-357.59},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.23},{"time":0.6667,"angle":0},{"time":1,"angle":-3.76},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":7.06},{"time":0.6667,"angle":0},{"time":1,"angle":9.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":7.06},{"time":0.6667,"angle":0},{"time":1,"angle":9.15},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.23},{"time":0.6667,"angle":0},{"time":1,"angle":-3.76},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.19},{"time":0.6667,"angle":0},{"time":1,"angle":-1.18},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":356.73},{"time":0.6667,"angle":0},{"time":1.0667,"angle":3.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-3.31},{"time":0.6667,"angle":0},{"time":1.1667,"angle":2.11},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.64},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":0.5333,"name":"wand2"},{"time":0.8667,"name":"wand1"},{"time":1,"name":"wand1"}]}},"bones":{"body1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.37},{"time":0.5,"angle":6.42},{"time":0.7333,"angle":4.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":0,"y":3.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.39,"curve":"stepped"},{"time":0.5,"angle":-6.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":-2.27,"y":0.21},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.012,"y":1.012},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":2.43},{"time":0.5,"angle":0},{"time":0.6667,"angle":-16.84},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":12.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-11.52},{"time":0.8333,"angle":-11.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-6.46,"y":8.47},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7333,"angle":1.72},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.7333,"x":1.51,"y":-0.14},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":9.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":12.14,"y":-0.81},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.049,"y":1.049},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.25},{"time":0.6667,"angle":0.85},{"time":0.8333,"angle":1.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":356.63},{"time":0.5,"angle":0},{"time":0.7667,"angle":18.17},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.23},{"time":0.5,"angle":-4.07},{"time":0.7,"angle":-19.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.58},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":3.01,"y":-0.39},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.5,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.5,"name":"mouth_uneasy"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow_sad":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"wand1":{"attachment":[{"time":0,"name":"wand1"},{"time":1,"name":"wand1"}]}},"bones":{"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.7},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.86},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-7.92},{"time":0.5,"angle":0},{"time":0.7667,"angle":-354.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-10.12},{"time":0.2667,"angle":17.99},{"time":0.5,"angle":-0.73},{"time":0.7667,"angle":28.15},{"time":1,"angle":-20.61}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":8.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":44.07},{"time":0.2667,"angle":58.32},{"time":0.5,"angle":44.07},{"time":0.7667,"angle":65.56},{"time":1,"angle":44.07}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wand":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":10.52},{"time":0.5,"angle":13.77},{"time":0.7667,"angle":1.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"crown":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.87},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6,"angle":352.86},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"b_heart":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.02},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/214301.png b/m78-all/m78-fe/public/images/character/214301.png new file mode 100644 index 000000000..69392d056 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/214301.png differ diff --git a/m78-all/m78-fe/public/images/character/215101.atlas b/m78-all/m78-fe/public/images/character/215101.atlas new file mode 100644 index 000000000..de59bce64 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/215101.atlas @@ -0,0 +1,272 @@ + +215101.png +size: 512,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 185, 173 + size: 76, 81 + orig: 76, 81 + offset: 0, 0 + index: -1 +eyebrow1 + rotate: false + xy: 325, 234 + size: 97, 20 + orig: 97, 20 + offset: 0, 0 + index: -1 +eyebrow2 + rotate: false + xy: 42, 31 + size: 97, 20 + orig: 97, 20 + offset: 0, 0 + index: -1 +eyebrow3 + rotate: false + xy: 325, 212 + size: 97, 20 + orig: 97, 20 + offset: 0, 0 + index: -1 +eyebrow4 + rotate: false + xy: 42, 9 + size: 97, 20 + orig: 97, 20 + offset: 0, 0 + index: -1 +f_hair1 + rotate: true + xy: 185, 91 + size: 80, 75 + orig: 80, 75 + offset: 0, 0 + index: -1 +f_hair2 + rotate: false + xy: 263, 183 + size: 60, 71 + orig: 60, 71 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 53 + size: 181, 201 + orig: 181, 201 + offset: 0, 0 + index: -1 +l_arm1 + rotate: false + xy: 388, 173 + size: 30, 37 + orig: 30, 37 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 424, 204 + size: 65, 50 + orig: 65, 50 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 141, 6 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 181, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 221, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye4 + rotate: true + xy: 420, 164 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 467, 157 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_eye6 + rotate: true + xy: 263, 143 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_happyeye + rotate: false + xy: 262, 96 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 325, 176 + size: 34, 61 + orig: 34, 61 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: true + xy: 310, 136 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 357, 138 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 385, 135 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 349, 98 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 349, 60 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth5 + rotate: true + xy: 377, 97 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 377, 59 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 405, 96 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 405, 68 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +mouth_sad + rotate: true + xy: 381, 21 + size: 36, 26 + orig: 36, 26 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 2, 2 + size: 38, 49 + orig: 38, 49 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 302, 96 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 413, 124 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 460, 117 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye4 + rotate: true + xy: 262, 56 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 309, 49 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 261, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_happyeye + rotate: false + xy: 301, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 185, 49 + size: 40, 65 + orig: 40, 65 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 341, 2 + size: 38, 45 + orig: 38, 45 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/215101.json b/m78-all/m78-fe/public/images/character/215101.json new file mode 100644 index 000000000..1255bf0a4 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/215101.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"lAg2lJcjMpeZxSjVt8vmV3gO2hQ","spine":"3.4.02","width":181.87,"height":266.6,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":42.4,"rotation":89.29,"x":1.36,"y":44.14},{"name":"eff_exclamation","parent":"root","length":11.7,"rotation":57.79,"x":69.63,"y":235.63},{"name":"eff_panic","parent":"root","length":14.75,"rotation":24.96,"x":82.9,"y":205.33},{"name":"eff_sad1","parent":"root","length":7.36,"rotation":-87.74,"x":19.6,"y":128.97},{"name":"eff_sad2","parent":"root","length":4.47,"rotation":-90,"x":66.36,"y":104.4},{"name":"eff_star1","parent":"root","length":8.96,"rotation":-3.79,"x":44.02,"y":46.02},{"name":"eff_star2","parent":"root","length":12.37,"rotation":158.06,"x":-59.83,"y":81.02},{"name":"eff_star3","parent":"root","length":8.95,"rotation":-154.78,"x":-47.81,"y":45.58},{"name":"head","parent":"body","length":132.59,"x":46.13,"y":1.52},{"name":"eyebrow","parent":"head","length":6.02,"rotation":1.8,"x":72.89,"y":-7.58},{"name":"hair1","parent":"head","length":38.65,"rotation":143.39,"x":124.23,"y":-15.94},{"name":"hair2","parent":"head","length":34.58,"rotation":173.72,"x":122.54,"y":-46.34},{"name":"l_arm1","parent":"body","length":24.14,"rotation":-146.51,"x":38.04,"y":-21.39},{"name":"l_arm2","parent":"l_arm1","length":32.55,"rotation":125.08,"x":23.1,"y":-7.33},{"name":"l_leg","parent":"root","length":42.09,"rotation":-88.64,"x":11.52,"y":44.11},{"name":"mouth","parent":"head","length":3.32,"rotation":-177.74,"x":28.42,"y":-10.13},{"name":"r_arm","parent":"body","length":32.2,"rotation":144.08,"x":43.29,"y":26.2},{"name":"r_leg","parent":"root","length":44.59,"rotation":-90.9,"x":-11.52,"y":49.31}],"slots":[{"name":"png/l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"png/l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"png/r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"+nell","bone":"root"},{"name":"png/body","bone":"body","attachment":"body"},{"name":"png/head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouth","attachment":"mouth1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow1"},{"name":"png/f_hair2","bone":"hair2","attachment":"f_hair2"},{"name":"png/f_hair1","bone":"hair1","attachment":"f_hair1"},{"name":"r_arm1","bone":"r_arm","attachment":"r_arm1"},{"name":"png/l_arm2","bone":"l_arm2","attachment":"l_arm2"}],"skins":{"default":{"eyebrow":{"eyebrow1":{"x":3.53,"y":-0.08,"rotation":-91.35,"width":97,"height":20},"eyebrow2":{"rotation":-91.35,"width":97,"height":20},"eyebrow3":{"rotation":-91.1,"width":97,"height":20},"eyebrow4":{"rotation":-91.1,"width":97,"height":20}},"l_eye":{"l_eye1":{"x":52.91,"y":-40.67,"rotation":-89.54,"width":38,"height":45},"l_eye2":{"x":52.9,"y":-40.67,"rotation":-89.54,"width":38,"height":45},"l_eye3":{"x":52.9,"y":-40.67,"rotation":-89.54,"width":38,"height":45},"l_eye4":{"x":52.9,"y":-40.67,"rotation":-89.54,"width":38,"height":45},"l_eye5":{"x":52.9,"y":-40.67,"rotation":-89.54,"width":38,"height":45},"l_eye6":{"x":52.9,"y":-40.67,"rotation":-89.09,"width":38,"height":45},"l_happyeye":{"x":52.9,"y":-40.67,"rotation":-89.54,"width":38,"height":45},"l_sadeye1":{"x":52.9,"y":-40.67,"rotation":-89.54,"width":38,"height":45}},"mouth":{"mouth1":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth2":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth3":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth4":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth5":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth6":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth7":{"x":1.52,"y":0.39,"rotation":87.74,"width":36,"height":26},"mouth8":{"x":3.24,"y":-1.51,"rotation":88.64,"width":36,"height":26},"mouth_sad":{"x":-0.35,"y":-3.8,"rotation":87.74,"width":36,"height":26}},"png/body":{"body":{"x":29.93,"y":2.37,"rotation":-89.09,"width":76,"height":81}},"png/f_hair1":{"f_hair1":{"x":31.79,"y":7.99,"rotation":127.05,"width":80,"height":75}},"png/f_hair2":{"f_hair2":{"x":25.69,"y":-4.54,"rotation":96.72,"width":60,"height":71}},"png/head":{"head":{"x":75.36,"y":1.21,"rotation":-89.54,"width":181,"height":201}},"png/l_arm1":{"l_arm1":{"x":10.15,"y":2.84,"rotation":57.42,"width":30,"height":37}},"png/l_arm2":{"l_arm2":{"x":24.55,"y":-4.29,"rotation":-67.66,"width":65,"height":50}},"png/l_leg":{"l_leg":{"x":13.66,"y":0.5,"rotation":88.64,"width":34,"height":61}},"png/r_leg":{"r_leg":{"x":16.35,"y":0.26,"rotation":90.9,"width":40,"height":65}},"r_arm1":{"r_arm1":{"x":17.71,"y":6.53,"rotation":126.82,"width":38,"height":49}},"r_eye":{"r_eye1":{"x":49.47,"y":18.97,"rotation":-89.54,"width":38,"height":45},"r_eye2":{"x":49.47,"y":18.97,"rotation":-89.54,"width":38,"height":45},"r_eye3":{"x":49.47,"y":18.97,"rotation":-89.54,"width":38,"height":45},"r_eye4":{"x":49.47,"y":19.03,"rotation":-89.54,"width":38,"height":45},"r_eye5":{"x":49.47,"y":19.03,"rotation":-89.54,"width":38,"height":45},"r_eye6":{"x":49.47,"y":18.97,"rotation":-89.09,"width":38,"height":45},"r_happyeye":{"x":49.47,"y":18.97,"rotation":-89.54,"width":38,"height":45},"r_sadeye1":{"x":49.47,"y":18.97,"rotation":-89.54,"width":38,"height":45}}}},"animations":{"action":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye1"},{"time":0.2,"name":"l_eye2"},{"time":0.2666,"name":"l_eye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth4"},{"time":0.3333,"name":"mouth1"},{"time":0.4333,"name":"mouth2"},{"time":0.4666,"name":"mouth3"},{"time":0.5,"name":"mouth6"},{"time":0.6666,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye1"},{"time":0.2,"name":"r_eye2"},{"time":0.2666,"name":"r_eye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-1.59},{"time":0.3333,"angle":0},{"time":0.5,"angle":-1.21},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-1.82,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.36},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.99,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.99,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":0.59},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.97},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.11,"y":-0.1},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.44,"y":-0.36},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":2.41},{"time":0.3333,"angle":0},{"time":0.5,"angle":0.36},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.017,"y":1.017},{"time":0.6666,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":83.88},{"time":0.3333,"angle":62.03},{"time":0.5,"angle":87.36},{"time":0.6666,"angle":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":34.52},{"time":0.3333,"angle":-303.91},{"time":0.5,"angle":34.52},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":9.2,"y":-6.94},{"time":0.3333,"x":13.65,"y":10.55},{"time":0.5,"x":9.2,"y":-6.94},{"time":0.6666,"x":0,"y":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":2.81},{"time":0.3333,"angle":0},{"time":0.5,"angle":-2.96},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.54,"y":0.11,"curve":"stepped"},{"time":0.1666,"x":3.54,"y":0.11},{"time":0.2333,"x":0,"y":0},{"time":0.2666,"x":-3.56,"y":-0.01,"curve":"stepped"},{"time":0.6333,"x":-3.56,"y":-0.01},{"time":0.6666,"x":3.54,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.03,"y":-2.35},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.03,"y":-2.35},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.06,"y":-2.84},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.06,"y":-2.84},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0}]}}},"happy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"},{"time":1,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":1,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth6"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":1,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":4.75},{"time":0.3333,"angle":-7.4},{"time":0.5,"angle":0},{"time":0.6666,"angle":-9.32},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0333,"x":0,"y":0},{"time":0.1666,"x":-3.86,"y":7.4},{"time":0.3333,"x":-0.85,"y":-1.75},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":-1.68,"y":13.46},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.0333,"x":1,"y":1},{"time":0.1666,"x":1.057,"y":1.058},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1},{"time":0.6666,"x":1.053,"y":1.053},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":-18.99},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":-34.26},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0333,"x":0,"y":0},{"time":0.1666,"x":0,"y":7.03},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":0,"y":11.85},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":42.54},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":24.05},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0333,"x":0,"y":0},{"time":0.1666,"x":-4.37,"y":9.97},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":-3.91,"y":14},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":11.69},{"time":0.3333,"angle":3.6},{"time":0.5,"angle":0},{"time":0.6666,"angle":-8.82},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0333,"x":0,"y":0},{"time":0.1666,"x":-0.07,"y":0.7},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":-1.02,"y":-2.34},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":-12.7},{"time":0.5,"angle":0},{"time":0.6666,"angle":-8.7},{"time":1,"angle":0}]},"hair2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":-353.5},{"time":0.5,"angle":0},{"time":0.6666,"angle":-349.64},{"time":1,"angle":0}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0,"y":1.37},{"time":0.3333,"x":0,"y":0},{"time":0.6666,"x":0,"y":2.67},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0333,"angle":0},{"time":0.1666,"angle":32.7},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":28.87},{"time":0.8333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.0333,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"joy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_happyeye"},{"time":0.3333,"name":"l_eye1"},{"time":0.6666,"name":"l_happyeye"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth6"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth6"},{"time":0.6666,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_happyeye"},{"time":0.3333,"name":"r_eye1"},{"time":0.6666,"name":"r_happyeye"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.9},{"time":0.3333,"angle":0},{"time":0.5,"angle":8.72},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-1.82,"y":-3.77},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.03,"y":-3.36},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.97,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.97,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-7.87},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.65},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.57,"y":-0.9},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":1.78,"y":2.06},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":6.79},{"time":0.3333,"angle":0},{"time":0.5,"angle":-9.15},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-9.63},{"time":0.3333,"angle":0},{"time":0.5,"angle":-9.63},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":57.77},{"time":0.3333,"angle":0},{"time":0.5,"angle":60.83},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-23.49},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.04,"y":-6.32},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-348.57},{"time":0.3333,"angle":0},{"time":0.5,"angle":-15.54},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-5.05,"y":0.18,"curve":"stepped"},{"time":0.3,"x":-5.05,"y":0.18},{"time":0.3333,"x":3.54,"y":0.11,"curve":"stepped"},{"time":0.6333,"x":3.54,"y":0.11},{"time":0.6666,"x":-5.05,"y":0.18}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-24.89},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-0.03,"y":-2.35},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-0.03,"y":-2.35},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":23.73},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0.06,"y":-2.85},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.06,"y":-2.84},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.95,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"sad":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-12.25},{"time":0.3333,"angle":-14.23},{"time":0.6666,"angle":-12.25},{"time":1,"angle":-10.05},{"time":1.3333,"angle":-12.25}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":0.991,"curve":[0.072,0.87,0.75,1]},{"time":0.3333,"x":1.028,"y":0.991,"curve":[0.072,0.87,0.75,1]},{"time":0.6666,"x":1,"y":0.991,"curve":[0.072,0.87,0.75,1]},{"time":1,"x":1.028,"y":0.991,"curve":[0.072,0.87,0.75,1]},{"time":1.3333,"x":1,"y":0.991}]},"head":{"rotate":[{"time":0,"angle":-14.16,"curve":[0.072,0.87,0.75,1]},{"time":0.3333,"angle":-15.72,"curve":[0.072,0.87,0.75,1]},{"time":0.6666,"angle":-14.16,"curve":[0.072,0.87,0.75,1]},{"time":1,"angle":-12.64,"curve":[0.072,0.87,0.75,1]},{"time":1.3333,"angle":-14.16}],"translate":[{"time":0,"x":-1.24,"y":-2.16,"curve":"stepped"},{"time":0.3333,"x":-1.24,"y":-2.16,"curve":"stepped"},{"time":0.6666,"x":-1.24,"y":-2.16,"curve":"stepped"},{"time":1,"x":-1.24,"y":-2.16,"curve":"stepped"},{"time":1.3333,"x":-1.24,"y":-2.16}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.42},{"time":0.6666,"angle":-16.31},{"time":1,"angle":-3.68},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-3.75,"y":-1.13}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.76},{"time":0.6666,"angle":0},{"time":1,"angle":-4.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.976,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1333,"x":0,"y":0},{"time":0.1666,"x":0.84,"y":0.03},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4666,"x":0,"y":0},{"time":0.5,"x":0.84,"y":0.03},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0},{"time":0.8333,"x":0.84,"y":0.03},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.1333,"x":0,"y":0},{"time":1.1666,"x":0.84,"y":0.03},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.64},{"time":0.6666,"angle":0},{"time":1,"angle":-1.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.012,"y":1.012},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.012,"y":1.012},{"time":1.3333,"x":1,"y":1}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.89},{"time":0.6666,"angle":0},{"time":1,"angle":-1.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":24.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"stand":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"},{"time":1.1666,"name":"l_eye2"},{"time":1.2,"name":"l_eye3"},{"time":1.2666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"},{"time":1.1666,"name":"r_eye2"},{"time":1.2,"name":"r_eye3"},{"time":1.2666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.9},{"time":0.6666,"angle":0},{"time":1,"angle":3.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.82,"y":-3.77},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-1.03,"y":-3.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.59},{"time":0.6666,"angle":0},{"time":1,"angle":-2.97},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.3,"y":-0.01},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.74,"y":-0.86},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.47},{"time":0.6666,"angle":0},{"time":1,"angle":-3.27},{"time":1.3333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.45},{"time":0.6666,"angle":0},{"time":1,"angle":-11.06},{"time":1.3333,"angle":0}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.21},{"time":0.6666,"angle":0},{"time":1,"angle":6.8},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-2.09,"y":1.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.1},{"time":0.6666,"angle":0},{"time":1,"angle":-9.73},{"time":1.3333,"angle":0}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.54,"y":0.11,"curve":"stepped"},{"time":0.6666,"x":3.54,"y":0.11},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.56,"y":-0.01},{"time":0.8,"x":3.54,"y":0.11,"curve":"stepped"},{"time":1.1333,"x":3.54,"y":0.11},{"time":1.1666,"x":0,"y":0},{"time":1.2,"x":-3.56,"y":-0.01},{"time":1.2666,"x":3.54,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.03,"y":-2.35},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.03,"y":-2.35},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.06,"y":-2.85},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.06,"y":-2.84},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"surprised":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.3333,"name":"mouth_sad"},{"time":0.5,"name":"mouth4"},{"time":0.5666,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":-5},{"time":0.3333,"angle":12.27},{"time":0.5,"angle":-5},{"time":0.5666,"angle":-7.19}],"translate":[{"time":0,"x":-1.82,"y":-3.77},{"time":0.3333,"x":-3.64,"y":3.48},{"time":0.5,"x":-1.82,"y":-3.77,"curve":"stepped"},{"time":0.5666,"x":-1.82,"y":-3.77}],"scale":[{"time":0,"x":0.988,"y":1.019,"curve":"stepped"},{"time":0.3333,"x":0.988,"y":1.019,"curve":"stepped"},{"time":0.5,"x":0.988,"y":1.019,"curve":"stepped"},{"time":0.5666,"x":0.988,"y":1.019}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.8},{"time":0.5,"angle":0},{"time":0.5666,"angle":-1.65}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.21,"y":0.87},{"time":0.5,"x":1.38,"y":-0.51},{"time":0.5666,"x":-1.22,"y":-0.81}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.47},{"time":0.5666,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.5666,"angle":0}]},"l_arm1":{"rotate":[{"time":0,"angle":-17.52}],"translate":[{"time":0,"x":10.74,"y":-7.35}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":45.17},{"time":0.3333,"angle":10.85},{"time":0.5,"angle":12.26},{"time":0.5666,"angle":45.17}],"translate":[{"time":0,"x":6.08,"y":0.18},{"time":0.3333,"x":-0.36,"y":6.39},{"time":0.5,"x":6.08,"y":0.18,"curve":"stepped"},{"time":0.5666,"x":6.08,"y":0.18}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-20.56},{"time":0.5666,"angle":0}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0},{"time":0.3333,"angle":-12.66},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.5666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5666,"x":0,"y":0}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0},{"time":0.3333,"angle":34.05},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.5666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.3333,"x":3.92,"y":1.96},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5666,"x":0,"y":0}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-1.25,"y":-0.76}],"scale":[{"time":0,"x":1,"y":1}]},"eff_exclamation":{"translate":[{"time":0,"x":-13.54,"y":-8.85}]},"root":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0},{"time":0.3333,"x":0,"y":10.49},{"time":0.5,"x":0,"y":3.09},{"time":0.5666,"x":0,"y":0}]}}},"talk":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye1"},{"time":0.7,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.8,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.4,"name":"mouth3"},{"time":0.5,"name":"mouth1"},{"time":0.5333,"name":"mouth2"},{"time":0.5666,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":0.7,"name":"mouth3"},{"time":0.7333,"name":"mouth2"},{"time":0.8,"name":"mouth1"},{"time":0.8333,"name":"mouth2"},{"time":0.8666,"name":"mouth1"},{"time":1.0666,"name":"mouth2"},{"time":1.1,"name":"mouth3"},{"time":1.1666,"name":"mouth2"},{"time":1.2,"name":"mouth1"},{"time":1.2666,"name":"mouth2"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye1"},{"time":0.7,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.8,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.77},{"time":0.6666,"angle":0},{"time":1,"angle":1.21},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.82,"y":-3.77},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-1.03,"y":-3.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.59},{"time":0.6666,"angle":0},{"time":1,"angle":-0.86},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.56,"y":-0.17},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.21,"y":0.18},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.17},{"time":0.6666,"angle":0},{"time":1,"angle":-2.47},{"time":1.3333,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.14},{"time":0.6666,"angle":0},{"time":1,"angle":-4.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.21},{"time":0.6666,"angle":0},{"time":1,"angle":29.91},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":1,"x":5.86,"y":1.22},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.59},{"time":0.6666,"angle":0},{"time":1,"angle":-10.88},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"eyebrow":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":3.54,"y":0.11,"curve":"stepped"},{"time":0.6666,"x":3.54,"y":0.11},{"time":0.7,"x":0,"y":0},{"time":0.7333,"x":-3.56,"y":-0.01},{"time":0.8,"x":3.54,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.03,"y":-2.35},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.03,"y":-2.35},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.06,"y":-2.85},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.06,"y":-2.84},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.95,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.95,"y":1},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"uneasy":{"slots":{"eyebrow":{"attachment":[{"time":0,"name":"eyebrow2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"},{"time":0.3,"name":"l_eye5"},{"time":0.9,"name":"l_eye4"},{"time":1.1666,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.3,"name":"mouth7"},{"time":0.6,"name":"mouth5"},{"time":0.9,"name":"mouth7"},{"time":1.1666,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"},{"time":0.3,"name":"r_eye5"},{"time":0.9,"name":"r_eye4"},{"time":1.1666,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":2.71},{"time":0.6,"angle":0},{"time":0.9,"angle":-6.72},{"time":1.1666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":-0.68,"y":-0.9},{"time":0.6,"x":0,"y":0},{"time":0.9,"x":-1.03,"y":-2.79},{"time":1.1666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3,"x":0.97,"y":1},{"time":0.6,"x":1,"y":1},{"time":0.9,"x":0.97,"y":1},{"time":1.1666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":0.59},{"time":0.6,"angle":0},{"time":0.9,"angle":-0.35},{"time":1.1666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":0.83,"y":0.19},{"time":0.6,"x":0,"y":0},{"time":0.9,"x":0.96,"y":-0.21},{"time":1.1666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-3.54},{"time":0.6,"angle":0},{"time":0.9,"angle":-7.43},{"time":1.1666,"angle":0}]},"r_arm":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-0.55},{"time":0.6,"angle":0},{"time":0.9,"angle":-1.75},{"time":1.1666,"angle":0}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":24.17},{"time":0.6,"angle":0},{"time":0.9,"angle":17.48},{"time":1.1666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-21.15},{"time":0.6,"angle":0},{"time":0.9,"angle":-3.65},{"time":1.1666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":-3.26,"y":-3.66},{"time":0.6,"x":0,"y":0},{"time":0.9,"x":-3.26,"y":-3.66},{"time":1.1666,"x":0,"y":0}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3,"angle":-4.19},{"time":0.6,"angle":0},{"time":0.9,"angle":-10.38},{"time":1.1666,"angle":0}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":-0.03,"y":-2.35},{"time":0.6,"x":0,"y":0},{"time":0.9,"x":-0.03,"y":-2.35},{"time":1.1666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3,"x":0.95,"y":1},{"time":0.6,"x":1,"y":1},{"time":0.9,"x":0.95,"y":1},{"time":1.1666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3,"x":0.06,"y":-2.85},{"time":0.6,"x":0,"y":0},{"time":0.9,"x":0.06,"y":-2.84},{"time":1.1666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3,"x":0.95,"y":1},{"time":0.6,"x":1,"y":1},{"time":0.9,"x":0.95,"y":1},{"time":1.1666,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/215101.png b/m78-all/m78-fe/public/images/character/215101.png new file mode 100644 index 000000000..8204f1f24 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/215101.png differ diff --git a/m78-all/m78-fe/public/images/character/215201.atlas b/m78-all/m78-fe/public/images/character/215201.atlas new file mode 100644 index 000000000..54a716b31 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/215201.atlas @@ -0,0 +1,433 @@ + +215201.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 650, 195 + size: 59, 68 + orig: 59, 68 + offset: 0, 0 + index: -1 +bow_tie + rotate: false + xy: 606, 187 + size: 35, 16 + orig: 35, 16 + offset: 0, 0 + index: -1 +cloak1 + rotate: true + xy: 560, 205 + size: 49, 88 + orig: 49, 88 + offset: 0, 0 + index: -1 +cloak2 + rotate: false + xy: 983, 223 + size: 39, 31 + orig: 39, 31 + offset: 0, 0 + index: -1 +cloak3 + rotate: true + xy: 858, 227 + size: 27, 63 + orig: 27, 63 + offset: 0, 0 + index: -1 +cloak4 + rotate: false + xy: 315, 174 + size: 79, 80 + orig: 79, 80 + offset: 0, 0 + index: -1 +collar1 + rotate: false + xy: 2, 30 + size: 126, 56 + orig: 126, 56 + offset: 0, 0 + index: -1 +collar2 + rotate: false + xy: 315, 143 + size: 67, 29 + orig: 67, 29 + offset: 0, 0 + index: -1 +cover_hair + rotate: false + xy: 184, 135 + size: 129, 119 + orig: 129, 119 + offset: 0, 0 + index: -1 +hair1 + rotate: false + xy: 396, 175 + size: 77, 79 + orig: 77, 79 + offset: 0, 0 + index: -1 +hair2 + rotate: true + xy: 475, 194 + size: 60, 83 + orig: 60, 83 + offset: 0, 0 + index: -1 +hair3 + rotate: true + xy: 184, 101 + size: 32, 90 + orig: 32, 90 + offset: 0, 0 + index: -1 +hair4 + rotate: true + xy: 276, 100 + size: 33, 56 + orig: 33, 56 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 88 + size: 180, 166 + orig: 180, 166 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 130, 2 + size: 29, 39 + orig: 29, 39 + offset: 0, 0 + index: -1 +l_arm2 + rotate: false + xy: 534, 155 + size: 33, 37 + orig: 33, 37 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 204, 47 + size: 27, 36 + orig: 27, 36 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 204, 47 + size: 27, 36 + orig: 27, 36 + offset: 0, 0 + index: -1 +l_eye_uneasy + rotate: false + xy: 204, 47 + size: 27, 36 + orig: 27, 36 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 171, 2 + size: 29, 31 + orig: 29, 31 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 829, 199 + size: 27, 14 + orig: 27, 14 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: true + xy: 204, 2 + size: 29, 12 + orig: 29, 12 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 602, 172 + size: 32, 13 + orig: 32, 13 + offset: 0, 0 + index: -1 +l_eyeball1 + rotate: true + xy: 956, 206 + size: 16, 21 + orig: 16, 21 + offset: 0, 0 + index: -1 +l_eyeball2 + rotate: true + xy: 979, 205 + size: 16, 17 + orig: 16, 17 + offset: 0, 0 + index: -1 +l_eyeball_surprised + rotate: false + xy: 879, 192 + size: 15, 18 + orig: 15, 18 + offset: 0, 0 + index: -1 +l_eyeball_uneasy + rotate: true + xy: 998, 207 + size: 14, 18 + orig: 14, 18 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 602, 155 + size: 30, 15 + orig: 30, 15 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: false + xy: 923, 208 + size: 31, 14 + orig: 31, 14 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 765, 193 + size: 30, 15 + orig: 30, 15 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 797, 199 + size: 30, 14 + orig: 30, 14 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 475, 162 + size: 30, 57 + orig: 30, 57 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 46, 2 + size: 31, 6 + orig: 31, 6 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 209, 33 + size: 32, 12 + orig: 32, 12 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 233, 66 + size: 33, 19 + orig: 33, 19 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 93, 10 + size: 35, 18 + orig: 35, 18 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 243, 32 + size: 22, 13 + orig: 22, 13 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: true + xy: 218, 3 + size: 28, 17 + orig: 28, 17 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: true + xy: 376, 106 + size: 35, 7 + orig: 35, 7 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: false + xy: 172, 33 + size: 35, 7 + orig: 35, 7 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 172, 42 + size: 30, 41 + orig: 30, 41 + offset: 0, 0 + index: -1 +r_arm2 + rotate: false + xy: 720, 210 + size: 71, 44 + orig: 71, 44 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 334, 105 + size: 40, 36 + orig: 40, 36 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 334, 105 + size: 40, 36 + orig: 40, 36 + offset: 0, 0 + index: -1 +r_eye_uneasy + rotate: false + xy: 334, 105 + size: 40, 36 + orig: 40, 36 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 569, 153 + size: 39, 31 + orig: 39, 31 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 233, 47 + size: 35, 17 + orig: 35, 17 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: false + xy: 858, 212 + size: 36, 13 + orig: 36, 13 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: false + xy: 229, 87 + size: 38, 12 + orig: 38, 12 + offset: 0, 0 + index: -1 +r_eyeball1 + rotate: false + xy: 237, 9 + size: 21, 21 + orig: 21, 21 + offset: 0, 0 + index: -1 +r_eyeball2 + rotate: false + xy: 896, 209 + size: 25, 16 + orig: 25, 16 + offset: 0, 0 + index: -1 +r_eyeball_surprised + rotate: false + xy: 858, 191 + size: 19, 19 + orig: 19, 19 + offset: 0, 0 + index: -1 +r_eyeball_uneasy + rotate: true + xy: 896, 189 + size: 18, 19 + orig: 18, 19 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 560, 194 + size: 44, 9 + orig: 44, 9 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: false + xy: 46, 10 + size: 45, 18 + orig: 45, 18 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: false + xy: 720, 189 + size: 43, 19 + orig: 43, 19 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 184, 85 + size: 43, 14 + orig: 43, 14 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 793, 215 + size: 39, 63 + orig: 39, 63 + offset: 0, 0 + index: -1 +top_hair1 + rotate: false + xy: 2, 2 + size: 42, 26 + orig: 42, 26 + offset: 0, 0 + index: -1 +top_hair2 + rotate: true + xy: 130, 33 + size: 53, 40 + orig: 53, 40 + offset: 0, 0 + index: -1 +wine_glass + rotate: true + xy: 923, 224 + size: 30, 58 + orig: 30, 58 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/215201.json b/m78-all/m78-fe/public/images/character/215201.json new file mode 100644 index 000000000..90299f529 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/215201.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"Tgq6jeRHjYVI7oHw1Oemzw3pqac","spine":"3.5.25","width":180.08,"height":261.94,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":59.89,"rotation":-89.7,"x":3.14,"y":97.09},{"name":"bow_tie","parent":"body","length":9.48,"rotation":85.61,"x":6,"y":-46.61},{"name":"cloak1","parent":"body","length":85.71,"rotation":-25.25,"x":-1.97,"y":-19.88},{"name":"cloak2","parent":"body","length":28.52,"rotation":53.37,"x":0.57,"y":13.56},{"name":"cloak3","parent":"body","length":44.27,"rotation":-10.41,"x":30.43,"y":37.39},{"name":"cloak4","parent":"body","length":21.63,"rotation":0.6,"x":8.3,"y":5.41},{"name":"collar1","parent":"body","length":56.23,"rotation":175.57,"x":7.29,"y":4.74},{"name":"collar2","parent":"body","length":54.83,"rotation":-104.94,"x":6.9,"y":-4.72},{"name":"head","parent":"body","length":149.02,"rotation":-179.39,"x":-1.86,"y":1.07},{"name":"cover_hair","parent":"head","length":55.76,"rotation":-172.35,"x":153.71,"y":44.01},{"name":"eff_exclamation","parent":"root","length":27.44,"rotation":29.05,"x":85.9,"y":241.35},{"name":"eff_panic","parent":"root","length":22.92,"x":101.89,"y":172.6},{"name":"eff_sad1","parent":"root","length":16.94,"rotation":-89.68,"x":-19.18,"y":125.78},{"name":"eff_sad2","parent":"root","length":18.23,"rotation":-89.09,"x":37.02,"y":126.74},{"name":"eff_star1","parent":"root","length":21.56,"rotation":8.53,"x":77.37,"y":75.06},{"name":"eff_star2","parent":"root","length":23.94,"rotation":168.44,"x":-52.15,"y":70.79},{"name":"eff_star3","parent":"root","length":19.4,"rotation":-15.95,"x":69.37,"y":29.75},{"name":"hair1","parent":"head","length":89.38,"rotation":-137.13,"x":123.72,"y":23.72},{"name":"hair2","parent":"head","length":77.33,"rotation":-159.45,"x":125.35,"y":40.64},{"name":"hair3","parent":"head","length":84.25,"rotation":176.1,"x":112.31,"y":49.92},{"name":"hair4","parent":"head","length":45.22,"rotation":-156.64,"x":101.44,"y":-38.44},{"name":"l_arm1","parent":"body","length":31.79,"rotation":21.71,"x":4.47,"y":14.4},{"name":"l_arm2","parent":"l_arm1","length":32.49,"rotation":45.88,"x":24.56,"y":-2.83},{"name":"l_eye","parent":"head","length":13.14,"rotation":161.12,"x":54.15,"y":-37.36},{"name":"l_eyeball","parent":"head","length":9.56,"rotation":7.22,"x":23.81,"y":-32.82},{"name":"l_eyebrow","parent":"head","length":10.78,"rotation":-58.71,"x":59.48,"y":-21.22},{"name":"l_leg","parent":"root","length":53.94,"rotation":-89,"x":11.92,"y":55.39},{"name":"mouth","parent":"head","length":8.61,"rotation":24.65,"x":5.15,"y":-15.96},{"name":"r_arm1","parent":"body","length":36.99,"rotation":-20.06,"x":3.66,"y":-20.4},{"name":"r_arm2","parent":"r_arm1","length":37.56,"rotation":131.83,"x":38.81,"y":-1.38},{"name":"r_eye","parent":"head","length":15.47,"rotation":-149.3,"x":52.65,"y":38.36},{"name":"r_eyeball","parent":"head","length":11.57,"rotation":-7.62,"x":22.41,"y":28.03},{"name":"r_eyebrow","parent":"head","length":12.21,"rotation":74.67,"x":60.25,"y":6.48},{"name":"r_leg","parent":"root","length":53.62,"rotation":-90.67,"x":-11.59,"y":54.44},{"name":"top_hair1","parent":"head","length":28.24,"rotation":68.05,"x":138.2,"y":42.07},{"name":"top_hair2","parent":"head","length":31.74,"rotation":-12.58,"x":128.67,"y":37.83},{"name":"wine_glass","parent":"l_arm2","length":31.37,"rotation":113.83,"x":28.7,"y":-8.99}],"slots":[{"name":"cloak4","bone":"cloak4","attachment":"cloak4"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"collar1","bone":"collar1","attachment":"collar1"},{"name":"cloak3","bone":"cloak3","attachment":"cloak3"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"body","bone":"body","attachment":"body"},{"name":"top_hair2","bone":"top_hair2","attachment":"top_hair2"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"top_hair1","bone":"top_hair1","attachment":"top_hair1"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"cloak2","bone":"cloak2","attachment":"cloak2"},{"name":"cloak1","bone":"cloak1","attachment":"cloak1"},{"name":"collar2","bone":"collar2","attachment":"collar2"},{"name":"bow_tie","bone":"bow_tie","attachment":"bow_tie"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy"},{"name":"l_eyeball1","bone":"l_eyeball","attachment":"l_eyeball_uneasy"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy"},{"name":"r_eyeball1","bone":"r_eyeball","attachment":"r_eyeball_uneasy"},{"name":"hair4","bone":"hair4","attachment":"hair4"},{"name":"hair3","bone":"hair3","attachment":"hair3"},{"name":"hair2","bone":"hair2","attachment":"hair2"},{"name":"hair1","bone":"hair1","attachment":"hair1"},{"name":"wine_glass","bone":"wine_glass","attachment":"wine_glass"},{"name":"cover_hair","bone":"cover_hair","attachment":"cover_hair"}],"skins":{"default":{"body":{"body":{"x":28.79,"y":-3.34,"rotation":89.7,"width":59,"height":68}},"bow_tie":{"bow_tie":{"x":45.99,"y":3.51,"rotation":4.09,"width":35,"height":16}},"cloak1":{"cloak1":{"x":45.01,"y":5.58,"rotation":114.95,"width":49,"height":88}},"cloak2":{"cloak2":{"x":18.14,"y":-2.86,"rotation":36.33,"width":39,"height":31}},"cloak3":{"cloak3":{"x":27.19,"y":-2.19,"rotation":100.11,"width":27,"height":63}},"cloak4":{"cloak4":{"x":29.48,"y":-3.04,"rotation":89.1,"width":79,"height":80}},"collar1":{"collar1":{"x":23.58,"y":11.29,"rotation":-85.87,"width":126,"height":56}},"collar2":{"collar2":{"x":30.96,"y":-4.52,"rotation":-165.36,"width":67,"height":29}},"cover_hair":{"cover_hair":{"x":51.78,"y":3.57,"rotation":81.44,"width":129,"height":119}},"hair1":{"hair1":{"x":48.08,"y":-1.45,"rotation":46.23,"width":77,"height":79}},"hair2":{"hair2":{"x":36.41,"y":2.49,"rotation":68.54,"width":60,"height":83}},"hair3":{"hair3":{"x":41.87,"y":-2.24,"rotation":92.99,"width":32,"height":90}},"hair4":{"hair4":{"x":27.19,"y":-1.98,"rotation":65.73,"width":33,"height":56}},"head":{"head":{"x":79.09,"y":8.38,"rotation":-90.91,"width":180,"height":166}},"l_arm1":{"l_arm1":{"x":13.09,"y":-2.27,"rotation":67.99,"width":29,"height":39}},"l_arm2":{"l_arm2":{"x":11.51,"y":3.98,"rotation":22.11,"width":33,"height":37}},"l_eye1":{"l_eye1":{"x":13.21,"y":1.22,"rotation":107.97,"width":27,"height":36},"l_eye2":{"x":12.81,"y":0.35,"rotation":107.97,"width":29,"height":31},"l_eye3":{"x":15.27,"y":1.89,"rotation":107.97,"width":27,"height":14},"l_eye_happy":{"x":18.24,"y":2.29,"rotation":107.97,"width":29,"height":12},"l_eye_sad":{"x":16.01,"y":-1.28,"rotation":107.97,"width":32,"height":13},"l_eye_surprised":{"x":13.21,"y":1.22,"rotation":107.97,"width":27,"height":36},"l_eye_uneasy":{"x":13.21,"y":1.22,"rotation":107.97,"width":27,"height":36}},"l_eyeball1":{"l_eyeball1":{"x":14.07,"y":-0.11,"rotation":-98.13,"width":16,"height":21},"l_eyeball2":{"x":12.01,"y":-0.8,"rotation":-98.13,"width":16,"height":17},"l_eyeball_surprised":{"x":14.02,"y":-0.43,"rotation":-98.13,"width":15,"height":18},"l_eyeball_uneasy":{"x":14.07,"y":-0.11,"rotation":-98.13,"width":14,"height":18}},"l_eyebrow":{"l_eyebrow":{"x":10.23,"y":-7.79,"rotation":-32.2,"width":30,"height":15},"l_eyebrow_sad":{"x":10.57,"y":-7.24,"rotation":-32.2,"width":31,"height":14},"l_eyebrow_surprised":{"x":9.88,"y":-8.33,"rotation":-32.2,"width":30,"height":15},"l_eyebrow_uneasy":{"x":10.94,"y":-7.86,"rotation":-32.2,"width":30,"height":14}},"l_leg":{"l_leg":{"x":27.9,"y":-1.85,"rotation":89,"width":30,"height":57}},"mouth1":{"mouth1":{"x":13.46,"y":8,"rotation":-115.56,"width":31,"height":6},"mouth2":{"x":15.93,"y":6.81,"rotation":-115.56,"width":32,"height":12},"mouth3":{"x":17.5,"y":6.06,"rotation":-115.56,"width":33,"height":19},"mouth_happy":{"x":17.38,"y":6.01,"rotation":-115.56,"width":35,"height":18},"mouth_sad":{"x":13.46,"y":8,"rotation":-115.56,"width":22,"height":13},"mouth_surprised":{"x":13.18,"y":7.41,"rotation":-115.56,"width":28,"height":17},"mouth_uneasy":{"x":13.46,"y":8,"rotation":-115.56,"width":35,"height":7},"mouth_uneasy1":{"x":13.46,"y":8,"rotation":-115.56,"width":35,"height":7}},"r_arm1":{"r_arm1":{"x":12.71,"y":1.14,"rotation":109.76,"width":30,"height":41}},"r_arm2":{"r_arm2":{"x":6.24,"y":1.72,"rotation":-22.07,"width":71,"height":44}},"r_eye1":{"r_eye1":{"x":15.77,"y":6.57,"rotation":58.39,"width":40,"height":36},"r_eye2":{"x":16.14,"y":6.34,"rotation":58.39,"width":39,"height":31},"r_eye3":{"x":17.84,"y":5.29,"rotation":58.39,"width":35,"height":17},"r_eye_happy":{"x":21.56,"y":3.64,"rotation":58.39,"width":36,"height":13},"r_eye_sad":{"x":20.83,"y":3.45,"rotation":58.39,"width":38,"height":12},"r_eye_surprised":{"x":15.77,"y":6.57,"rotation":58.39,"width":40,"height":36},"r_eye_uneasy":{"x":15.77,"y":6.57,"rotation":58.39,"width":40,"height":36}},"r_eyeball1":{"r_eyeball1":{"x":14.49,"y":-0.85,"rotation":-83.29,"width":21,"height":21},"r_eyeball2":{"x":14.49,"y":-0.85,"rotation":-83.29,"width":25,"height":16},"r_eyeball_surprised":{"x":14.49,"y":-0.85,"rotation":-83.29,"width":19,"height":19},"r_eyeball_uneasy":{"x":14.49,"y":-0.85,"rotation":-83.29,"width":18,"height":19}},"r_eyebrow":{"r_eyebrow":{"x":14.32,"y":9.11,"rotation":-165.58,"width":44,"height":9},"r_eyebrow_sad":{"x":15.29,"y":5.36,"rotation":-165.58,"width":45,"height":18},"r_eyebrow_surprised":{"x":14.32,"y":9.11,"rotation":-165.58,"width":43,"height":19},"r_eyebrow_uneasy":{"x":14.64,"y":9.19,"rotation":-165.58,"width":43,"height":14}},"r_leg":{"r_leg":{"x":23.98,"y":0.94,"rotation":90.67,"width":39,"height":63}},"top_hair1":{"top_hair1":{"x":17.99,"y":4.9,"rotation":-158.96,"width":42,"height":26}},"top_hair2":{"top_hair2":{"x":16.95,"y":-16.31,"rotation":-78.33,"width":53,"height":40}},"wine_glass":{"wine_glass":{"x":22.96,"y":0.14,"rotation":-91.72,"width":30,"height":58}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.0667,"name":"l_eye2"},{"time":0.1333,"name":"l_eye3"},{"time":0.2,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball1"},{"time":0.0667,"name":"l_eyeball2"},{"time":0.1333,"name":null},{"time":0.2,"name":"l_eyeball1"},{"time":1,"name":"l_eyeball1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.0667,"name":"r_eye2"},{"time":0.1333,"name":"r_eye3"},{"time":0.2,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball1"},{"time":0.0667,"name":"r_eyeball2"},{"time":0.1333,"name":null},{"time":0.2,"name":"r_eyeball1"},{"time":1,"name":"r_eyeball1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.47},{"time":0.5,"angle":-1.74},{"time":0.6667,"angle":-4.47},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.22,"y":-5.08,"curve":"stepped"},{"time":0.5,"x":2.22,"y":-5.08,"curve":"stepped"},{"time":0.6667,"x":2.22,"y":-5.08},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-138.59},{"time":0.5,"angle":-135.86},{"time":0.6667,"angle":-138.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-14.08,"y":0.92,"curve":"stepped"},{"time":0.5,"x":-14.08,"y":0.92,"curve":"stepped"},{"time":0.6667,"x":-14.08,"y":0.92},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.15},{"time":0.6667,"angle":-1.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.15},{"time":0.6667,"angle":-1.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-36.5},{"time":0.5,"angle":-19.6},{"time":0.6667,"angle":-36.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1},{"time":0.3333,"x":1.066,"y":1.066,"curve":"stepped"},{"time":0.6667,"x":1.066,"y":1.066},{"time":1,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-1.47},{"time":0.3333,"angle":4.29},{"time":0.6667,"angle":6.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-3.25},{"time":0.3333,"angle":3.29},{"time":0.6667,"angle":-354.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-29.45},{"time":0.5,"angle":-11.17},{"time":0.6667,"angle":-29.45},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.023,"y":1.023,"curve":"stepped"},{"time":0.6667,"x":1.023,"y":1.023},{"time":1,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-22.44},{"time":0.5,"angle":-11.95},{"time":0.6667,"angle":-22.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.24,"y":-2.26},{"time":0.5,"x":-0.27,"y":0.43},{"time":0.6667,"x":2.24,"y":-2.26},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bow_tie":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-3.52,"y":0.06},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-3.52,"y":0.06},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.79},{"time":0.5,"angle":-7.77},{"time":0.6667,"angle":-8.79},{"time":0.8333,"angle":-3.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.39},{"time":0.5,"angle":5.89},{"time":0.6667,"angle":10.39},{"time":0.8333,"angle":4.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.92},{"time":0.5,"angle":4.78},{"time":0.6667,"angle":-1.92},{"time":0.8333,"angle":1.76},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-8.58},{"time":0.5,"angle":-4.64},{"time":0.6667,"angle":-8.58},{"time":0.8333,"angle":-0.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.02},{"time":0.5,"angle":-3.29},{"time":0.6667,"angle":-6.02},{"time":0.8333,"angle":-1.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.43,"curve":"stepped"},{"time":0.5,"angle":-7.43,"curve":"stepped"},{"time":0.6667,"angle":-7.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.68},{"time":0.5,"angle":-9.36},{"time":0.6667,"angle":-10.68},{"time":0.8333,"angle":-4.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball1":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball1":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.32},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-3.92},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":3.27,"y":-1.96},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-16.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":20.07},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-10.09},{"time":0.3333,"angle":3.59},{"time":0.5,"angle":5.66},{"time":0.7667,"angle":0},{"time":1,"angle":-10.09}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-27.9},{"time":0.3333,"angle":-18.53},{"time":0.5,"angle":-18.62},{"time":0.7667,"angle":-24.27},{"time":1,"angle":-27.9}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":8.36},{"time":0.5,"angle":17.18,"curve":"stepped"},{"time":0.7667,"angle":17.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":24.3},{"time":0.5,"angle":17.18,"curve":"stepped"},{"time":0.7667,"angle":17.18},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-32.86},{"time":0.5,"angle":-36.27,"curve":"stepped"},{"time":0.7667,"angle":-36.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.18},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.6,"y":-0.03},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":0.91},{"time":0.5,"angle":8.19,"curve":"stepped"},{"time":0.7667,"angle":8.19},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.96,"y":0.01,"curve":"stepped"},{"time":0.7667,"x":-1.96,"y":0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":4.07},{"time":0.5,"angle":2.23},{"time":0.6333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":4.07},{"time":0.5,"angle":2.23},{"time":0.6333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":9.48},{"time":0.5,"angle":13,"curve":"stepped"},{"time":0.7667,"angle":13},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-2.64,"y":-0.53},{"time":0.5,"x":-2.61,"y":0.01,"curve":"stepped"},{"time":0.7667,"x":-2.61,"y":0.01},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-8.93,"y":4.99},{"time":0.5,"x":-13.67,"y":9.84},{"time":0.7667,"x":-14.97,"y":9.88},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bow_tie":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.7667,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.6},{"time":0.5,"angle":-4.15},{"time":0.8333,"angle":-5.26},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.4},{"time":0.5,"angle":0},{"time":0.6667,"angle":10.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.37},{"time":0.5,"angle":0},{"time":0.6667,"angle":-6.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":2.6},{"time":0.5,"angle":-2.79},{"time":0.8333,"angle":-3.91},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":1.02},{"time":0.5,"angle":-0.67},{"time":0.8333,"angle":-2.21},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":21.34},{"time":0.5,"angle":23.46,"curve":"stepped"},{"time":0.7667,"angle":23.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":3},{"time":0.5,"angle":-0.28},{"time":0.8333,"angle":-3.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyeball1":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.3667,"name":"mouth_happy"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyeball1":{"attachment":[{"time":0,"name":null},{"time":1,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":4.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.7,"y":-2.61},{"time":0.5,"x":-1.96,"y":0},{"time":0.7667,"x":2.22,"y":-2.61},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.39},{"time":0.6667,"angle":-11.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":12.47},{"time":0.6667,"angle":14.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":12.47},{"time":0.6667,"angle":14.1},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-32.51,"curve":"stepped"},{"time":0.6667,"angle":-32.51},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.01},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":-0.68},{"time":0.1667,"angle":0.57},{"time":0.5,"angle":3.96},{"time":0.7667,"angle":2.86},{"time":1,"angle":-0.68}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.86},{"time":0.5,"angle":4.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-2.86},{"time":0.5,"angle":-355.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":5.55},{"time":0.6667,"angle":6.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-6.87,"y":3.89,"curve":"stepped"},{"time":0.6667,"x":-6.87,"y":3.89},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"bow_tie":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.4,"x":2.1,"y":-0.17},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2667,"x":0,"y":0},{"time":0.4,"x":2.1,"y":-0.17},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.58},{"time":0.6667,"angle":3.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.26},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-5.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.58},{"time":0.6667,"angle":2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.58},{"time":0.6667,"angle":2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":13.83},{"time":0.6667,"angle":16.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":0.58},{"time":0.6667,"angle":2.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyeball1":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyeball1":{"attachment":[{"time":0,"name":null},{"time":1.3333,"name":null}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.025,"y":1.025},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":-57.01},{"time":0.3333,"angle":-60.46},{"time":0.6667,"angle":-66.05},{"time":1,"angle":-60.46},{"time":1.3333,"angle":-57.01}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":-32.13},{"time":0.6667,"angle":-24.38},{"time":1.3333,"angle":-32.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-17.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-11.08},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":346.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":1.96,"y":-0.01},{"time":0.8333,"x":2.77,"y":-0.01},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":5.21},{"time":0.6667,"angle":9.56},{"time":1.3333,"angle":5.21}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.69},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":-8.2},{"time":0.6667,"angle":-10.91},{"time":1.3333,"angle":-8.2}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":-4.91},{"time":0.6667,"angle":-0.85},{"time":1.3333,"angle":-4.91}],"translate":[{"time":0,"x":3.87,"y":-5.88},{"time":0.6667,"x":0.1,"y":-6.44},{"time":1.3333,"x":3.87,"y":-5.88}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.5,"x":-4.42,"y":1.41,"curve":"stepped"},{"time":0.6667,"x":-4.42,"y":1.41},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.5,"x":-4.42,"y":1.41,"curve":"stepped"},{"time":0.6667,"x":-4.42,"y":1.41},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":-17.48},{"time":0.6667,"angle":-17.14},{"time":1.3333,"angle":-17.48}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bow_tie":{"translate":[{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":0.68,"y":0},{"time":0.8333,"x":0,"y":0}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6667,"name":"l_eye2"},{"time":0.7333,"name":"l_eye3"},{"time":0.7667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball1"},{"time":0.6667,"name":"l_eyeball2"},{"time":0.7333,"name":null},{"time":0.7667,"name":"l_eyeball1"},{"time":1.3333,"name":"l_eyeball1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6667,"name":"r_eye2"},{"time":0.7333,"name":"r_eye3"},{"time":0.7667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball1"},{"time":0.6667,"name":"r_eyeball2"},{"time":0.7333,"name":null},{"time":0.7667,"name":"r_eyeball1"},{"time":1.3333,"name":"r_eyeball1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.54},{"time":0.6667,"angle":0},{"time":1,"angle":-6.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-2.42,"y":-4.23},{"time":0.6667,"x":0,"y":0},{"time":1,"x":6.04,"y":-3.02},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.08},{"time":0.6667,"angle":5.11},{"time":0.8333,"angle":5.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1.019},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.08},{"time":0.6667,"angle":5.11},{"time":0.8333,"angle":5.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.88},{"time":0.6667,"angle":0},{"time":1,"angle":358.55},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.71},{"time":0.6667,"angle":1.66},{"time":1,"angle":-1.76},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.03,"y":1.03},{"time":1.3333,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.5},{"time":0.6667,"angle":0},{"time":1,"angle":-3.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-355.37},{"time":0.6667,"angle":0},{"time":1,"angle":-3.57},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.42},{"time":0.6667,"angle":0},{"time":1,"angle":4.86},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-5.72,"y":1.9},{"time":0.6667,"x":-1.3,"y":1.97},{"time":1,"x":-0.85,"y":3.35},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1.019},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"bow_tie":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.7333,"x":-3.52,"y":-0.05},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6333,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6333,"x":0,"y":0},{"time":0.7333,"x":-3.52,"y":-0.05},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.41},{"time":0.6667,"angle":-2.05},{"time":1,"angle":1.43},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.66},{"time":0.6667,"angle":0},{"time":1,"angle":14.89},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.76},{"time":0.6667,"angle":0},{"time":1,"angle":-12.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.34},{"time":0.6667,"angle":-2.75},{"time":1,"angle":4.29},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.91},{"time":0.6667,"angle":-0.91},{"time":1,"angle":0.79},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":5.67},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.28},{"time":0.6667,"angle":-2.06},{"time":1,"angle":0.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"eff_sad2":{"rotate":[{"time":0,"angle":-12}],"translate":[{"time":0,"x":-14.92,"y":6.93}]},"eff_sad1":{"rotate":[{"time":0,"angle":9.38}],"translate":[{"time":0,"x":20.25,"y":4.26}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball_surprised"},{"time":1,"name":"l_eyeball_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball_surprised"},{"time":1,"name":"r_eyeball_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.59},{"time":0.5,"angle":6.75},{"time":0.7667,"angle":-3.78},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-3.12,"y":-0.91},{"time":0.5,"x":-5.86,"y":1.95},{"time":0.7667,"x":3.77,"y":0.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-10.75,"curve":"stepped"},{"time":0.6667,"angle":-10.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":8.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.98},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.029,"y":1.029},{"time":1,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":3.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.027,"y":1.027},{"time":1,"x":1,"y":1}]},"bow_tie":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":2.32,"y":2.02},{"time":1,"x":-0.61,"y":2.61}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.61,"y":2.61},{"time":0.5,"x":2.32,"y":2.02},{"time":1,"x":-0.61,"y":2.61}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":15.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-11.24},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-6.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy"},{"time":0.5,"name":"l_eye_uneasy"},{"time":1,"name":"l_eye_uneasy"}]},"l_eyeball1":{"attachment":[{"time":0,"name":"l_eyeball_uneasy"},{"time":0.5,"name":"l_eyeball_uneasy"},{"time":1,"name":"l_eyeball_uneasy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":0.5,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.2667,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy"},{"time":0.7667,"name":"mouth_uneasy1"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy"},{"time":0.5,"name":"r_eye_uneasy"},{"time":1,"name":"r_eye_uneasy"}]},"r_eyeball1":{"attachment":[{"time":0,"name":"r_eyeball_uneasy"},{"time":0.5,"name":"r_eyeball_uneasy"},{"time":1,"name":"r_eyeball_uneasy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":0.5,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.29},{"time":0.5,"angle":0},{"time":0.7667,"angle":2.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":3.25,"y":-3.25},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.95,"y":-4.55},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":11.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"wine_glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.48},{"time":0.5,"angle":0},{"time":0.7667,"angle":353.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":1.3,"y":0.07},{"time":0.5,"x":0.46,"y":0.01},{"time":0.7667,"x":1.04,"y":-0.1},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.18},{"time":0.5,"angle":0},{"time":0.7667,"angle":-2.68},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.028,"y":1.028},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.034,"y":1.034},{"time":1,"x":1,"y":1}]},"collar2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"collar1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak4":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak3":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.92},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.22},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.016,"y":1.016},{"time":0.5,"x":1,"y":1},{"time":0.7667,"x":1.036,"y":1.036},{"time":1,"x":1,"y":1}]},"bow_tie":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.65,"y":-0.03},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.3,"y":0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-1.41,"y":0},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-1.41,"y":0},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.08,"y":5.2},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyeball":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":0.04,"y":2.6},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-3.63},{"time":0.5,"angle":0},{"time":0.7667,"angle":1.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.2},{"time":0.5,"angle":1.84},{"time":0.8333,"angle":-1.37},{"time":1,"angle":0}],"translate":[{"time":0,"x":2.97,"y":-0.05,"curve":"stepped"},{"time":1,"x":2.97,"y":-0.05}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.91},{"time":0.5,"angle":-0.46},{"time":0.8333,"angle":7.4},{"time":1,"angle":0}],"translate":[{"time":0,"x":1.49,"y":-0.02,"curve":"stepped"},{"time":1,"x":1.49,"y":-0.02}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair4":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.85},{"time":0.5,"angle":0},{"time":0.7667,"angle":7.53},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair3":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-0.61},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.75},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"cloak2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-1.46},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.71},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/215201.png b/m78-all/m78-fe/public/images/character/215201.png new file mode 100644 index 000000000..0c8be7a3d Binary files /dev/null and b/m78-all/m78-fe/public/images/character/215201.png differ diff --git a/m78-all/m78-fe/public/images/character/215301.atlas b/m78-all/m78-fe/public/images/character/215301.atlas new file mode 100644 index 000000000..066a1d9b9 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/215301.atlas @@ -0,0 +1,384 @@ + +215301.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: true + xy: 585, 196 + size: 58, 73 + orig: 58, 73 + offset: 0, 0 + index: -1 +f_hair1 + rotate: false + xy: 320, 173 + size: 79, 81 + orig: 79, 81 + offset: 0, 0 + index: -1 +f_hair2 + rotate: true + xy: 498, 193 + size: 61, 85 + orig: 61, 85 + offset: 0, 0 + index: -1 +glass + rotate: false + xy: 187, 81 + size: 122, 50 + orig: 122, 50 + offset: 0, 0 + index: -1 +hair + rotate: false + xy: 187, 133 + size: 131, 121 + orig: 131, 121 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 53 + size: 183, 201 + orig: 183, 201 + offset: 0, 0 + index: -1 +l_arm1 + rotate: true + xy: 251, 7 + size: 30, 38 + orig: 30, 38 + offset: 0, 0 + index: -1 +l_arm2 + rotate: true + xy: 888, 181 + size: 44, 31 + orig: 44, 31 + offset: 0, 0 + index: -1 +l_coat + rotate: true + xy: 97, 16 + size: 35, 89 + orig: 35, 89 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 993, 209 + size: 29, 45 + orig: 29, 45 + offset: 0, 0 + index: -1 +l_eye2 + rotate: true + xy: 921, 191 + size: 30, 45 + orig: 30, 45 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 501, 175 + size: 29, 16 + orig: 29, 16 + offset: 0, 0 + index: -1 +l_eye_happy + rotate: false + xy: 532, 177 + size: 30, 14 + orig: 30, 14 + offset: 0, 0 + index: -1 +l_eye_sad + rotate: false + xy: 401, 175 + size: 88, 15 + orig: 88, 15 + offset: 0, 0 + index: -1 +l_eye_surprised + rotate: false + xy: 318, 41 + size: 29, 45 + orig: 29, 45 + offset: 0, 0 + index: -1 +l_eye_uneasy1 + rotate: false + xy: 349, 41 + size: 29, 45 + orig: 29, 45 + offset: 0, 0 + index: -1 +l_eye_uneasy2 + rotate: true + xy: 312, 10 + size: 29, 45 + orig: 29, 45 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: true + xy: 396, 52 + size: 33, 14 + orig: 33, 14 + offset: 0, 0 + index: -1 +l_eyebrow_sad + rotate: true + xy: 233, 2 + size: 33, 16 + orig: 33, 16 + offset: 0, 0 + index: -1 +l_eyebrow_surprised + rotate: false + xy: 457, 156 + size: 32, 17 + orig: 32, 17 + offset: 0, 0 + index: -1 +l_eyebrow_uneasy + rotate: false + xy: 449, 138 + size: 32, 16 + orig: 32, 16 + offset: 0, 0 + index: -1 +l_hair + rotate: true + xy: 660, 182 + size: 36, 58 + orig: 36, 58 + offset: 0, 0 + index: -1 +l_hand + rotate: true + xy: 401, 192 + size: 62, 95 + orig: 62, 95 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 932, 223 + size: 31, 59 + orig: 31, 59 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 491, 157 + size: 33, 8 + orig: 33, 8 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 409, 119 + size: 34, 14 + orig: 34, 14 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 375, 88 + size: 34, 21 + orig: 34, 21 + offset: 0, 0 + index: -1 +mouth_happy + rotate: false + xy: 409, 135 + size: 38, 20 + orig: 38, 20 + offset: 0, 0 + index: -1 +mouth_sad + rotate: false + xy: 501, 158 + size: 25, 15 + orig: 25, 15 + offset: 0, 0 + index: -1 +mouth_surprised + rotate: false + xy: 407, 98 + size: 30, 19 + orig: 30, 19 + offset: 0, 0 + index: -1 +mouth_uneasy + rotate: true + xy: 376, 2 + size: 37, 9 + orig: 37, 9 + offset: 0, 0 + index: -1 +mouth_uneasy1 + rotate: true + xy: 398, 87 + size: 35, 7 + orig: 35, 7 + offset: 0, 0 + index: -1 +r_arm1 + rotate: false + xy: 288, 41 + size: 28, 38 + orig: 28, 38 + offset: 0, 0 + index: -1 +r_arm2 + rotate: true + xy: 188, 2 + size: 33, 43 + orig: 33, 43 + offset: 0, 0 + index: -1 +r_coat + rotate: true + xy: 2, 9 + size: 42, 93 + orig: 42, 93 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 246, 39 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 720, 180 + size: 40, 38 + orig: 40, 38 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 291, 2 + size: 37, 19 + orig: 37, 19 + offset: 0, 0 + index: -1 +r_eye_happy + rotate: true + xy: 359, 2 + size: 37, 15 + orig: 37, 15 + offset: 0, 0 + index: -1 +r_eye_sad + rotate: true + xy: 380, 47 + size: 39, 14 + orig: 39, 14 + offset: 0, 0 + index: -1 +r_eye_surprised + rotate: false + xy: 762, 186 + size: 40, 39 + orig: 40, 39 + offset: 0, 0 + index: -1 +r_eye_uneasy1 + rotate: false + xy: 804, 186 + size: 40, 39 + orig: 40, 39 + offset: 0, 0 + index: -1 +r_eye_uneasy2 + rotate: false + xy: 846, 186 + size: 40, 39 + orig: 40, 39 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 921, 178 + size: 45, 11 + orig: 45, 11 + offset: 0, 0 + index: -1 +r_eyebrow_sad + rotate: true + xy: 387, 124 + size: 47, 20 + orig: 47, 20 + offset: 0, 0 + index: -1 +r_eyebrow_surprised + rotate: true + xy: 968, 177 + size: 44, 21 + orig: 44, 21 + offset: 0, 0 + index: -1 +r_eyebrow_uneasy + rotate: false + xy: 409, 157 + size: 46, 16 + orig: 46, 16 + offset: 0, 0 + index: -1 +r_hair + rotate: true + xy: 660, 220 + size: 34, 92 + orig: 34, 92 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 320, 130 + size: 41, 65 + orig: 41, 65 + offset: 0, 0 + index: -1 +scarf1 + rotate: false + xy: 846, 227 + size: 84, 27 + orig: 84, 27 + offset: 0, 0 + index: -1 +scarf2 + rotate: true + xy: 754, 227 + size: 27, 90 + orig: 27, 90 + offset: 0, 0 + index: -1 +scarf3 + rotate: true + xy: 311, 88 + size: 40, 62 + orig: 40, 62 + offset: 0, 0 + index: -1 +top_hair1 + rotate: true + xy: 991, 163 + size: 44, 28 + orig: 44, 28 + offset: 0, 0 + index: -1 +top_hair2 + rotate: false + xy: 188, 37 + size: 56, 42 + orig: 56, 42 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/215301.json b/m78-all/m78-fe/public/images/character/215301.json new file mode 100644 index 000000000..1c0a2d559 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/215301.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"KqTp0RDZOfNSrPuLkAUlIMOP5/s","spine":"3.5.25","width":197,"height":265,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":52.69,"rotation":89.19,"x":1.07,"y":46.42},{"name":"eff_exclamation","parent":"root","length":13.93,"rotation":41.76,"x":68.59,"y":229.69},{"name":"eff_panic","parent":"root","length":17.87,"rotation":-4.76,"x":78.98,"y":183.69},{"name":"eff_sad1","parent":"root","length":20.67,"rotation":-90.95,"x":-13.37,"y":129.35},{"name":"eff_sad2","parent":"root","length":19.53,"rotation":-87.99,"x":45.78,"y":129.92},{"name":"eff_star1","parent":"root","length":13.62,"rotation":29.36,"x":41.88,"y":89.82},{"name":"eff_star2","parent":"root","length":19.63,"rotation":157.8,"x":-49.76,"y":94.28},{"name":"eff_star3","parent":"root","length":12.33,"rotation":-21.16,"x":45.59,"y":52.72},{"name":"head","parent":"body","length":139.13,"rotation":0.5,"x":55.28,"y":0.41},{"name":"f_hair1","parent":"head","length":73.46,"rotation":-135.1,"x":119.34,"y":23.27},{"name":"f_hair2","parent":"head","length":72.4,"rotation":-167.87,"x":127.04,"y":39.63},{"name":"glass","parent":"head","length":24.9,"rotation":-86.28,"x":40.1,"y":62.91},{"name":"l_arm1","parent":"body","length":27.21,"rotation":-151.58,"x":45.13,"y":-16.43},{"name":"l_arm2","parent":"l_arm1","length":30.03,"rotation":89.59,"x":26.68,"y":-1.82},{"name":"l_coat","parent":"body","length":85.42,"rotation":-168.18,"x":47.7,"y":-14.54},{"name":"l_eye","parent":"head","length":15.23,"rotation":-2.49,"x":18.37,"y":-35.89},{"name":"l_eyebrow","parent":"head","length":30.87,"rotation":-85.56,"x":63.2,"y":-24.52},{"name":"l_hair","parent":"head","length":43.53,"rotation":-155.21,"x":94.46,"y":-42.16},{"name":"l_hand","parent":"l_arm2","length":76.35,"rotation":31.02,"x":25.88,"y":0.05},{"name":"l_leg","parent":"root","length":51.58,"rotation":-91.24,"x":11.46,"y":51.24},{"name":"mouth","parent":"head","length":15.48,"rotation":44.33,"x":6.46,"y":-27.79},{"name":"r_arm1","parent":"body","length":27.77,"rotation":158.01,"x":47.9,"y":24.05},{"name":"r_arm2","parent":"r_arm1","length":31.92,"rotation":3.1,"x":28.06,"y":-0.68},{"name":"r_coat","parent":"body","length":86.12,"rotation":173.92,"x":47.58,"y":20.34},{"name":"r_eye","parent":"head","length":12.25,"rotation":-1.43,"x":19.55,"y":21.62},{"name":"r_eyebrow","parent":"head","length":33.79,"rotation":87.79,"x":64.14,"y":8.88},{"name":"r_hair","parent":"head","length":79.4,"rotation":177.2,"x":107.33,"y":49.55},{"name":"r_leg","parent":"root","length":48.64,"rotation":-87.81,"x":-11.17,"y":49.39},{"name":"scarf1","parent":"body","length":14.49,"rotation":-2.13,"x":40.51,"y":-4.99},{"name":"scarf2","parent":"scarf1","length":50.48,"rotation":-175.38,"x":12.38,"y":26.64},{"name":"scarf3","parent":"scarf1","length":31.21,"rotation":154.54,"x":10.72,"y":37.33},{"name":"top_hair1","parent":"head","length":26.38,"rotation":64.46,"x":137.78,"y":43.4},{"name":"top_hair2","parent":"head","length":30.86,"rotation":-25.34,"x":133.73,"y":38.18}],"slots":[{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"scarf3","bone":"scarf3","attachment":"scarf3"},{"name":"l_arm1","bone":"l_arm1","attachment":"l_arm1"},{"name":"l_arm2","bone":"l_arm2","attachment":"l_arm2"},{"name":"l_hand","bone":"l_hand","attachment":"l_hand"},{"name":"body","bone":"body","attachment":"body"},{"name":"l_coat","bone":"l_coat","attachment":"l_coat"},{"name":"r_coat","bone":"r_coat","attachment":"r_coat"},{"name":"r_arm1","bone":"r_arm1","attachment":"r_arm1"},{"name":"r_arm2","bone":"r_arm2","attachment":"r_arm2"},{"name":"head","bone":"head","attachment":"head"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow_uneasy"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow_uneasy"},{"name":"mouth1","bone":"mouth","attachment":"mouth_uneasy1"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye_uneasy1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye_uneasy1"},{"name":"top_hair2","bone":"top_hair2","attachment":"top_hair2"},{"name":"l_hair","bone":"l_hair","attachment":"l_hair"},{"name":"r_hair","bone":"r_hair","attachment":"r_hair"},{"name":"f_hair2","bone":"f_hair2","attachment":"f_hair2"},{"name":"f_hair1","bone":"f_hair1","attachment":"f_hair1"},{"name":"hair","bone":"head","attachment":"hair"},{"name":"top_hair1","bone":"top_hair1","attachment":"top_hair1"},{"name":"scarf2","bone":"scarf2","attachment":"scarf2"},{"name":"scarf1","bone":"scarf1","attachment":"scarf1"},{"name":"glass","bone":"glass","attachment":"glass"}],"skins":{"default":{"body":{"body":{"x":24.14,"y":1.86,"rotation":-89.19,"width":58,"height":73}},"f_hair1":{"f_hair1":{"x":46.55,"y":-0.61,"rotation":45.41,"width":79,"height":81}},"f_hair2":{"f_hair2":{"x":39.56,"y":6.6,"rotation":78.17,"width":61,"height":85}},"glass":{"glass":{"x":67.45,"y":-8.09,"rotation":-3.42,"width":122,"height":50}},"hair":{"hair":{"x":100.7,"y":33.92,"rotation":-89.69,"width":131,"height":121}},"head":{"head":{"x":60.84,"y":7.71,"rotation":-89.69,"width":183,"height":201}},"l_arm1":{"l_arm1":{"x":16.93,"y":-0.49,"rotation":62.39,"width":30,"height":38}},"l_arm2":{"l_arm2":{"x":13,"y":-0.21,"rotation":-27.2,"width":44,"height":31}},"l_coat":{"l_coat":{"x":40.85,"y":4.04,"rotation":78.98,"width":35,"height":89}},"l_eye1":{"l_eye1":{"x":19.66,"y":1.33,"rotation":-87.21,"width":29,"height":45},"l_eye2":{"x":21.51,"y":1.42,"rotation":-87.21,"width":30,"height":45},"l_eye3":{"x":19.66,"y":1.33,"rotation":-87.21,"width":29,"height":16},"l_eye_happy":{"x":19.66,"y":1.33,"rotation":-87.21,"width":30,"height":14},"l_eye_sad":{"x":18.27,"y":29.87,"rotation":-87.21,"width":88,"height":15},"l_eye_surprised":{"x":19.66,"y":1.33,"rotation":-87.21,"width":29,"height":45},"l_eye_uneasy1":{"x":19.66,"y":1.33,"rotation":-87.21,"width":29,"height":45},"l_eye_uneasy2":{"x":19.66,"y":1.33,"rotation":-87.21,"width":29,"height":45}},"l_eyebrow":{"l_eyebrow":{"x":9.18,"y":-8.37,"rotation":-4.13,"width":33,"height":14},"l_eyebrow_sad":{"x":9.18,"y":-8.37,"rotation":-4.13,"width":33,"height":16},"l_eyebrow_surprised":{"x":9.18,"y":-8.37,"rotation":-4.13,"width":32,"height":17},"l_eyebrow_uneasy":{"x":9.18,"y":-8.37,"rotation":-4.13,"width":32,"height":16}},"l_hair":{"l_hair":{"x":20.74,"y":-2.36,"rotation":65.52,"width":36,"height":58}},"l_hand":{"l_hand":{"x":30.78,"y":-0.53,"rotation":-58.22,"width":62,"height":95}},"l_leg":{"l_leg":{"x":23.69,"y":-0.89,"rotation":91.24,"width":31,"height":59}},"mouth1":{"mouth1":{"x":20.5,"y":12.47,"rotation":-134.03,"width":33,"height":8},"mouth2":{"x":21.03,"y":11.95,"rotation":-134.03,"width":34,"height":14},"mouth3":{"x":23.17,"y":9.89,"rotation":-134.03,"width":34,"height":21},"mouth_happy":{"x":22.63,"y":10.4,"rotation":-134.03,"width":38,"height":20},"mouth_sad":{"x":20.5,"y":12.47,"rotation":-134.03,"width":25,"height":15},"mouth_surprised":{"x":20.5,"y":12.47,"rotation":-134.03,"width":30,"height":19},"mouth_uneasy":{"x":20.5,"y":12.47,"rotation":-134.03,"width":37,"height":9},"mouth_uneasy1":{"x":20.5,"y":12.47,"rotation":-134.03,"width":35,"height":7}},"r_arm1":{"r_arm1":{"x":19.35,"y":-0.7,"rotation":112.8,"width":28,"height":38}},"r_arm2":{"r_arm2":{"x":11.52,"y":1.85,"rotation":109.7,"width":33,"height":43}},"r_coat":{"r_coat":{"x":39.36,"y":-3.16,"rotation":96.88,"width":42,"height":93}},"r_eye1":{"r_eye1":{"x":19.7,"y":0.97,"rotation":-88.26,"width":40,"height":40},"r_eye2":{"x":21.18,"y":1.01,"rotation":-88.26,"width":40,"height":38},"r_eye3":{"x":18.96,"y":0.94,"rotation":-88.26,"width":37,"height":19},"r_eye_happy":{"x":18.59,"y":0.93,"rotation":-88.26,"width":37,"height":15},"r_eye_sad":{"x":16.07,"y":-1.37,"rotation":-88.26,"width":39,"height":14},"r_eye_surprised":{"x":19.7,"y":0.97,"rotation":-88.26,"width":40,"height":39},"r_eye_uneasy1":{"x":19.7,"y":0.97,"rotation":-88.26,"width":40,"height":39},"r_eye_uneasy2":{"x":19.7,"y":0.97,"rotation":-88.26,"width":40,"height":39}},"r_eyebrow":{"r_eyebrow":{"x":9.52,"y":7.73,"rotation":-177.48,"width":45,"height":11},"r_eyebrow_sad":{"x":9.52,"y":7.73,"rotation":-177.48,"width":47,"height":20},"r_eyebrow_surprised":{"x":9.52,"y":7.73,"rotation":-177.48,"width":44,"height":21},"r_eyebrow_uneasy":{"x":9.52,"y":7.73,"rotation":-177.48,"width":46,"height":16}},"r_hair":{"r_hair":{"x":39.36,"y":-1.79,"rotation":93.1,"width":34,"height":92}},"r_leg":{"r_leg":{"x":18.76,"y":-1.49,"rotation":87.81,"width":41,"height":65}},"scarf1":{"scarf1":{"x":8.3,"y":8.52,"rotation":-87.06,"width":84,"height":27}},"scarf2":{"scarf2":{"x":42.47,"y":-1.86,"rotation":88.32,"width":27,"height":90}},"scarf3":{"scarf3":{"x":30.37,"y":3.51,"rotation":118.39,"width":40,"height":62}},"top_hair1":{"top_hair1":{"x":15.22,"y":8.07,"rotation":-154.16,"width":44,"height":28}},"top_hair2":{"top_hair2":{"x":14.29,"y":-14.86,"rotation":-64.36,"width":56,"height":42}}}},"animations":{"action":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.4333,"name":"l_eye2"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6667,"name":"mouth3"},{"time":1,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.4333,"name":"r_eye2"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":-3.68,"y":0.13},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":-3.68,"y":0.13},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.41},{"time":0.5,"angle":2.36},{"time":0.6667,"angle":-7.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":4.01,"y":-1.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.94},{"time":0.6667,"angle":5.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.61},{"time":0.6667,"angle":5.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.29},{"time":0.6667,"angle":4.79},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-0.63},{"time":0.8333,"angle":-356.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":2.21},{"time":0.6667,"angle":11.17},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.31},{"time":0.6667,"angle":-11.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.46},{"time":0.5,"angle":1.2},{"time":0.6667,"angle":-6.34},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.012,"y":1.012},{"time":1,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.76},{"time":0.5,"angle":1.16},{"time":0.8,"angle":349.41},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.8,"x":-1.53,"y":-0.19},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.8,"x":1.006,"y":1},{"time":1,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":43.33},{"time":0.5,"angle":-4.43},{"time":0.6667,"angle":-54.36,"curve":"stepped"},{"time":0.8333,"angle":-54.36},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.68,"y":2.84},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":47.14},{"time":0.5,"angle":42.79},{"time":0.6667,"angle":15.67,"curve":"stepped"},{"time":0.8333,"angle":15.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6667,"angle":-20.44},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-0.62,"y":-1.41},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":2.86},{"time":0.5,"angle":-4.25},{"time":0.6667,"angle":-36.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.47},{"time":0.6667,"angle":2.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.015,"y":1.015},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.62},{"time":0.6667,"angle":-3.12},{"time":0.8333,"angle":-4.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.6667,"x":1.035,"y":1.021},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_happy"},{"time":1,"name":"l_eye_happy"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_happy"},{"time":1,"name":"mouth_happy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_happy"},{"time":1,"name":"r_eye_happy"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.73,"y":-0.07},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.46,"y":0.15},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.73,"y":-0.07},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":1.46,"y":0.15},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":5.91},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-3.63},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-3.63},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-1.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.23},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.89},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":12.12},{"time":0.5,"angle":0},{"time":0.7667,"angle":12.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-10.25},{"time":0.5,"angle":0},{"time":0.7667,"angle":-15.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":0.08},{"time":0.5,"angle":0},{"time":0.7667,"angle":0.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-13.38},{"time":0.6667,"angle":-0.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.92,"y":0.04},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.027,"y":1.027},{"time":1,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":352.42},{"time":0.7667,"angle":-1.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.28,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2667,"x":1,"y":1},{"time":0.5,"x":1.036,"y":1},{"time":1,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-28.14},{"time":0.5,"angle":8.69},{"time":0.7667,"angle":-24.09},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":9.78},{"time":0.5,"angle":0},{"time":0.7667,"angle":6.56},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-21.06},{"time":0.5,"angle":0},{"time":0.7667,"angle":-21.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-2.02,"y":-1.58},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.65,"y":-1.96},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-21.06},{"time":0.5,"angle":0},{"time":0.7667,"angle":-21.06},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-5.01},{"time":0.5,"angle":-7.69},{"time":0.7667,"angle":-1.96},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.21},{"time":0.6,"angle":0.7},{"time":0.8333,"angle":2.85},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.4333,"name":"l_eye2"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye1"},{"time":1,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":1,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.4333,"name":"r_eye2"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye1"},{"time":1,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.28},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.73},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":-1.45},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0,"y":-2.18},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0.72,"y":-0.06},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":0.72,"y":0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.46},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-2.9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":9.83},{"time":0.5,"angle":0},{"time":0.7667,"angle":9},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-4.31},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":-3.68,"y":-0.02},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0},{"time":0.5,"x":-3.68,"y":-0.02},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":1.67},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.42},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":-0.73,"y":0.03},{"time":0.5,"x":0,"y":0},{"time":0.7667,"x":-1.45,"y":-0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.61},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":355.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-1.45,"y":-0.07},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-6.52},{"time":0.2667,"angle":4.87},{"time":0.5,"angle":-8.08},{"time":0.7333,"angle":4.03},{"time":1,"angle":-6.52}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.31},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.39},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-8.4},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-8.4},{"time":0.5,"angle":0},{"time":0.7667,"angle":-5.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-2.33},{"time":0.7667,"angle":1.48},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.89},{"time":0.7333,"angle":2.97},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"sad":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_sad"},{"time":0.6667,"name":"l_eye_sad"},{"time":1.3333,"name":"l_eye_sad"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_sad"},{"time":1.3333,"name":"l_eyebrow_sad"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_sad"},{"time":1.3333,"name":"mouth_sad"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_sad"},{"time":0.6667,"name":"r_eye_sad"},{"time":1.3333,"name":"r_eye_sad"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_sad"},{"time":1.3333,"name":"r_eyebrow_sad"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.82,"y":0.04},{"time":0.6667,"x":-3.24,"y":-0.48,"curve":"stepped"},{"time":1,"x":-3.24,"y":-0.48},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":7.68,"curve":"stepped"},{"time":0.6667,"angle":7.68,"curve":"stepped"},{"time":1.3333,"angle":7.68}],"translate":[{"time":0,"x":-2.35,"y":-2.57,"curve":"stepped"},{"time":0.6667,"x":-2.35,"y":-2.57,"curve":"stepped"},{"time":1.3333,"x":-2.35,"y":-2.57}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.82,"y":0.04},{"time":0.6667,"x":-3.24,"y":-0.48,"curve":"stepped"},{"time":1,"x":-3.24,"y":-0.48},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":-5.84,"curve":"stepped"},{"time":0.6667,"angle":-5.84,"curve":"stepped"},{"time":1.3333,"angle":-5.84}],"translate":[{"time":0,"x":-0.04,"y":0.82,"curve":"stepped"},{"time":0.6667,"x":-0.04,"y":0.82,"curve":"stepped"},{"time":1.3333,"x":-0.04,"y":0.82}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":-2.24},{"time":0.6667,"angle":-8.19},{"time":1.3333,"angle":-2.24}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-0.45},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-0.81,"y":-0.12},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":3.17},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":2.28},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.76},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-4.56},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":3.92},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.43},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-2.43,"y":-0.38,"curve":"stepped"},{"time":1,"x":-2.43,"y":-0.38},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":5.78},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":5.27},{"time":1,"angle":3.09},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.033,"y":1.042},{"time":1,"x":1.042,"y":1.042},{"time":1.3333,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4333,"angle":0},{"time":0.6,"angle":-1.13,"curve":"stepped"},{"time":0.9667,"angle":-1.13},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.6,"x":-2.18,"y":-0.36,"curve":"stepped"},{"time":0.9667,"x":-2.18,"y":-0.36},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":0.9667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":1.77},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-79.29},{"time":0.3333,"angle":-81.23},{"time":0.6667,"angle":-76.78},{"time":1,"angle":-79.23},{"time":1.3333,"angle":-79.29}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.6667,"x":-1.62,"y":-0.26},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":12.97},{"time":0.5,"angle":17.71},{"time":1,"angle":18.66},{"time":1.3333,"angle":12.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6667,"x":-3.24,"y":-0.51},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.12},{"time":1,"angle":2.11},{"time":1.0333,"angle":2.35},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.008,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.04},{"time":0.6667,"angle":-351.01},{"time":0.8333,"angle":-352.22},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.015,"y":1,"curve":"stepped"},{"time":0.8333,"x":1.015,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6,"name":"l_eye2"},{"time":0.6667,"name":"l_eye3"},{"time":0.7333,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow"},{"time":1.3333,"name":"l_eyebrow"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6,"name":"r_eye2"},{"time":0.6667,"name":"r_eye3"},{"time":0.7333,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow"},{"time":1.3333,"name":"r_eyebrow"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":3.83},{"time":0.6667,"angle":0},{"time":1,"angle":-5.23},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.73},{"time":0.6667,"x":0,"y":0},{"time":1,"x":0,"y":-0.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.018,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.981,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.8333,"angle":-3},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-2.49},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-1.43},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-2.47},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.52},{"time":0.6667,"angle":0},{"time":1,"angle":4.52},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0},{"time":0.6667,"x":-4.42,"y":-0.02},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0},{"time":0.6667,"x":-4.42,"y":-0.02},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.15},{"time":0.6667,"angle":0},{"time":1,"angle":7.65},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.73,"y":0.03},{"time":0.6667,"x":0,"y":0},{"time":1,"x":-0.73,"y":-0.06},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-8.59},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":350.99},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.96},{"time":0.6667,"angle":0},{"time":1,"angle":2.61},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.25},{"time":0.6667,"angle":0},{"time":1,"angle":-4.62},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.89},{"time":0.6667,"angle":0},{"time":1,"angle":-2.2},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-1.82},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.93},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.23},{"time":0.6667,"angle":-4.82,"curve":"stepped"},{"time":1,"angle":-4.82},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]}}},"surprised":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_surprised"},{"time":1,"name":"l_eye_surprised"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_surprised"},{"time":1,"name":"l_eyebrow_surprised"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_surprised"},{"time":1,"name":"mouth_surprised"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_surprised"},{"time":1,"name":"r_eye_surprised"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_surprised"},{"time":1,"name":"r_eyebrow_surprised"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1,"x":0,"y":0},{"time":0.2,"x":5.15,"y":-0.21,"curve":"stepped"},{"time":0.3333,"x":5.15,"y":-0.21},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1,"x":0,"y":0},{"time":0.2,"x":5.15,"y":-0.21,"curve":"stepped"},{"time":0.3333,"x":5.15,"y":-0.21},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.45},{"time":0.5,"angle":0},{"time":0.7667,"angle":-1.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2667,"x":0,"y":2.21},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0},{"time":0.3333,"x":2.46,"y":-0.09},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-0.4},{"time":0.8333,"angle":-3.62},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3},{"time":0.6667,"angle":-1.52},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.11},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.54},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":10.69},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.74},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-2.16},{"time":0.5,"angle":-7.14},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":349.77},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.037,"y":1.037},{"time":1,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":-58.51},{"time":0.2667,"angle":-38.84},{"time":0.5,"angle":-58.51,"curve":"stepped"},{"time":1,"angle":-58.51}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-26.65},{"time":0.5,"angle":0},{"time":0.7667,"angle":-19.5},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-2.46,"y":-0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.6667,"angle":-2.6},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.12},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":7.72},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}},"uneasy":{"slots":{"l_eye1":{"attachment":[{"time":0,"name":"l_eye_uneasy1"},{"time":0.5,"name":"l_eye_uneasy2"},{"time":1,"name":"l_eye_uneasy1"}]},"l_eyebrow":{"attachment":[{"time":0,"name":"l_eyebrow_uneasy"},{"time":1,"name":"l_eyebrow_uneasy"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth_uneasy"},{"time":0.2667,"name":"mouth_uneasy1"},{"time":0.5,"name":"mouth_uneasy"},{"time":0.7667,"name":"mouth_uneasy1"},{"time":1,"name":"mouth_uneasy"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye_uneasy1"},{"time":0.5,"name":"r_eye_uneasy2"},{"time":1,"name":"r_eye_uneasy1"}]},"r_eyebrow":{"attachment":[{"time":0,"name":"r_eyebrow_uneasy"},{"time":1,"name":"r_eyebrow_uneasy"}]}},"bones":{"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"mouth":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":3.82},{"time":0.5,"angle":0},{"time":0.7667,"angle":-4.04},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"glass":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hair":{"rotate":[{"time":0,"angle":0},{"time":0.7667,"angle":-2.8},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.7667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.7667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-4.59},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"f_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.64},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.32},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair2":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":4.77},{"time":0.5,"angle":0},{"time":0.7667,"angle":4.58},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"top_hair1":{"rotate":[{"time":0,"angle":0},{"time":0.2667,"angle":-5.66},{"time":0.5,"angle":0},{"time":0.7667,"angle":-3.3},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf3":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-7.89},{"time":0.6667,"angle":-1.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"scarf2":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-4.37},{"time":0.7667,"angle":0.81},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1},{"time":0.7667,"x":1.019,"y":1.019},{"time":1,"x":1,"y":1}]},"scarf1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_hand":{"rotate":[{"time":0,"angle":3.18},{"time":0.5,"angle":1.6},{"time":1,"angle":3.18}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm2":{"rotate":[{"time":0,"angle":17.19,"curve":"stepped"},{"time":0.5,"angle":17.19,"curve":"stepped"},{"time":1,"angle":17.19}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_arm1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.64,"y":-0.05},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":1.64,"y":0.11},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm2":{"rotate":[{"time":0,"angle":12.71},{"time":0.2667,"angle":-1.72},{"time":0.5,"angle":12.71},{"time":0.7667,"angle":-1.72},{"time":1,"angle":12.71}],"translate":[{"time":0,"x":1.81,"y":0.3},{"time":0.2667,"x":0.42,"y":-0.57},{"time":0.5,"x":1.81,"y":0.3},{"time":0.7667,"x":0.42,"y":-0.57},{"time":1,"x":1.81,"y":0.3}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_arm1":{"rotate":[{"time":0,"angle":-13.22,"curve":"stepped"},{"time":0.5,"angle":-13.22,"curve":"stepped"},{"time":1,"angle":-13.22}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.64,"y":-0.05},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":0.82,"y":0.05},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_coat":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":-3.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_coat":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.67},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/215301.png b/m78-all/m78-fe/public/images/character/215301.png new file mode 100644 index 000000000..0749cf3d4 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/215301.png differ diff --git a/m78-all/m78-fe/public/images/character/BOBO.atlas b/m78-all/m78-fe/public/images/character/BOBO.atlas new file mode 100644 index 000000000..9b234ef03 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/BOBO.atlas @@ -0,0 +1,251 @@ + +BOBO.png +size: 512,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +eyebrow + rotate: false + xy: 97, 83 + size: 90, 39 + orig: 90, 39 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 15 + size: 93, 107 + orig: 93, 107 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 416, 92 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 448, 92 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 480, 92 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 168, 51 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 200, 54 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 232, 54 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 264, 66 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye8 + rotate: false + xy: 296, 66 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 328, 66 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_foot + rotate: false + xy: 149, 14 + size: 25, 29 + orig: 25, 29 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 97, 45 + size: 36, 69 + orig: 36, 69 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 360, 66 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 176, 19 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 208, 22 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 97, 19 + size: 24, 50 + orig: 24, 50 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 260, 98 + size: 24, 50 + orig: 24, 50 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 312, 98 + size: 24, 50 + orig: 24, 50 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 364, 98 + size: 24, 50 + orig: 24, 50 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 2, 4 + size: 73, 9 + orig: 73, 9 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 240, 22 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 272, 34 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 304, 34 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 336, 34 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 368, 34 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 272, 2 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 304, 2 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 304, 2 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_eye8 + rotate: false + xy: 336, 2 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_foot + rotate: false + xy: 432, 61 + size: 25, 29 + orig: 25, 29 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 189, 86 + size: 36, 69 + orig: 36, 69 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 368, 2 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 400, 60 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 400, 28 + size: 30, 30 + orig: 30, 30 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/BOBO.json b/m78-all/m78-fe/public/images/character/BOBO.json new file mode 100644 index 000000000..5602bb807 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/BOBO.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"kQAaAWsPFO97QaphlJmy3XHadLE","spine":"2.1.27","width":103.47,"height":118.27,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":-0.21,"y":6.78,"rotation":89.09},{"name":"eff_sad1","parent":"root","length":14.33,"x":-21.56,"y":58.88,"rotation":-91.36},{"name":"eff_sad2","parent":"root","length":18.48,"x":18.12,"y":61.05,"rotation":-92.25},{"name":"l_foot","parent":"root","length":15.09,"x":13.29,"y":11.55,"rotation":-44.22},{"name":"r_foot","parent":"root","length":15.01,"x":-15.65,"y":11.35,"rotation":-133.05},{"name":"head","parent":"body","length":71.16,"x":0.22,"y":0.07,"rotation":1.28},{"name":"l_leg","parent":"body","length":18.54,"x":62.87,"y":-38.54,"rotation":-163.93},{"name":"r_leg","parent":"body","length":16.44,"x":61.56,"y":40.76,"rotation":160.18},{"name":"eyebrow","parent":"head","length":13.65,"x":81.21,"y":0.2,"rotation":-1.8},{"name":"mouse","parent":"head","length":5.16,"x":66.77,"y":-0.45,"rotation":1.24},{"name":"nose","parent":"head","length":7,"x":46.73,"y":-0.25,"rotation":0.9}],"slots":[{"name":"r_foot","bone":"r_foot","attachment":"r_foot"},{"name":"l_foot","bone":"l_foot","attachment":"l_foot"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"nose2","bone":"nose"},{"name":"eyebrow","bone":"eyebrow","attachment":"eyebrow"},{"name":"mouth","bone":"mouse","attachment":"mouth1"}],"skins":{"default":{"eyebrow":{"eyebrow":{"rotation":-88.58,"width":90,"height":39}},"head":{"head":{"x":51.97,"y":-0.34,"rotation":-90.38,"width":93,"height":107}},"l_eye":{"l_eye1":{"x":63.95,"y":-19.95,"rotation":-90.38,"width":30,"height":30},"l_eye2":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye3":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye4":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye5":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye6":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye7":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye8":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_eye9":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_sadeye1":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_sadeye2":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30},"l_sadeye3":{"x":63.95,"y":-19.25,"rotation":-90.38,"width":30,"height":30}},"l_foot":{"l_foot":{"x":4.79,"y":1.93,"rotation":40.05,"width":25,"height":29}},"l_leg1":{"l_leg":{"x":12,"y":-10.12,"rotation":74.83,"width":36,"height":69}},"mouth":{"mouth1":{"x":-4.14,"y":0.93,"rotation":-91.37,"width":24,"height":50},"mouth2":{"x":-4.14,"y":0.93,"rotation":-91.37,"width":24,"height":50},"mouth3":{"x":-4.14,"y":0.93,"rotation":-91.37,"width":24,"height":50},"mouth4":{"x":-4.14,"y":0.93,"rotation":-91.37,"width":24,"height":50}},"nose2":{"nose":{"x":3.72,"y":0.01,"scaleX":0.723,"scaleY":0.647,"rotation":-91.29,"width":73,"height":9}},"r_eye":{"r_eye1":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye2":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye3":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye4":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye5":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye6":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye7":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye8":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_eye9":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_sadeye1":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_sadeye2":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30},"r_sadeye3":{"x":63.45,"y":20.35,"rotation":-90.38,"width":30,"height":30}},"r_foot":{"r_foot":{"x":3.22,"y":-1.86,"rotation":133.05,"width":25,"height":29}},"r_leg":{"r_leg":{"x":11.46,"y":9.91,"rotation":110.71,"width":36,"height":69}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye4"},{"time":0.6666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye4"},{"time":0.6666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":21.95},{"time":0.6666,"angle":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-20.88},{"time":0.6666,"angle":0}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.12,"y":0.05},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.97,"y":-0.13},{"time":0.6666,"x":0,"y":0}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth3"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.6666,"name":"mouth2"}]},"nose2":{"attachment":[{"time":0,"name":"nose"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.145,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":1.42},{"time":0.1666,"angle":-54.32},{"time":0.3333,"angle":1.42},{"time":0.5,"angle":43.72},{"time":0.6666,"angle":1.42}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-5.83,"y":12.08},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":5.14,"y":19.91},{"time":0.6666,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-9.62},{"time":0.3333,"angle":0},{"time":0.5,"angle":6.33},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":15.54,"y":0.55},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":14.94,"y":4.22},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.028,"y":1},{"time":0.3333,"x":0.922,"y":1},{"time":0.5,"x":1.028,"y":1},{"time":0.6666,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-34.77},{"time":0.3333,"angle":0},{"time":0.5,"angle":53.25},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-6.68,"y":22.78},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.26,"y":11.06},{"time":0.6666,"x":0,"y":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":5.33},{"time":0.3333,"angle":0},{"time":0.5,"angle":33.22},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":7.6,"y":-15.27},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":22.79,"y":7.05},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-30.41},{"time":0.3333,"angle":0},{"time":0.5,"angle":-13.56},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":21.79,"y":-3.79},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":8.69,"y":15.55},{"time":0.6666,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":7.69,"y":-0.26},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":5.76,"y":-0.2},{"time":0.6666,"x":0,"y":0}]}}},"hypnosis":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.5,"name":"mouth4"},{"time":1,"name":"mouth4"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-3.27},{"time":1,"angle":0}],"translate":[{"time":0,"x":-5.95,"y":-0.42},{"time":0.5,"x":-7.18,"y":-8.55},{"time":1,"x":-5.95,"y":-0.42}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-8.7},{"time":1,"angle":0}],"translate":[{"time":0,"x":-3.09,"y":0.2},{"time":0.5,"x":-0.23,"y":-1.96},{"time":1,"x":-3.09,"y":0.2}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.78},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-3.63,"y":-0.07},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-4.02,"y":0.11},{"time":1,"x":0,"y":0}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":"nose"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.074,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":1.074,"y":1.017},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":25.58},{"time":0.1666,"angle":7.47},{"time":0.5,"angle":25.58},{"time":0.6666,"angle":16.27},{"time":1,"angle":25.58}],"translate":[{"time":0,"x":1.44,"y":-5.65},{"time":0.1666,"x":-12.21,"y":-21.08},{"time":0.5,"x":1.44,"y":-5.65},{"time":0.6666,"x":4.28,"y":3.29},{"time":1,"x":1.44,"y":-5.65}]},"r_leg":{"rotate":[{"time":0,"angle":-27.62},{"time":0.1666,"angle":-45.33},{"time":0.5,"angle":-27.62},{"time":0.6666,"angle":1.27},{"time":1,"angle":-27.62}],"translate":[{"time":0,"x":0.59,"y":2.65},{"time":0.1666,"x":11.27,"y":-14.46},{"time":0.5,"x":0.59,"y":2.65},{"time":0.6666,"x":-7.41,"y":7.75},{"time":1,"x":0.59,"y":2.65}]},"l_foot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":8.16},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":1.76,"y":3.08},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-13.11},{"time":0.5,"angle":0},{"time":0.6666,"angle":6.21},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.018,"y":1},{"time":0.5,"x":0.935,"y":1},{"time":0.6666,"x":1.024,"y":1},{"time":1,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.04,"y":0},{"time":0.6666,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-11.91},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-3.08,"y":7.04},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-2.82,"y":0.09},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":3.92,"y":-0.13},{"time":1,"x":0,"y":0}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4666,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6666,"name":"l_sadeye2"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4666,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6666,"name":"r_sadeye2"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.947,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.5},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6666,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4333,"x":-3.95,"y":-0.08},{"time":0.5333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.4333,"x":-4.67,"y":0.14},{"time":0.5333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye1"},{"time":1,"name":"l_eye2"},{"time":1.0666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye1"},{"time":1,"name":"r_eye2"},{"time":1.0666,"name":"r_eye1"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.051,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.054,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.62},{"time":0.6666,"angle":0},{"time":1,"angle":18.06},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-9.81,"y":-4.94},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0.31,"y":1.36},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11},{"time":0.6666,"angle":0},{"time":1,"angle":-11},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.6,"y":-5.13},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-2.04,"y":-0.37},{"time":1.3333,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.31},{"time":0.6666,"angle":0},{"time":1,"angle":2.86},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.943,"y":1},{"time":0.6666,"x":1.056,"y":1},{"time":1,"x":0.941,"y":1},{"time":1.3333,"x":1,"y":1}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3,"x":0,"y":0},{"time":0.3333,"x":-1.74,"y":0.05},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.9666,"x":0,"y":0},{"time":1,"x":-1.74,"y":0.05},{"time":1.0666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye5"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"},{"time":0.3333,"name":"l_foot"},{"time":0.5,"name":"l_foot"},{"time":0.6666,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.3333,"name":"mouth1"},{"time":0.5,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"},{"time":0.3333,"name":"r_foot"},{"time":0.6666,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.965,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":140.5},{"time":0.1666,"angle":114.88},{"time":0.3333,"angle":140.5},{"time":0.5,"angle":67.92},{"time":0.6666,"angle":140.5}],"translate":[{"time":0,"x":-14.25,"y":11.62},{"time":0.1666,"x":-21.08,"y":3.76},{"time":0.3333,"x":-14.25,"y":11.62},{"time":0.5,"x":6.29,"y":12.77},{"time":0.6666,"x":-14.25,"y":11.62}]},"r_leg":{"rotate":[{"time":0,"angle":-124.5},{"time":0.1666,"angle":-52.4},{"time":0.3333,"angle":-124.5},{"time":0.5,"angle":-111.36},{"time":0.6666,"angle":-124.5}],"translate":[{"time":0,"x":-10.87,"y":-11.22},{"time":0.1666,"x":1.07,"y":-16.3},{"time":0.3333,"x":-10.87,"y":-11.22},{"time":0.5,"x":-17.11,"y":-4.4},{"time":0.6666,"x":-10.87,"y":-11.22}]},"l_foot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":36.82},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":10.84,"y":6.42},{"time":0.6666,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.83},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.67},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"mouse":{"translate":[{"time":0,"x":-5.73,"y":-0.12}]},"nose":{"translate":[{"time":0,"x":1.5,"y":-0.09},{"time":0.1666,"x":1.04,"y":-0.01},{"time":0.5,"x":1.03,"y":-0.01},{"time":0.6666,"x":1.5,"y":-0.09}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-20.87},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-8.03,"y":3.81},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye7"},{"time":0.3333,"name":"l_eye8"},{"time":0.5,"name":"l_eye7"},{"time":1,"name":"l_eye7"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"nose2":{"attachment":[{"time":0,"name":"nose"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye9"},{"time":0.3333,"name":"r_eye8"},{"time":0.5,"name":"r_eye9"},{"time":1,"name":"r_eye9"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"head":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.75},{"time":1,"angle":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.43},{"time":1,"angle":0}]},"eyebrow":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3,"x":0,"y":0},{"time":0.3333,"x":-2.77,"y":0.08,"curve":"stepped"},{"time":0.4666,"x":-2.77,"y":0.08},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/BOBO.png b/m78-all/m78-fe/public/images/character/BOBO.png new file mode 100644 index 000000000..e68194db7 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/BOBO.png differ diff --git a/m78-all/m78-fe/public/images/character/HOOD.atlas b/m78-all/m78-fe/public/images/character/HOOD.atlas new file mode 100644 index 000000000..9a6a25a4a --- /dev/null +++ b/m78-all/m78-fe/public/images/character/HOOD.atlas @@ -0,0 +1,272 @@ + +HOOD.png +size: 512,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +head + rotate: false + xy: 2, 43 + size: 85, 83 + orig: 85, 83 + offset: 0, 0 + index: -1 +l_eye1 + rotate: true + xy: 161, 23 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 161, 23 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 352, 105 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 378, 105 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 404, 105 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 430, 105 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 456, 105 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 482, 105 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye8 + rotate: false + xy: 226, 81 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 252, 81 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_foot + rotate: true + xy: 89, 2 + size: 15, 22 + orig: 15, 22 + offset: 0, 0 + index: -1 +l_foot2 + rotate: false + xy: 486, 84 + size: 10, 19 + orig: 10, 19 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 2, 6 + size: 51, 35 + orig: 51, 35 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: true + xy: 55, 7 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 125, 21 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 185, 57 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 142, 91 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 161, 49 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 184, 91 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 226, 104 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +mouth5 + rotate: true + xy: 268, 104 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +mouth6 + rotate: true + xy: 310, 104 + size: 22, 40 + orig: 22, 40 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 142, 115 + size: 72, 11 + orig: 72, 11 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 278, 81 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 304, 81 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 330, 81 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 356, 82 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 382, 82 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 408, 82 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye8 + rotate: false + xy: 434, 82 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 460, 82 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_foot + rotate: true + xy: 113, 2 + size: 15, 21 + orig: 15, 21 + offset: 0, 0 + index: -1 +r_foot2 + rotate: true + xy: 136, 9 + size: 10, 19 + orig: 10, 19 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 89, 91 + size: 51, 35 + orig: 51, 35 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 89, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 89, 19 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 125, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/HOOD.json b/m78-all/m78-fe/public/images/character/HOOD.json new file mode 100644 index 000000000..ced868892 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/HOOD.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"xiyzGp9XkV6CbmF6EU9sjrtAhsc","spine":"2.1.27","width":89.17,"height":92.61,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":-0.21,"y":6.78,"rotation":89.09},{"name":"eff_sad1","parent":"root","length":14.33,"x":-16.16,"y":33.06,"rotation":-91.36},{"name":"eff_sad2","parent":"root","length":18.48,"x":16.83,"y":35.02,"rotation":-92.25},{"name":"l_foot","parent":"root","length":15.09,"x":12.77,"y":-0.04,"rotation":91.5},{"name":"r_foot","parent":"root","length":15.01,"x":-11.78,"y":0.26,"rotation":86.43},{"name":"head","parent":"body","length":71.16,"x":0.22,"y":0.07,"rotation":1.28},{"name":"l_leg","parent":"body","length":18.54,"x":38.47,"y":-27.84,"rotation":-132.7},{"name":"r_leg","parent":"body","length":16.44,"x":37.54,"y":26.98,"rotation":135.63},{"name":"mouse","parent":"head","length":5.16,"x":25.97,"y":-0.18,"rotation":1.24},{"name":"nose","parent":"head","length":7,"x":33.85,"y":-0.45,"rotation":0.9}],"slots":[{"name":"r_foot","bone":"r_foot","attachment":"r_foot"},{"name":"l_foot","bone":"l_foot","attachment":"l_foot"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"head","bone":"head","attachment":"head"},{"name":"nose2","bone":"nose","attachment":"nose"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"mouth","bone":"mouse","attachment":"mouth1"}],"skins":{"default":{"head":{"head":{"x":38.51,"y":-0.97,"rotation":-90.38,"width":85,"height":83}},"l_eye":{"l_eye1":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_eye2":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_eye3":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_eye4":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_eye5":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_eye6":{"x":43.67,"y":-19.12,"rotation":-90.38,"width":24,"height":21},"l_eye7":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_eye8":{"x":35.58,"y":-22.51,"rotation":-90.38,"width":24,"height":21},"l_eye9":{"x":35.6,"y":-19.06,"rotation":-90.38,"width":24,"height":21},"l_sadeye1":{"x":36.89,"y":-19.07,"rotation":-90.38,"width":34,"height":32},"l_sadeye2":{"x":36.89,"y":-19.07,"rotation":-90.38,"width":34,"height":32},"l_sadeye3":{"x":38.18,"y":-18.76,"rotation":-90.38,"width":34,"height":32}},"l_foot":{"l_foot":{"x":5.85,"y":-5.19,"rotation":-95.67,"width":15,"height":22},"l_foot2":{"x":2.51,"y":-0.06,"rotation":-91.5,"width":10,"height":19}},"l_leg1":{"l_leg":{"x":-2.12,"y":-10.39,"rotation":43.6,"width":51,"height":35}},"mouth":{"mouth1":{"x":0.82,"y":-0.3,"rotation":-91.37,"width":22,"height":40},"mouth2":{"x":0.82,"y":-0.3,"rotation":-91.37,"width":22,"height":40},"mouth3":{"x":0.82,"y":-0.3,"rotation":-91.37,"width":22,"height":40},"mouth4":{"x":0.82,"y":-0.3,"rotation":-91.37,"width":22,"height":40},"mouth5":{"x":0.82,"y":-0.3,"rotation":-91.37,"width":22,"height":40},"mouth6":{"x":0.82,"y":-0.3,"rotation":-91.37,"width":22,"height":40}},"nose2":{"nose":{"x":-9.69,"y":0.09,"rotation":-91.29,"width":72,"height":11}},"r_eye":{"r_eye1":{"x":35.58,"y":15.13,"rotation":-90.38,"width":24,"height":21},"r_eye2":{"x":35.58,"y":15.13,"rotation":-90.38,"width":24,"height":21},"r_eye3":{"x":35.58,"y":15.13,"rotation":-90.38,"width":24,"height":21},"r_eye4":{"x":35.58,"y":15.13,"rotation":-90.38,"width":24,"height":21},"r_eye5":{"x":35.58,"y":15.13,"rotation":-90.38,"width":24,"height":21},"r_eye6":{"x":43.17,"y":19.11,"rotation":-90.38,"width":24,"height":21},"r_eye7":{"x":35.58,"y":15.13,"rotation":-90.38,"width":24,"height":21},"r_eye8":{"x":35.87,"y":18.84,"rotation":-90.38,"width":24,"height":21},"r_eye9":{"x":35.6,"y":17.36,"rotation":-90.38,"width":24,"height":21},"r_sadeye1":{"x":38.19,"y":19.3,"rotation":-90.38,"width":34,"height":34},"r_sadeye2":{"x":38.19,"y":19.3,"rotation":-90.38,"width":34,"height":34},"r_sadeye3":{"x":38.19,"y":19.3,"rotation":-90.38,"width":34,"height":34}},"r_foot":{"r_foot":{"x":5.09,"y":4.77,"rotation":-86.43,"width":15,"height":21},"r_foot2":{"rotation":-86.43,"width":10,"height":19}},"r_leg":{"r_leg":{"x":-1.56,"y":9.72,"rotation":135.26,"width":51,"height":35}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye8"},{"time":0.6666,"name":"l_eye1"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.3333,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye8"},{"time":0.6666,"name":"r_eye1"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-29.37},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":24.34},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.964,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.12,"y":0.05},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye6"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"},{"time":0.1666,"name":"l_foot2"},{"time":0.3333,"name":"l_foot"},{"time":0.5,"name":"l_foot2"},{"time":0.6666,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth3"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.6666,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"},{"time":0.1666,"name":"r_foot2"},{"time":0.3333,"name":"r_foot"},{"time":0.5,"name":"r_foot2"},{"time":0.6666,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.145,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":203.75},{"time":0.1666,"angle":201.42},{"time":0.3333,"angle":203.75},{"time":0.5,"angle":179.17},{"time":0.6666,"angle":203.75}],"translate":[{"time":0,"x":-13,"y":3.03},{"time":0.1666,"x":-0.41,"y":-7.68},{"time":0.3333,"x":-13,"y":3.03},{"time":0.5,"x":5.34,"y":9.41},{"time":0.6666,"x":-13,"y":3.03}]},"r_leg":{"rotate":[{"time":0,"angle":-200.61},{"time":0.1666,"angle":-231.25},{"time":0.3333,"angle":-200.61},{"time":0.5,"angle":-148.94},{"time":0.6666,"angle":-200.61}],"translate":[{"time":0,"x":-12.16,"y":-2.19},{"time":0.1666,"x":15.38,"y":-1.72},{"time":0.3333,"x":-12.16,"y":-2.19},{"time":0.5,"x":-1.88,"y":0.32},{"time":0.6666,"x":-12.16,"y":-2.19}]},"l_foot":{"rotate":[{"time":0,"angle":1.42},{"time":0.1666,"angle":-21.03},{"time":0.3333,"angle":1.42},{"time":0.5,"angle":15.46},{"time":0.6666,"angle":1.42}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-5.83,"y":12.08},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":5.14,"y":19.91},{"time":0.6666,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-9.62},{"time":0.3333,"angle":0},{"time":0.5,"angle":6.33},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":15.54,"y":0.55},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":14.94,"y":4.22},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.028,"y":1},{"time":0.3333,"x":0.922,"y":1},{"time":0.5,"x":1.028,"y":1},{"time":0.6666,"x":1,"y":1}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-2.92,"y":0.05},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.92,"y":0.05},{"time":0.6666,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-16.39},{"time":0.3333,"angle":0},{"time":0.5,"angle":12.89},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-6.68,"y":22.78},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.2,"y":15.5},{"time":0.6666,"x":0,"y":0}]}}},"hypnosis":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":-5.95,"y":-0.42},{"time":0.5,"x":-6.75,"y":-2.15},{"time":1,"x":-5.95,"y":-0.42}]},"r_leg":{"translate":[{"time":0,"x":-3.09,"y":0.2},{"time":0.5,"x":4.57,"y":-1.89},{"time":1,"x":-3.09,"y":0.2}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.78},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":"nose"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.074,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":1.074,"y":1.017},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":157.08},{"time":0.1666,"angle":168.86},{"time":0.5,"angle":157.08},{"time":0.6666,"angle":228.51},{"time":1,"angle":157.08}],"translate":[{"time":0,"x":-14.22,"y":7.95},{"time":0.1666,"x":-26.33,"y":5.65},{"time":0.5,"x":-14.22,"y":7.95},{"time":0.6666,"x":-7.91,"y":2.36},{"time":1,"x":-14.22,"y":7.95}]},"r_leg":{"rotate":[{"time":0,"angle":-159.79},{"time":0.1666,"angle":-256.09},{"time":0.5,"angle":-159.79},{"time":0.6666,"angle":-166.16},{"time":1,"angle":-159.79}],"translate":[{"time":0,"x":-11.49,"y":-7.66},{"time":0.1666,"x":-0.89,"y":-5.47},{"time":0.5,"x":-11.49,"y":-7.66},{"time":0.6666,"x":-21.62,"y":-6.1},{"time":1,"x":-11.49,"y":-7.66}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-13.11},{"time":0.5,"angle":0},{"time":0.6666,"angle":6.21},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.018,"y":1},{"time":0.5,"x":0.935,"y":1},{"time":0.6666,"x":1.024,"y":1},{"time":1,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.04,"y":0},{"time":0.6666,"x":0,"y":0}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4666,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6666,"name":"l_sadeye2"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.1666,"name":"mouth1"},{"time":0.3333,"name":"mouth4"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth4"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4666,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6666,"name":"r_sadeye2"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.947,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.68,"y":1.53},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-5.11,"y":0.32},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.5},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6666,"x":1,"y":1}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye1"},{"time":1,"name":"l_eye2"},{"time":1.1,"name":"l_eye1"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye1"},{"time":1,"name":"r_eye2"},{"time":1.1,"name":"r_eye1"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.019,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-5.62},{"time":0.6666,"angle":0},{"time":1,"angle":32.73},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-8.97,"y":-4.15},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-1.36,"y":3.68},{"time":1.3333,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11},{"time":0.6666,"angle":0},{"time":1,"angle":-11},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.27,"y":-0.13},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-7,"y":0.09},{"time":1.3333,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.31},{"time":0.6666,"angle":0},{"time":1,"angle":2.86},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.943,"y":1},{"time":0.6666,"x":1.056,"y":1},{"time":1,"x":0.941,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye5"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"},{"time":0.3333,"name":"l_foot"},{"time":0.5,"name":"l_foot"},{"time":0.6666,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.3333,"name":"mouth1"},{"time":0.5,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"},{"time":0.3333,"name":"r_foot"},{"time":0.6666,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.965,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":140.5},{"time":0.1666,"angle":126.18},{"time":0.3333,"angle":140.5},{"time":0.5,"angle":171.97},{"time":0.6666,"angle":140.5}],"translate":[{"time":0,"x":-14.25,"y":11.62},{"time":0.1666,"x":-17.3,"y":9.37},{"time":0.3333,"x":-14.25,"y":11.62},{"time":0.5,"x":-6.86,"y":12.94},{"time":0.6666,"x":-14.25,"y":11.62}]},"r_leg":{"rotate":[{"time":0,"angle":-124.5},{"time":0.1666,"angle":-156.73},{"time":0.3333,"angle":-124.5},{"time":0.5,"angle":-111.88},{"time":0.6666,"angle":-124.5}],"translate":[{"time":0,"x":-10.87,"y":-11.22},{"time":0.1666,"x":-6.12,"y":-12.55},{"time":0.3333,"x":-10.87,"y":-11.22},{"time":0.5,"x":-13.79,"y":-8.45},{"time":0.6666,"x":-10.87,"y":-11.22}]},"l_foot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0},{"time":0.5,"angle":36.82},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":10.84,"y":6.42},{"time":0.6666,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.83},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.67},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"mouse":{"translate":[{"time":0,"x":-5.73,"y":-0.12}]},"nose":{"translate":[{"time":0,"x":1.5,"y":-0.09},{"time":0.1666,"x":1.04,"y":-0.01},{"time":0.5,"x":1.03,"y":-0.01},{"time":0.6666,"x":1.5,"y":-0.09}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-20.87},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-8.03,"y":3.81},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye9"},{"time":0.3333,"name":"l_eye8"},{"time":0.5,"name":"l_eye9"},{"time":1,"name":"l_eye9"}]},"l_foot":{"attachment":[{"time":0,"name":"l_foot"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.1666,"name":"mouth6"},{"time":0.3333,"name":"mouth5"},{"time":0.5,"name":"mouth6"},{"time":0.6666,"name":"mouth5"},{"time":0.8333,"name":"mouth6"},{"time":1,"name":"mouth5"}]},"nose2":{"attachment":[{"time":0,"name":null}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye9"},{"time":0.3333,"name":"r_eye8"},{"time":0.5,"name":"r_eye9"},{"time":1,"name":"r_eye9"}]},"r_foot":{"attachment":[{"time":0,"name":"r_foot"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"head":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":2.12,"y":0.04},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":2.12,"y":0.04},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":2.12,"y":0.04},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-7.75},{"time":1,"angle":0}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.43},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/HOOD.png b/m78-all/m78-fe/public/images/character/HOOD.png new file mode 100644 index 000000000..6ed90bf65 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/HOOD.png differ diff --git a/m78-all/m78-fe/public/images/character/KUKU.atlas b/m78-all/m78-fe/public/images/character/KUKU.atlas new file mode 100644 index 000000000..5221affff --- /dev/null +++ b/m78-all/m78-fe/public/images/character/KUKU.atlas @@ -0,0 +1,314 @@ + +KUKU.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +bell + rotate: true + xy: 195, 13 + size: 36, 38 + orig: 36, 38 + offset: 0, 0 + index: -1 +body + rotate: false + xy: 142, 51 + size: 103, 74 + orig: 103, 74 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 13 + size: 138, 112 + orig: 138, 112 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 142, 13 + size: 36, 51 + orig: 36, 51 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 247, 51 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye10 + rotate: false + xy: 893, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye10 + rotate: false + xy: 893, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 235, 28 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 711, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 737, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 763, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 789, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 815, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye8 + rotate: false + xy: 841, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 867, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 621, 98 + size: 27, 43 + orig: 27, 43 + offset: 0, 0 + index: -1 +l_leg_back + rotate: true + xy: 621, 98 + size: 27, 43 + orig: 27, 43 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 919, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 945, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 971, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 285, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 327, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 369, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 411, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 453, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 495, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 537, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 579, 85 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 235, 6 + size: 24, 20 + orig: 24, 20 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 247, 74 + size: 36, 51 + orig: 36, 51 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 997, 104 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 621, 75 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 647, 75 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 673, 76 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye5 + rotate: true + xy: 261, 25 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 273, 51 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 261, 2 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye8 + rotate: true + xy: 284, 25 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 287, 2 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 666, 99 + size: 26, 43 + orig: 26, 43 + offset: 0, 0 + index: -1 +r_leg_back + rotate: true + xy: 666, 99 + size: 26, 43 + orig: 26, 43 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 299, 62 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 325, 62 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 351, 62 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/KUKU.json b/m78-all/m78-fe/public/images/character/KUKU.json new file mode 100644 index 000000000..eaf3b206a --- /dev/null +++ b/m78-all/m78-fe/public/images/character/KUKU.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"M2qvO9dGv0k2e+P0J/cnGSMV0R0","spine":"2.1.27","width":138.04,"height":138.14,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":0.25,"y":-0.64,"rotation":89.09},{"name":"eff_sad1","parent":"root","length":14.33,"x":-17.95,"y":43.26,"rotation":-90},{"name":"eff_sad2","parent":"root","length":18.48,"x":19.53,"y":44.78,"rotation":-91.91},{"name":"l_leg","parent":"root","length":18.54,"x":25.83,"y":24.11,"rotation":-88.97},{"name":"r_leg","parent":"root","length":16.44,"x":-27.11,"y":22.13,"rotation":-90.02},{"name":"bell","parent":"body","length":10.16,"x":28.13,"y":-0.07,"rotation":178.74},{"name":"head","parent":"body","length":71.16,"x":28.23,"y":-0.02,"rotation":1.28},{"name":"l_foot","parent":"body","length":15.09,"x":35.13,"y":-42.14,"rotation":162.23},{"name":"r_foot","parent":"body","length":15.01,"x":30.96,"y":42.43,"rotation":-164.61},{"name":"l_ear","parent":"head","length":31.16,"x":44.01,"y":-32.46,"rotation":-137.25},{"name":"mouse","parent":"head","length":5.16,"x":8.31,"y":0.13,"rotation":1.24},{"name":"nose","parent":"head","length":7,"x":14.94,"y":0.27,"rotation":0.9},{"name":"r_ear","parent":"head","length":28.85,"x":44.33,"y":33.99,"rotation":138.79}],"slots":[{"name":"r_foot","bone":"r_foot","attachment":"r_leg_back"},{"name":"l_foot","bone":"l_foot","attachment":"l_leg_back"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body","bone":"body","attachment":"body"},{"name":"bell","bone":"bell","attachment":"bell"},{"name":"head","bone":"head","attachment":"head"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"mouth","bone":"mouse","attachment":"mouth1"}],"skins":{"default":{"bell":{"bell":{"x":9.98,"y":-0.11,"rotation":92.15,"width":36,"height":38}},"body":{"body":{"x":39.48,"y":2.05,"rotation":-89.09,"width":103,"height":74}},"head":{"head":{"x":53.06,"y":1.52,"rotation":-90.38,"width":138,"height":112}},"l_ear":{"l_ear":{"x":5.05,"y":5.52,"rotation":46.86,"width":36,"height":51}},"l_eye":{"l_eye1":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye2":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye3":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye4":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye5":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye6":{"x":24.59,"y":-16.24,"rotation":-90.38,"width":24,"height":21},"l_eye7":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye8":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_eye9":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_sadeye1":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_sadeye2":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21},"l_sadeye3":{"x":24.57,"y":-19.15,"rotation":-90.38,"width":24,"height":21}},"l_foot":{"l_leg_back":{"x":5.75,"y":-6.5,"rotation":104.5,"width":27,"height":43}},"l_leg1":{"l_leg":{"x":3.86,"y":-1.39,"rotation":88.97,"width":27,"height":43}},"mouth":{"mouth1":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth2":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth3":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth4":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth5":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth6":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth7":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40},"mouth8":{"x":5.39,"y":-0.28,"rotation":-91.37,"width":40,"height":40}},"nose":{"nose":{"x":3.48,"y":-0.13,"rotation":-91.29,"width":24,"height":20}},"r_ear":{"r_ear":{"x":4.4,"y":-5.72,"rotation":130.82,"width":36,"height":51}},"r_eye":{"r_eye1":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye2":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye3":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye4":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye5":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye6":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye7":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye8":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_eye9":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_sadeye1":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_sadeye2":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21},"r_sadeye3":{"x":23.7,"y":18.81,"rotation":-90.38,"width":24,"height":21}},"r_foot":{"r_leg_back":{"x":3.74,"y":7.38,"rotation":75.51,"width":26,"height":43}},"r_leg":{"r_leg":{"x":1.95,"y":2.91,"rotation":90.02,"width":26,"height":43}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.3333,"name":"mouth4"},{"time":0.6666,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.12,"y":0.05},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":12.38},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.3},{"time":0.6666,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.95,"y":0},{"time":0.6666,"x":0,"y":0}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.15},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.92,"y":0.74},{"time":0.6666,"x":0,"y":0}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth4"},{"time":0.3333,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":0.6666,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"}]}},"bones":{"body":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.16,"y":10.12},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.145,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-29.95},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-3.37,"y":12.88},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":21.2},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.26,"y":0},{"time":0.3333,"x":0.93,"y":14.1},{"time":0.6666,"x":-1.26,"y":0}]},"l_foot":{"rotate":[{"time":0,"angle":1.42},{"time":0.3333,"angle":-11.05},{"time":0.6666,"angle":1.42}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-2.08,"y":1.98},{"time":0.6666,"x":0,"y":0}]},"head":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":25.15},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-31.4},{"time":0.6666,"angle":0}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.84,"y":0},{"time":0.6666,"x":0,"y":0}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.42},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.57,"y":1.26},{"time":0.6666,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.2},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.03,"y":2.35},{"time":0.6666,"x":0,"y":0}]}}},"hypnosis":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.908,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.78},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.107,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.3333,"angle":8.11},{"time":0.6666,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.3333,"angle":-10.13},{"time":0.6666,"angle":-2.54}]},"mouse":{"translate":[{"time":0,"x":-1.33,"y":-0.02}]},"nose":{"translate":[{"time":0,"x":1.36,"y":-0.02}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-352.47},{"time":0.6666,"angle":0}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye4"},{"time":1,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye4"},{"time":1,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-10.04},{"time":0.5,"angle":0},{"time":0.6666,"angle":8.86},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.074,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":1.074,"y":1.017},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":27.08},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":-0.35,"y":4.61},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-33.65},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-2.83,"y":5.99},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":0.3},{"time":0.5,"angle":0},{"time":0.6666,"angle":-0.91},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.018,"y":1},{"time":0.5,"x":0.935,"y":1},{"time":0.6666,"x":1.024,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":28.53},{"time":1,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-16.81},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.04,"y":0},{"time":0.6666,"x":0,"y":0}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-24.81},{"time":0.5,"angle":0},{"time":0.6666,"angle":-341.75},{"time":1,"angle":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":330.65},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"l_foot":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":14.79},{"time":1,"angle":0}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4666,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6666,"name":"l_sadeye2"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"},{"time":0.3333,"name":"mouth8"},{"time":0.6666,"name":"mouth8"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4666,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6666,"name":"r_sadeye2"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.996,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.75},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.957,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.56},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.961,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":-1.4}],"translate":[{"time":0,"x":-0.4,"y":-0.77}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.067,"y":1},{"time":0.6666,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":-3.22,"y":-0.17},{"time":0.3333,"x":-1.51,"y":-0.13},{"time":0.6666,"x":-3.22,"y":-0.17}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.7,"y":0.02},{"time":0.6666,"x":0,"y":0}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-348.56},{"time":0.3333,"angle":0},{"time":0.5,"angle":-12.99},{"time":0.6666,"angle":0}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.8333,"name":"l_eye2"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6666,"name":"mouth1"},{"time":0.8333,"name":"mouth2"},{"time":1,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.8333,"name":"r_eye2"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.019,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":1.08},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.59},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":0.73},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":0.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.69},{"time":0.6666,"angle":0},{"time":1,"angle":3.58},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-0.85},{"time":0.6666,"angle":0},{"time":1,"angle":-2},{"time":1.3333,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.1},{"time":0.6666,"angle":0},{"time":1,"angle":4.79},{"time":1.3333,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":1.5,"y":-0.02},{"time":1,"x":0.03,"y":0.13},{"time":1.3333,"x":0,"y":0}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-354.71},{"time":0.6666,"angle":0},{"time":1,"angle":-3.77},{"time":1.3333,"angle":0}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.971,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0}]},"l_foot":{"translate":[{"time":0,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":1.81,"y":0.03},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.111,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"mouse":{"translate":[{"time":0,"x":-1.27,"y":-0.02}]},"nose":{"translate":[{"time":0,"x":1.5,"y":-0.09},{"time":0.3333,"x":1.04,"y":-0.01},{"time":0.6666,"x":1.03,"y":-0.01},{"time":1,"x":1.5,"y":-0.09}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-350.32},{"time":0.5,"angle":0},{"time":0.8333,"angle":-11.97},{"time":1,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]},"r_foot":{"translate":[{"time":0,"x":0,"y":0}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye9"},{"time":0.3333,"name":"l_eye3"},{"time":0.5,"name":"l_eye9"},{"time":1,"name":"l_eye9"}]},"mouth":{"attachment":[{"time":0,"name":"mouth6"},{"time":0.1666,"name":"mouth7"},{"time":0.3333,"name":"mouth6"},{"time":0.5,"name":"mouth7"},{"time":0.6666,"name":"mouth6"},{"time":0.8333,"name":"mouth7"},{"time":1,"name":"mouth6"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye9"},{"time":0.3333,"name":"r_eye3"},{"time":0.5,"name":"r_eye9"},{"time":1,"name":"r_eye9"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.04,"y":1},{"time":1,"x":1,"y":1}]},"head":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":0.95},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":-7.67},{"time":1,"angle":-2.54}]},"nose":{"translate":[{"time":0,"x":2.85,"y":0,"curve":"stepped"},{"time":0.1333,"x":2.85,"y":0},{"time":0.1666,"x":4.11,"y":0.02,"curve":"stepped"},{"time":0.3,"x":4.11,"y":0.02},{"time":0.3333,"x":2.85,"y":0,"curve":"stepped"},{"time":0.4666,"x":2.85,"y":0},{"time":0.5,"x":4.11,"y":0.02,"curve":"stepped"},{"time":0.6333,"x":4.11,"y":0.02},{"time":0.6666,"x":2.85,"y":0,"curve":"stepped"},{"time":0.8,"x":2.85,"y":0},{"time":0.8333,"x":4.11,"y":0.02,"curve":"stepped"},{"time":0.9666,"x":4.11,"y":0.02},{"time":1,"x":2.85,"y":0}]},"bell":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.88},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/KUKU.png b/m78-all/m78-fe/public/images/character/KUKU.png new file mode 100644 index 000000000..5c0c53580 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/KUKU.png differ diff --git a/m78-all/m78-fe/public/images/character/ROBIN.atlas b/m78-all/m78-fe/public/images/character/ROBIN.atlas new file mode 100644 index 000000000..4cf832be8 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/ROBIN.atlas @@ -0,0 +1,293 @@ + +ROBIN.png +size: 512,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 96, 66 + size: 52, 60 + orig: 52, 60 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 46 + size: 92, 80 + orig: 92, 80 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 185, 81 + size: 37, 45 + orig: 37, 45 + offset: 0, 0 + index: -1 +l_ear2 + rotate: true + xy: 2, 10 + size: 34, 58 + orig: 34, 58 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 142, 9 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye10 + rotate: true + xy: 259, 55 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 398, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 424, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 450, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 476, 66 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 398, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 424, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye8 + rotate: false + xy: 450, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 476, 43 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 263, 82 + size: 25, 44 + orig: 25, 44 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: true + xy: 62, 10 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 134, 32 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 223, 47 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 290, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 328, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 366, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 404, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 442, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 96, 32 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 185, 47 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 480, 89 + size: 37, 27 + orig: 37, 27 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 224, 81 + size: 37, 45 + orig: 37, 45 + offset: 0, 0 + index: -1 +r_ear2 + rotate: false + xy: 150, 68 + size: 33, 58 + orig: 33, 58 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 259, 32 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 285, 35 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 311, 35 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 337, 35 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 363, 35 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 389, 25 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 415, 25 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye8 + rotate: false + xy: 441, 25 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 168, 2 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 96, 7 + size: 23, 44 + orig: 23, 44 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 290, 58 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 326, 58 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 362, 58 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/ROBIN.json b/m78-all/m78-fe/public/images/character/ROBIN.json new file mode 100644 index 000000000..2b06a69a2 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/ROBIN.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"xMdqoko9Ztp0frGNKFwQhPwjz6M","spine":"2.1.27","width":94.24,"height":142.48,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":0.25,"y":-0.64,"rotation":89.09},{"name":"eff_sad1","parent":"root","length":11.84,"x":-18.86,"y":56.18,"rotation":-87.74},{"name":"eff_sad2","parent":"root","length":12.91,"x":19.43,"y":56.78,"rotation":-93.15},{"name":"l_leg","parent":"root","length":18.54,"x":6.71,"y":18.31,"rotation":-88.97},{"name":"r_leg","parent":"root","length":16.44,"x":-10.58,"y":16.05,"rotation":-90.02},{"name":"head","parent":"body","length":71.16,"x":32.56,"y":1.12,"rotation":1.28},{"name":"l_ear","parent":"head","length":31.16,"x":67.1,"y":-20.6,"rotation":-29.52},{"name":"mouse","parent":"head","length":5.16,"x":15.15,"y":-0.02,"rotation":0.99},{"name":"nose","parent":"head","length":7,"x":16.42,"y":-1.34,"rotation":0.9},{"name":"r_ear","parent":"head","length":28.85,"x":69.47,"y":17.55,"rotation":37.19}],"slots":[{"name":"body","bone":"body","attachment":"body"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"head","bone":"head","attachment":"head"},{"name":"nose","bone":"head"},{"name":"nose2","bone":"nose","attachment":"nose"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"mouth","bone":"mouse","attachment":"mouth1"}],"skins":{"default":{"body":{"body":{"x":30.59,"y":0.19,"rotation":-89.09,"width":52,"height":60}},"head":{"head":{"x":36.85,"y":-0.95,"rotation":-90.38,"width":92,"height":80}},"l_ear":{"l_ear":{"x":21.86,"y":1.98,"rotation":-60.86,"width":37,"height":45},"l_ear2":{"x":-7.8,"y":-14.4,"rotation":-60.86,"width":34,"height":58}},"l_eye":{"l_eye1":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye2":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye3":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye4":{"x":32.83,"y":-19.91,"rotation":-90.38,"width":24,"height":21},"l_eye5":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye6":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye7":{"x":35.27,"y":-19.92,"rotation":-90.38,"width":24,"height":21},"l_eye8":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye9":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_eye10":{"x":29.27,"y":-19.88,"rotation":-90.38,"width":24,"height":21},"l_sadeye1":{"x":30.83,"y":-22.43,"rotation":-90.38,"width":34,"height":32},"l_sadeye2":{"x":30.2,"y":-23.36,"rotation":-90.38,"width":34,"height":32},"l_sadeye3":{"x":30.83,"y":-23.36,"rotation":-90.38,"width":34,"height":32}},"l_leg1":{"l_leg":{"x":-3.43,"y":5.58,"rotation":88.97,"width":25,"height":44}},"mouth":{"mouth1":{"x":-5.68,"rotation":-91.37,"width":36,"height":32},"mouth2":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth3":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth4":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth5":{"x":-9.53,"y":-0.41,"rotation":-91.37,"width":36,"height":32},"mouth6":{"x":-6.3,"y":-0.43,"rotation":-91.37,"width":36,"height":32},"mouth7":{"x":-6.29,"y":-0.12,"rotation":-91.37,"width":36,"height":32}},"nose2":{"nose":{"x":0.42,"rotation":-91.29,"width":37,"height":27}},"r_ear":{"r_ear":{"x":20.88,"y":-3.26,"rotation":-127.57,"width":37,"height":45},"r_ear2":{"x":-10.28,"y":16.78,"rotation":-127.57,"width":33,"height":58}},"r_eye":{"r_eye1":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_eye2":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_eye3":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_eye4":{"x":33.53,"y":17.72,"rotation":-90.38,"width":24,"height":21},"r_eye5":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_eye6":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_eye7":{"x":34.77,"y":17.71,"rotation":-90.38,"width":24,"height":21},"r_eye8":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_eye9":{"x":29.52,"y":17.75,"rotation":-90.38,"width":24,"height":21},"r_sadeye1":{"x":29.52,"y":17.75,"rotation":-90.38,"width":34,"height":34},"r_sadeye2":{"x":29.52,"y":17.75,"rotation":-90.38,"width":34,"height":34},"r_sadeye3":{"x":29.52,"y":17.75,"rotation":-90.38,"width":34,"height":34}},"r_leg":{"r_leg":{"x":-6.2,"y":-0.83,"rotation":90.02,"width":23,"height":44}}}},"animations":{"action":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye2"},{"time":0.3333,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.3333,"name":"mouth1"},{"time":0.5,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye2"},{"time":0.3333,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.964,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":5.83,"y":0.11},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.16},{"time":0.5,"angle":4.86},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":8.99},{"time":0.5,"angle":-5.75},{"time":0.6666,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":2.95,"y":0},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]}}},"happy":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth3"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.6666,"name":"mouth2"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.057,"y":1.017},{"time":0.3333,"x":1.145,"y":1},{"time":0.5,"x":1.113,"y":1.021},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":41.56},{"time":0.2,"angle":-2.37},{"time":0.3,"angle":41.56},{"time":0.4,"angle":-2.37},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1,"x":11.09,"y":8.5},{"time":0.2,"x":0.04,"y":3.84},{"time":0.3,"x":11.09,"y":8.5},{"time":0.4,"x":0.04,"y":3.84},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-40.67},{"time":0.2,"angle":6.3},{"time":0.3,"angle":-40.67},{"time":0.4,"angle":6.3},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.26,"y":0},{"time":0.1,"x":-16.49,"y":9.28},{"time":0.2,"x":0.41,"y":3.96},{"time":0.3,"x":-16.49,"y":9.28},{"time":0.4,"x":0.41,"y":3.96},{"time":0.6666,"x":-1.26,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.51},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.99,"y":-0.49},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.995,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":36.98},{"time":0.1666,"angle":-39.82},{"time":0.3333,"angle":-2.51},{"time":0.5,"angle":-24.19},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":3.55},{"time":0.1666,"x":-1.35,"y":0.61}],"scale":[{"time":0,"x":0.842,"y":1},{"time":0.1666,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":-38.31},{"time":0.1666,"angle":45.33},{"time":0.3333,"angle":0},{"time":0.5,"angle":18.6},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-0.47,"y":-3.1},{"time":0.1666,"x":-1.5,"y":4.45}],"scale":[{"time":0,"x":0.828,"y":1},{"time":0.1666,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.9,"y":0.09},{"time":0.6666,"x":0,"y":0}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":5.19,"y":0.02},{"time":0.6666,"x":0,"y":0}]}}},"hypnosis":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.96,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":4.6},{"time":0.5,"angle":0},{"time":0.6666,"angle":-5.92},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.05,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":-37.83},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":41.11},{"time":1,"angle":-2.54}]},"nose":{"translate":[{"time":0,"x":2.85,"y":0}]}}},"joy":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.8333,"name":"mouth1"},{"time":1,"name":"mouth1"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.074,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":1.074,"y":1.017},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":48.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":13.82,"y":7.37},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-38.66},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-10.65,"y":8.32},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-13.11},{"time":0.5,"angle":0},{"time":0.6666,"angle":3.09},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.018,"y":1},{"time":0.5,"x":0.935,"y":1},{"time":0.6666,"x":1.024,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":31.82},{"time":0.5,"angle":0},{"time":0.6666,"angle":41.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-1.69,"y":0.63},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":0.2,"y":3.6},{"time":1,"x":0,"y":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-46.2},{"time":0.5,"angle":0},{"time":0.6666,"angle":-46.2},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.58,"y":-3.68},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":-0.58,"y":-3.68},{"time":1,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.04,"y":0},{"time":0.6666,"x":0,"y":0}]}}},"sad":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear2"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4666,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6666,"name":"l_sadeye2"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.6666,"name":"mouth7"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4666,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6666,"name":"r_sadeye2"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.878,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.75},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.957,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.56},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.961,"y":1},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":16.35},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-12.12,"y":-0.27}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":38.48},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.79,"y":-0.36},{"time":0.3333,"x":0.54,"y":0.64},{"time":0.6666,"x":-1.79,"y":-0.36}],"scale":[{"time":0,"x":0.902,"y":0.902}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-32.22},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.51,"y":1.18},{"time":0.3333,"x":1.86,"y":-0.84},{"time":0.6666,"x":-1.51,"y":1.18}],"scale":[{"time":0,"x":0.902,"y":0.902}]},"mouse":{"translate":[{"time":0,"x":0.1,"y":-0.09},{"time":0.3333,"x":3.05,"y":-0.09},{"time":0.6666,"x":0.1,"y":-0.09}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.93,"y":0},{"time":0.6666,"x":0,"y":0}]},"eff_sad1":{"translate":[{"time":0,"x":0.78,"y":-20.01}]},"eff_sad2":{"translate":[{"time":0,"x":-1.08,"y":-19.83}]}}},"stand":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.8333,"name":"l_eye2"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6666,"name":"mouth1"},{"time":0.7333,"name":"mouth2"},{"time":1,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.8333,"name":"r_eye2"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.057,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.113,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":1.08},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.59},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":0.73},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":0.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.67},{"time":0.6666,"angle":0},{"time":1,"angle":15.43},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.6666,"x":0.942,"y":1},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-28.46},{"time":0.6666,"angle":0},{"time":1,"angle":-28.46},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":14.05},{"time":0.6666,"angle":0},{"time":1,"angle":31.98},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":2.98,"y":0},{"time":1,"x":0.03,"y":0.13},{"time":1.3333,"x":0,"y":0}]}}},"surprised":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye5"},{"time":0.3333,"name":"l_eye2"},{"time":0.5,"name":"l_eye5"},{"time":0.8333,"name":"l_eye2"},{"time":1,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"},{"time":0.3333,"name":"r_eye2"},{"time":0.5,"name":"r_eye5"},{"time":0.8333,"name":"r_eye2"},{"time":1,"name":"r_eye5"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.956,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":12.33}],"translate":[{"time":0,"x":5.5,"y":-2.99}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-12.15}],"translate":[{"time":0,"x":-6.88,"y":-1.22}],"scale":[{"time":0,"x":1,"y":1}]},"head":{"translate":[{"time":0,"x":-3.23,"y":-0.07},{"time":0.5,"x":-9.19,"y":-0.2},{"time":1,"x":-3.23,"y":-0.07}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.954,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":18.7},{"time":0.3333,"angle":-24.91},{"time":0.5,"angle":18.7},{"time":0.8333,"angle":-24.38},{"time":1,"angle":18.7}],"translate":[{"time":0,"x":3.81,"y":7.51},{"time":0.3333,"x":-1.64,"y":-0.93},{"time":0.5,"x":3.81,"y":7.51},{"time":0.8333,"x":-2.46,"y":-1.77},{"time":1,"x":3.81,"y":7.51}]},"r_ear":{"rotate":[{"time":0,"angle":-15.21},{"time":0.3333,"angle":21.52},{"time":0.5,"angle":-15.21},{"time":0.8333,"angle":21.52},{"time":1,"angle":-15.21}],"translate":[{"time":0,"x":2.84,"y":-8.92},{"time":0.3333,"x":-1.57,"y":2.12},{"time":0.5,"x":2.84,"y":-8.92},{"time":0.8333,"x":-1.57,"y":2.12},{"time":1,"x":2.84,"y":-8.92}]},"mouse":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.8,"y":0.02},{"time":0.5,"x":0,"y":0},{"time":0.8333,"x":3.8,"y":0.06},{"time":1,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":2.08,"y":-0.08},{"time":0.1666,"x":5.01,"y":-0.04},{"time":0.5,"x":2.08,"y":-0.08},{"time":0.8333,"x":5.29,"y":-0.03},{"time":1,"x":2.08,"y":-0.08}]}}},"uneasy":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.3333,"name":"l_eye2"},{"time":0.5,"name":"l_eye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth6"},{"time":0.1666,"name":"mouth7"},{"time":0.3333,"name":"mouth6"},{"time":0.5,"name":"mouth7"},{"time":0.6666,"name":"mouth6"},{"time":0.8333,"name":"mouth7"},{"time":1,"name":"mouth6"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.3333,"name":"r_eye2"},{"time":0.5,"name":"r_eye3"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.63},{"time":0.6666,"angle":17.14},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":-37.83},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":41.11},{"time":1,"angle":-2.54}]},"nose":{"translate":[{"time":0,"x":2.85,"y":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/ROBIN.png b/m78-all/m78-fe/public/images/character/ROBIN.png new file mode 100644 index 000000000..da25f8ad9 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/ROBIN.png differ diff --git a/m78-all/m78-fe/public/images/character/TOTO.atlas b/m78-all/m78-fe/public/images/character/TOTO.atlas new file mode 100644 index 000000000..df86a365d --- /dev/null +++ b/m78-all/m78-fe/public/images/character/TOTO.atlas @@ -0,0 +1,293 @@ + +TOTO.png +size: 512,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 107, 60 + size: 60, 66 + orig: 60, 66 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 38 + size: 103, 88 + orig: 103, 88 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 169, 64 + size: 46, 62 + orig: 46, 62 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 169, 7 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye10 + rotate: false + xy: 348, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 195, 7 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 221, 7 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 245, 36 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 271, 36 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 247, 13 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 273, 13 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye8 + rotate: true + xy: 299, 67 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 322, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 374, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 40, 10 + size: 26, 51 + orig: 26, 51 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 301, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth10 + rotate: false + xy: 207, 30 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 339, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 377, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 415, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 453, 94 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 93, 4 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 131, 4 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 261, 59 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth9 + rotate: false + xy: 169, 30 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 491, 99 + size: 27, 18 + orig: 27, 18 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 217, 69 + size: 42, 57 + orig: 42, 57 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 400, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 426, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 452, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 478, 71 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 299, 44 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 325, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 351, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye8 + rotate: false + xy: 377, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 403, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 429, 48 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 107, 38 + size: 20, 51 + orig: 20, 51 + offset: 0, 0 + index: -1 +skarf1 + rotate: false + xy: 261, 93 + size: 38, 33 + orig: 38, 33 + offset: 0, 0 + index: -1 +skarf2 + rotate: false + xy: 455, 54 + size: 24, 15 + orig: 24, 15 + offset: 0, 0 + index: -1 +tail + rotate: true + xy: 2, 2 + size: 34, 36 + orig: 34, 36 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/TOTO.json b/m78-all/m78-fe/public/images/character/TOTO.json new file mode 100644 index 000000000..f55387b5b --- /dev/null +++ b/m78-all/m78-fe/public/images/character/TOTO.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"HEdzdHDKvuCtTPQOkUjpW4GhIcc","spine":"2.1.27","width":106.82,"height":146.21,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":0.25,"y":-0.64,"rotation":89.09},{"name":"eff_sad1","parent":"root","length":7.41,"x":-22.73,"y":75.27,"rotation":-89.54},{"name":"eff_sad2","parent":"root","length":7.29,"x":8.26,"y":75.51,"rotation":-91.35},{"name":"l_leg","parent":"root","length":18.54,"x":-2.29,"y":17.52,"rotation":-88.97},{"name":"r_leg","parent":"root","length":16.44,"x":-13.43,"y":16.05,"rotation":-90.02},{"name":"head","parent":"body","length":71.16,"x":41.13,"y":7.38,"rotation":1.28},{"name":"skaf","parent":"body","length":10.16,"x":33.99,"y":6.95,"rotation":180},{"name":"skaf2","parent":"body","length":8.17,"x":38.72,"y":-18.32,"rotation":-69.29},{"name":"tail","parent":"body","length":15.09,"x":7.82,"y":-21.67,"rotation":-49.9},{"name":"l_ear","parent":"head","length":31.16,"x":57.19,"y":-23.73,"rotation":2.24},{"name":"l_eyebrow","parent":"head","length":7.02,"x":47.34,"y":-11.13,"rotation":-75.85},{"name":"mouse","parent":"head","length":5.16,"x":24.23,"y":0.12,"rotation":0.99},{"name":"nose","parent":"head","length":7,"x":33.52,"y":-0.19,"rotation":0.9},{"name":"r_ear","parent":"head","length":28.85,"x":56.89,"y":22.2,"rotation":-0.43},{"name":"r_eyebrow","parent":"head","length":7.92,"x":48.16,"y":10.75,"rotation":77.9}],"slots":[{"name":"tail","bone":"tail","attachment":"tail"},{"name":"skarf2","bone":"skaf2","attachment":"skarf2"},{"name":"body","bone":"body","attachment":"body"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"skarf1","bone":"skaf","attachment":"skarf1"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"head","bone":"head","attachment":"head"},{"name":"nose","bone":"head"},{"name":"nose2","bone":"nose","attachment":"nose"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"mouth","bone":"mouse","attachment":"mouth1"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"}],"skins":{"default":{"body":{"body":{"x":30.07,"y":2.87,"rotation":-89.09,"width":60,"height":66}},"head":{"head":{"x":35.27,"y":0.2,"rotation":-90.38,"width":103,"height":88}},"l_ear":{"l_ear":{"x":12.87,"y":1.07,"rotation":-92.62,"width":46,"height":62}},"l_eye":{"l_eye1":{"x":37.41,"y":-15.43,"rotation":-90.38,"width":24,"height":21},"l_eye2":{"x":37.41,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye3":{"x":37.41,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye4":{"x":42.96,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye5":{"x":41.99,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye6":{"x":37.41,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye7":{"x":37.41,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye8":{"x":42.17,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye9":{"x":37.41,"y":-15.44,"rotation":-90.38,"width":24,"height":21},"l_eye10":{"x":37.41,"y":-15.44,"rotation":-90.38,"width":24,"height":21}},"l_eyebrow":{"l_eyebrow":{"x":1.91,"y":1.45,"rotation":-14.52,"width":24,"height":21}},"l_leg1":{"l_leg":{"x":-3.43,"y":5.58,"rotation":88.97,"width":26,"height":51}},"mouth":{"mouth1":{"x":-5.68,"rotation":-91.37,"width":36,"height":32},"mouth2":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth3":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth4":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth5":{"x":-5.87,"y":0.7,"rotation":-91.37,"width":36,"height":32},"mouth6":{"x":-6.27,"y":0.81,"rotation":-91.37,"width":36,"height":32},"mouth7":{"x":-3.1,"y":-0.66,"rotation":-91.37,"width":36,"height":32},"mouth8":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth9":{"x":-5.69,"rotation":-91.37,"width":36,"height":32},"mouth10":{"x":-3.2,"y":0.51,"rotation":-91.37,"width":36,"height":32}},"nose2":{"nose":{"x":0.42,"rotation":-91.29,"width":27,"height":18}},"r_ear":{"r_ear":{"x":14.41,"y":-1.63,"rotation":-89.94,"width":42,"height":57}},"r_eye":{"r_eye1":{"x":37.61,"y":16.07,"rotation":-90.38,"width":24,"height":21},"r_eye2":{"x":37.61,"y":16.07,"rotation":-90.38,"width":24,"height":21},"r_eye3":{"x":37.61,"y":16.07,"rotation":-90.38,"width":24,"height":21},"r_eye4":{"x":42.82,"y":14.74,"rotation":-90.38,"width":24,"height":21},"r_eye5":{"x":41.74,"y":16,"rotation":-90.38,"width":24,"height":21},"r_eye6":{"x":37.62,"y":16,"rotation":-90.38,"width":24,"height":21},"r_eye7":{"x":37.62,"y":16,"rotation":-90.38,"width":24,"height":21},"r_eye8":{"x":42.55,"y":16,"rotation":-90.38,"width":24,"height":21},"r_eye9":{"x":37.62,"y":16,"rotation":-90.38,"width":24,"height":21}},"r_eyebrow":{"r_eyebrow":{"x":1.93,"y":-0.01,"rotation":-168.29,"width":24,"height":21}},"r_leg":{"r_leg":{"x":-6.2,"y":-0.83,"rotation":90.02,"width":20,"height":51}},"skarf1":{"skarf1":{"x":-3.57,"y":2.15,"rotation":90.9,"width":38,"height":33}},"skarf2":{"skarf2":{"x":0.67,"y":1.11,"rotation":-19.8,"width":24,"height":15}},"tail":{"tail":{"x":14.41,"y":6.56,"rotation":-31.27,"width":34,"height":36}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye2"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1,"name":"mouth2"},{"time":0.1666,"name":"mouth3"},{"time":0.2666,"name":"mouth2"},{"time":0.3333,"name":"mouth1"},{"time":0.4333,"name":"mouth2"},{"time":0.5,"name":"mouth3"},{"time":0.6,"name":"mouth2"},{"time":0.6666,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye2"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.964,"y":1},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":32.99},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.12,"y":0.05},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.16},{"time":0.5,"angle":4.86},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":8.99},{"time":0.5,"angle":-5.75},{"time":0.6666,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":2.95,"y":0},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"skaf":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.62},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.4,"y":-1.06},{"time":0.6666,"x":0,"y":0}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth4"},{"time":0.3333,"name":"mouth2"},{"time":0.5,"name":"mouth4"},{"time":0.6666,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.057,"y":1.017},{"time":0.3333,"x":1.145,"y":1},{"time":0.5,"x":1.113,"y":1.021},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":41.56},{"time":0.2,"angle":-2.37},{"time":0.3,"angle":41.56},{"time":0.4,"angle":-2.37},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1,"x":11.09,"y":8.5},{"time":0.2,"x":0.04,"y":3.84},{"time":0.3,"x":11.09,"y":8.5},{"time":0.4,"x":0.04,"y":3.84},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1,"angle":-40.67},{"time":0.2,"angle":6.3},{"time":0.3,"angle":-40.67},{"time":0.4,"angle":6.3},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.26,"y":0},{"time":0.1,"x":-16.49,"y":9.28},{"time":0.2,"x":0.41,"y":3.96},{"time":0.3,"x":-16.49,"y":9.28},{"time":0.4,"x":0.41,"y":3.96},{"time":0.6666,"x":-1.26,"y":0}]},"tail":{"rotate":[{"time":0,"angle":-32.57},{"time":0.1666,"angle":22.64},{"time":0.3333,"angle":-37.67},{"time":0.5,"angle":22.64},{"time":0.6666,"angle":-32.57}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.62},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.53,"y":0},{"time":0.6666,"x":0,"y":0}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-5.63},{"time":0.3333,"angle":0},{"time":0.5,"angle":7.85},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":5.39},{"time":0.3333,"angle":0},{"time":0.5,"angle":-8.14},{"time":0.6666,"angle":0}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.84,"y":0},{"time":0.6666,"x":0,"y":0}]},"r_eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":7.86,"y":0},{"time":0.6666,"x":0,"y":0}]},"l_eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":8.4,"y":0},{"time":0.6666,"x":0,"y":0}]},"skaf":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.42},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":5.29,"y":0},{"time":0.6666,"x":0,"y":0}]},"skaf2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-29.08},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.02,"y":3.7},{"time":0.6666,"x":0,"y":0}]}}},"hypnosis":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.89},{"time":1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.78},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":-15.71},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":17.82},{"time":1,"angle":-2.54}],"translate":[{"time":0,"x":2.72,"y":-1.18}],"scale":[{"time":0,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":42.89}],"translate":[{"time":0,"x":3.33,"y":-0.06}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-40.68}],"translate":[{"time":0,"x":2.85,"y":0}]},"nose":{"translate":[{"time":0,"x":-0.9,"y":-0.05}]},"skaf":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.88},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.074,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":1.074,"y":1.017},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.6666,"angle":48.25},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.6666,"x":13.82,"y":7.37},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-38.66},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-10.65,"y":8.32},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"tail":{"rotate":[{"time":0,"angle":-22.26},{"time":0.1666,"angle":0.32},{"time":0.5,"angle":-22.26},{"time":0.6666,"angle":0.32},{"time":1,"angle":-22.26}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-13.11},{"time":0.5,"angle":0},{"time":0.6666,"angle":3.09},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.018,"y":1},{"time":0.5,"x":0.935,"y":1},{"time":0.6666,"x":1.024,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.39},{"time":0.5,"angle":0},{"time":0.6666,"angle":1.81},{"time":1,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.26},{"time":0.5,"angle":0},{"time":0.6666,"angle":6.31},{"time":1,"angle":0}]},"r_eyebrow":{"translate":[{"time":0,"x":6.8,"y":0,"curve":"stepped"},{"time":0.3333,"x":6.8,"y":0},{"time":0.5,"x":0.98,"y":0},{"time":0.6666,"x":6.8,"y":0}]},"l_eyebrow":{"translate":[{"time":0,"x":7.17,"y":0,"curve":"stepped"},{"time":0.3333,"x":7.17,"y":0},{"time":0.5,"x":2.38,"y":0},{"time":0.6666,"x":7.17,"y":0}]},"skaf2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-21.58},{"time":1,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.04,"y":0},{"time":0.6666,"x":0,"y":0}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye8"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"},{"time":0.3333,"name":"mouth10"},{"time":0.6666,"name":"mouth7"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye8"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.878,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.75},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.957,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.56},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.961,"y":1},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":-28.61},{"time":0.3333,"angle":-34.07},{"time":0.6666,"angle":-28.61}],"translate":[{"time":0,"x":-0.14,"y":9.33,"curve":"stepped"},{"time":0.6666,"x":-0.14,"y":9.33}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":16.35},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-15.74},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.79,"y":-0.36},{"time":0.3333,"x":0.54,"y":0.64},{"time":0.6666,"x":-1.79,"y":-0.36}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":13.96},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.51,"y":1.18},{"time":0.3333,"x":1.86,"y":-0.84},{"time":0.6666,"x":-1.51,"y":1.18}]},"mouse":{"translate":[{"time":0,"x":0.1,"y":-0.09},{"time":0.3333,"x":3.05,"y":-0.09},{"time":0.6666,"x":0.1,"y":-0.09}]},"r_eyebrow":{"rotate":[{"time":0,"angle":43.61}],"translate":[{"time":0,"x":3.7,"y":3.28}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-40.06}],"translate":[{"time":0,"x":4.22,"y":-0.98}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":2.93,"y":0},{"time":0.6666,"x":0,"y":0}]},"skaf":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-348.56},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.95,"y":-0.26},{"time":0.6666,"x":0,"y":0}]},"skaf2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":30.92},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":5.7,"y":0.91},{"time":0.6666,"x":0,"y":0}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.8333,"name":"l_eye2"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6666,"name":"mouth1"},{"time":0.7333,"name":"mouth2"},{"time":1,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.8333,"name":"r_eye2"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.057,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.113,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":1.08},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.59},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":0.73},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":0.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":14.76},{"time":0.6666,"angle":0},{"time":1,"angle":-11.38},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.936,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.049,"y":1.066},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.67},{"time":0.6666,"angle":0},{"time":1,"angle":15.43},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.6666,"x":0.942,"y":1},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.02},{"time":0.6666,"angle":0},{"time":1,"angle":-4.33},{"time":1.3333,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.78},{"time":0.6666,"angle":0},{"time":1,"angle":10.45},{"time":1.3333,"angle":0}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":19.59},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-2.71,"y":0.58},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":-13.58},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-2.22,"y":0.13},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":2.98,"y":0},{"time":1,"x":0.03,"y":0.13},{"time":1.3333,"x":0,"y":0}]},"skaf2":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-32.19},{"time":0.6666,"angle":0},{"time":1,"angle":29.2},{"time":1.3333,"angle":0}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye5"},{"time":0.3333,"name":"l_eye2"},{"time":0.6666,"name":"l_eye5"},{"time":1,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth6"},{"time":0.3333,"name":"mouth5"},{"time":0.6666,"name":"mouth6"},{"time":1,"name":"mouth6"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"},{"time":0.3333,"name":"r_eye2"},{"time":0.6666,"name":"r_eye5"},{"time":1,"name":"r_eye5"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.89},{"time":1,"angle":0}]},"head":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.942,"y":1},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"scale":[{"time":0,"x":1,"y":1}]},"r_ear":{"scale":[{"time":0,"x":1,"y":1}]},"r_eyebrow":{"translate":[{"time":0,"x":5.93,"y":-0.25},{"time":0.3333,"x":-0.37,"y":-0.25,"curve":"stepped"},{"time":0.6333,"x":-0.37,"y":-0.25},{"time":0.6666,"x":5.93,"y":-0.25}]},"l_eyebrow":{"translate":[{"time":0,"x":7.18,"y":0},{"time":0.3333,"x":0.86,"y":0,"curve":"stepped"},{"time":0.6333,"x":0.86,"y":0},{"time":0.6666,"x":7.18,"y":0}]},"nose":{"translate":[{"time":0,"x":7.52,"y":0},{"time":0.3333,"x":1.99,"y":0,"curve":"stepped"},{"time":0.6333,"x":1.99,"y":0},{"time":0.6666,"x":7.52,"y":0}]},"skaf":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.88},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.3333,"name":"l_eye2"},{"time":0.5,"name":"l_eye3"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"},{"time":0.1666,"name":"mouth9"},{"time":0.3333,"name":"mouth8"},{"time":0.5,"name":"mouth9"},{"time":0.6666,"name":"mouth8"},{"time":0.8333,"name":"mouth9"},{"time":1,"name":"mouth6"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.3333,"name":"r_eye2"},{"time":0.5,"name":"r_eye3"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.89},{"time":1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":10.63},{"time":0.6666,"angle":17.14},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":-15.71},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":17.82},{"time":1,"angle":-2.54}],"translate":[{"time":0,"x":2.72,"y":-1.18}],"scale":[{"time":0,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":42.89,"curve":"stepped"},{"time":0.3333,"angle":42.89,"curve":"stepped"},{"time":0.5,"angle":42.89}],"translate":[{"time":0,"x":3.33,"y":-0.06},{"time":0.3333,"x":-0.63,"y":-0.06},{"time":0.5,"x":3.33,"y":-0.06}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-40.68,"curve":"stepped"},{"time":0.3333,"angle":-40.68,"curve":"stepped"},{"time":0.4666,"angle":-40.68}],"translate":[{"time":0,"x":2.85,"y":0},{"time":0.3333,"x":0.37,"y":0.48},{"time":0.4666,"x":2.85,"y":0}]},"nose":{"translate":[{"time":0,"x":2.85,"y":0}]},"skaf":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.88},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/TOTO.png b/m78-all/m78-fe/public/images/character/TOTO.png new file mode 100644 index 000000000..7d3038fa3 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/TOTO.png differ diff --git a/m78-all/m78-fe/public/images/character/WATSON.atlas b/m78-all/m78-fe/public/images/character/WATSON.atlas new file mode 100644 index 000000000..13be83b91 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/WATSON.atlas @@ -0,0 +1,349 @@ + +WATSON.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 107, 45 + size: 77, 81 + orig: 77, 81 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 30 + size: 103, 96 + orig: 103, 96 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 238, 79 + size: 47, 48 + orig: 47, 48 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 73, 7 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 73, 7 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 134, 22 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 160, 22 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 186, 26 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 212, 26 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 368, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 394, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye8 + rotate: false + xy: 420, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 446, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_eyebrow + rotate: false + xy: 472, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +l_foot + rotate: true + xy: 107, 24 + size: 19, 25 + orig: 19, 25 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 186, 49 + size: 28, 60 + orig: 28, 60 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 872, 94 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 908, 94 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 944, 94 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 368, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth10 + rotate: false + xy: 746, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth11 + rotate: false + xy: 788, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth12 + rotate: false + xy: 830, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 410, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 452, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 494, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 536, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 578, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 620, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 662, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +mouth9 + rotate: false + xy: 704, 96 + size: 40, 30 + orig: 40, 30 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 2, 7 + size: 47, 21 + orig: 47, 21 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 326, 86 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 186, 79 + size: 50, 47 + orig: 50, 47 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 498, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 524, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 550, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 576, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 602, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 628, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye8 + rotate: false + xy: 654, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 680, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_eyebrow + rotate: false + xy: 706, 73 + size: 24, 21 + orig: 24, 21 + offset: 0, 0 + index: -1 +r_foot + rotate: true + xy: 99, 2 + size: 20, 25 + orig: 20, 25 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 288, 79 + size: 36, 47 + orig: 36, 47 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 980, 92 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 248, 43 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 284, 43 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +tail + rotate: true + xy: 51, 2 + size: 26, 20 + orig: 26, 20 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/WATSON.json b/m78-all/m78-fe/public/images/character/WATSON.json new file mode 100644 index 000000000..e20112e79 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/WATSON.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"0zHeBUabyU952X+l8hpAd+7DSpQ","spine":"2.1.27","width":120.28,"height":147.36,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":0.25,"y":-0.64,"rotation":89.09},{"name":"l_leg","parent":"root","length":18.54,"x":19.15,"y":47.4,"rotation":-88.97},{"name":"r_leg","parent":"root","length":16.44,"x":-19.45,"y":43.52,"rotation":-90.02},{"name":"head","parent":"body","length":71.16,"x":41.25,"y":1.67,"rotation":1.28},{"name":"l_foot","parent":"body","length":15.09,"x":2.41,"y":-30.43,"rotation":-24.3},{"name":"neck","parent":"body","length":10.16,"x":44.11,"y":-1.51,"rotation":0.4},{"name":"r_foot","parent":"body","length":15.01,"x":-0.7,"y":28.66,"rotation":17.61},{"name":"tail","parent":"body","length":5.38,"x":7.1,"y":35.16,"rotation":75.01},{"name":"l_ear","parent":"head","length":31.16,"x":74.72,"y":-32.46,"rotation":-52.5},{"name":"l_eyebrow","parent":"head","length":7.02,"x":70,"y":-17.29,"rotation":-85.28},{"name":"mouse","parent":"head","length":5.16,"x":40.85,"y":-0.05,"rotation":1.24},{"name":"nose","parent":"head","length":7,"x":51.81,"y":0.5,"rotation":0.9},{"name":"r_ear","parent":"head","length":28.85,"x":75.33,"y":30.28,"rotation":51.31},{"name":"r_eyebrow","parent":"head","length":7.92,"x":71.01,"y":18.43,"rotation":95.89}],"slots":[{"name":"tail","bone":"tail","attachment":"tail"},{"name":"body","bone":"body","attachment":"body"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"head","bone":"head","attachment":"head"},{"name":"nose","bone":"head"},{"name":"nose2","bone":"nose","attachment":"nose"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"mouth","bone":"mouse","attachment":"mouth4"},{"name":"l_eyebrow","bone":"l_eyebrow","attachment":"l_eyebrow"},{"name":"r_eyebrow","bone":"r_eyebrow","attachment":"r_eyebrow"},{"name":"neck","bone":"neck","attachment":"neck"},{"name":"l_foot","bone":"l_foot","attachment":"l_foot"},{"name":"r_foot","bone":"r_foot","attachment":"r_foot"}],"skins":{"default":{"body":{"body":{"x":39.48,"y":2.05,"rotation":-89.09,"width":77,"height":81}},"head":{"head":{"x":52.82,"y":-0.71,"rotation":-90.38,"width":103,"height":96}},"l_ear":{"l_ear":{"x":3.84,"y":-2.37,"rotation":-37.88,"width":47,"height":48}},"l_eye":{"l_eye1":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye2":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye3":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye4":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye5":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye6":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye7":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye8":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_eye9":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":24,"height":21},"l_sadeye1":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":34,"height":32},"l_sadeye2":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":34,"height":32},"l_sadeye3":{"x":59.02,"y":-21.68,"rotation":-90.38,"width":34,"height":32}},"l_eyebrow":{"l_eyebrow":{"x":6.25,"y":0.49,"rotation":-36.8,"width":24,"height":21}},"l_foot":{"l_foot":{"x":10.18,"y":-0.68,"rotation":-68.95,"width":19,"height":25}},"l_leg1":{"l_leg":{"x":21.08,"y":1.76,"rotation":88.97,"width":28,"height":60}},"mouth":{"mouth1":{"x":-3.56,"y":0.37,"rotation":-91.37,"width":40,"height":30},"mouth2":{"x":-3.35,"y":0.15,"rotation":-91.37,"width":40,"height":30},"mouth3":{"x":-2.51,"y":-0.07,"rotation":-91.37,"width":40,"height":30},"mouth4":{"x":-3.57,"y":-0.05,"rotation":-91.37,"width":40,"height":30},"mouth5":{"x":-5.66,"y":0.69,"rotation":-91.37,"width":40,"height":30},"mouth6":{"x":-6.05,"y":0.8,"rotation":-91.37,"width":40,"height":30},"mouth7":{"x":-3.71,"y":0.19,"rotation":-91.37,"width":40,"height":30},"mouth8":{"x":-3.96,"y":1.22,"rotation":-91.37,"width":40,"height":30},"mouth9":{"x":-1.46,"y":-0.31,"rotation":-91.37,"width":40,"height":30},"mouth10":{"x":-1.92,"y":0.69,"rotation":-91.37,"width":40,"height":30},"mouth11":{"x":-4.21,"y":0.73,"rotation":-91.37,"width":40,"height":30},"mouth12":{"x":-3.58,"y":0.72,"rotation":-91.37,"width":40,"height":30}},"neck":{"neck":{"x":3.07,"y":1.21,"rotation":-89.5,"width":47,"height":21}},"nose2":{"nose":{"x":-5.11,"y":-0.3,"rotation":-91.29,"width":40,"height":40}},"r_ear":{"r_ear":{"x":5.69,"y":0.09,"rotation":-141.7,"width":50,"height":47}},"r_eye":{"r_eye1":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye2":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye3":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye4":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye5":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye6":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye7":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye8":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_eye9":{"x":59.77,"y":20.43,"rotation":-90.38,"width":24,"height":21},"r_sadeye1":{"x":59.77,"y":20.43,"rotation":-90.38,"width":34,"height":34},"r_sadeye2":{"x":59.77,"y":20.43,"rotation":-90.38,"width":34,"height":34},"r_sadeye3":{"x":59.77,"y":20.43,"rotation":-90.38,"width":34,"height":34}},"r_eyebrow":{"r_eyebrow":{"x":1.85,"y":0.52,"rotation":-152.1,"width":24,"height":21}},"r_foot":{"r_foot":{"x":11.77,"rotation":-106.71,"width":20,"height":25}},"r_leg":{"r_leg":{"x":24.64,"y":7.84,"rotation":90.02,"width":36,"height":47}},"tail":{"tail":{"x":0.03,"y":-5.26,"rotation":-164.11,"width":26,"height":20}}}},"animations":{"action":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye2"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.1666,"name":"mouth2"},{"time":0.3333,"name":"mouth3"},{"time":0.5,"name":"mouth2"},{"time":0.6666,"name":"mouth4"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye2"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-60.12},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-3.12,"y":-3.12},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":47.03},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.964,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":9.94},{"time":0.6666,"angle":0}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.12,"y":0.05},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.96,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-6.16},{"time":0.5,"angle":4.86},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":8.99},{"time":0.5,"angle":-5.75},{"time":0.6666,"angle":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":2.95,"y":0},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.15},{"time":0.6666,"angle":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.53},{"time":0.6666,"angle":0}]},"r_eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-4.18,"y":-0.7},{"time":0.6666,"x":0,"y":0}]},"l_eyebrow":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-4.69,"y":0.4},{"time":0.6666,"x":0,"y":0}]}}},"happy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye6"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth4"},{"time":0.3333,"name":"mouth3"},{"time":0.5,"name":"mouth4"},{"time":0.6666,"name":"mouth2"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.057,"y":1.017},{"time":0.3333,"x":1.145,"y":1},{"time":0.5,"x":1.113,"y":1.021},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":48.04},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-3.71,"y":13.55},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-69.62},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.26,"y":0},{"time":0.3333,"x":5.64,"y":17.14},{"time":0.6666,"x":-1.26,"y":0}]},"l_foot":{"rotate":[{"time":0,"angle":1.42},{"time":0.3333,"angle":-8.12},{"time":0.6666,"angle":1.42}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.62},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.53,"y":0},{"time":0.6666,"x":0,"y":0}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":28.7},{"time":0.3333,"angle":0},{"time":0.5,"angle":26.29},{"time":0.6666,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-24.02},{"time":0.3333,"angle":0},{"time":0.5,"angle":-32.27},{"time":0.6666,"angle":0}]},"root":{"translate":[{"time":0,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":3.84,"y":0},{"time":0.6666,"x":0,"y":0}]},"r_eyebrow":{"rotate":[{"time":0,"angle":8.25}],"translate":[{"time":0,"x":4.59,"y":-1.31}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-11.5}],"translate":[{"time":0,"x":4.78,"y":-0.4}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.42},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":5.29,"y":0},{"time":0.6666,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":14.49},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}]}}},"hypnosis":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye7"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye7"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":-14.11}],"translate":[{"time":0,"x":0,"y":-1.09}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":10.32}],"translate":[{"time":0,"x":-2.18,"y":-6}],"scale":[{"time":0,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.89},{"time":1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-4.78},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":-15.71},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":17.82},{"time":1,"angle":-2.54}],"translate":[{"time":0,"x":2.72,"y":-1.18}],"scale":[{"time":0,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":17.07}],"translate":[{"time":0,"x":3.88,"y":0.47}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-22.35}],"translate":[{"time":0,"x":2.28,"y":-3.27}]},"nose":{"translate":[{"time":0,"x":-0.9,"y":-0.05}]},"neck":{"rotate":[{"time":0,"angle":24.41}],"translate":[{"time":0,"x":2.11,"y":0.03}]}}},"joy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye4"},{"time":0.5,"name":"l_eye1"},{"time":0.6666,"name":"l_eye4"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth2"},{"time":1,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye4"},{"time":0.5,"name":"r_eye1"},{"time":0.6666,"name":"r_eye4"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.074,"y":1.017},{"time":0.5,"x":1,"y":1},{"time":0.6666,"x":1.074,"y":1.017},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.8333,"angle":48.26},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-69.35},{"time":0.5,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.97,"y":12.74},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"l_foot":{"rotate":[{"time":0,"angle":-22.26},{"time":0.5,"angle":2.53},{"time":1,"angle":-22.26}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-13.11},{"time":0.5,"angle":0},{"time":0.6666,"angle":3.09},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.018,"y":1},{"time":0.5,"x":0.935,"y":1},{"time":0.6666,"x":1.024,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":2.39},{"time":0.5,"angle":0},{"time":0.6666,"angle":1.81},{"time":1,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.26},{"time":0.5,"angle":0},{"time":0.6666,"angle":6.31},{"time":1,"angle":0}]},"r_eyebrow":{"translate":[{"time":0,"x":6.8,"y":0,"curve":"stepped"},{"time":0.3333,"x":6.8,"y":0},{"time":0.5,"x":0.98,"y":0},{"time":0.6666,"x":6.8,"y":0}]},"l_eyebrow":{"translate":[{"time":0,"x":7.17,"y":0,"curve":"stepped"},{"time":0.3333,"x":7.17,"y":0},{"time":0.5,"x":2.38,"y":0},{"time":0.6666,"x":7.17,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-2.04,"y":0},{"time":0.6666,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":24.01},{"time":1,"angle":0}]}}},"sad":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye3"},{"time":0.4,"name":"l_sadeye1"},{"time":0.4666,"name":"l_sadeye2"},{"time":0.5333,"name":"l_sadeye3"},{"time":0.6,"name":"l_sadeye1"},{"time":0.6666,"name":"l_sadeye2"}]},"mouth":{"attachment":[{"time":0,"name":"mouth10"},{"time":0.3333,"name":"mouth9"},{"time":0.6666,"name":"mouth10"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye3"},{"time":0.4,"name":"r_sadeye1"},{"time":0.4666,"name":"r_sadeye2"},{"time":0.5333,"name":"r_sadeye3"},{"time":0.6,"name":"r_sadeye1"},{"time":0.6666,"name":"r_sadeye2"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.947,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.75},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.957,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.56},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.961,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":-1.4}],"translate":[{"time":0,"x":-0.4,"y":-0.77}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":11.26},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-65.12},{"time":0.3333,"angle":-34.03},{"time":0.6666,"angle":-65.12}],"translate":[{"time":0,"x":-1.79,"y":-0.36},{"time":0.3333,"x":0.54,"y":0.64},{"time":0.6666,"x":-1.79,"y":-0.36}]},"r_ear":{"rotate":[{"time":0,"angle":62.08},{"time":0.3333,"angle":36.83},{"time":0.6666,"angle":62.08}],"translate":[{"time":0,"x":-1.51,"y":1.18},{"time":0.3333,"x":1.86,"y":-0.84},{"time":0.6666,"x":-1.51,"y":1.18}]},"mouse":{"translate":[{"time":0,"x":0.1,"y":-0.09},{"time":0.3333,"x":3.05,"y":-0.09},{"time":0.6666,"x":0.1,"y":-0.09}]},"r_eyebrow":{"rotate":[{"time":0,"angle":21.76}],"translate":[{"time":0,"x":-0.09,"y":2.04}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-14.87}],"translate":[{"time":0,"x":2.96,"y":-0.97}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":6.02,"y":-1.21},{"time":0.6666,"x":0,"y":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-348.56},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0.95,"y":-0.26},{"time":0.6666,"x":0,"y":0}]}}},"stand":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.8333,"name":"l_eye2"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.6666,"name":"mouth4"},{"time":0.7333,"name":"mouth2"},{"time":1,"name":"mouth4"},{"time":1.3333,"name":"mouth1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.8333,"name":"r_eye2"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.019,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.019,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":1.08},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.59},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":0.73},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":0.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":14.76},{"time":0.6666,"angle":0},{"time":1,"angle":-11.38},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.936,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.049,"y":1.066},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-3.34},{"time":0.6666,"angle":0},{"time":1,"angle":7.95},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.6666,"x":0.942,"y":1},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-11.06},{"time":0.6666,"angle":0},{"time":1,"angle":-8.83},{"time":1.3333,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-9.78},{"time":0.6666,"angle":0},{"time":1,"angle":10.45},{"time":1.3333,"angle":0}]},"mouse":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.8333,"x":5.94,"y":0.09},{"time":1,"x":0,"y":0}]},"r_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":19.59},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-2.71,"y":0.58},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"l_eyebrow":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0},{"time":0.8333,"angle":-13.58},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":-2.22,"y":0.13},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0},{"time":0.8333,"x":5.86,"y":0.04},{"time":1,"x":0.03,"y":0.13},{"time":1.3333,"x":0,"y":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-1.42},{"time":0.6666,"angle":0},{"time":1,"angle":-350.63},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":1.97,"y":0.02},{"time":0.6666,"x":0,"y":0},{"time":1,"x":2.61,"y":0},{"time":1.3333,"x":0,"y":0}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-14.61},{"time":0.6666,"angle":0},{"time":1,"angle":12.02},{"time":1.3333,"angle":0}]}}},"surprised":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth11"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.965,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-2.33},{"time":1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.83},{"time":0.6666,"angle":7.67},{"time":1,"angle":0}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":15.83},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.062,"y":0.987},{"time":1,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0,"y":0}]},"r_eyebrow":{"translate":[{"time":0,"x":5.93,"y":-0.25}]},"l_eyebrow":{"translate":[{"time":0,"x":7.18,"y":0}]},"nose":{"translate":[{"time":0,"x":1.5,"y":-0.09},{"time":0.3333,"x":1.04,"y":-0.01},{"time":0.6666,"x":1.03,"y":-0.01},{"time":1,"x":1.5,"y":-0.09}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.28},{"time":0.6666,"angle":-8.93},{"time":1,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-31.48},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":1.099,"y":1},{"time":1,"x":1,"y":1}]},"r_foot":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.4},{"time":1,"angle":0}]}}},"uneasy":{"slots":{"l_eye":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.3333,"name":"l_eye2"},{"time":0.4,"name":"l_eye3"},{"time":1,"name":"l_eye2"}]},"mouth":{"attachment":[{"time":0,"name":"mouth7"},{"time":0.1666,"name":"mouth8"},{"time":0.3333,"name":"mouth7"},{"time":0.5,"name":"mouth8"},{"time":0.6666,"name":"mouth7"},{"time":0.8333,"name":"mouth8"},{"time":1,"name":"mouth7"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.3333,"name":"r_eye2"},{"time":0.4,"name":"r_eye3"},{"time":1,"name":"r_eye2"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.5,"x":0.908,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"l_foot":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":6.89},{"time":1,"angle":0}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":1.74},{"time":0.6666,"angle":-4.08},{"time":1,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.005,"y":1},{"time":0.6666,"x":1.065,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-0.28},{"time":0.5,"angle":-15.71},{"time":1,"angle":-0.28}]},"r_ear":{"rotate":[{"time":0,"angle":-2.54},{"time":0.5,"angle":17.82},{"time":1,"angle":-2.54}],"translate":[{"time":0,"x":2.72,"y":-1.18}],"scale":[{"time":0,"x":1,"y":1}]},"r_eyebrow":{"rotate":[{"time":0,"angle":21.77},{"time":0.3333,"angle":42.89,"curve":"stepped"},{"time":0.5,"angle":42.89},{"time":1,"angle":21.77}],"translate":[{"time":0,"x":3.33,"y":-0.06},{"time":0.3333,"x":-0.63,"y":-0.06},{"time":0.5,"x":3.33,"y":-0.06,"curve":"stepped"},{"time":1,"x":3.33,"y":-0.06}]},"l_eyebrow":{"rotate":[{"time":0,"angle":-29.54},{"time":0.3333,"angle":-40.68,"curve":"stepped"},{"time":0.4666,"angle":-40.68},{"time":1,"angle":-29.54}],"translate":[{"time":0,"x":4.35,"y":-0.38},{"time":0.3333,"x":0.37,"y":0.48},{"time":0.4666,"x":2.85,"y":0},{"time":1,"x":4.35,"y":-0.38}]},"nose":{"translate":[{"time":0,"x":2.85,"y":0}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.88},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/WATSON.png b/m78-all/m78-fe/public/images/character/WATSON.png new file mode 100644 index 000000000..f9a1cb79d Binary files /dev/null and b/m78-all/m78-fe/public/images/character/WATSON.png differ diff --git a/m78-all/m78-fe/public/images/character/YOYO.atlas b/m78-all/m78-fe/public/images/character/YOYO.atlas new file mode 100644 index 000000000..9acc1ffd1 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/YOYO.atlas @@ -0,0 +1,328 @@ + +YOYO.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +body + rotate: false + xy: 96, 64 + size: 55, 59 + orig: 55, 59 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 36 + size: 92, 87 + orig: 92, 87 + offset: 0, 0 + index: -1 +l_ear1 + rotate: false + xy: 153, 73 + size: 49, 50 + orig: 49, 50 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 635, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 671, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 707, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 743, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 779, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye6 + rotate: false + xy: 815, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye7 + rotate: false + xy: 851, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye8 + rotate: false + xy: 887, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_eye9 + rotate: false + xy: 923, 91 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_leg1 + rotate: true + xy: 96, 43 + size: 19, 42 + orig: 19, 42 + offset: 0, 0 + index: -1 +l_leg2 + rotate: true + xy: 959, 93 + size: 30, 36 + orig: 30, 36 + offset: 0, 0 + index: -1 +l_sadeye1 + rotate: false + xy: 299, 57 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye2 + rotate: false + xy: 335, 57 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +l_sadeye3 + rotate: false + xy: 371, 57 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 2, 2 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth10 + rotate: false + xy: 521, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth11 + rotate: false + xy: 559, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth12 + rotate: false + xy: 597, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 255, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 40, 2 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 293, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth5 + rotate: false + xy: 331, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth6 + rotate: false + xy: 369, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth7 + rotate: false + xy: 407, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth8 + rotate: false + xy: 445, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +mouth9 + rotate: false + xy: 483, 91 + size: 36, 32 + orig: 36, 32 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 78, 15 + size: 19, 16 + orig: 19, 16 + offset: 0, 0 + index: -1 +nose2 + rotate: false + xy: 997, 107 + size: 19, 16 + orig: 19, 16 + offset: 0, 0 + index: -1 +r_ear1 + rotate: false + xy: 204, 73 + size: 49, 50 + orig: 49, 50 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 407, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 443, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 479, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 515, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 551, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye6 + rotate: false + xy: 587, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye7 + rotate: false + xy: 623, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye8 + rotate: false + xy: 659, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_eye9 + rotate: false + xy: 803, 57 + size: 34, 32 + orig: 34, 32 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 255, 70 + size: 19, 42 + orig: 19, 42 + offset: 0, 0 + index: -1 +r_sadeye1 + rotate: false + xy: 695, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye2 + rotate: false + xy: 731, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +r_sadeye3 + rotate: false + xy: 767, 55 + size: 34, 34 + orig: 34, 34 + offset: 0, 0 + index: -1 +tail + rotate: true + xy: 839, 61 + size: 28, 34 + orig: 28, 34 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/YOYO.json b/m78-all/m78-fe/public/images/character/YOYO.json new file mode 100644 index 000000000..9690dd01b --- /dev/null +++ b/m78-all/m78-fe/public/images/character/YOYO.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"5QxJzj3szyg50g1DRVq51AbCevI","spine":"2.1.27","width":117.47,"height":136.61,"images":"./png/"},"bones":[{"name":"root"},{"name":"body","parent":"root","length":19.15,"x":0.25,"y":-0.64,"rotation":89.09},{"name":"eff_sad1","parent":"root","length":15.22,"x":-21,"y":61.43,"rotation":-90},{"name":"eff_sad2","parent":"root","length":14.95,"x":19.04,"y":61.99,"rotation":-91.8},{"name":"l_leg","parent":"root","length":18.54,"x":6.54,"y":17.52,"rotation":-88.97},{"name":"r_leg","parent":"root","length":16.44,"x":-7.46,"y":16.05,"rotation":-90.02},{"name":"head","parent":"body","length":71.16,"x":40.14,"y":1.01,"rotation":1.28},{"name":"tail","parent":"body","length":15.09,"x":25.31,"y":17.95,"rotation":40.28},{"name":"l_ear","parent":"head","length":31.16,"x":56.56,"y":-19.3,"rotation":-35.67},{"name":"mouse","parent":"head","length":5.16,"x":13.62,"y":-0.03,"rotation":-8.94},{"name":"r_ear","parent":"head","length":28.85,"x":56.69,"y":24.19,"rotation":28.8}],"slots":[{"name":"tail","bone":"tail","attachment":"tail"},{"name":"body","bone":"body","attachment":"body"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth","bone":"mouse","attachment":"mouth1"},{"name":"r_eye","bone":"head","attachment":"r_eye1"},{"name":"l_eye","bone":"head","attachment":"l_eye1"},{"name":"nose","bone":"head","attachment":"nose"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear1"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear1"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"l_leg1","bone":"l_leg","attachment":"l_leg1"}],"skins":{"default":{"body":{"body":{"x":30.07,"y":2.87,"rotation":-89.09,"width":55,"height":59}},"head":{"head":{"x":41,"y":-0.1,"rotation":-90.38,"width":92,"height":87}},"l_ear":{"l_ear1":{"x":18,"y":-5.75,"rotation":-54.7,"width":49,"height":50}},"l_eye":{"l_eye1":{"x":33.77,"y":-21.19,"rotation":-90.38,"width":34,"height":32},"l_eye2":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye3":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye4":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye5":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye6":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye7":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye8":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_eye9":{"x":36,"y":-17.39,"scaleX":1.125,"scaleY":1.125,"rotation":-90.38,"width":34,"height":32},"l_sadeye1":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_sadeye2":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32},"l_sadeye3":{"x":33.76,"y":-21.18,"rotation":-90.38,"width":34,"height":32}},"l_leg1":{"l_leg1":{"rotation":88.97,"width":19,"height":42},"l_leg2":{"x":-36.58,"y":7.62,"rotation":88.97,"width":30,"height":36}},"mouth":{"mouth1":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth2":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth3":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth4":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth5":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth6":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth7":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth8":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth9":{"x":-2.81,"y":0.42,"rotation":-81.43,"width":36,"height":32},"mouth10":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth11":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32},"mouth12":{"x":-5.08,"y":0.08,"rotation":-81.43,"width":36,"height":32}},"nose":{"nose":{"x":25.51,"y":-0.19,"rotation":-90.38,"width":19,"height":16},"nose2":{"x":21.96,"y":-0.19,"rotation":-90.38,"width":19,"height":16}},"r_ear":{"r_ear1":{"x":14.66,"y":3.11,"rotation":-119.19,"width":49,"height":50}},"r_eye":{"r_eye1":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34},"r_eye2":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34},"r_eye3":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34},"r_eye4":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34},"r_eye5":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34},"r_eye6":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34},"r_eye7":{"x":27.1,"y":20.7,"rotation":-90.38,"width":34,"height":34},"r_eye8":{"x":27.1,"y":20.7,"rotation":-90.38,"width":34,"height":34},"r_eye9":{"x":35.25,"y":18.49,"scaleX":1.13,"scaleY":1.13,"rotation":-90.38,"width":34,"height":32},"r_sadeye1":{"x":33.04,"y":19.85,"rotation":-90.38,"width":34,"height":34},"r_sadeye2":{"x":33.04,"y":20.15,"rotation":-90.38,"width":34,"height":34},"r_sadeye3":{"x":33.65,"y":21.35,"rotation":-90.38,"width":34,"height":34}},"r_leg":{"r_leg":{"x":-0.89,"y":-1.5,"rotation":90.02,"width":19,"height":42}},"tail":{"tail":{"x":7.78,"y":2.27,"rotation":-129.37,"width":28,"height":34}}}},"animations":{"action":{"slots":{"head":{"attachment":[{"time":0,"name":"head"},{"time":0.1666,"name":"head"},{"time":0.6666,"name":"head"}]},"l_ear":{"attachment":[{"time":0,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye2"},{"time":0.5,"name":"l_eye3"},{"time":0.5666,"name":"l_eye2"},{"time":0.6666,"name":"l_eye1"}]},"l_leg1":{"attachment":[{"time":0,"name":"l_leg2"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.0666,"name":"mouth2"},{"time":0.1333,"name":"mouth3"},{"time":0.1666,"name":"mouth4"},{"time":0.4333,"name":"mouth3"},{"time":0.4666,"name":"mouth3"},{"time":0.5,"name":"mouth1"},{"time":0.6666,"name":"mouth1"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye2"},{"time":0.5,"name":"r_eye3"},{"time":0.5666,"name":"r_eye2"},{"time":0.6666,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.085,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":24.5},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":12.13,"y":4.48},{"time":0.6666,"x":0,"y":0}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.964,"y":1},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":32.99},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":3.12,"y":0.05},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.892,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.783,"y":1,"curve":"stepped"},{"time":0.5,"x":0.783,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_ear":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.776,"y":1,"curve":"stepped"},{"time":0.5,"x":0.776,"y":1},{"time":0.6666,"x":1,"y":1}]},"mouse":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0666,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]}}},"happy":{"slots":{"head":{"attachment":[{"time":0,"name":"head"}]},"l_ear":{"attachment":[{"time":0,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye6"}]},"l_leg1":{"attachment":[{"time":0,"name":"l_leg1"},{"time":0.6666,"name":"l_leg1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth2"},{"time":0.1666,"name":"mouth6"},{"time":0.3333,"name":"mouth7"},{"time":0.5,"name":"mouth6"},{"time":0.6666,"name":"mouth2"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye6"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.057,"y":1.017},{"time":0.3333,"x":1.145,"y":1},{"time":0.5,"x":1.113,"y":1.021},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":63.45},{"time":0.5,"angle":-6.6},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":20.15,"y":13.03},{"time":0.5,"x":-0.41,"y":5.2},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-69.25},{"time":0.5,"angle":6.3},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":-1.26,"y":0},{"time":0.3333,"x":-22.83,"y":13.35},{"time":0.5,"x":0.41,"y":6.67},{"time":0.6666,"x":-1.26,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":-32.57},{"time":0.1666,"angle":-36.74},{"time":0.3333,"angle":-15.09},{"time":0.5,"angle":-37.67},{"time":0.6666,"angle":-32.57}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.936,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.049,"y":1.066},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-2.7},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":4.53,"y":0},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-11.07},{"time":0.3333,"angle":0},{"time":0.5,"angle":35.5},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":-1.82,"y":5.04},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":15.24},{"time":0.3333,"angle":0},{"time":0.5,"angle":-24.5},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0},{"time":0.5,"x":0.34,"y":-4.9},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":0.78,"y":0},{"time":0.1666,"x":3.59,"y":0},{"time":0.3333,"x":5.17,"y":0.2},{"time":0.5,"x":3.48,"y":0},{"time":0.6666,"x":0.78,"y":0}]},"root":{"translate":[{"time":0,"x":0,"y":0}]}}},"hypnosis":{"slots":{"head":{"attachment":[{"time":0,"name":"head"}]},"l_ear":{"attachment":[{"time":0,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye9"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.6666,"name":"mouth5"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye9"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":23.37},{"time":0.3333,"angle":0},{"time":0.5,"angle":-29.95},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.936,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.049,"y":1.066},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-15.67},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.08,"y":0.02},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.942,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-5.85},{"time":0.3333,"angle":15},{"time":0.6666,"angle":-5.85}],"translate":[{"time":0,"x":0.62,"y":-0.63},{"time":0.3333,"x":3.24,"y":3.31},{"time":0.6666,"x":0.62,"y":-0.63}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":-2.21},{"time":0.3333,"angle":-24.24},{"time":0.6666,"angle":-2.21}],"translate":[{"time":0,"x":1.15,"y":-1.25},{"time":0.3333,"x":4.87,"y":-6.29},{"time":0.6666,"x":1.15,"y":-1.25}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"mouse":{"translate":[{"time":0,"x":-0.51,"y":0}]}}},"joy":{"slots":{"head":{"attachment":[{"time":0,"name":"head"}]},"l_ear":{"attachment":[{"time":0,"name":"l_ear1"},{"time":1,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.2333,"name":"l_eye4"},{"time":0.8333,"name":"l_eye4"},{"time":1,"name":"l_eye1"}]},"l_leg1":{"attachment":[{"time":0,"name":"l_leg1"},{"time":0.9333,"name":"l_leg1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth2"},{"time":0.3333,"name":"mouth3"},{"time":1,"name":"mouth1"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.2333,"name":"r_eye4"},{"time":0.8333,"name":"r_eye4"},{"time":1,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0,"curve":"stepped"},{"time":0.4666,"angle":0,"curve":"stepped"},{"time":0.7,"angle":0,"curve":"stepped"},{"time":0.9333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.4666,"x":0,"y":0,"curve":"stepped"},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":1.057,"y":1.017},{"time":0.4666,"x":1,"y":1},{"time":0.7,"x":1.113,"y":1.021},{"time":0.9333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2333,"angle":0,"curve":"stepped"},{"time":0.4666,"angle":0},{"time":0.7,"angle":29.59},{"time":0.9333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":-0.01,"y":1.08},{"time":0.4666,"x":0,"y":0},{"time":0.7,"x":12.16,"y":4.37},{"time":0.9333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-21.96},{"time":0.4666,"angle":0,"curve":"stepped"},{"time":0.7,"angle":0,"curve":"stepped"},{"time":0.9333,"angle":0}],"translate":[{"time":0,"x":-1.26,"y":0},{"time":0.2333,"x":-8.59,"y":3.97},{"time":0.4666,"x":-1.26,"y":0,"curve":"stepped"},{"time":0.7,"x":-1.26,"y":0,"curve":"stepped"},{"time":0.9333,"x":-1.26,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":-32.57},{"time":0.2333,"angle":-36.74},{"time":0.4666,"angle":-22.26},{"time":0.7,"angle":-37.67},{"time":0.9333,"angle":-32.57}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":0.936,"y":1},{"time":0.4666,"x":1,"y":1},{"time":0.7,"x":1.049,"y":1.066},{"time":0.9333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-10.67},{"time":0.4666,"angle":0},{"time":0.7,"angle":15.43},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.4666,"x":0,"y":0,"curve":"stepped"},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.2333,"x":1,"y":1},{"time":0.4666,"x":0.942,"y":1},{"time":0.7,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":5.93},{"time":0.4666,"angle":0},{"time":0.7,"angle":45.82},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.2333,"x":0,"y":0,"curve":"stepped"},{"time":0.4666,"x":0,"y":0},{"time":0.7,"x":2.57,"y":9.91},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.2333,"angle":-35.69},{"time":0.4666,"angle":0},{"time":0.7,"angle":6.31},{"time":0.9333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2333,"x":5.47,"y":-10.03},{"time":0.4666,"x":0,"y":0,"curve":"stepped"},{"time":0.7,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"mouse":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"sad":{"slots":{"head":{"attachment":[{"time":0,"name":"head"}]},"l_eye":{"attachment":[{"time":0,"name":"l_sadeye1"},{"time":0.0666,"name":"l_sadeye2"},{"time":0.1333,"name":"l_sadeye3"},{"time":0.2,"name":"l_sadeye1"},{"time":0.2666,"name":"l_sadeye2"},{"time":0.3333,"name":"l_sadeye1"},{"time":0.4,"name":"l_sadeye2"},{"time":0.4666,"name":"l_sadeye3"},{"time":0.5333,"name":"l_sadeye1"},{"time":0.6,"name":"l_sadeye2"},{"time":0.6666,"name":"l_sadeye3"}]},"l_leg1":{"attachment":[{"time":0,"name":"l_leg1"},{"time":0.6666,"name":"l_leg1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth5"},{"time":0.3333,"name":"mouth5"},{"time":0.6666,"name":"mouth5"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"},{"time":0.6666,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_sadeye1"},{"time":0.0666,"name":"r_sadeye2"},{"time":0.1333,"name":"r_sadeye3"},{"time":0.2,"name":"r_sadeye1"},{"time":0.2666,"name":"r_sadeye2"},{"time":0.3333,"name":"r_sadeye1"},{"time":0.4,"name":"r_sadeye2"},{"time":0.4666,"name":"r_sadeye3"},{"time":0.5333,"name":"r_sadeye1"},{"time":0.6,"name":"r_sadeye2"},{"time":0.6666,"name":"r_sadeye3"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.878,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.75},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.957,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":-0.56},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.961,"y":1},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":39.02},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-6.74},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.035,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-25.9},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":4.6,"y":2.07},{"time":0.3333,"x":-1.29,"y":-7.92},{"time":0.6666,"x":4.6,"y":2.07}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.9,"y":0.9},{"time":0.6666,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":17.48},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":3.65,"y":-2.38},{"time":0.3333,"x":-1.24,"y":4.08},{"time":0.6666,"x":3.65,"y":-2.38}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.898,"y":0.898},{"time":0.6666,"x":1,"y":1}]},"mouse":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-3.7,"y":-0.07},{"time":0.3333,"x":-7.7,"y":-0.07},{"time":0.6666,"x":-3.7,"y":-0.07}],"scale":[{"time":0,"x":1,"y":1}]},"eff_sad2":{"translate":[{"time":0,"x":0.28,"y":1.69}]},"eff_sad1":{"translate":[{"time":0,"x":-0.28,"y":0.56}]}}},"stand":{"slots":{"head":{"attachment":[{"time":0,"name":"head"},{"time":1.3333,"name":"head"}]},"l_ear":{"attachment":[{"time":0,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.6666,"name":"l_eye1"},{"time":0.7333,"name":"l_eye2"},{"time":0.8,"name":"l_eye3"},{"time":0.8666,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"l_leg1":{"attachment":[{"time":0,"name":"l_leg1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.6666,"name":"mouth1"},{"time":0.7333,"name":"mouth2"},{"time":1,"name":"mouth1"},{"time":1.3333,"name":"mouth1"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.6666,"name":"r_eye1"},{"time":0.7333,"name":"r_eye2"},{"time":0.8,"name":"r_eye3"},{"time":0.8666,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"body":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.057,"y":1.017},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.113,"y":1.021},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":-0.01,"y":1.08},{"time":0.6666,"x":0,"y":0},{"time":1,"x":-0.01,"y":0.59},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.3333,"x":0,"y":0.73},{"time":0.6666,"x":0,"y":0},{"time":1,"x":0,"y":0.73},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.04,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.04,"y":1},{"time":1.3333,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":23.37},{"time":0.6666,"angle":0},{"time":1,"angle":-29.95},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.936,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.049,"y":1.066},{"time":1.3333,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-10.67},{"time":0.6666,"angle":0},{"time":1,"angle":15.43},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.6666,"x":0.942,"y":1},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.93},{"time":0.6666,"angle":0},{"time":0.7666,"angle":-14.01},{"time":0.8333,"angle":2.38},{"time":1,"angle":4.76},{"time":1.3333,"angle":0}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.34},{"time":0.6666,"angle":0},{"time":0.7666,"angle":25.8},{"time":0.8333,"angle":0},{"time":1,"angle":6.31},{"time":1.3333,"angle":0}]},"mouse":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.7333,"x":0,"y":0},{"time":0.7666,"x":1.05,"y":-0.16},{"time":0.8333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"surprised":{"slots":{"l_ear":{"attachment":[{"time":0,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.1666,"name":"l_eye2"},{"time":0.3333,"name":"l_eye5"},{"time":0.5,"name":"l_eye5"},{"time":1,"name":"l_eye1"}]},"l_leg1":{"attachment":[{"time":0,"name":"l_leg1"},{"time":1,"name":"l_leg1"}]},"mouth":{"attachment":[{"time":0,"name":"mouth1"},{"time":0.1666,"name":"mouth5"},{"time":0.5,"name":"mouth5"},{"time":1,"name":"mouth1"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.1666,"name":"r_eye2"},{"time":0.3333,"name":"r_eye5"},{"time":0.5,"name":"r_eye5"},{"time":1,"name":"r_eye1"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":1,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":1,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":23.37},{"time":0.3333,"angle":0},{"time":0.5,"angle":-29.95},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.936,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.049,"y":1.066},{"time":1,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.942,"y":1},{"time":1,"x":1,"y":1}]},"l_ear":{"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":0.572,"y":1},{"time":0.3333,"x":1.18,"y":1},{"time":1,"x":1,"y":1}]},"r_ear":{"scale":[{"time":0,"x":1,"y":1},{"time":0.2333,"x":0.536,"y":1},{"time":0.3333,"x":1.18,"y":1},{"time":1,"x":1,"y":1}]},"mouse":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"uneasy":{"slots":{"head":{"attachment":[{"time":0,"name":"head"}]},"l_ear":{"attachment":[{"time":0,"name":"l_ear1"}]},"l_eye":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth":{"attachment":[{"time":0,"name":"mouth8"},{"time":0.1666,"name":"mouth9"},{"time":0.3333,"name":"mouth8"},{"time":0.5,"name":"mouth9"},{"time":0.6666,"name":"mouth8"}]},"nose":{"attachment":[{"time":0,"name":"nose"}]},"r_ear":{"attachment":[{"time":0,"name":"r_ear1"}]},"r_eye":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"body":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.97,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"tail":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":23.37},{"time":0.3333,"angle":0},{"time":0.5,"angle":-29.95},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.936,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.049,"y":1.066},{"time":0.6666,"x":1,"y":1}]},"head":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.942,"y":1},{"time":0.6666,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/YOYO.png b/m78-all/m78-fe/public/images/character/YOYO.png new file mode 100644 index 000000000..04356895d Binary files /dev/null and b/m78-all/m78-fe/public/images/character/YOYO.png differ diff --git a/m78-all/m78-fe/public/images/character/boss_hedgehog.atlas b/m78-all/m78-fe/public/images/character/boss_hedgehog.atlas new file mode 100644 index 000000000..5a6a92c03 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_hedgehog.atlas @@ -0,0 +1,209 @@ + +boss_hedgehog.png +size: 1024,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +angry + rotate: false + xy: 256, 364 + size: 252, 144 + orig: 252, 144 + offset: 0, 0 + index: -1 +bak_leg + rotate: false + xy: 612, 481 + size: 122, 27 + orig: 122, 27 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 2, 256 + size: 252, 252 + orig: 252, 252 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 256, 296 + size: 158, 66 + orig: 158, 66 + offset: 0, 0 + index: -1 +eff_01 + rotate: false + xy: 358, 244 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_02 + rotate: false + xy: 338, 192 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_stern_01 + rotate: false + xy: 510, 458 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_02 + rotate: false + xy: 256, 244 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_03 + rotate: false + xy: 510, 406 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 2 + size: 252, 252 + orig: 252, 252 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 256, 9 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 338, 140 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 338, 140 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 694, 429 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 498, 296 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 579, 354 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 579, 354 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 631, 367 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 256, 51 + size: 56, 67 + orig: 56, 67 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 416, 302 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 256, 182 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 612, 419 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 256, 120 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 746, 434 + size: 22, 22 + orig: 22, 22 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 798, 468 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 550, 296 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 314, 68 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 746, 458 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 510, 348 + size: 56, 67 + orig: 56, 67 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/boss_hedgehog.json b/m78-all/m78-fe/public/images/character/boss_hedgehog.json new file mode 100644 index 000000000..1a29d8809 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_hedgehog.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"u+1+HdG0pyU3fA6azhZx4HU85Cc","spine":"3.5.25","width":252.68,"height":254.63,"images":"./png/"},"bones":[{"name":"root","x":-1.27,"y":86.48},{"name":"head","parent":"root","length":23.19,"rotation":89.55,"x":0.93,"y":-68.32,"color":"9c9c9cff"},{"name":"angry","parent":"head","rotation":-0.07,"x":151.42,"y":1.5},{"name":"back_leg","parent":"root","length":10.92,"rotation":-91.36,"x":1.45,"y":-86.64},{"name":"body1","parent":"root","length":16.03,"rotation":90.9,"x":0.48,"y":36.08},{"name":"body2","parent":"root","length":10.24,"rotation":88.18,"x":0.17,"y":22.58},{"name":"eff_01","parent":"root","length":21.62,"rotation":150.81,"x":-81,"y":6.55,"color":"9c9c9c00"},{"name":"eff_02","parent":"root","length":18.86,"rotation":33.34,"x":85.97,"y":13.18},{"name":"eff_03","parent":"root","length":7.28,"rotation":90,"x":0.82,"y":95.1},{"name":"l_ear","parent":"head","length":23.27,"rotation":-34.1,"x":92.14,"y":-52.07},{"name":"l_eye","parent":"head","length":19.45,"rotation":-1.35,"x":30.44,"y":-48.8},{"name":"l_leg","parent":"root","length":12.58,"rotation":-49.62,"x":62.41,"y":-58.41},{"name":"mouth","parent":"head","length":6.14,"x":17.78,"y":-0.03},{"name":"nose","parent":"head","length":15.35,"rotation":-0.45,"x":34.86,"y":0.45},{"name":"r_ear","parent":"head","length":27.62,"rotation":33.37,"x":89.33,"y":56.23},{"name":"r_eye","parent":"head","length":14.66,"rotation":-0.27,"x":31.07,"y":51.08},{"name":"r_leg","parent":"root","length":12.06,"rotation":-118.52,"x":-57.24,"y":-56.31,"scaleX":0.99,"scaleY":0.99}],"slots":[{"name":"body1","bone":"body1","attachment":"body1"},{"name":"bak_leg","bone":"back_leg","attachment":"bak_leg"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"eff_02","bone":"eff_02"},{"name":"eff_01","bone":"eff_01"},{"name":"eff_stern_01","bone":"eff_03"},{"name":"eff_stern_02","bone":"eff_03"},{"name":"eff_stern_03","bone":"eff_03"},{"name":"angry","bone":"angry"},{"name":"Boss_hedgehog","bone":"root"}],"skins":{"default":{"angry":{"angry":{"x":-9.86,"y":0.23,"rotation":-89.55,"width":252,"height":144}},"bak_leg":{"bak_leg":{"x":-13.17,"y":1.43,"rotation":91.36,"width":122,"height":27}},"body1":{"body1":{"x":-7.92,"y":-0.71,"rotation":-90.9,"width":252,"height":252}},"body2":{"body2":{"x":-67.84,"y":-1.89,"rotation":-88.18,"width":158,"height":66}},"eff_01":{"eff_01":{"x":24.76,"y":-6.14,"rotation":128.16,"width":50,"height":50}},"eff_02":{"eff_02":{"x":22.66,"y":4.01,"rotation":49.62,"width":50,"height":50}},"eff_stern_01":{"eff_stern_01":{"rotation":-90,"width":100,"height":50}},"eff_stern_02":{"eff_stern_02":{"rotation":-90,"width":100,"height":50}},"eff_stern_03":{"eff_stern_03":{"rotation":-90,"width":100,"height":50}},"head":{"head":{"x":93.87,"y":-0.32,"rotation":-89.55,"width":252,"height":252}},"l_ear":{"l_ear":{"x":10.41,"y":-0.08,"rotation":-55.44,"width":40,"height":40}},"l_eye1":{"l_eye1":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye2":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye3":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye4":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye5":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50}},"l_leg":{"l_leg":{"x":-2.85,"y":-0.71,"rotation":49.62,"width":56,"height":67}},"mouth1":{"mouth1":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60},"mouth2":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60},"mouth3":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60},"mouth4":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60}},"nose":{"nose":{"x":5.11,"y":-0.75,"rotation":-89.09,"width":22,"height":22}},"r_ear":{"r_ear":{"x":11.03,"y":-2.68,"rotation":-122.92,"width":40,"height":40}},"r_eye1":{"r_eye1":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye2":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye3":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye4":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye5":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50}},"r_leg":{"r_leg":{"x":1.45,"y":0.07,"rotation":118.52,"width":56,"height":67}}}},"animations":{"angry":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"}]},"eff_01":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff30"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_01"}]},"eff_02":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff78"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_02"}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye2"},{"time":0.6667,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye2"},{"time":0.6667,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1.02},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1.021},{"time":0.6667,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.96,"y":0.03},{"time":0.3333,"x":4.91,"y":0.04},{"time":0.5,"x":3.96,"y":0.03},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.016,"y":1},{"time":0.3333,"x":1.149,"y":1},{"time":0.5,"x":1.016,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-6.11,"y":-0.03},{"time":0.1667,"x":-3.14,"y":-0.02},{"time":0.3333,"x":-1.31,"y":-0.01},{"time":0.5,"x":-3.14,"y":-0.02},{"time":0.6667,"x":-6.11,"y":-0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.72},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":-5.91},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.971,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":6.67},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.98,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.975,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.029,"y":1},{"time":0.6667,"x":1,"y":1}]},"eff_01":{"rotate":[{"time":0.3333,"angle":0},{"time":0.6667,"angle":-10.73}],"translate":[{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-40.86,"y":22.79}]},"eff_02":{"rotate":[{"time":0.3333,"angle":-5.77},{"time":0.6667,"angle":7.2}],"translate":[{"time":0.3333,"x":7.21,"y":-1.2},{"time":0.6667,"x":36.06,"y":14.42}]},"angry":{"translate":[{"time":0,"x":14.45,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]}}},"death":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":"eff_stern_01"},{"time":0.0667,"name":null},{"time":0.1333,"name":null},{"time":0.2,"name":"eff_stern_01"},{"time":0.2667,"name":null},{"time":0.3333,"name":null},{"time":0.4,"name":"eff_stern_01"},{"time":0.4667,"name":null},{"time":0.5333,"name":null},{"time":0.6,"name":"eff_stern_01"},{"time":0.6667,"name":null},{"time":0.7333,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":"eff_stern_02"},{"time":0.1333,"name":null},{"time":0.2,"name":null},{"time":0.2667,"name":"eff_stern_02"},{"time":0.3333,"name":null},{"time":0.4,"name":null},{"time":0.4667,"name":"eff_stern_02"},{"time":0.5333,"name":null},{"time":0.6,"name":null},{"time":0.6667,"name":"eff_stern_02"},{"time":0.7333,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":null},{"time":0.1333,"name":"eff_stern_03"},{"time":0.2,"name":null},{"time":0.2667,"name":null},{"time":0.3333,"name":"eff_stern_03"},{"time":0.4,"name":null},{"time":0.4667,"name":null},{"time":0.5333,"name":"eff_stern_03"},{"time":0.6,"name":null},{"time":0.6667,"name":null},{"time":0.7333,"name":"eff_stern_03"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.3667,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.7333,"x":0,"y":-13.09}],"scale":[{"time":0,"x":0.975,"y":1},{"time":0.3667,"x":1,"y":1},{"time":0.7333,"x":0.975,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-8.45},{"time":0.3667,"x":0,"y":-6.85},{"time":0.7333,"x":0,"y":-8.45}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.006,"y":1.006},{"time":0.7333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":1.91,"y":0.05},{"time":0.3667,"x":0.12,"y":0.04},{"time":0.7333,"x":1.91,"y":0.05}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-5.96,"y":-0.02},{"time":0.3667,"x":-3.65,"y":-0.01},{"time":0.7333,"x":-5.96,"y":-0.02}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.956,"y":1},{"time":0.7333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":6.72},{"time":0.3667,"angle":27.38},{"time":0.7333,"angle":6.72}],"translate":[{"time":0,"x":1.01,"y":3.06},{"time":0.3667,"x":-3.81,"y":5.16},{"time":0.7333,"x":1.01,"y":3.06}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-6.88},{"time":0.3667,"angle":-18.86},{"time":0.7333,"angle":-6.88}],"translate":[{"time":0,"x":4.01,"y":-3.69},{"time":0.3667,"x":-0.61,"y":-6.4},{"time":0.7333,"x":4.01,"y":-3.69}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-28.99},{"time":0.3667,"angle":-33.11},{"time":0.7333,"angle":-28.99}],"translate":[{"time":0,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.3667,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.7333,"x":-10.06,"y":-3.54}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.909,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":24.05},{"time":0.3667,"angle":29.83},{"time":0.7333,"angle":24.05}],"translate":[{"time":0,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.3667,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.7333,"x":13.26,"y":0.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.905,"y":1},{"time":0.7333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.939,"y":0.939},{"time":0.7333,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-5.29,"y":-1.33}],"scale":[{"time":0,"x":1.2,"y":1.2}]},"eff_03":{"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.255,"y":1.255},{"time":0.7333,"x":1,"y":1}]}}},"dmg":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth4"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.27,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":1.27,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.045,"y":1.02,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1.02},{"time":0.5,"x":1,"y":1}]},"body1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":8.92,"curve":"stepped"},{"time":0.3333,"x":0,"y":8.92},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.034,"y":0.936,"curve":"stepped"},{"time":0.3333,"x":1.034,"y":0.936},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.4333,"x":1.046,"y":1.053},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0.8,"y":0.48},{"time":0.1667,"x":2.76,"y":1.01,"curve":"stepped"},{"time":0.3333,"x":2.76,"y":1.01},{"time":0.5,"x":0.8,"y":0.48}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.079,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.079,"y":1},{"time":0.5,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.091,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.091,"y":1},{"time":0.5,"x":0.981,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.086,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.086,"y":1},{"time":0.5,"x":0.981,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.67,"curve":"stepped"},{"time":0.3333,"angle":-23.67},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":7.43,"y":0,"curve":"stepped"},{"time":0.3333,"x":7.43,"y":0},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.112,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.112,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":23.14,"curve":"stepped"},{"time":0.3333,"angle":23.14},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0.64,"y":-3.09},{"time":0.1667,"x":5.16,"y":-5.69,"curve":"stepped"},{"time":0.3333,"x":5.16,"y":-5.69},{"time":0.5,"x":0.64,"y":-3.09}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.077,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.077,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-29.07,"curve":"stepped"},{"time":0.3333,"angle":-29.07},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-19.11,"y":12.1,"curve":"stepped"},{"time":0.3333,"x":-19.11,"y":12.1},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.039,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.039,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":32.43,"curve":"stepped"},{"time":0.3333,"angle":32.43},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":30.58,"y":18.47,"curve":"stepped"},{"time":0.3333,"x":30.58,"y":18.47},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.065,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.065,"y":1},{"time":0.5,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.55,"y":3.19,"curve":"stepped"},{"time":0.3333,"x":2.55,"y":3.19},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.009,"y":0.876,"curve":"stepped"},{"time":0.3333,"x":1.009,"y":0.876},{"time":0.5,"x":1,"y":1}]},"back_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.55,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":-2.55,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.89,"y":1.205,"curve":"stepped"},{"time":0.3333,"x":0.89,"y":1.205},{"time":0.5,"x":1,"y":1}]}}},"stand":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.8333,"name":"l_eye1"},{"time":1,"name":"l_eye2"},{"time":1.1667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.8333,"name":"r_eye1"},{"time":1,"name":"r_eye2"},{"time":1.1667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-0.04},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":0.1},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.011,"y":1.01},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1.02},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":2.36,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.862,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.6667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.8333,"x":-2.29,"y":0.03},{"time":1,"x":2.09,"y":0.01},{"time":1.1667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":1.3333,"x":-2.29,"y":0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-1.6,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.946,"y":0.961},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-1.6,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.945,"y":0.965},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.72},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-5.91},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.95},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":6.67},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.975,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.028,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.019,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"attack":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"},{"time":0.5,"name":"angry"}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.0667,"name":"l_eye3"},{"time":0.1667,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.0667,"name":"r_eye3"},{"time":0.1667,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-14.9},{"time":0.2667,"x":-0.02,"y":-17.36},{"time":0.5,"x":0,"y":-14.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1},{"time":0.5,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0667,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.71},{"time":0.0667,"x":-0.18,"y":8.78},{"time":0.1667,"x":0,"y":-2.71,"curve":"stepped"},{"time":0.5,"x":0,"y":-2.71}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.099,"y":1.114},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":-13.5,"y":-0.11},{"time":0.2667,"x":-11.97,"y":-0.12},{"time":0.5,"x":-13.5,"y":-0.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.157,"y":1},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-12.58,"y":0.16}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.0667,"x":-5.66,"y":0.03},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.073,"y":1},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.0667,"x":-6.65,"y":0.16},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.053,"y":1},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0.17},{"time":0.2667,"angle":-12.22},{"time":0.5,"angle":0.17}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.06,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-7.03},{"time":0.2667,"angle":10.08},{"time":0.5,"angle":-7.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.07,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-4.34,"y":1.7},{"time":0.0667,"x":34.05,"y":1.65},{"time":0.1667,"x":-4.34,"y":1.7,"curve":"stepped"},{"time":0.5,"x":-4.34,"y":1.7}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.423,"y":1.273},{"time":0.1667,"x":1.369,"y":1},{"time":0.5,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/boss_hedgehog.png b/m78-all/m78-fe/public/images/character/boss_hedgehog.png new file mode 100644 index 000000000..02ff1a9bd Binary files /dev/null and b/m78-all/m78-fe/public/images/character/boss_hedgehog.png differ diff --git a/m78-all/m78-fe/public/images/character/boss_hedgehog2.atlas b/m78-all/m78-fe/public/images/character/boss_hedgehog2.atlas new file mode 100644 index 000000000..eb8b12a1e --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_hedgehog2.atlas @@ -0,0 +1,209 @@ + +boss_hedgehog2.png +size: 1024,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +angry + rotate: false + xy: 256, 364 + size: 252, 144 + orig: 252, 144 + offset: 0, 0 + index: -1 +bak_leg + rotate: false + xy: 612, 481 + size: 122, 27 + orig: 122, 27 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 2, 256 + size: 252, 252 + orig: 252, 252 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 256, 296 + size: 158, 66 + orig: 158, 66 + offset: 0, 0 + index: -1 +eff_01 + rotate: false + xy: 358, 244 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_02 + rotate: false + xy: 338, 192 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_stern_01 + rotate: false + xy: 510, 458 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_02 + rotate: false + xy: 256, 244 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_03 + rotate: false + xy: 510, 406 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 2 + size: 252, 252 + orig: 252, 252 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 256, 9 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 338, 140 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 694, 429 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 498, 296 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 579, 354 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 631, 367 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 256, 51 + size: 56, 67 + orig: 56, 67 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 416, 302 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 256, 182 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth3 + rotate: false + xy: 612, 419 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 256, 120 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 746, 434 + size: 22, 22 + orig: 22, 22 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 902, 468 + size: 40, 40 + orig: 40, 40 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 550, 296 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 314, 68 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 746, 458 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 798, 458 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 850, 458 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 510, 348 + size: 56, 67 + orig: 56, 67 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/boss_hedgehog2.json b/m78-all/m78-fe/public/images/character/boss_hedgehog2.json new file mode 100644 index 000000000..1a29d8809 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_hedgehog2.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"u+1+HdG0pyU3fA6azhZx4HU85Cc","spine":"3.5.25","width":252.68,"height":254.63,"images":"./png/"},"bones":[{"name":"root","x":-1.27,"y":86.48},{"name":"head","parent":"root","length":23.19,"rotation":89.55,"x":0.93,"y":-68.32,"color":"9c9c9cff"},{"name":"angry","parent":"head","rotation":-0.07,"x":151.42,"y":1.5},{"name":"back_leg","parent":"root","length":10.92,"rotation":-91.36,"x":1.45,"y":-86.64},{"name":"body1","parent":"root","length":16.03,"rotation":90.9,"x":0.48,"y":36.08},{"name":"body2","parent":"root","length":10.24,"rotation":88.18,"x":0.17,"y":22.58},{"name":"eff_01","parent":"root","length":21.62,"rotation":150.81,"x":-81,"y":6.55,"color":"9c9c9c00"},{"name":"eff_02","parent":"root","length":18.86,"rotation":33.34,"x":85.97,"y":13.18},{"name":"eff_03","parent":"root","length":7.28,"rotation":90,"x":0.82,"y":95.1},{"name":"l_ear","parent":"head","length":23.27,"rotation":-34.1,"x":92.14,"y":-52.07},{"name":"l_eye","parent":"head","length":19.45,"rotation":-1.35,"x":30.44,"y":-48.8},{"name":"l_leg","parent":"root","length":12.58,"rotation":-49.62,"x":62.41,"y":-58.41},{"name":"mouth","parent":"head","length":6.14,"x":17.78,"y":-0.03},{"name":"nose","parent":"head","length":15.35,"rotation":-0.45,"x":34.86,"y":0.45},{"name":"r_ear","parent":"head","length":27.62,"rotation":33.37,"x":89.33,"y":56.23},{"name":"r_eye","parent":"head","length":14.66,"rotation":-0.27,"x":31.07,"y":51.08},{"name":"r_leg","parent":"root","length":12.06,"rotation":-118.52,"x":-57.24,"y":-56.31,"scaleX":0.99,"scaleY":0.99}],"slots":[{"name":"body1","bone":"body1","attachment":"body1"},{"name":"bak_leg","bone":"back_leg","attachment":"bak_leg"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"eff_02","bone":"eff_02"},{"name":"eff_01","bone":"eff_01"},{"name":"eff_stern_01","bone":"eff_03"},{"name":"eff_stern_02","bone":"eff_03"},{"name":"eff_stern_03","bone":"eff_03"},{"name":"angry","bone":"angry"},{"name":"Boss_hedgehog","bone":"root"}],"skins":{"default":{"angry":{"angry":{"x":-9.86,"y":0.23,"rotation":-89.55,"width":252,"height":144}},"bak_leg":{"bak_leg":{"x":-13.17,"y":1.43,"rotation":91.36,"width":122,"height":27}},"body1":{"body1":{"x":-7.92,"y":-0.71,"rotation":-90.9,"width":252,"height":252}},"body2":{"body2":{"x":-67.84,"y":-1.89,"rotation":-88.18,"width":158,"height":66}},"eff_01":{"eff_01":{"x":24.76,"y":-6.14,"rotation":128.16,"width":50,"height":50}},"eff_02":{"eff_02":{"x":22.66,"y":4.01,"rotation":49.62,"width":50,"height":50}},"eff_stern_01":{"eff_stern_01":{"rotation":-90,"width":100,"height":50}},"eff_stern_02":{"eff_stern_02":{"rotation":-90,"width":100,"height":50}},"eff_stern_03":{"eff_stern_03":{"rotation":-90,"width":100,"height":50}},"head":{"head":{"x":93.87,"y":-0.32,"rotation":-89.55,"width":252,"height":252}},"l_ear":{"l_ear":{"x":10.41,"y":-0.08,"rotation":-55.44,"width":40,"height":40}},"l_eye1":{"l_eye1":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye2":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye3":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye4":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50},"l_eye5":{"x":18.47,"y":9.45,"rotation":-88.2,"width":50,"height":50}},"l_leg":{"l_leg":{"x":-2.85,"y":-0.71,"rotation":49.62,"width":56,"height":67}},"mouth1":{"mouth1":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60},"mouth2":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60},"mouth3":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60},"mouth4":{"x":7.56,"y":0.43,"rotation":-89.55,"width":80,"height":60}},"nose":{"nose":{"x":5.11,"y":-0.75,"rotation":-89.09,"width":22,"height":22}},"r_ear":{"r_ear":{"x":11.03,"y":-2.68,"rotation":-122.92,"width":40,"height":40}},"r_eye1":{"r_eye1":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye2":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye3":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye4":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50},"r_eye5":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":50,"height":50}},"r_leg":{"r_leg":{"x":1.45,"y":0.07,"rotation":118.52,"width":56,"height":67}}}},"animations":{"angry":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"}]},"eff_01":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff30"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_01"}]},"eff_02":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff78"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_02"}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye2"},{"time":0.6667,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye2"},{"time":0.6667,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1.02},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1.021},{"time":0.6667,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":3.96,"y":0.03},{"time":0.3333,"x":4.91,"y":0.04},{"time":0.5,"x":3.96,"y":0.03},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.016,"y":1},{"time":0.3333,"x":1.149,"y":1},{"time":0.5,"x":1.016,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-6.11,"y":-0.03},{"time":0.1667,"x":-3.14,"y":-0.02},{"time":0.3333,"x":-1.31,"y":-0.01},{"time":0.5,"x":-3.14,"y":-0.02},{"time":0.6667,"x":-6.11,"y":-0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.72},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":-5.91},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.971,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":6.67},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.98,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.975,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.029,"y":1},{"time":0.6667,"x":1,"y":1}]},"eff_01":{"rotate":[{"time":0.3333,"angle":0},{"time":0.6667,"angle":-10.73}],"translate":[{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-40.86,"y":22.79}]},"eff_02":{"rotate":[{"time":0.3333,"angle":-5.77},{"time":0.6667,"angle":7.2}],"translate":[{"time":0.3333,"x":7.21,"y":-1.2},{"time":0.6667,"x":36.06,"y":14.42}]},"angry":{"translate":[{"time":0,"x":14.45,"y":0.11}],"scale":[{"time":0,"x":1,"y":1}]}}},"death":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":"eff_stern_01"},{"time":0.0667,"name":null},{"time":0.1333,"name":null},{"time":0.2,"name":"eff_stern_01"},{"time":0.2667,"name":null},{"time":0.3333,"name":null},{"time":0.4,"name":"eff_stern_01"},{"time":0.4667,"name":null},{"time":0.5333,"name":null},{"time":0.6,"name":"eff_stern_01"},{"time":0.6667,"name":null},{"time":0.7333,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":"eff_stern_02"},{"time":0.1333,"name":null},{"time":0.2,"name":null},{"time":0.2667,"name":"eff_stern_02"},{"time":0.3333,"name":null},{"time":0.4,"name":null},{"time":0.4667,"name":"eff_stern_02"},{"time":0.5333,"name":null},{"time":0.6,"name":null},{"time":0.6667,"name":"eff_stern_02"},{"time":0.7333,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":null},{"time":0.1333,"name":"eff_stern_03"},{"time":0.2,"name":null},{"time":0.2667,"name":null},{"time":0.3333,"name":"eff_stern_03"},{"time":0.4,"name":null},{"time":0.4667,"name":null},{"time":0.5333,"name":"eff_stern_03"},{"time":0.6,"name":null},{"time":0.6667,"name":null},{"time":0.7333,"name":"eff_stern_03"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.3667,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.7333,"x":0,"y":-13.09}],"scale":[{"time":0,"x":0.975,"y":1},{"time":0.3667,"x":1,"y":1},{"time":0.7333,"x":0.975,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-8.45},{"time":0.3667,"x":0,"y":-6.85},{"time":0.7333,"x":0,"y":-8.45}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.006,"y":1.006},{"time":0.7333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":1.91,"y":0.05},{"time":0.3667,"x":0.12,"y":0.04},{"time":0.7333,"x":1.91,"y":0.05}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-5.96,"y":-0.02},{"time":0.3667,"x":-3.65,"y":-0.01},{"time":0.7333,"x":-5.96,"y":-0.02}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.956,"y":1},{"time":0.7333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":6.72},{"time":0.3667,"angle":27.38},{"time":0.7333,"angle":6.72}],"translate":[{"time":0,"x":1.01,"y":3.06},{"time":0.3667,"x":-3.81,"y":5.16},{"time":0.7333,"x":1.01,"y":3.06}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-6.88},{"time":0.3667,"angle":-18.86},{"time":0.7333,"angle":-6.88}],"translate":[{"time":0,"x":4.01,"y":-3.69},{"time":0.3667,"x":-0.61,"y":-6.4},{"time":0.7333,"x":4.01,"y":-3.69}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-28.99},{"time":0.3667,"angle":-33.11},{"time":0.7333,"angle":-28.99}],"translate":[{"time":0,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.3667,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.7333,"x":-10.06,"y":-3.54}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.909,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":24.05},{"time":0.3667,"angle":29.83},{"time":0.7333,"angle":24.05}],"translate":[{"time":0,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.3667,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.7333,"x":13.26,"y":0.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.905,"y":1},{"time":0.7333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.939,"y":0.939},{"time":0.7333,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-5.29,"y":-1.33}],"scale":[{"time":0,"x":1.2,"y":1.2}]},"eff_03":{"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.255,"y":1.255},{"time":0.7333,"x":1,"y":1}]}}},"dmg":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth4"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.27,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":1.27,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.045,"y":1.02,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1.02},{"time":0.5,"x":1,"y":1}]},"body1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":8.92,"curve":"stepped"},{"time":0.3333,"x":0,"y":8.92},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.034,"y":0.936,"curve":"stepped"},{"time":0.3333,"x":1.034,"y":0.936},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.4333,"x":1.046,"y":1.053},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":0.8,"y":0.48},{"time":0.1667,"x":2.76,"y":1.01,"curve":"stepped"},{"time":0.3333,"x":2.76,"y":1.01},{"time":0.5,"x":0.8,"y":0.48}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.079,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.079,"y":1},{"time":0.5,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.091,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.091,"y":1},{"time":0.5,"x":0.981,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.086,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.086,"y":1},{"time":0.5,"x":0.981,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.67,"curve":"stepped"},{"time":0.3333,"angle":-23.67},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":7.43,"y":0,"curve":"stepped"},{"time":0.3333,"x":7.43,"y":0},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.112,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.112,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":23.14,"curve":"stepped"},{"time":0.3333,"angle":23.14},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0.64,"y":-3.09},{"time":0.1667,"x":5.16,"y":-5.69,"curve":"stepped"},{"time":0.3333,"x":5.16,"y":-5.69},{"time":0.5,"x":0.64,"y":-3.09}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.077,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.077,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-29.07,"curve":"stepped"},{"time":0.3333,"angle":-29.07},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-19.11,"y":12.1,"curve":"stepped"},{"time":0.3333,"x":-19.11,"y":12.1},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.039,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.039,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":32.43,"curve":"stepped"},{"time":0.3333,"angle":32.43},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":30.58,"y":18.47,"curve":"stepped"},{"time":0.3333,"x":30.58,"y":18.47},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.065,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.065,"y":1},{"time":0.5,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.55,"y":3.19,"curve":"stepped"},{"time":0.3333,"x":2.55,"y":3.19},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.009,"y":0.876,"curve":"stepped"},{"time":0.3333,"x":1.009,"y":0.876},{"time":0.5,"x":1,"y":1}]},"back_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.55,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":-2.55,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.89,"y":1.205,"curve":"stepped"},{"time":0.3333,"x":0.89,"y":1.205},{"time":0.5,"x":1,"y":1}]}}},"stand":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.8333,"name":"l_eye1"},{"time":1,"name":"l_eye2"},{"time":1.1667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.8333,"name":"r_eye1"},{"time":1,"name":"r_eye2"},{"time":1.1667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-0.04},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":0.1},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.011,"y":1.01},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1.02},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":2.36,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.862,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.6667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.8333,"x":-2.29,"y":0.03},{"time":1,"x":2.09,"y":0.01},{"time":1.1667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":1.3333,"x":-2.29,"y":0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-1.6,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.946,"y":0.961},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":-1.6,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.945,"y":0.965},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.72},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-5.91},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.95},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":6.67},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.975,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.028,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.019,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"attack":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"},{"time":0.5,"name":"angry"}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.0667,"name":"l_eye3"},{"time":0.1667,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.0667,"name":"r_eye3"},{"time":0.1667,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-14.9},{"time":0.2667,"x":-0.02,"y":-17.36},{"time":0.5,"x":0,"y":-14.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1},{"time":0.5,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.0667,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.71},{"time":0.0667,"x":-0.18,"y":8.78},{"time":0.1667,"x":0,"y":-2.71,"curve":"stepped"},{"time":0.5,"x":0,"y":-2.71}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.099,"y":1.114},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":-13.5,"y":-0.11},{"time":0.2667,"x":-11.97,"y":-0.12},{"time":0.5,"x":-13.5,"y":-0.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.157,"y":1},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-12.58,"y":0.16}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.0667,"x":-5.66,"y":0.03},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.073,"y":1},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.0667,"x":-6.65,"y":0.16},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.053,"y":1},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0.17},{"time":0.2667,"angle":-12.22},{"time":0.5,"angle":0.17}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.06,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-7.03},{"time":0.2667,"angle":10.08},{"time":0.5,"angle":-7.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.07,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-4.34,"y":1.7},{"time":0.0667,"x":34.05,"y":1.65},{"time":0.1667,"x":-4.34,"y":1.7,"curve":"stepped"},{"time":0.5,"x":-4.34,"y":1.7}],"scale":[{"time":0,"x":1,"y":1},{"time":0.0667,"x":1.423,"y":1.273},{"time":0.1667,"x":1.369,"y":1},{"time":0.5,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/boss_hedgehog2.png b/m78-all/m78-fe/public/images/character/boss_hedgehog2.png new file mode 100644 index 000000000..2b48ff5f3 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/boss_hedgehog2.png differ diff --git a/m78-all/m78-fe/public/images/character/boss_skunk.atlas b/m78-all/m78-fe/public/images/character/boss_skunk.atlas new file mode 100644 index 000000000..b9c72765b --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_skunk.atlas @@ -0,0 +1,209 @@ + +boss_skunk.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +angry + rotate: false + xy: 224, 60 + size: 193, 194 + orig: 193, 194 + offset: 0, 0 + index: -1 +bak_leg + rotate: false + xy: 224, 22 + size: 112, 36 + orig: 112, 36 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 2, 18 + size: 220, 236 + orig: 220, 236 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 614, 191 + size: 141, 63 + orig: 141, 63 + offset: 0, 0 + index: -1 +eff_01 + rotate: false + xy: 338, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_02 + rotate: false + xy: 390, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_stern_01 + rotate: false + xy: 614, 139 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_02 + rotate: false + xy: 757, 204 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_03 + rotate: false + xy: 614, 87 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 419, 60 + size: 193, 194 + orig: 193, 194 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 822, 28 + size: 46, 40 + orig: 46, 40 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 442, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 494, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 546, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 614, 35 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 666, 35 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 840, 128 + size: 64, 75 + orig: 64, 75 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 859, 194 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 941, 194 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 716, 109 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 778, 122 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 822, 2 + size: 24, 20 + orig: 24, 20 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 882, 86 + size: 46, 40 + orig: 46, 40 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 718, 57 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 718, 5 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 778, 70 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 770, 18 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 830, 70 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 917, 128 + size: 64, 75 + orig: 64, 75 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/boss_skunk.json b/m78-all/m78-fe/public/images/character/boss_skunk.json new file mode 100644 index 000000000..2be57c161 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_skunk.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"vQRs0/lheap+0JrKKMSplWyMjq0","spine":"3.5.25","width":220,"height":249.51,"images":"./png/"},"bones":[{"name":"root","x":-1.27,"y":87.44},{"name":"head","parent":"root","length":23.19,"rotation":89.55,"x":1.15,"y":-74.92,"color":"9c9c9cff"},{"name":"angry","parent":"head","rotation":-0.07,"x":124.33,"y":1.53},{"name":"back_leg","parent":"root","length":10.92,"rotation":-91.36,"x":1.98,"y":-89.11},{"name":"body1","parent":"root","length":16.03,"rotation":90.9,"x":0.21,"y":32.12},{"name":"body2","parent":"root","length":10.24,"rotation":88.18,"x":0.79,"y":-82.45},{"name":"eff_01","parent":"root","length":21.62,"rotation":150.81,"x":-62.95,"y":42.11,"color":"9c9c9c00"},{"name":"eff_02","parent":"root","length":18.86,"rotation":33.34,"x":61.36,"y":42.17},{"name":"eff_03","parent":"root","length":7.28,"rotation":90,"x":1.69,"y":97.7},{"name":"l_ear","parent":"head","length":23.27,"rotation":-34.1,"x":131.7,"y":-54.3},{"name":"l_eye","parent":"head","length":19.45,"rotation":-1.35,"x":51.61,"y":-34.34},{"name":"l_leg","parent":"root","length":12.58,"rotation":-49.62,"x":58.65,"y":-55.88},{"name":"mouth","parent":"head","length":6.14,"x":25.38,"y":0.34},{"name":"nose","parent":"head","length":15.35,"rotation":-0.45,"x":43.89,"y":0.8},{"name":"r_ear","parent":"head","length":27.62,"rotation":33.37,"x":130.26,"y":54.13},{"name":"r_eye","parent":"head","length":14.66,"rotation":-0.27,"x":53.84,"y":35.88},{"name":"r_leg","parent":"root","length":12.06,"rotation":-118.52,"x":-55.5,"y":-52.83,"scaleX":0.99,"scaleY":0.99}],"slots":[{"name":"body1","bone":"body1","attachment":"body1"},{"name":"bak_leg","bone":"back_leg","attachment":"bak_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"head","bone":"head","attachment":"head"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"eff_02","bone":"eff_02"},{"name":"eff_01","bone":"eff_01"},{"name":"eff_stern_01","bone":"eff_03"},{"name":"eff_stern_02","bone":"eff_03"},{"name":"eff_stern_03","bone":"eff_03"},{"name":"angry","bone":"angry"}],"skins":{"default":{"angry":{"angry":{"x":-29.42,"y":0.08,"rotation":-89.55,"width":193,"height":194}},"bak_leg":{"bak_leg":{"x":-19.68,"y":0.74,"rotation":91.36,"width":112,"height":36}},"body1":{"body1":{"x":7.7,"y":-0.71,"rotation":-90.9,"width":220,"height":236}},"body2":{"body2":{"x":25.48,"y":1.19,"rotation":-88.18,"width":141,"height":63}},"eff_01":{"eff_01":{"x":24.76,"y":-6.14,"rotation":128.16,"width":50,"height":50}},"eff_02":{"eff_02":{"x":22.66,"y":4.01,"rotation":49.62,"width":50,"height":50}},"eff_stern_01":{"eff_stern_01":{"rotation":-90,"width":100,"height":50}},"eff_stern_02":{"eff_stern_02":{"rotation":-90,"width":100,"height":50}},"eff_stern_03":{"eff_stern_03":{"rotation":-90,"width":100,"height":50}},"head":{"head":{"x":93.87,"y":1.43,"rotation":-89.55,"width":193,"height":194}},"l_ear":{"l_ear":{"x":8.58,"y":8.6,"rotation":-55.44,"width":46,"height":40}},"l_eye1":{"l_eye1":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye2":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye3":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye4":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye5":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50}},"l_leg":{"l_leg":{"x":-2.28,"y":-0.05,"rotation":49.62,"width":64,"height":75}},"mouth1":{"mouth1":{"x":6.89,"y":-0.56,"rotation":-89.55,"width":80,"height":60},"mouth2":{"x":7.56,"y":-0.44,"rotation":-89.55,"width":80,"height":60},"mouth3":{"x":7.56,"y":-0.44,"rotation":-89.55,"width":80,"height":60},"mouth4":{"x":7.56,"y":-0.44,"rotation":-89.55,"width":80,"height":60}},"nose":{"nose":{"x":5.11,"y":-1.18,"rotation":-89.09,"width":24,"height":20}},"r_ear":{"r_ear":{"x":11.03,"y":-2.68,"rotation":-122.92,"width":46,"height":40}},"r_eye1":{"r_eye1":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye2":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye3":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye4":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye5":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50}},"r_leg":{"r_leg":{"x":0.83,"y":1.23,"rotation":118.52,"width":64,"height":75}}}},"animations":{"angry":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"},{"time":0.3333,"name":"angry"},{"time":0.6667,"name":"angry"}]},"eff_01":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff30"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_01"}]},"eff_02":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff78"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_02"}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye2"},{"time":0.6667,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye2"},{"time":0.6667,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1.02},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1.021},{"time":0.6667,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.27,"y":0.06},{"time":0.3333,"x":1.69,"y":0.06},{"time":0.5,"x":0.27,"y":0.06},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.016,"y":1},{"time":0.3333,"x":1.149,"y":1},{"time":0.5,"x":1.016,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.45,"y":-0.03},{"time":0.1667,"x":-0.99,"y":-0.02},{"time":0.3333,"x":-1.31,"y":-0.01},{"time":0.5,"x":-0.99,"y":-0.02},{"time":0.6667,"x":-2.45,"y":-0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.72},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":-5.91},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.971,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":6.67},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.98,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.975,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.085,"y":1.064},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.085,"y":1.064},{"time":0.6667,"x":1,"y":1}]},"eff_01":{"rotate":[{"time":0.3333,"angle":0},{"time":0.6667,"angle":-10.73}],"translate":[{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-40.86,"y":22.79}]},"eff_02":{"rotate":[{"time":0.3333,"angle":-5.77},{"time":0.6667,"angle":7.2}],"translate":[{"time":0.3333,"x":7.21,"y":-1.2},{"time":0.6667,"x":36.06,"y":14.42}]},"angry":{"translate":[{"time":0,"x":-1.5,"y":0.13,"curve":"stepped"},{"time":0.3333,"x":-1.5,"y":0.13,"curve":"stepped"},{"time":0.6667,"x":-1.5,"y":0.13}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.038,"y":1.038},{"time":0.6667,"x":1,"y":1}]}}},"death":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":"eff_stern_01"},{"time":0.0667,"name":null},{"time":0.1333,"name":null},{"time":0.2,"name":"eff_stern_01"},{"time":0.2667,"name":null},{"time":0.3333,"name":null},{"time":0.4,"name":"eff_stern_01"},{"time":0.4667,"name":null},{"time":0.5333,"name":null},{"time":0.6,"name":"eff_stern_01"},{"time":0.6667,"name":null},{"time":0.7333,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":"eff_stern_02"},{"time":0.1333,"name":null},{"time":0.2,"name":null},{"time":0.2667,"name":"eff_stern_02"},{"time":0.3333,"name":null},{"time":0.4,"name":null},{"time":0.4667,"name":"eff_stern_02"},{"time":0.5333,"name":null},{"time":0.6,"name":null},{"time":0.6667,"name":"eff_stern_02"},{"time":0.7333,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":null},{"time":0.1333,"name":"eff_stern_03"},{"time":0.2,"name":null},{"time":0.2667,"name":null},{"time":0.3333,"name":"eff_stern_03"},{"time":0.4,"name":null},{"time":0.4667,"name":null},{"time":0.5333,"name":"eff_stern_03"},{"time":0.6,"name":null},{"time":0.6667,"name":null},{"time":0.7333,"name":"eff_stern_03"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.3667,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.7333,"x":0,"y":-13.09}],"scale":[{"time":0,"x":0.975,"y":1},{"time":0.3667,"x":1,"y":1},{"time":0.7333,"x":0.975,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-8.45},{"time":0.3667,"x":0,"y":-6.85},{"time":0.7333,"x":0,"y":-8.45}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.006,"y":1.006},{"time":0.7333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":1.91,"y":0.05},{"time":0.3667,"x":3.81,"y":0.02},{"time":0.7333,"x":1.91,"y":0.05}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-0.67,"y":-0.76},{"time":0.3667,"x":3.75,"y":-0.76},{"time":0.7333,"x":-0.67,"y":-0.76}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.956,"y":1},{"time":0.7333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":1.16,"y":4.78},{"time":0.3333,"x":1.89,"y":4.77},{"time":0.6667,"x":1.16,"y":4.78}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0.41,"y":-1.11},{"time":0.3333,"x":2.25,"y":-1.16},{"time":0.6667,"x":0.41,"y":-1.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":6.72},{"time":0.3667,"angle":27.38},{"time":0.7333,"angle":6.72}],"translate":[{"time":0,"x":1.45,"y":2.22},{"time":0.3667,"x":-1.65,"y":-0.33},{"time":0.7333,"x":1.45,"y":2.22}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-6.88},{"time":0.3667,"angle":-29.6},{"time":0.7333,"angle":-6.88}],"translate":[{"time":0,"x":1.82,"y":-0.75},{"time":0.3667,"x":-2.79,"y":1.2},{"time":0.7333,"x":1.82,"y":-0.75}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-28.99},{"time":0.3667,"angle":-33.11},{"time":0.7333,"angle":-28.99}],"translate":[{"time":0,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.3667,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.7333,"x":-10.06,"y":-3.54}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.909,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":24.05},{"time":0.3667,"angle":29.83},{"time":0.7333,"angle":24.05}],"translate":[{"time":0,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.3667,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.7333,"x":13.26,"y":0.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.905,"y":1},{"time":0.7333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.939,"y":0.939},{"time":0.7333,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-5.29,"y":-1.33}],"scale":[{"time":0,"x":1.2,"y":1.2}]},"eff_03":{"translate":[{"time":0,"x":0,"y":-55.43}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.255,"y":1.255},{"time":0.7333,"x":1,"y":1}]},"back_leg":{"translate":[{"time":0,"x":0.08,"y":3.27,"curve":"stepped"},{"time":0.7333,"x":0.08,"y":3.27}]}}},"dmg":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye2"},{"time":0.1667,"name":"l_eye4"},{"time":0.5,"name":"l_eye4"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.5,"name":"mouth4"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye2"},{"time":0.1667,"name":"r_eye4"},{"time":0.5,"name":"r_eye4"}]}},"bones":{"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.27,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":1.27,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.045,"y":1.02,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1.02},{"time":0.5,"x":1,"y":1}]},"body1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":8.92,"curve":"stepped"},{"time":0.3333,"x":0,"y":8.92},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.034,"y":0.936,"curve":"stepped"},{"time":0.3333,"x":1.034,"y":0.936},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":4.51,"y":0.04,"curve":"stepped"},{"time":0.3333,"x":4.51,"y":0.04},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.4333,"x":1.046,"y":1.053},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-1.61,"y":-0.56},{"time":0.1667,"x":2.28,"y":-0.36,"curve":"stepped"},{"time":0.3333,"x":2.28,"y":-0.36},{"time":0.5,"x":-1.61,"y":-0.56}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.079,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.079,"y":1},{"time":0.5,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.091,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.091,"y":1},{"time":0.5,"x":0.981,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.086,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.086,"y":1},{"time":0.5,"x":0.981,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.67,"curve":"stepped"},{"time":0.3333,"angle":-23.67},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.43,"y":2.95,"curve":"stepped"},{"time":0.3333,"x":-0.43,"y":2.95},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.112,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.112,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":16.47,"curve":"stepped"},{"time":0.3333,"angle":16.47},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":-1.77,"y":-0.03},{"time":0.1667,"x":-0.74,"y":-2.06,"curve":"stepped"},{"time":0.3333,"x":-0.74,"y":-2.06},{"time":0.5,"x":-1.77,"y":-0.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.077,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.077,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-29.07,"curve":"stepped"},{"time":0.3333,"angle":-29.07},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-10.46,"y":-0.08,"curve":"stepped"},{"time":0.3333,"x":-10.46,"y":-0.08},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.039,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.039,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":32.43,"curve":"stepped"},{"time":0.3333,"angle":32.43},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":12.1,"y":0.39,"curve":"stepped"},{"time":0.3333,"x":12.1,"y":0.39},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.065,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.065,"y":1},{"time":0.5,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.55,"y":3.19,"curve":"stepped"},{"time":0.3333,"x":2.55,"y":3.19},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.009,"y":0.876,"curve":"stepped"},{"time":0.3333,"x":1.009,"y":0.876},{"time":0.5,"x":1,"y":1}]},"back_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.55,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":-2.55,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.89,"y":1.205,"curve":"stepped"},{"time":0.3333,"x":0.89,"y":1.205},{"time":0.5,"x":1,"y":1}]}}},"stand":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.8333,"name":"l_eye1"},{"time":0.9,"name":"l_eye2"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.8333,"name":"r_eye1"},{"time":0.9,"name":"r_eye2"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-0.04},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":0.1},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.011,"y":1.01},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1.02},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.39},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":2.36,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.862,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.6667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.8333,"x":-2.29,"y":0.03},{"time":1,"x":2.09,"y":0.01},{"time":1.1667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":1.3333,"x":-2.29,"y":0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":0.9,"x":-1.6,"y":-0.01},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":0.9,"x":0.946,"y":0.961},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":0.9,"x":-1.6,"y":-0.01},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":0.9,"x":0.945,"y":0.965},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.72},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-5.91},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.95},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":6.67},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.975,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.028,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.019,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"attack":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.1667,"name":"l_eye2"},{"time":0.3333,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.1667,"name":"r_eye2"},{"time":0.3333,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-14.9},{"time":0.2667,"x":-0.02,"y":-17.36},{"time":0.5,"x":0,"y":-14.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1},{"time":0.5,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.71},{"time":0.1667,"x":-0.18,"y":8.78},{"time":0.5,"x":0,"y":-2.71}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.005,"y":1.104},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":-0.73,"y":-0.21},{"time":0.2667,"x":0.54,"y":-0.22},{"time":0.5,"x":-0.73,"y":-0.21}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.036,"y":1},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-1.61,"y":-0.56},{"time":0.2667,"x":-2.15,"y":-0.21},{"time":0.5,"x":-0.73,"y":-0.21}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-3.22,"y":0.02},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.073,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.81,"y":0.07},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.053,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0.17},{"time":0.2667,"angle":-12.22},{"time":0.5,"angle":0.17}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.06,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-7.03},{"time":0.2667,"angle":10.08},{"time":0.5,"angle":-7.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.07,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/boss_skunk.png b/m78-all/m78-fe/public/images/character/boss_skunk.png new file mode 100644 index 000000000..f94a33499 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/boss_skunk.png differ diff --git a/m78-all/m78-fe/public/images/character/boss_skunk2.atlas b/m78-all/m78-fe/public/images/character/boss_skunk2.atlas new file mode 100644 index 000000000..36fa33f67 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_skunk2.atlas @@ -0,0 +1,209 @@ + +boss_skunk2.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +angry + rotate: false + xy: 224, 60 + size: 193, 194 + orig: 193, 194 + offset: 0, 0 + index: -1 +bak_leg + rotate: false + xy: 224, 22 + size: 112, 36 + orig: 112, 36 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 2, 18 + size: 220, 236 + orig: 220, 236 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 614, 191 + size: 141, 63 + orig: 141, 63 + offset: 0, 0 + index: -1 +eff_01 + rotate: false + xy: 338, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_02 + rotate: false + xy: 390, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_stern_01 + rotate: false + xy: 614, 139 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_02 + rotate: false + xy: 757, 204 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_03 + rotate: false + xy: 614, 87 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 419, 60 + size: 193, 194 + orig: 193, 194 + offset: 0, 0 + index: -1 +l_ear + rotate: false + xy: 738, 15 + size: 46, 40 + orig: 46, 40 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 614, 25 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 442, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 494, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 546, 8 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_eye5 + rotate: false + xy: 738, 57 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +l_leg + rotate: true + xy: 840, 128 + size: 64, 75 + orig: 64, 75 + offset: 0, 0 + index: -1 +mouth1 + rotate: false + xy: 859, 194 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth2 + rotate: false + xy: 941, 194 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 716, 109 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +mouth4 + rotate: true + xy: 778, 122 + size: 80, 60 + orig: 80, 60 + offset: 0, 0 + index: -1 +nose + rotate: true + xy: 786, 2 + size: 24, 20 + orig: 24, 20 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 790, 28 + size: 46, 40 + orig: 46, 40 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 676, 25 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 790, 70 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 842, 76 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 894, 76 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 946, 76 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: true + xy: 917, 128 + size: 64, 75 + orig: 64, 75 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/boss_skunk2.json b/m78-all/m78-fe/public/images/character/boss_skunk2.json new file mode 100644 index 000000000..545d64eb2 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_skunk2.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"9P6PGK6tTKvR94c6/p4Ic1UPFOs","spine":"3.5.25","width":220,"height":249.51,"images":"./png/"},"bones":[{"name":"root","x":-1.27,"y":87.44},{"name":"head","parent":"root","length":23.19,"rotation":89.55,"x":1.15,"y":-74.92,"color":"9c9c9cff"},{"name":"angry","parent":"head","rotation":-0.07,"x":124.33,"y":1.53},{"name":"back_leg","parent":"root","length":10.92,"rotation":-91.36,"x":1.98,"y":-89.11},{"name":"body1","parent":"root","length":16.03,"rotation":90.9,"x":0.21,"y":32.12},{"name":"body2","parent":"root","length":10.24,"rotation":88.18,"x":0.79,"y":-82.45},{"name":"eff_01","parent":"root","length":21.62,"rotation":150.81,"x":-62.95,"y":42.11,"color":"9c9c9c00"},{"name":"eff_02","parent":"root","length":18.86,"rotation":33.34,"x":61.36,"y":42.17},{"name":"eff_03","parent":"root","length":7.28,"rotation":90,"x":1.69,"y":97.7},{"name":"l_ear","parent":"head","length":23.27,"rotation":-34.1,"x":131.7,"y":-54.3},{"name":"l_eye","parent":"head","length":19.45,"rotation":-1.35,"x":55.31,"y":-35.11},{"name":"l_leg","parent":"root","length":12.58,"rotation":-49.62,"x":58.65,"y":-55.88},{"name":"mouth","parent":"head","length":6.14,"x":25.38,"y":0.34},{"name":"nose","parent":"head","length":15.35,"rotation":-0.45,"x":43.89,"y":0.8},{"name":"r_ear","parent":"head","length":27.62,"rotation":33.37,"x":130.26,"y":54.13},{"name":"r_eye","parent":"head","length":14.66,"rotation":-0.27,"x":58.21,"y":41.72},{"name":"r_leg","parent":"root","length":12.06,"rotation":-118.52,"x":-55.5,"y":-52.83,"scaleX":0.99,"scaleY":0.99}],"slots":[{"name":"body1","bone":"body1","attachment":"body1"},{"name":"bak_leg","bone":"back_leg","attachment":"bak_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"head","bone":"head","attachment":"head"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"eff_02","bone":"eff_02"},{"name":"eff_01","bone":"eff_01"},{"name":"eff_stern_01","bone":"eff_03"},{"name":"eff_stern_02","bone":"eff_03"},{"name":"eff_stern_03","bone":"eff_03"},{"name":"angry","bone":"angry","attachment":"angry"}],"skins":{"default":{"angry":{"angry":{"x":-29.42,"y":0.08,"rotation":-89.55,"width":193,"height":194}},"bak_leg":{"bak_leg":{"x":-19.68,"y":0.74,"rotation":91.36,"width":112,"height":36}},"body1":{"body1":{"x":7.7,"y":-0.71,"rotation":-90.9,"width":220,"height":236}},"body2":{"body2":{"x":25.48,"y":1.19,"rotation":-88.18,"width":141,"height":63}},"eff_01":{"eff_01":{"x":24.76,"y":-6.14,"rotation":128.16,"width":50,"height":50}},"eff_02":{"eff_02":{"x":22.66,"y":4.01,"rotation":49.62,"width":50,"height":50}},"eff_stern_01":{"eff_stern_01":{"rotation":-90,"width":100,"height":50}},"eff_stern_02":{"eff_stern_02":{"rotation":-90,"width":100,"height":50}},"eff_stern_03":{"eff_stern_03":{"rotation":-90,"width":100,"height":50}},"head":{"head":{"x":93.87,"y":1.43,"rotation":-89.55,"width":193,"height":194}},"l_ear":{"l_ear":{"x":8.58,"y":8.6,"rotation":-55.44,"width":46,"height":40}},"l_eye1":{"l_eye1":{"x":18.47,"y":9.86,"rotation":-88.2,"width":60,"height":60},"l_eye2":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye3":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye4":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50},"l_eye5":{"x":18.47,"y":9.86,"rotation":-88.2,"width":50,"height":50}},"l_leg":{"l_leg":{"x":-2.28,"y":-0.05,"rotation":49.62,"width":64,"height":75}},"mouth1":{"mouth1":{"x":6.89,"y":-0.56,"rotation":-89.55,"width":80,"height":60},"mouth2":{"x":7.56,"y":-0.44,"rotation":-89.55,"width":80,"height":60},"mouth3":{"x":7.56,"y":-0.44,"rotation":-89.55,"width":80,"height":60},"mouth4":{"x":7.56,"y":-0.44,"rotation":-89.55,"width":80,"height":60}},"nose":{"nose":{"x":5.11,"y":-1.18,"rotation":-89.09,"width":24,"height":20}},"r_ear":{"r_ear":{"x":11.03,"y":-2.68,"rotation":-122.92,"width":46,"height":40}},"r_eye1":{"r_eye1":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":60,"height":60},"r_eye2":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye3":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye4":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50},"r_eye5":{"x":15.1,"y":-10.13,"rotation":-89.55,"width":50,"height":50}},"r_leg":{"r_leg":{"x":0.83,"y":1.23,"rotation":118.52,"width":64,"height":75}}}},"animations":{"angry":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"},{"time":0.3333,"name":"angry"},{"time":0.6667,"name":"angry"}]},"eff_01":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff30"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_01"}]},"eff_02":{"color":[{"time":0.3333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff78"}],"attachment":[{"time":0,"name":null},{"time":0.3333,"name":"eff_02"}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"},{"time":0.5667,"name":"l_eye2"},{"time":0.6667,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"},{"time":0.5667,"name":"r_eye2"},{"time":0.6667,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1.02},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1.021},{"time":0.6667,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0.27,"y":0.06},{"time":0.3333,"x":1.69,"y":0.06},{"time":0.5,"x":0.27,"y":0.06},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.016,"y":1},{"time":0.3333,"x":1.149,"y":1},{"time":0.5,"x":1.016,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.45,"y":-0.03},{"time":0.1667,"x":-0.99,"y":-0.02},{"time":0.3333,"x":-1.31,"y":-0.01},{"time":0.5,"x":-0.99,"y":-0.02},{"time":0.6667,"x":-2.45,"y":-0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.5667,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1,"curve":"stepped"},{"time":0.5667,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.72},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":-5.91},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.971,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":6.67},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.98,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.975,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.085,"y":1.064},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.085,"y":1.064},{"time":0.6667,"x":1,"y":1}]},"eff_01":{"rotate":[{"time":0.3333,"angle":0},{"time":0.6667,"angle":-10.73}],"translate":[{"time":0.3333,"x":0,"y":0},{"time":0.6667,"x":-40.86,"y":22.79}]},"eff_02":{"rotate":[{"time":0.3333,"angle":-5.77},{"time":0.6667,"angle":7.2}],"translate":[{"time":0.3333,"x":7.21,"y":-1.2},{"time":0.6667,"x":36.06,"y":14.42}]},"angry":{"translate":[{"time":0,"x":-1.5,"y":0.13,"curve":"stepped"},{"time":0.3333,"x":-1.5,"y":0.13,"curve":"stepped"},{"time":0.6667,"x":-1.5,"y":0.13}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.038,"y":1.038},{"time":0.6667,"x":1,"y":1}]}}},"death":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":"eff_stern_01"},{"time":0.0667,"name":null},{"time":0.1333,"name":null},{"time":0.2,"name":"eff_stern_01"},{"time":0.2667,"name":null},{"time":0.3333,"name":null},{"time":0.4,"name":"eff_stern_01"},{"time":0.4667,"name":null},{"time":0.5333,"name":null},{"time":0.6,"name":"eff_stern_01"},{"time":0.6667,"name":null},{"time":0.7333,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":"eff_stern_02"},{"time":0.1333,"name":null},{"time":0.2,"name":null},{"time":0.2667,"name":"eff_stern_02"},{"time":0.3333,"name":null},{"time":0.4,"name":null},{"time":0.4667,"name":"eff_stern_02"},{"time":0.5333,"name":null},{"time":0.6,"name":null},{"time":0.6667,"name":"eff_stern_02"},{"time":0.7333,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":null},{"time":0.1333,"name":"eff_stern_03"},{"time":0.2,"name":null},{"time":0.2667,"name":null},{"time":0.3333,"name":"eff_stern_03"},{"time":0.4,"name":null},{"time":0.4667,"name":null},{"time":0.5333,"name":"eff_stern_03"},{"time":0.6,"name":null},{"time":0.6667,"name":null},{"time":0.7333,"name":"eff_stern_03"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.3667,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.7333,"x":0,"y":-13.09}],"scale":[{"time":0,"x":0.975,"y":1},{"time":0.3667,"x":1,"y":1},{"time":0.7333,"x":0.975,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-8.45},{"time":0.3667,"x":0,"y":-6.85},{"time":0.7333,"x":0,"y":-8.45}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.006,"y":1.006},{"time":0.7333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":1.91,"y":0.05},{"time":0.3667,"x":3.81,"y":0.02},{"time":0.7333,"x":1.91,"y":0.05}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-0.67,"y":-0.76},{"time":0.3667,"x":3.75,"y":-0.76},{"time":0.7333,"x":-0.67,"y":-0.76}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.956,"y":1},{"time":0.7333,"x":1,"y":1}]},"r_eye":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":1.16,"y":4.78},{"time":0.3333,"x":1.89,"y":4.77},{"time":0.6667,"x":1.16,"y":4.78}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0.41,"y":-1.11},{"time":0.3333,"x":2.25,"y":-1.16},{"time":0.6667,"x":0.41,"y":-1.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.05,"y":1.05},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":6.72},{"time":0.3667,"angle":27.38},{"time":0.7333,"angle":6.72}],"translate":[{"time":0,"x":1.45,"y":2.22},{"time":0.3667,"x":-1.65,"y":-0.33},{"time":0.7333,"x":1.45,"y":2.22}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-6.88},{"time":0.3667,"angle":-29.6},{"time":0.7333,"angle":-6.88}],"translate":[{"time":0,"x":1.82,"y":-0.75},{"time":0.3667,"x":-2.79,"y":1.2},{"time":0.7333,"x":1.82,"y":-0.75}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-28.99},{"time":0.3667,"angle":-33.11},{"time":0.7333,"angle":-28.99}],"translate":[{"time":0,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.3667,"x":-10.06,"y":-3.54,"curve":"stepped"},{"time":0.7333,"x":-10.06,"y":-3.54}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.909,"y":1},{"time":0.7333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":24.05},{"time":0.3667,"angle":29.83},{"time":0.7333,"angle":24.05}],"translate":[{"time":0,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.3667,"x":13.26,"y":0.11,"curve":"stepped"},{"time":0.7333,"x":13.26,"y":0.11}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.905,"y":1},{"time":0.7333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.939,"y":0.939},{"time":0.7333,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-5.29,"y":-1.33}],"scale":[{"time":0,"x":1.2,"y":1.2}]},"eff_03":{"translate":[{"time":0,"x":0,"y":-55.43}],"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.255,"y":1.255},{"time":0.7333,"x":1,"y":1}]},"back_leg":{"translate":[{"time":0,"x":0.08,"y":3.27,"curve":"stepped"},{"time":0.7333,"x":0.08,"y":3.27}]}}},"dmg":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye2"},{"time":0.1667,"name":"l_eye4"},{"time":0.5,"name":"l_eye4"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth4"},{"time":0.5,"name":"mouth4"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye2"},{"time":0.1667,"name":"r_eye4"},{"time":0.5,"name":"r_eye4"}]}},"bones":{"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.27,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":1.27,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.045,"y":1.02,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1.02},{"time":0.5,"x":1,"y":1}]},"body1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":8.92,"curve":"stepped"},{"time":0.3333,"x":0,"y":8.92},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.034,"y":0.936,"curve":"stepped"},{"time":0.3333,"x":1.034,"y":0.936},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":4.51,"y":0.04,"curve":"stepped"},{"time":0.3333,"x":4.51,"y":0.04},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.4333,"x":1.046,"y":1.053},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-1.61,"y":-0.56},{"time":0.1667,"x":2.28,"y":-0.36,"curve":"stepped"},{"time":0.3333,"x":2.28,"y":-0.36},{"time":0.5,"x":-1.61,"y":-0.56}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.079,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.079,"y":1},{"time":0.5,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.091,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.091,"y":1},{"time":0.5,"x":0.981,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.086,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.086,"y":1},{"time":0.5,"x":0.981,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.67,"curve":"stepped"},{"time":0.3333,"angle":-23.67},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-0.43,"y":2.95,"curve":"stepped"},{"time":0.3333,"x":-0.43,"y":2.95},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.112,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.112,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":16.47,"curve":"stepped"},{"time":0.3333,"angle":16.47},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":-1.77,"y":-0.03},{"time":0.1667,"x":-0.74,"y":-2.06,"curve":"stepped"},{"time":0.3333,"x":-0.74,"y":-2.06},{"time":0.5,"x":-1.77,"y":-0.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.077,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.077,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-29.07,"curve":"stepped"},{"time":0.3333,"angle":-29.07},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-10.46,"y":-0.08,"curve":"stepped"},{"time":0.3333,"x":-10.46,"y":-0.08},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.039,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.039,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":32.43,"curve":"stepped"},{"time":0.3333,"angle":32.43},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":12.1,"y":0.39,"curve":"stepped"},{"time":0.3333,"x":12.1,"y":0.39},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.065,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.065,"y":1},{"time":0.5,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.55,"y":3.19,"curve":"stepped"},{"time":0.3333,"x":2.55,"y":3.19},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.009,"y":0.876,"curve":"stepped"},{"time":0.3333,"x":1.009,"y":0.876},{"time":0.5,"x":1,"y":1}]},"back_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.55,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":-2.55,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.89,"y":1.205,"curve":"stepped"},{"time":0.3333,"x":0.89,"y":1.205},{"time":0.5,"x":1,"y":1}]}}},"stand":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.8333,"name":"l_eye1"},{"time":0.9,"name":"l_eye2"},{"time":1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.8333,"name":"r_eye1"},{"time":0.9,"name":"r_eye2"},{"time":1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-0.04},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":0.1},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.011,"y":1.01},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1.02},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0},{"time":0.6667,"angle":2.39},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":2.36,"y":-0.01},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.862,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.6667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":0.8333,"x":-2.29,"y":0.03},{"time":1,"x":2.09,"y":0.01},{"time":1.1667,"x":-2.29,"y":0.03,"curve":"stepped"},{"time":1.3333,"x":-2.29,"y":0.03}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":0.9,"x":-1.6,"y":-0.01},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":0.9,"x":0.946,"y":0.961},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":0.9,"x":-1.6,"y":-0.01},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":0.9,"x":0.945,"y":0.965},{"time":1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.72},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-5.91},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.95},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":6.67},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.975,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.028,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.019,"y":1},{"time":1.3333,"x":1,"y":1}]}}},"attack":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"},{"time":0.1667,"name":"l_eye2"},{"time":0.3333,"name":"l_eye3"},{"time":0.5,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"},{"time":0.1667,"name":"r_eye2"},{"time":0.3333,"name":"r_eye3"},{"time":0.5,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.2667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-14.9},{"time":0.2667,"x":-0.02,"y":-17.36},{"time":0.5,"x":0,"y":-14.9}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.021,"y":1},{"time":0.5,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.71},{"time":0.1667,"x":-0.18,"y":8.78},{"time":0.5,"x":0,"y":-2.71}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.005,"y":1.104},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":-0.73,"y":-0.21},{"time":0.2667,"x":0.54,"y":-0.22},{"time":0.5,"x":-0.73,"y":-0.21}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.036,"y":1},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-1.61,"y":-0.56},{"time":0.2667,"x":-2.15,"y":-0.21},{"time":0.5,"x":-0.73,"y":-0.21}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-3.22,"y":0.02},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.073,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.81,"y":0.07},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.053,"y":1},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0.17},{"time":0.2667,"angle":-12.22},{"time":0.5,"angle":0.17}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.06,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-7.03},{"time":0.2667,"angle":10.08},{"time":0.5,"angle":-7.03}],"scale":[{"time":0,"x":1,"y":1},{"time":0.2667,"x":1.07,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/boss_skunk2.png b/m78-all/m78-fe/public/images/character/boss_skunk2.png new file mode 100644 index 000000000..f7635854e Binary files /dev/null and b/m78-all/m78-fe/public/images/character/boss_skunk2.png differ diff --git a/m78-all/m78-fe/public/images/character/boss_wildpig.atlas b/m78-all/m78-fe/public/images/character/boss_wildpig.atlas new file mode 100644 index 000000000..0b034a220 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_wildpig.atlas @@ -0,0 +1,223 @@ + +boss_wildpig.png +size: 1024,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +angry + rotate: false + xy: 602, 397 + size: 161, 113 + orig: 161, 113 + offset: 0, 0 + index: -1 +bak_leg + rotate: false + xy: 240, 343 + size: 125, 46 + orig: 125, 46 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 2, 304 + size: 236, 206 + orig: 236, 206 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 240, 391 + size: 172, 119 + orig: 172, 119 + offset: 0, 0 + index: -1 +eff_01 + rotate: false + xy: 953, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_02 + rotate: false + xy: 405, 316 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_stern_01 + rotate: false + xy: 851, 460 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_02 + rotate: false + xy: 240, 291 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_03 + rotate: false + xy: 414, 368 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +hair + rotate: false + xy: 598, 345 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +hair2 + rotate: false + xy: 670, 345 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 88 + size: 206, 214 + orig: 206, 214 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 210, 97 + size: 36, 57 + orig: 36, 57 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 210, 239 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 210, 187 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye3 + rotate: true + xy: 282, 219 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 210, 135 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye5 + rotate: true + xy: 282, 147 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 516, 352 + size: 80, 66 + orig: 80, 66 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 2, 2 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 74, 2 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 146, 2 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 765, 440 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 414, 420 + size: 186, 90 + orig: 186, 90 + offset: 0, 0 + index: -1 +r_ear + rotate: false + xy: 367, 332 + size: 36, 57 + orig: 36, 57 + offset: 0, 0 + index: -1 +r_eye1 + rotate: true + xy: 218, 25 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye2 + rotate: false + xy: 851, 408 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye3 + rotate: false + xy: 923, 408 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 847, 356 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 919, 356 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 765, 372 + size: 80, 66 + orig: 80, 66 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/boss_wildpig.json b/m78-all/m78-fe/public/images/character/boss_wildpig.json new file mode 100644 index 000000000..5bc306222 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_wildpig.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"NYHrn52InS61YXnO1GVbe0f5Q3I","spine":"3.5.25","width":217.85,"height":218.1,"images":"./png/"},"bones":[{"name":"root","x":-1.27,"y":86.48},{"name":"head","parent":"root","length":23.19,"rotation":89.55,"x":0.48,"y":-85.85,"color":"9c9c9cff"},{"name":"angry","parent":"head","x":136.92,"y":4.05,"scaleY":0.944},{"name":"back_leg","parent":"root","length":10.92,"rotation":-91.36,"x":0.87,"y":-77.96},{"name":"body1","parent":"root","length":16.03,"rotation":90.9,"x":-0.07,"y":-2.91,"scaleX":0.922,"scaleY":0.922},{"name":"body2","parent":"root","length":10.24,"rotation":88.18,"x":2.59,"y":35.22,"scaleY":0.972},{"name":"eff_01","parent":"root","length":21.62,"rotation":-128.16,"x":-21,"y":-31.63,"color":"9c9c9c00"},{"name":"eff_02","parent":"root","length":18.86,"rotation":-49.62,"x":25.37,"y":-34.7},{"name":"eff_03","parent":"root","length":7.28,"rotation":90,"x":1.07,"y":61.83},{"name":"hair","parent":"head","length":21.81,"rotation":5.35,"x":174.91,"y":1.82,"color":"9c9c9cff"},{"name":"l_ear","parent":"head","length":23.27,"rotation":-34.1,"x":118.15,"y":-63.23},{"name":"l_eye","parent":"head","length":19.45,"rotation":-1.35,"x":63.74,"y":-44.85},{"name":"l_leg","parent":"root","length":12.58,"rotation":-49.62,"x":51.92,"y":-57.79},{"name":"mouth","parent":"head","length":6.14,"x":25.04,"y":0.2,"scaleX":0.844,"scaleY":0.844},{"name":"nose","parent":"head","length":15.35,"rotation":-0.45,"x":41.46,"y":0.52},{"name":"r_ear","parent":"head","length":27.62,"rotation":33.37,"x":115.11,"y":69.84},{"name":"r_eye","parent":"head","length":14.66,"x":64.51,"y":44.16},{"name":"r_leg","parent":"root","length":12.06,"rotation":-118.52,"x":-47.55,"y":-56.57,"scaleX":0.99,"scaleY":0.99}],"slots":[{"name":"bak_leg","bone":"back_leg","attachment":"bak_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"head","bone":"head","attachment":"head"},{"name":"angry","bone":"angry"},{"name":"hair","bone":"hair","attachment":"hair"},{"name":"mouth1","bone":"mouth","attachment":"mouth1"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye1"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye1"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"eff_02","bone":"eff_02"},{"name":"eff_01","bone":"eff_01"},{"name":"eff_stern_01","bone":"eff_03"},{"name":"eff_stern_02","bone":"eff_03"},{"name":"eff_stern_03","bone":"eff_03"}],"skins":{"default":{"angry":{"angry":{"x":6.44,"y":-1.17,"rotation":-89.55,"width":161,"height":113}},"bak_leg":{"bak_leg":{"x":-12.66,"scaleX":0.801,"rotation":91.36,"width":125,"height":46}},"body1":{"body1":{"x":37.82,"y":-1.96,"rotation":-90.84,"width":236,"height":206}},"body2":{"body2":{"x":-55.21,"y":-1.75,"rotation":-88.18,"width":172,"height":119}},"eff_01":{"eff_01":{"x":24.76,"y":-6.14,"rotation":128.16,"width":50,"height":50}},"eff_02":{"eff_02":{"x":22.66,"y":4.01,"rotation":49.62,"width":50,"height":50}},"eff_stern_01":{"eff_stern_01":{"rotation":-90,"width":100,"height":50}},"eff_stern_02":{"eff_stern_02":{"rotation":-90,"width":100,"height":50}},"eff_stern_03":{"eff_stern_03":{"rotation":-90,"width":100,"height":50}},"hair":{"hair":{"x":13.25,"y":7.93,"rotation":-94.9,"width":70,"height":50},"hair2":{"x":13.27,"y":7.93,"rotation":265.1,"width":70,"height":50}},"head":{"head":{"x":107.56,"y":-1.67,"scaleX":0.999,"scaleY":1.007,"rotation":-89.55,"width":206,"height":214}},"l_ear":{"l_ear":{"x":14.15,"y":-9.72,"rotation":-55.44,"width":36,"height":57}},"l_eye1":{"l_eye1":{"x":18.47,"y":9.45,"rotation":-88.2,"width":70,"height":50},"l_eye2":{"x":18.47,"y":9.45,"rotation":-88.2,"width":70,"height":50},"l_eye3":{"x":18.47,"y":9.45,"rotation":-88.2,"width":70,"height":50},"l_eye4":{"x":18.47,"y":9.45,"rotation":-88.2,"width":70,"height":50},"l_eye5":{"x":18.47,"y":9.45,"rotation":-88.2,"width":70,"height":50}},"l_leg":{"l_leg":{"x":-2.93,"y":-12.73,"scaleX":0.75,"scaleY":0.75,"rotation":49.62,"width":80,"height":66}},"mouth1":{"mouth1":{"x":14.68,"y":-1.62,"rotation":-89.55,"width":84,"height":70},"mouth2":{"x":14.68,"y":-1.62,"rotation":-89.55,"width":84,"height":70},"mouth3":{"x":14.68,"y":-1.62,"rotation":-89.55,"width":84,"height":70},"mouth4":{"x":14.68,"y":-1.62,"rotation":-89.55,"width":84,"height":70}},"nose":{"nose":{"x":9.57,"y":-1.21,"rotation":-89.09,"width":186,"height":90}},"r_ear":{"r_ear":{"x":8.62,"y":-1.11,"rotation":-122.92,"width":36,"height":57}},"r_eye1":{"r_eye1":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":70,"height":50},"r_eye2":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":70,"height":50},"r_eye3":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":70,"height":50},"r_eye4":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":70,"height":50},"r_eye5":{"x":17.48,"y":-10.77,"rotation":-89.55,"width":70,"height":50}},"r_leg":{"r_leg":{"x":2.51,"y":11.27,"scaleX":0.752,"scaleY":0.752,"rotation":118.52,"width":80,"height":66}}}},"animations":{"angry":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"}]},"eff_01":{"color":[{"time":0.4333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff30"}],"attachment":[{"time":0,"name":null},{"time":0.4333,"name":"eff_01"}]},"eff_02":{"color":[{"time":0.4333,"color":"ffffffff"},{"time":0.6667,"color":"ffffff78"}],"attachment":[{"time":0,"name":null},{"time":0.4333,"name":"eff_02"}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"hair":{"attachment":[{"time":0,"name":"hair2"},{"time":0.6667,"name":"hair2"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1.02},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1.021},{"time":0.6667,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5333,"x":7.39,"y":0},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.016,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5333,"x":1.016,"y":1},{"time":0.6667,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":7,"y":0.08},{"time":0.1667,"x":3.3,"y":0.03},{"time":0.3333,"x":-0.73,"y":0.02},{"time":0.5,"x":3.13,"y":0.02},{"time":0.6,"x":-1.97,"y":0.05},{"time":0.6667,"x":7,"y":0.08}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.5667,"x":-3.22,"y":0},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.984,"y":1},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.5667,"x":-2.69,"y":0},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.979,"y":1},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":6.72},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":-5.91},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.971,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-4.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5667,"angle":6.67},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5667,"x":0.97,"y":1},{"time":0.6667,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.98,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6667,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.975,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.02,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.029,"y":1},{"time":0.6667,"x":1,"y":1}]},"eff_01":{"rotate":[{"time":0.4333,"angle":0},{"time":0.6667,"angle":-23.23}],"translate":[{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":-34.26,"y":-28.03}]},"eff_02":{"rotate":[{"time":0.4333,"angle":0},{"time":0.6667,"angle":21.37}],"translate":[{"time":0.4333,"x":0,"y":0},{"time":0.6667,"x":24.44,"y":-20.37}]},"angry":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-6.61,"y":1.16}],"scale":[{"time":0,"x":1.11,"y":1.11}]},"hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":8.81},{"time":0.6667,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1}]}}},"death":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":"eff_stern_01"},{"time":0.0667,"name":null},{"time":0.1333,"name":null},{"time":0.2,"name":"eff_stern_01"},{"time":0.2667,"name":null},{"time":0.3333,"name":null},{"time":0.4,"name":"eff_stern_01"},{"time":0.4667,"name":null},{"time":0.5333,"name":null},{"time":0.6,"name":"eff_stern_01"},{"time":0.6667,"name":null},{"time":0.7333,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":"eff_stern_02"},{"time":0.1333,"name":null},{"time":0.2,"name":null},{"time":0.2667,"name":"eff_stern_02"},{"time":0.3333,"name":null},{"time":0.4,"name":null},{"time":0.4667,"name":"eff_stern_02"},{"time":0.5333,"name":null},{"time":0.6,"name":null},{"time":0.6667,"name":"eff_stern_02"},{"time":0.7333,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null},{"time":0.0667,"name":null},{"time":0.1333,"name":"eff_stern_03"},{"time":0.2,"name":null},{"time":0.2667,"name":null},{"time":0.3333,"name":"eff_stern_03"},{"time":0.4,"name":null},{"time":0.4667,"name":null},{"time":0.5333,"name":"eff_stern_03"},{"time":0.6,"name":null},{"time":0.6667,"name":null},{"time":0.7333,"name":"eff_stern_03"}]},"hair":{"attachment":[{"time":0,"name":"hair"},{"time":0.7333,"name":"hair"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-22.12},{"time":0.3667,"x":0,"y":-23.62},{"time":0.7333,"x":0,"y":-22.12}],"scale":[{"time":0,"x":0.975,"y":1},{"time":0.3667,"x":1,"y":1},{"time":0.7333,"x":0.975,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3667,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-19.13,"curve":"stepped"},{"time":0.3667,"x":0,"y":-19.13,"curve":"stepped"},{"time":0.7333,"x":0,"y":-19.13}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.006,"y":1.006},{"time":0.7333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":-4.03,"y":0},{"time":0.3667,"x":-5.54,"y":0},{"time":0.7333,"x":-4.03,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.8,"y":0},{"time":0.3667,"x":-4.3,"y":-0.01},{"time":0.7333,"x":-2.8,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":1.105,"y":1},{"time":0.7333,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":2.12},{"time":0.3667,"angle":7.43},{"time":0.7333,"angle":2.12}],"translate":[{"time":0,"x":-7.24,"y":5.69,"curve":"stepped"},{"time":0.3667,"x":-7.24,"y":5.69,"curve":"stepped"},{"time":0.7333,"x":-7.24,"y":5.69}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0.94},{"time":0.3667,"angle":-6.13},{"time":0.7333,"angle":0.94}],"translate":[{"time":0,"x":-4.81,"y":-3.34,"curve":"stepped"},{"time":0.3667,"x":-4.81,"y":-3.34,"curve":"stepped"},{"time":0.7333,"x":-4.81,"y":-3.34}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3667,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-28.99}],"translate":[{"time":0,"x":-19.13,"y":-12.08}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":24.05}],"translate":[{"time":0,"x":19.13,"y":-10.57}],"scale":[{"time":0,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3667,"x":0.939,"y":0.939},{"time":0.7333,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-5.29,"y":-1.33}],"scale":[{"time":0,"x":1.2,"y":1.2}]},"eff_03":{"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.255,"y":1.255},{"time":0.7333,"x":1,"y":1}]},"hair":{"rotate":[{"time":0,"angle":0},{"time":0.3667,"angle":5.46},{"time":0.7333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]}}},"dmg":{"slots":{"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"hair":{"attachment":[{"time":0,"name":"hair"},{"time":0.5,"name":"hair"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth4"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":1.27,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":1.27,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.045,"y":1.02,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1.02},{"time":0.5,"x":1,"y":1}]},"body1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":0,"y":8.92,"curve":"stepped"},{"time":0.3333,"x":0,"y":8.92},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.034,"y":0.936,"curve":"stepped"},{"time":0.3333,"x":1.034,"y":0.936},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1667,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.4333,"x":1.046,"y":1.053},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.8,"y":0},{"time":0.1667,"x":-12.53,"y":0,"curve":"stepped"},{"time":0.3333,"x":-12.53,"y":0},{"time":0.5,"x":-2.8,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.536,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.536,"y":1},{"time":0.5,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.091,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.091,"y":1},{"time":0.5,"x":0.981,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1667,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.086,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.086,"y":1},{"time":0.5,"x":0.981,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-23.67,"curve":"stepped"},{"time":0.3333,"angle":-23.67},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":7.43,"y":0,"curve":"stepped"},{"time":0.3333,"x":7.43,"y":0},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.112,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.112,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":15.45,"curve":"stepped"},{"time":0.3333,"angle":15.45},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":7.43,"y":6.45,"curve":"stepped"},{"time":0.3333,"x":7.43,"y":6.45},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.077,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.077,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-29.07,"curve":"stepped"},{"time":0.3333,"angle":-29.07},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-19.11,"y":12.1,"curve":"stepped"},{"time":0.3333,"x":-19.11,"y":12.1},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.039,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.039,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":32.43,"curve":"stepped"},{"time":0.3333,"angle":32.43},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":30.58,"y":18.47,"curve":"stepped"},{"time":0.3333,"x":30.58,"y":18.47},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.065,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.065,"y":1},{"time":0.5,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":2.55,"y":3.19,"curve":"stepped"},{"time":0.3333,"x":2.55,"y":3.19},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.045,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1},{"time":0.5,"x":1,"y":1}]},"back_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1667,"x":-2.55,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":-2.55,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":0.89,"y":1.205,"curve":"stepped"},{"time":0.3333,"x":0.89,"y":1.205},{"time":0.5,"x":1,"y":1}]},"hair":{"rotate":[{"time":0,"angle":0},{"time":0.1667,"angle":-5.01},{"time":0.3333,"angle":0.38},{"time":0.5,"angle":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1667,"x":1.054,"y":1},{"time":0.3333,"x":0.953,"y":1},{"time":0.5,"x":1,"y":1}]}}},"stand":{"slots":{"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"hair":{"attachment":[{"time":0,"name":"hair"},{"time":1.3333,"name":"hair"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.9333,"name":"l_eye1"},{"time":1,"name":"l_eye2"},{"time":1.0667,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.9333,"name":"r_eye1"},{"time":1,"name":"r_eye2"},{"time":1.0667,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1667,"angle":0},{"time":0.3333,"angle":-0.04},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":0.1},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1.02},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.02,"y":1.02},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6667,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":3.32,"y":0},{"time":1.1667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.016,"y":1},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.913,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-6.52,"y":0,"curve":"stepped"},{"time":0.3333,"x":-6.52,"y":0,"curve":"stepped"},{"time":0.6667,"x":-6.52,"y":0},{"time":0.8333,"x":0,"y":0},{"time":1,"x":11.03,"y":0},{"time":1.1667,"x":0,"y":0},{"time":1.3333,"x":-6.52,"y":0}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0},{"time":1,"x":-3.22,"y":0},{"time":1.0667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.9333,"x":1,"y":1},{"time":1,"x":0.984,"y":1},{"time":1.0667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6667,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0},{"time":1,"x":-2.69,"y":0},{"time":1.0667,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.9333,"x":1,"y":1},{"time":1,"x":0.979,"y":1},{"time":1.0667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.72},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-5.91},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.95},{"time":0.6667,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":6.67},{"time":1.1667,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6667,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.97,"y":1},{"time":1.1667,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.975,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":0.975,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.023,"y":1},{"time":0.6667,"x":1,"y":1},{"time":1,"x":1.032,"y":1},{"time":1.3333,"x":1,"y":1}]},"hair":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":5.4},{"time":0.6667,"angle":0},{"time":1,"angle":-7.95},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/boss_wildpig.png b/m78-all/m78-fe/public/images/character/boss_wildpig.png new file mode 100644 index 000000000..bb5cb02a6 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/boss_wildpig.png differ diff --git a/m78-all/m78-fe/public/images/character/boss_wildpig2.atlas b/m78-all/m78-fe/public/images/character/boss_wildpig2.atlas new file mode 100644 index 000000000..562e141e6 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_wildpig2.atlas @@ -0,0 +1,209 @@ + +boss_wildpig2.png +size: 1024,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +angry + rotate: false + xy: 602, 397 + size: 161, 113 + orig: 161, 113 + offset: 0, 0 + index: -1 +bak_leg + rotate: false + xy: 240, 343 + size: 125, 46 + orig: 125, 46 + offset: 0, 0 + index: -1 +body1 + rotate: false + xy: 2, 304 + size: 236, 206 + orig: 236, 206 + offset: 0, 0 + index: -1 +body2 + rotate: false + xy: 240, 391 + size: 172, 119 + orig: 172, 119 + offset: 0, 0 + index: -1 +eff_01 + rotate: false + xy: 953, 460 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_02 + rotate: false + xy: 906, 356 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +eff_stern_01 + rotate: false + xy: 851, 460 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_02 + rotate: false + xy: 240, 291 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +eff_stern_03 + rotate: false + xy: 414, 368 + size: 100, 50 + orig: 100, 50 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 88 + size: 206, 214 + orig: 206, 214 + offset: 0, 0 + index: -1 +l_ear + rotate: true + xy: 210, 97 + size: 36, 57 + orig: 36, 57 + offset: 0, 0 + index: -1 +l_eye1 + rotate: false + xy: 598, 345 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye2 + rotate: false + xy: 670, 345 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye3 + rotate: false + xy: 210, 239 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye4 + rotate: false + xy: 210, 187 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_eye5 + rotate: true + xy: 282, 219 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +l_leg + rotate: false + xy: 516, 352 + size: 80, 66 + orig: 80, 66 + offset: 0, 0 + index: -1 +mouth1 + rotate: true + xy: 2, 2 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +mouth2 + rotate: true + xy: 74, 2 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +mouth3 + rotate: true + xy: 146, 2 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +mouth4 + rotate: false + xy: 765, 440 + size: 84, 70 + orig: 84, 70 + offset: 0, 0 + index: -1 +nose + rotate: false + xy: 414, 420 + size: 186, 90 + orig: 186, 90 + offset: 0, 0 + index: -1 +r_ear + rotate: true + xy: 847, 370 + size: 36, 57 + orig: 36, 57 + offset: 0, 0 + index: -1 +r_eye1 + rotate: false + xy: 210, 135 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye2 + rotate: true + xy: 282, 147 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye3 + rotate: true + xy: 218, 25 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye4 + rotate: false + xy: 851, 408 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_eye5 + rotate: false + xy: 923, 408 + size: 70, 50 + orig: 70, 50 + offset: 0, 0 + index: -1 +r_leg + rotate: false + xy: 765, 372 + size: 80, 66 + orig: 80, 66 + offset: 0, 0 + index: -1 diff --git a/m78-all/m78-fe/public/images/character/boss_wildpig2.json b/m78-all/m78-fe/public/images/character/boss_wildpig2.json new file mode 100644 index 000000000..9245b6fb3 --- /dev/null +++ b/m78-all/m78-fe/public/images/character/boss_wildpig2.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"bmGjqERhUEXvqPTF7wHI5WOEW7k","spine":"3.4.02","width":236,"height":233.52,"images":"./png/"},"bones":[{"name":"root","x":-1.26,"y":86.48},{"name":"head","parent":"root","length":23.19,"rotation":89.54,"x":0.47,"y":-85.84,"color":"9c9c9cff"},{"name":"angry","parent":"head","rotation":-0.06,"x":151.42,"y":1.49},{"name":"back_leg","parent":"root","length":10.91,"rotation":-91.36,"x":0.47,"y":-78.34},{"name":"body1","parent":"root","length":16.03,"rotation":90.9,"x":0.13,"y":0.08},{"name":"body2","parent":"root","length":10.23,"rotation":88.18,"x":1.32,"y":32.48},{"name":"eff_01","parent":"root","length":21.62,"rotation":-128.15,"x":-21,"y":-31.62,"color":"9c9c9c00"},{"name":"eff_02","parent":"root","length":18.86,"rotation":-49.62,"x":25.37,"y":-34.69},{"name":"eff_03","parent":"root","length":7.28,"rotation":90,"x":-3.91,"y":73.64},{"name":"l_ear","parent":"head","length":23.27,"rotation":-34.1,"x":118.06,"y":-52.61},{"name":"l_eye","parent":"head","length":19.44,"rotation":-1.35,"x":68.21,"y":-44.81},{"name":"l_leg","parent":"root","length":12.57,"rotation":-49.62,"x":52.31,"y":-61.29},{"name":"mouth","parent":"head","length":6.13,"x":25.23,"y":0.19},{"name":"nose","parent":"head","length":15.34,"rotation":-0.45,"x":38.35,"y":0.05},{"name":"r_ear","parent":"head","length":27.61,"rotation":33.37,"x":114.75,"y":64.33},{"name":"r_eye","parent":"head","length":14.66,"x":68.53,"y":44.18},{"name":"r_leg","parent":"root","length":12.05,"rotation":-118.51,"x":-47.94,"y":-58.9,"scaleX":0.989,"scaleY":0.989}],"slots":[{"name":"bak_leg","bone":"back_leg","attachment":"bak_leg"},{"name":"body2","bone":"body2","attachment":"body2"},{"name":"l_leg","bone":"l_leg","attachment":"l_leg"},{"name":"r_leg","bone":"r_leg","attachment":"r_leg"},{"name":"body1","bone":"body1","attachment":"body1"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth1","bone":"mouth","attachment":"mouth2"},{"name":"l_ear","bone":"l_ear","attachment":"l_ear"},{"name":"r_ear","bone":"r_ear","attachment":"r_ear"},{"name":"l_eye1","bone":"l_eye","attachment":"l_eye3"},{"name":"r_eye1","bone":"r_eye","attachment":"r_eye3"},{"name":"nose","bone":"nose","attachment":"nose"},{"name":"angry","bone":"angry","attachment":"angry"},{"name":"eff_02","bone":"eff_02"},{"name":"eff_01","bone":"eff_01"},{"name":"eff_stern_01","bone":"eff_03"},{"name":"eff_stern_02","bone":"eff_03"},{"name":"eff_stern_03","bone":"eff_03"}],"skins":{"default":{"angry":{"angry":{"rotation":-89.54,"width":161,"height":113}},"bak_leg":{"bak_leg":{"x":-12.66,"rotation":91.36,"width":125,"height":46}},"body1":{"body1":{"x":37.82,"y":-1.95,"rotation":-90.9,"width":236,"height":206}},"body2":{"body2":{"x":-55.21,"y":-1.75,"rotation":-88.18,"width":172,"height":119}},"eff_01":{"eff_01":{"x":24.76,"y":-6.13,"rotation":128.15,"width":50,"height":50}},"eff_02":{"eff_02":{"x":22.66,"y":4,"rotation":49.62,"width":50,"height":50}},"eff_stern_01":{"eff_stern_01":{"rotation":-90,"width":100,"height":50}},"eff_stern_02":{"eff_stern_02":{"rotation":-90,"width":100,"height":50}},"eff_stern_03":{"eff_stern_03":{"rotation":-90,"width":100,"height":50}},"head":{"head":{"x":108.45,"y":-1.22,"rotation":-89.54,"width":206,"height":214}},"l_ear":{"l_ear":{"x":14.14,"y":-9.71,"rotation":-55.44,"width":36,"height":57}},"l_eye1":{"l_eye1":{"x":18.46,"y":9.45,"rotation":-88.19,"width":70,"height":50},"l_eye2":{"x":18.46,"y":9.45,"rotation":-88.19,"width":70,"height":50},"l_eye3":{"x":18.46,"y":9.45,"rotation":-88.19,"width":70,"height":50},"l_eye4":{"x":18.46,"y":9.45,"rotation":-88.19,"width":70,"height":50},"l_eye5":{"x":18.46,"y":9.45,"rotation":-88.19,"width":70,"height":50}},"l_leg":{"l_leg":{"x":-2.84,"y":-0.71,"rotation":49.62,"width":80,"height":66}},"mouth1":{"mouth1":{"x":14.68,"y":-1.62,"rotation":-89.54,"width":84,"height":70},"mouth2":{"x":14.68,"y":-1.62,"rotation":-89.54,"width":84,"height":70},"mouth3":{"x":14.68,"y":-1.62,"rotation":-89.54,"width":84,"height":70},"mouth4":{"x":14.68,"y":-1.62,"rotation":-89.54,"width":84,"height":70}},"nose":{"nose":{"x":9.56,"y":-1.21,"rotation":-89.09,"width":186,"height":90}},"r_ear":{"r_ear":{"x":8.62,"y":-1.11,"rotation":-122.92,"width":36,"height":57}},"r_eye1":{"r_eye1":{"x":17.47,"y":-10.77,"rotation":-89.54,"width":70,"height":50},"r_eye2":{"x":17.48,"y":-10.77,"rotation":-89.54,"width":70,"height":50},"r_eye3":{"x":17.48,"y":-10.77,"rotation":-89.54,"width":70,"height":50},"r_eye4":{"x":17.48,"y":-10.77,"rotation":-89.54,"width":70,"height":50},"r_eye5":{"x":17.48,"y":-10.77,"rotation":-89.54,"width":70,"height":50}},"r_leg":{"r_leg":{"x":0.59,"y":0.32,"rotation":118.51,"width":80,"height":66}}}},"animations":{"angry":{"slots":{"angry":{"attachment":[{"time":0,"name":"angry"}]},"eff_01":{"color":[{"time":0.4333,"color":"ffffffff"},{"time":0.6666,"color":"ffffff30"}],"attachment":[{"time":0,"name":null},{"time":0.4333,"name":"eff_01"}]},"eff_02":{"color":[{"time":0.4333,"color":"ffffffff"},{"time":0.6666,"color":"ffffff78"}],"attachment":[{"time":0,"name":null},{"time":0.4333,"name":"eff_02"}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye3"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth2"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye3"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.02,"y":1.02},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.02,"y":1.02},{"time":0.6666,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.026,"y":1.026},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.021,"y":1.021},{"time":0.6666,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0},{"time":0.5333,"x":7.39,"y":0},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.016,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5333,"x":1.016,"y":1},{"time":0.6666,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.8,"y":0},{"time":0.1666,"x":-0.26,"y":0},{"time":0.3333,"x":-2.8,"y":0},{"time":0.5,"x":0.59,"y":0},{"time":0.6,"x":-8.66,"y":0},{"time":0.6666,"x":-2.8,"y":0}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.5666,"x":-3.22,"y":0},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5666,"x":0.983,"y":1},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0},{"time":0.5666,"x":-2.68,"y":0},{"time":0.6,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5666,"x":0.978,"y":1},{"time":0.6,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":6.72},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5666,"angle":-5.91},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5666,"x":0.971,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-4.95},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0},{"time":0.5666,"angle":6.67},{"time":0.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.5,"x":1,"y":1},{"time":0.5666,"x":0.969,"y":1},{"time":0.6666,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.98,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.976,"y":1},{"time":0.6666,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.975,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.6666,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.019,"y":1},{"time":0.3333,"x":1,"y":1},{"time":0.5,"x":1.028,"y":1},{"time":0.6666,"x":1,"y":1}]},"eff_01":{"rotate":[{"time":0.4333,"angle":0},{"time":0.6666,"angle":-23.23}],"translate":[{"time":0.4333,"x":0,"y":0},{"time":0.6666,"x":-34.26,"y":-28.03}]},"eff_02":{"rotate":[{"time":0.4333,"angle":0},{"time":0.6666,"angle":21.37}],"translate":[{"time":0.4333,"x":0,"y":0},{"time":0.6666,"x":24.44,"y":-20.36}]},"angry":{"translate":[{"time":0,"x":-5.28,"y":-1.32}],"scale":[{"time":0,"x":1.199,"y":1.199}]}}},"death":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":"eff_stern_01"},{"time":0.0666,"name":null},{"time":0.1333,"name":null},{"time":0.2,"name":"eff_stern_01"},{"time":0.2666,"name":null},{"time":0.3333,"name":null},{"time":0.4,"name":"eff_stern_01"},{"time":0.4666,"name":null},{"time":0.5333,"name":null},{"time":0.6,"name":"eff_stern_01"},{"time":0.6666,"name":null},{"time":0.7333,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null},{"time":0.0666,"name":"eff_stern_02"},{"time":0.1333,"name":null},{"time":0.2,"name":null},{"time":0.2666,"name":"eff_stern_02"},{"time":0.3333,"name":null},{"time":0.4,"name":null},{"time":0.4666,"name":"eff_stern_02"},{"time":0.5333,"name":null},{"time":0.6,"name":null},{"time":0.6666,"name":"eff_stern_02"},{"time":0.7333,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null},{"time":0.0666,"name":null},{"time":0.1333,"name":"eff_stern_03"},{"time":0.2,"name":null},{"time":0.2666,"name":null},{"time":0.3333,"name":"eff_stern_03"},{"time":0.4,"name":null},{"time":0.4666,"name":null},{"time":0.5333,"name":"eff_stern_03"},{"time":0.6,"name":null},{"time":0.6666,"name":null},{"time":0.7333,"name":"eff_stern_03"}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye5"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth3"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye5"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3666,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.3666,"x":0,"y":-13.09,"curve":"stepped"},{"time":0.7333,"x":0,"y":-13.09}],"scale":[{"time":0,"x":0.974,"y":1},{"time":0.3666,"x":1,"y":1},{"time":0.7333,"x":0.974,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.3666,"angle":0,"curve":"stepped"},{"time":0.7333,"angle":0}],"translate":[{"time":0,"x":0,"y":-19.13,"curve":"stepped"},{"time":0.3666,"x":0,"y":-19.13,"curve":"stepped"},{"time":0.7333,"x":0,"y":-19.13}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3666,"x":1.006,"y":1.006},{"time":0.7333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":-4.02,"y":0},{"time":0.3666,"x":-5.53,"y":0},{"time":0.7333,"x":-4.02,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3666,"x":1.03,"y":1},{"time":0.7333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.8,"y":0},{"time":0.3666,"x":-4.29,"y":-0.01},{"time":0.7333,"x":-2.8,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3666,"x":1.104,"y":1},{"time":0.7333,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":23.31},{"time":0.3666,"angle":31.36},{"time":0.7333,"angle":23.31}],"translate":[{"time":0,"x":-5.55,"y":2.47},{"time":0.3666,"x":-10.54,"y":2.93},{"time":0.7333,"x":-5.55,"y":2.47}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3666,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":-31.47},{"time":0.3666,"angle":-37.27},{"time":0.7333,"angle":-31.47}],"translate":[{"time":0,"x":4.6,"y":-9.02},{"time":0.3666,"x":2.61,"y":-9.04},{"time":0.7333,"x":4.6,"y":-9.02}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3666,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":-28.98}],"translate":[{"time":0,"x":-19.13,"y":-12.08}],"scale":[{"time":0,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":24.05}],"translate":[{"time":0,"x":19.13,"y":-10.57}],"scale":[{"time":0,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3666,"x":0.939,"y":0.939},{"time":0.7333,"x":1,"y":1}]},"angry":{"translate":[{"time":0,"x":-5.28,"y":-1.32}],"scale":[{"time":0,"x":1.199,"y":1.199}]},"eff_03":{"scale":[{"time":0,"x":1,"y":1},{"time":0.4,"x":1.255,"y":1.255},{"time":0.7333,"x":1,"y":1}]}}},"dmg":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye4"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth4"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye4"}]}},"bones":{"head":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":1.27,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":1.27,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.045,"y":1.02,"curve":"stepped"},{"time":0.3333,"x":1.045,"y":1.02},{"time":0.5,"x":1,"y":1}]},"body1":{"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":0,"y":8.91,"curve":"stepped"},{"time":0.3333,"x":0,"y":8.91},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.033,"y":0.936,"curve":"stepped"},{"time":0.3333,"x":1.033,"y":0.936},{"time":0.5,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.4333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.1666,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1},{"time":0.4333,"x":1.046,"y":1.052},{"time":0.5,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-2.8,"y":0},{"time":0.1666,"x":-12.53,"y":0,"curve":"stepped"},{"time":0.3333,"x":-12.53,"y":0},{"time":0.5,"x":-2.8,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.535,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.535,"y":1},{"time":0.5,"x":1,"y":1}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.091,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.091,"y":1},{"time":0.5,"x":0.98,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.1666,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.085,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.085,"y":1},{"time":0.5,"x":0.981,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-23.66,"curve":"stepped"},{"time":0.3333,"angle":-23.66},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":7.42,"y":0,"curve":"stepped"},{"time":0.3333,"x":7.42,"y":0},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.112,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.112,"y":1},{"time":0.5,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":15.45,"curve":"stepped"},{"time":0.3333,"angle":15.45},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":7.43,"y":6.45,"curve":"stepped"},{"time":0.3333,"x":7.43,"y":6.45},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.076,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.076,"y":1},{"time":0.5,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":-29.06,"curve":"stepped"},{"time":0.3333,"angle":-29.06},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-19.1,"y":12.1,"curve":"stepped"},{"time":0.3333,"x":-19.1,"y":12.1},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.039,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.039,"y":1},{"time":0.5,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0},{"time":0.1666,"angle":32.43,"curve":"stepped"},{"time":0.3333,"angle":32.43},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":30.57,"y":18.47,"curve":"stepped"},{"time":0.3333,"x":30.57,"y":18.47},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.064,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.064,"y":1},{"time":0.5,"x":1,"y":1}]},"body2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":2.54,"y":3.18,"curve":"stepped"},{"time":0.3333,"x":2.54,"y":3.18},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":1.044,"y":1,"curve":"stepped"},{"time":0.3333,"x":1.044,"y":1},{"time":0.5,"x":1,"y":1}]},"back_leg":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0,"curve":"stepped"},{"time":0.3333,"angle":0,"curve":"stepped"},{"time":0.5,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1666,"x":-2.54,"y":5.73,"curve":"stepped"},{"time":0.3333,"x":-2.54,"y":5.73},{"time":0.5,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1666,"x":0.889,"y":1.204,"curve":"stepped"},{"time":0.3333,"x":0.889,"y":1.204},{"time":0.5,"x":1,"y":1}]}}},"stand":{"slots":{"angry":{"attachment":[{"time":0,"name":null}]},"eff_01":{"attachment":[{"time":0,"name":null}]},"eff_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_01":{"attachment":[{"time":0,"name":null}]},"eff_stern_02":{"attachment":[{"time":0,"name":null}]},"eff_stern_03":{"attachment":[{"time":0,"name":null}]},"l_eye1":{"attachment":[{"time":0,"name":"l_eye1"},{"time":0.9,"name":"l_eye1"},{"time":1,"name":"l_eye2"},{"time":1.1,"name":"l_eye1"},{"time":1.3333,"name":"l_eye1"}]},"mouth1":{"attachment":[{"time":0,"name":"mouth1"}]},"r_eye1":{"attachment":[{"time":0,"name":"r_eye1"},{"time":0.9,"name":"r_eye1"},{"time":1,"name":"r_eye2"},{"time":1.1,"name":"r_eye1"},{"time":1.3333,"name":"r_eye1"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.1666,"angle":0},{"time":0.3333,"angle":-0.04},{"time":0.5,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":0.09},{"time":1.1666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.02,"y":1.02},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.02,"y":1.02},{"time":1.3333,"x":1,"y":1}]},"body1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.6666,"x":1.026,"y":1.026},{"time":1.3333,"x":1,"y":1}]},"nose":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.8333,"x":0,"y":0},{"time":1,"x":3.31,"y":0},{"time":1.1666,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.016,"y":1},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.912,"y":1},{"time":1.1666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"mouth":{"translate":[{"time":0,"x":-6.52,"y":0,"curve":"stepped"},{"time":0.3333,"x":-6.52,"y":0,"curve":"stepped"},{"time":0.6666,"x":-6.52,"y":0},{"time":0.8333,"x":0,"y":0},{"time":1,"x":11.03,"y":0},{"time":1.1666,"x":0,"y":0},{"time":1.3333,"x":-6.52,"y":0}]},"r_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.9,"x":0,"y":0},{"time":1,"x":-3.22,"y":0},{"time":1.1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.9,"x":1,"y":1},{"time":1,"x":0.983,"y":1},{"time":1.1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_eye":{"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.3333,"x":0,"y":0,"curve":"stepped"},{"time":0.6666,"x":0,"y":0,"curve":"stepped"},{"time":0.9,"x":0,"y":0},{"time":1,"x":-2.68,"y":0},{"time":1.1,"x":0,"y":0,"curve":"stepped"},{"time":1.3333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.9,"x":1,"y":1},{"time":1,"x":0.978,"y":1},{"time":1.1,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":6.72},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":-5.91},{"time":1.1666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.971,"y":1},{"time":1.1666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"l_ear":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-4.95},{"time":0.6666,"angle":0,"curve":"stepped"},{"time":0.8333,"angle":0},{"time":1,"angle":6.67},{"time":1.1666,"angle":0,"curve":"stepped"},{"time":1.3333,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.3333,"x":1,"y":1,"curve":"stepped"},{"time":0.6666,"x":1,"y":1,"curve":"stepped"},{"time":0.8333,"x":1,"y":1},{"time":1,"x":0.969,"y":1},{"time":1.1666,"x":1,"y":1,"curve":"stepped"},{"time":1.3333,"x":1,"y":1}]},"r_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.98,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.976,"y":1},{"time":1.3333,"x":1,"y":1}]},"l_leg":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":0.975,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":0.975,"y":1},{"time":1.3333,"x":1,"y":1}]},"body2":{"scale":[{"time":0,"x":1,"y":1},{"time":0.3333,"x":1.048,"y":1},{"time":0.6666,"x":1,"y":1},{"time":1,"x":1.048,"y":1},{"time":1.3333,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/m78-all/m78-fe/public/images/character/boss_wildpig2.png b/m78-all/m78-fe/public/images/character/boss_wildpig2.png new file mode 100644 index 000000000..60bc22304 Binary files /dev/null and b/m78-all/m78-fe/public/images/character/boss_wildpig2.png differ diff --git a/m78-all/m78-fe/public/images/chat.png b/m78-all/m78-fe/public/images/chat.png new file mode 100644 index 000000000..4ce9ec3aa Binary files /dev/null and b/m78-all/m78-fe/public/images/chat.png differ diff --git a/m78-all/m78-fe/public/images/code.png b/m78-all/m78-fe/public/images/code.png new file mode 100644 index 000000000..8eb0c16d7 Binary files /dev/null and b/m78-all/m78-fe/public/images/code.png differ diff --git a/m78-all/m78-fe/public/images/document.png b/m78-all/m78-fe/public/images/document.png new file mode 100644 index 000000000..e79060925 Binary files /dev/null and b/m78-all/m78-fe/public/images/document.png differ diff --git a/m78-all/m78-fe/public/images/logo/chatgpt.png b/m78-all/m78-fe/public/images/logo/chatgpt.png new file mode 100644 index 000000000..8a92fe495 Binary files /dev/null and b/m78-all/m78-fe/public/images/logo/chatgpt.png differ diff --git a/m78-all/m78-fe/public/images/logo/glm4.png b/m78-all/m78-fe/public/images/logo/glm4.png new file mode 100644 index 000000000..a0dec76e1 Binary files /dev/null and b/m78-all/m78-fe/public/images/logo/glm4.png differ diff --git a/m78-all/m78-fe/public/images/logo/kimi.png b/m78-all/m78-fe/public/images/logo/kimi.png new file mode 100644 index 000000000..a9b0da821 Binary files /dev/null and b/m78-all/m78-fe/public/images/logo/kimi.png differ diff --git a/m78-all/m78-fe/public/images/logo/kimi1.png b/m78-all/m78-fe/public/images/logo/kimi1.png new file mode 100644 index 000000000..e77a5e01c Binary files /dev/null and b/m78-all/m78-fe/public/images/logo/kimi1.png differ diff --git a/m78-all/m78-fe/public/images/translate.png b/m78-all/m78-fe/public/images/translate.png new file mode 100644 index 000000000..779fd1fbb Binary files /dev/null and b/m78-all/m78-fe/public/images/translate.png differ diff --git a/m78-all/m78-fe/src/App.vue b/m78-all/m78-fe/src/App.vue new file mode 100644 index 000000000..e1eea21d7 --- /dev/null +++ b/m78-all/m78-fe/src/App.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/m78-all/m78-fe/src/api/agent.ts b/m78-all/m78-fe/src/api/agent.ts new file mode 100644 index 000000000..e57664bb1 --- /dev/null +++ b/m78-all/m78-fe/src/api/agent.ts @@ -0,0 +1,22 @@ +import { get, post } from '@/utils/request' + +export function fetchAgents() { + return get({ + url: '/v1/agent/list', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function communicate( + agentId: string, + data: { + message: string + topicId: string + } +) { + return post({ + url: '/v1/agent/communicate?agentId=' + agentId, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/chat.ts b/m78-all/m78-fe/src/api/chat.ts new file mode 100644 index 000000000..ea858ed35 --- /dev/null +++ b/m78-all/m78-fe/src/api/chat.ts @@ -0,0 +1,126 @@ +import { post, get } from '@/utils/request' +import request from '@/utils/request/axios' +//@ts-ignore +import qs from 'qs' + +export function getChatList() { + return get({ + url: '/v1/chat/messagetopic/list', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function addChat(data: { title: string; description: string }) { + return post({ + url: '/v1/chat/chattopic/add', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateChat(data: { + id: number + title: string + knowledgeConfig: Chat.KnowledgeConfig +}) { + return post({ + url: '/v1/chat/chattopic/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function delChat(data: { topicId: number }) { + return request({ + url: '/v1/chat/chattopic/delete', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + method: 'POST', + data: qs.stringify(data), + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getChatMessageList(data: { topicId: number }) { + return get({ + url: '/v1/chat/chatmessage/list', + data: data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function addChatMessage(data: { + topicId: number + message: string + messageRole: Chat.Role + meta: { $$FeChat: string } +}) { + return post({ + url: '/v1/chat/chatmessage/add', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function delChatMessage(data: { messageId: any }) { + return request({ + url: '/v1/chat/chatmessage/delete', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + method: 'POST', + data: qs.stringify(data), + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function clearChatMessage(data: { topicId: number }) { + return get({ + url: '/v1/chat/message/clear', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +//我的知识库列表 +export function getKnowledgeMyList(data: {}) { + return get({ + url: '/v1/knowledge/myList', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +// 某个知识库下的文件列表 +export function getKnowledgeFileMyList(data: {}) { + return get({ + url: '/v1/knowledge/file/myList', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 详情 +export function getMessagetopicDetail(data: { topicId: string }) { + return get({ + url: '/v1/chat/messagetopic/detail', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +/** + * @description 知识解析 + */ +export const embedding = ( + data: [ + { + fileName: string + knowledgeBaseId: string + } + ] +): Promise> => + post({ + url: '/knowledge/base/files/embedding', + data, + baseURL: import.meta.env.VITE_GLOB_Z_API_URL + }) diff --git a/m78-all/m78-fe/src/api/data-source.ts b/m78-all/m78-fe/src/api/data-source.ts new file mode 100644 index 000000000..fd5e85fbc --- /dev/null +++ b/m78-all/m78-fe/src/api/data-source.ts @@ -0,0 +1,155 @@ +import { post, get } from '@/utils/request' + +export function getDataSources() { + return get({ + url: '/v1/datasource/list', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function createDataSource(data: { + host: string + port: string + database: string + user: string + pwd: string + jdbcUrl: string +}) { + return post({ + url: '/v1/datasource/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateDataSource(data: { + host: string + port: string + database: string + user: string + pwd: string + jdbcUrl: string + userName: string +}) { + return post({ + url: '/v1/datasource/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function deleteDataSource(data: { id: string }) { + return post({ + url: '/v1/datasource/delete', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getTables(data: { connectionId: string }) { + return get({ + url: '/v1/datasource/tables', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getLabels(data: { connectionId: string }) { + return get({ + url: '/v1/datasource/labels', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function executeSql(data: { + connectionId: string + comment: string + customKnowledge: string + upperBound: number + lowerBound: number +}) { + return post({ + url: '/v1/datasource/executeSql', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateMeta(data: { id: string; customKnowledge: string }) { + return post({ + url: '/v1/datasource/content', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function queryTableData(data: { id: string; customKnowledge: string }) { + return post({ + url: '/v1/datasource/queryTableData', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function queryTableStructure(data: { id: string; customKnowledge: string }) { + return get({ + url: '/v1/datasource/tableStructure', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function alterTableColumns(data: { id: string; customKnowledge: string }) { + return post({ + url: '/v1/datasource/alterTableColumns', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateTableDatas(data: { + datasourceId: string + tableName: string + operationType: 'DELETE' | 'UPDATE' | 'INSERT' + id?: string + updateData?: Record + newData?: Record +}) { + return post({ + url: '/v1/datasource/alterTableDatas', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +interface IConnectionInfo { + id: number + host: string + port: string + database: string + user: string + pwd: string + jdbcUrl: string + cluster: string + kerberos: string + queue: string + userName: string + type: number + customKnowledge: string + createTime: string + updateTime: string +} + +/** + * @description 根据表名和用户名获取表详情,包含连接信息 + */ +export function getTableDetail(tableName: string) { + return get<{ + connectionInfo: IConnectionInfo + tableName: string + }>({ + url: `/v1/ai_table/getTableDetail?tableName=${tableName}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/excle.ts b/m78-all/m78-fe/src/api/excle.ts new file mode 100644 index 000000000..a631a4cf0 --- /dev/null +++ b/m78-all/m78-fe/src/api/excle.ts @@ -0,0 +1,206 @@ +import type { AxiosProgressEvent, GenericAbortSignal } from 'axios' +import { post, get, deleteApi } from '@/utils/request' +import { useSettingStore } from '@/stores/settings' + +import type { ChatContextMsg } from '@/stores/chatContext' + +export function fetchInput(data, signal) { + return post({ + url: '/v1/document/data/analyze', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + signal + }) +} +export function docHistory() { + return get({ + url: '/v1/document/list', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getDocDetail(documentId) { + return get({ + url: `/v1/document/data?documentId=${documentId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getDocInputList(documentId) { + return get({ + url: `/v1/document/get?documentId=${documentId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +export function delChat(chatInfoId) { + return deleteApi({ + url: `/v1/document/chat/delete?chatInfoId=${chatInfoId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function favorite(documentId) { + return get({ + url: `/v1/document/favorite?documentId=${documentId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function unfavorite(documentId) { + return get({ + url: `/v1/document/unfavorite?documentId=${documentId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function myfavorite() { + return get({ + url: '/v1/document/favorite/list', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function delDocApi(documentId) { + return deleteApi({ + url: `/v1/document/delete?documentId=${documentId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getChatInfoApi(chatInfoId) { + return post({ + url: `/v1/document/chat/info?chatInfoId=${chatInfoId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateChatInfoApi(data) { + return post({ + url: '/v1/document/chat/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateMeta(data) { + return post({ + url: '/v1/document/content', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function appendRowApi(data) { + return post({ + url: '/v1/document/insert/row', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function appendColApi(data) { + return post({ + url: '/v1/document/column/insert', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updataCellApi(data) { + return post({ + url: '/v1/document/cell/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getColInfoApi(id) { + // 获取列信息 + return post({ + url: `/v1/document/columns/info?documentId=${id}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function delColApi(data) { + // 删除某一列 + return post({ + url: '/v1/document/column/delete', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function delRowApi(data) { + // 删除某一行 + return post({ + url: '/v1/document/row/delete', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function addRowApi(data) { + // 新增一行 + return post({ + url: '/v1/document/row/insert', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function changeColNameApi(data) { + // 更新名 + return post({ + url: '/v1/document/column/updateName', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function createHttpApi(data) { + return post({ + url: '/v1/feature/router/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getApiList(data) { + return get({ + url: '/v1/feature/router/list', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function delHttpApi(id) { + return deleteApi({ + url: `/v1/feature/router/delete?id=${id}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function editHttpApi(data) { + return post({ + url: '/v1/feature/router/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getHttpApi(data) { + return get({ + url: '/v1/feature/router/getById', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function testHttpApi(data) { + return post({ + url: '/v1/feature/router/query', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/feedback.ts b/m78-all/m78-fe/src/api/feedback.ts new file mode 100644 index 000000000..3b77bc854 --- /dev/null +++ b/m78-all/m78-fe/src/api/feedback.ts @@ -0,0 +1,9 @@ +import { post } from '@/utils/request' + +export function feedback(data) { + return post({ + url: '/v1/contact/submit', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/index.ts b/m78-all/m78-fe/src/api/index.ts new file mode 100644 index 000000000..ce39d30e1 --- /dev/null +++ b/m78-all/m78-fe/src/api/index.ts @@ -0,0 +1,172 @@ +import type { AxiosError, AxiosProgressEvent, GenericAbortSignal } from 'axios' +import { get, post } from '@/utils/request' +import request from '@/utils/request/axios' +import { useSettingStore } from '@/stores/settings' +import { useUserStore } from '@/stores' +import type { ChatContextMsg } from '@/stores/chatContext' + +export function fetchUser() { + return request({ + url: `/v1/user/getUserInfo`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }).then( + ({ data }) => { + return data + }, + (error: AxiosError) => { + const response = error.response + if (response?.status === 401 && response?.headers?.loginurl) { + window.location.href = `${response.headers.loginurl}?redirectUrl=${encodeURIComponent( + window.location.href + )}` + } else { + console.error('no login:', response?.headers) + } + } + ) +} + +export function logout(tpcToken: string) { + const { userInfo } = useUserStore() + const logoutUrl = userInfo.logoutUrl || 'https://xxxxx' + return request({ + url: `${logoutUrl}?TPC_TOKEN=${tpcToken}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }).then( + () => { + window.location.href = window.location.origin + }, + (error: AxiosError) => { + console.log('logout', error) + window.location.href = window.location.origin + } + ) +} + +export function getChatGptModels() { + return get({ + url: `/v1/user/getUserConfig`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchPromptList(type: string, token: string) { + return post({ + url: '/z-open/list', + data: { + token, + type, + tags: '42' + } + }) +} + +export function fetchChatAPI( + prompt: string, + options?: { conversationId?: string; parentMessageId?: string }, + signal?: GenericAbortSignal +) { + return post({ + url: '/chat', + data: { prompt, options }, + signal + }) +} + +export function fetchChatAPIProcess(params: { + chatContextMsg: ChatContextMsg[] + zToken?: string + prompt: string + topicId: string + signal?: GenericAbortSignal + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void +}) { + const setting = useSettingStore() + let obj = null + try { + obj = JSON.parse(params.prompt) + } catch (e) { + console.error(e) + obj = null + } + const date = new Date() + let data: Record = {} + if (obj && obj.promptName) { + data = { + zzToken: params.zToken || '', + promptName: obj.promptName, + params: obj.params, + paramMap: obj.paramMap, + type: 0, + id: date.getTime(), + model: setting.chatModel || null, + temperature: setting.temperature, + from: 'chat' + } + } else { + data = { + msgList: [ + ...params.chatContextMsg, + { + content: params.prompt, + role: 'USER' + } + ], + topicId: params.topicId, + currentMsg: params.prompt, + zzToken: params.zToken || '', + type: 1, + id: date.getTime(), + model: setting.chatModel || null, + temperature: setting.temperature, + from: 'chat' + } + } + + return post({ + url: '/v1/chat/ask', + data, + signal: params.signal, + headers: { + 'content-type': 'application/json' + }, + onDownloadProgress: params.onDownloadProgress, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchSession() { + return post({ + url: '/session' + }) +} + +export function fetchVerify(token: string) { + return post({ + url: '/verify', + data: { token } + }) +} + +export function getUserConfig(data: {}) { + return get({ + url: '/v1/user/getUserConfig', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateUserConfig(data: {}) { + return post({ + url: '/v1/user/updateUserConfig', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +export function getModelList(data: {}) { + return get({ + url: '/v1/model/list', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/plugins.ts b/m78-all/m78-fe/src/api/plugins.ts new file mode 100644 index 000000000..315693a4e --- /dev/null +++ b/m78-all/m78-fe/src/api/plugins.ts @@ -0,0 +1,342 @@ +import { post, get } from '@/utils/request' + +// edit +export function pluginsList(data) { + return post({ + url: '/v1/botplugin/list', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +//首页 +export function pluginsList4home(data) { + return post({ + url: '/v1/botplugin/org/list', + data: { + ...data, + status: '0' + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function createPlugin(data) { + return post({ + url: '/v1/botplugin/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function deletePlugin({ id }) { + return post({ + url: `/v1/botplugin/delete/${id}`, + data: {}, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updatePlugin(data) { + return post({ + url: '/v1/botplugin/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +interface IHttp_header { + key: string + value: string +} +interface IBotPluginMeta { + desc: string + http_header: IHttp_header + http_method: string + input: Array<{ + name: string + desc: string + }> + output: Array<{ + name: string + desc: string + }> +} + +export interface IPluginItem { + id: number + pluginOrgName: string + pluginOrgDesc: string + avatarUrl: string + pluginCnt: number + botRefCnt: number + createTime: string + status: number + modifyTime: string + releaseTime: string + creator: string + plugins: Array<{ + /** 插件id*/ + id: number + /** 插件所属空间id*/ + workspaceId: number + /** 插件名称*/ + name: string + /** 用户名*/ + userName: string + /** 插件访问url*/ + apiUrl: string + /** 插件头像的地址*/ + avatarUrl: string + /** 插件类型,http/dubbo/grpc(目前只有http,可以不传)*/ + type: string + /** 关联的featureRouterId*/ + featureRouterId: number + /** 请求元信息, 形如:{"http_headers": {"content-type": "application/json"}, "http_method": "POST"}*/ + meta: string + /** 请求元信息, 对象格式*/ + botPluginMeta: IBotPluginMeta + /** 插件描述*/ + desc: string + }> +} + +/** + * @description 保存或更新插件 + */ +export function saveOrUpdate(data: Partial) { + return post({ + url: '/v1/botplugin/org/saveOrUpdate', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 查询插件列表(插件下所有组件一并返回) + */ +export function pluginList(data: { + /** 插件id*/ + id?: number + /** 插件所属空间id*/ + workspaceId?: number + /** 插件名称*/ + name?: string + /** 类型名称*/ + categoryName?: string + /** 类型id*/ + categoryId?: number + /** 用户名*/ + userName?: string + /** 内置类型名*/ + type?: number + /** 范围, 全部/我的/收藏 (all/mine/favorite)*/ + scale?: string + /** 排序, 最受欢迎/最近发布 (favorite/latested)*/ + order?: string + /** 页大小*/ + pageSize?: number + /** 页码*/ + pageNum?: number +}) { + return post<{ + INIT_VALUE: number + records: Array + pageNumber: number + pageSize: number + totalPage: number + totalRow: number + optimizeCountQuery: boolean + }>({ + url: '/v1/botplugin/org/list', + data: { + ...data + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 根据id删除插件 + */ +export function deleteById(id) { + return post({ + url: `/v1/botplugin/org/deleteById?id=${id}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +interface IM78Category { + id: number + name: string + deleted: number + createTime: number +} +/** + * @description 根据id查询组件 + */ +export function getBot(id: number) { + return get<{ + id: object + orgId: object + name: string + apiUrl: string + avatarUrl: string + featureRouterId: object + meta: string + releaseTime: string + createTime: string + modifyTime: string + status: number + userName: string + type: number + category: string + categoryId: object + description: string + m78Category: IM78Category + pluginUseTimes: number + }>({ + url: `/v1/botplugin/get?id=${id}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 根据id获取插件 + */ +export function getById(data: { id: number }) { + return post({ + url: `/v1/botplugin/org/getById?id=${data.id}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 创建组件 + */ +export function createComp(data: { + /** 组件id*/ + id?: number + /** 组件所属空间id*/ + orgId?: number + /** 组件名称*/ + name?: string + /** 用户名,即创建人*/ + userName?: string + /** 更新人*/ + modifier?: string + /** 组件启用状态*/ + status?: number + /** 组件调试状态*/ + debugStatus?: number + /** 组件创建时间*/ + createTime?: string + /** 组件访问url*/ + apiUrl?: string + /** 组件头像的地址*/ + avatarUrl?: string + /** 组件类型,http/dubbo/grpc(目前只有http,可以不传)*/ + type?: string + /** 关联的featureRouterId*/ + featureRouterId?: number + /** 请求元信息, 形如:{"http_headers": {"content-type": "application/json"}, "http_method": "POST"}*/ + meta?: string + /** 请求元信息, 对象格式*/ + botPluginMeta?: IBotPluginMeta + /** 组件描述*/ + desc?: string +}) { + return post({ + url: '/v1/botplugin/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 发布或取消发布M78BotPluginOrg + */ +export function publishOrCancel(data) { + return post({ + url: `/v1/botplugin/org/publishOrCancel?id=${data.id}&publish=${data.publish}`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 删除组件 + */ +export function deleteComp(id: number) { + return post({ + url: `/v1/botplugin/delete?id=${id}`, + data: {}, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 测试组件运行 + */ +export function testDebug(data) { + return post({ + url: `/v1/botplugin/test?pluginId=${data.pluginId}`, + data: data.input, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 更新组件 + */ +export function update(data) { + return post({ + url: '/v1/botplugin/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 启用或停用组件 + */ +export function compToggle(data: { id: number; enable: boolean }) { + return post({ + url: `/v1/botplugin/toggle?id=${data.id}&enable=${data.enable}`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 插件头像生成 + */ +export function generateImage(data) { + return get<{ + url: string + base64: string + }>({ + url: '/v1/image/plugin/generate', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 插件头像上传 + */ +export function uploadPluginImg(data: { + /** 图片 in base64*/ + base64: string + /** 插件id*/ + pluginId?: number +}) { + return post({ + url: '/v1/image/plugin/upload', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} diff --git a/m78-all/m78-fe/src/api/probot-classification.ts b/m78-all/m78-fe/src/api/probot-classification.ts new file mode 100644 index 000000000..69665750e --- /dev/null +++ b/m78-all/m78-fe/src/api/probot-classification.ts @@ -0,0 +1,42 @@ +import { post, get } from '@/utils/request' + +// 分类 +export function getCategoryTypeList() { + return get({ + url: '/v1/category/typeList', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 分类列表 +export function getCategoryList(data: { type: number | string }) { + return get({ + url: '/v1/category/list', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 分类创建 +export function createCategory(data: { categoryName: string }) { + return post({ + url: '/v1/category/create', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 分类删除 +export function deleteCategory(data: { categoryId: string }) { + return post({ + url: '/v1/category/delete', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/probot-knowledge.ts b/m78-all/m78-fe/src/api/probot-knowledge.ts new file mode 100644 index 000000000..a0f9ab794 --- /dev/null +++ b/m78-all/m78-fe/src/api/probot-knowledge.ts @@ -0,0 +1,160 @@ +import { post, get } from '@/utils/request' + +//知识库列表 +export function getKnowledgeList(data: {}) { + return get({ + url: '/v1/knowledge/listKnowledgeBase', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 创建 +export function create(data: { name: string }) { + return post({ + url: '/v1/knowledge/createKnowledgeBase', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 编辑 +export function update(data: { name: string }) { + return post({ + url: '/v1/knowledge/editKnowledgeBase', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 删除 +export function deleteApi(data: { id: number }) { + return post({ + url: '/v1/knowledge/deleteKnowledgeBase?id=' + data.id, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 单个知识库详情 +export function getSingleKnowledgeBase(data: { id: string }) { + return get({ + url: '/v1/knowledge/getSingleKnowledgeBase', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +// 获取单个知识库下面的知识列表接口 +export function getKnowledgeFileMyList(data: { knowledgeBaseId?: string }) { + return get({ + url: '/v1/knowledge/file/myList', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 查询 + */ +export function queryKnowledge(data: { + knowledgeId?: number //知识库id数值类型 + queryText?: string //查询文本,字符串 +}) { + return get({ + url: '/v1/knowledge/searchKnowledge', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 文件上传 + */ +export function uploadKnowledgeFile(data: { knowledgeId?: string }) { + return get({ + url: '/v1/knowledge/uploadKnowledgeFile', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 知识解析 + */ +export function embedding( + data: [ + { + fileName: string + knowledgeBaseId: number + } + ] +) { + return post({ + url: '/v1/knowledge/embedding', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 删除知识库里的文件 +export function deleteKnowledgeFile(data: { knowledgeBaseId: string; fileId: string }) { + return post({ + url: '/v1/knowledge/deleteKnowledgeFile', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 文件详情 + */ +export function getBlockList(data: { knowledgeId?: number; knowledgeFileId?: number }) { + return get({ + url: '/v1/knowledge/listKnowledgeFileBlock', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 文件更新 + */ +export function updateBlock(data: { + knowledgeId?: number + knowledgeFileId?: number + blockContent?: string + blockId?: number +}) { + return post({ + url: '/v1/knowledge/addOrUpdateKnowledgeBaseFileBlock', + data, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +/** + * @description 文件删除 + */ +export function deleteBlock(data: { + knowledgeId?: string + knowledgeFileId?: number + knowledgeFileBlockId?: number +}) { + return post({ + url: '/v1/knowledge/deleteKnowledgeFileBlock', + data, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/probot-task.ts b/m78-all/m78-fe/src/api/probot-task.ts new file mode 100644 index 000000000..b355f2771 --- /dev/null +++ b/m78-all/m78-fe/src/api/probot-task.ts @@ -0,0 +1,51 @@ +import { post } from '@/utils/request' + +// 创建任务 +export function createTask(data) { + return post({ + url: `/v1/task/createTask`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 查询任务 +export function queryTask(data) { + return post({ + url: `/v1/task/queryTask`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function deleteTask(data) { + return post({ + url: `/v1/task/deleteTask`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateTask(data) { + return post({ + url: `/v1/task/updateTask`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function executeTask(data) { + return post({ + url: `/v1/task/executeTask`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function changeStatus(data) { + return post({ + url: '/v1/task/disableTask', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/probot-team.ts b/m78-all/m78-fe/src/api/probot-team.ts new file mode 100644 index 000000000..c6996e15d --- /dev/null +++ b/m78-all/m78-fe/src/api/probot-team.ts @@ -0,0 +1,52 @@ +import { post } from '@/utils/request' + +export function createTeam(data: {}) { + return post({ + url: '/v1/workspace/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export function updateTeam(data: { + workspaceId?: number + workspaceName?: string + remark?: string + avatarUrl?: string +}) { + return post({ + url: '/v1/workspace/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + workspaceId: data?.workspaceId + } + }) +} + +export function transferTeam(data: { workspaceId?: number; username?: string }) { + return post({ + url: '/v1/workspace/transfer', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + workspaceId: data?.workspaceId + } + }) +} +export function deleteTeam(data: { workspaceId: number }) { + return post({ + url: '/v1/workspace/delete', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + workspaceId: data?.workspaceId + } + }) +} diff --git a/m78-all/m78-fe/src/api/probot-visit.ts b/m78-all/m78-fe/src/api/probot-visit.ts new file mode 100644 index 000000000..f5dbf1300 --- /dev/null +++ b/m78-all/m78-fe/src/api/probot-visit.ts @@ -0,0 +1,34 @@ +import { post, get } from '@/utils/request' + +export function isCollect(data: { type: string; collectId: string }) { + return post({ + url: '/v1/userCollect/isCollect', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function applyCollect(data: { type: string; collectId: string }) { + return post({ + url: '/v1/userCollect/applyCollect', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function deleteCollect(data: { type: string; collectId: string }) { + return post({ + url: '/v1/userCollect/deleteCollect', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 增加热度 +export function addHotApi(data: { botId: string }) { + return get({ + url: '/v1/hot/incr', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/probot.ts b/m78-all/m78-fe/src/api/probot.ts new file mode 100644 index 000000000..5d70db174 --- /dev/null +++ b/m78-all/m78-fe/src/api/probot.ts @@ -0,0 +1,437 @@ +import { post, get } from '@/utils/request' + +interface BOT { + // 机器人信息 + botInfo: { + id?: string //机器人id + name?: string //机器人名称 + workspaceId?: number //工作空间id + avatarUrl?: string //机器人头像 + creator?: string //创建人 + remark?: string //备注 + permissions?: string //权限 + publishStatus?: string //发布状态 + publishStatusDesc?: string //发布状态描述 + } + //机器人设置信息 + botSetting: { + id?: string //id + botId?: string //机器人id + setting?: string //机器人设定 + aiModel?: string //模型 + dialogueTurns?: number //对话轮次 + openingRemarks?: string //开场白 + openingQues?: Array + reservedQue?: Array //预留问题 + timbre?: string //音色 + customizePromptSwitch?: number + customizePrompt?: string + timbreSwitch?: number + } + botExtensionBo: { + knowledgeBaseId: any[] + flowBaseId?: any[] + pluginId?: any[] + } +} + +// 工作空间 +export function getWorkspaceList() { + return get({ + url: '/v1/workspace/list', + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// getProbotList +export function getProbotList(data: { + status?: string + isMyCollect?: boolean + pageNum: number + pageSize: number + category?: boolean + name?: boolean + workspaceId?: string +}) { + return post({ + url: '/v1/bot/list', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/json', + workspaceId: data.workspaceId + } + }) +} +export function getList4Home2() { + return get({ + url: `/v1/bot/index`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function deleteBot(data: { botId: number }) { + return post({ + url: '/v1/bot/delete', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + botId: data?.botId + } + }) +} + +// ai 优化 +export function promptTurbo( + data?: { prompt: string }, + signal?: any, + onDownloadProgress?: any +) { + return post({ + url: '/v1/bot/promptTurbo', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data, + signal: signal, + onDownloadProgress: onDownloadProgress, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// ai 生成 +export function aiRecordNotes(data?: { botId: string }) { + return get({ + url: 'v1/bot/publish/aiRecordNotes', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + botId: data?.botId + } + }) +} + +//工作流 +export function getFlowList(data: {}) { + return post({ + url: '/v1/flow/list', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +//插件 +export function getBotplugin(data: {}) { + return post({ + url: '/v1/botplugin/org/list', + data: { + ...data, + status: '0' + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 创建 +export function createBot(data: BOT) { + return post({ + url: '/v1/bot/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + workspaceId: data?.botInfo?.workspaceId + } + }) +} + +//详情 +export function getBotDetail(data: { botId: string }) { + return get({ + url: '/v1/bot/getDetail', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + botId: data?.botId + } + }) +} + +/** + * @description 获取机器人简单信息 + * @param {long} botId + */ +export function getBotSimpleInfo(data: { botId: string }) { + return get({ + url: '/v1/bot/getBotSimpleInfo', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + botId: data?.botId + } + }) +} + +// 编辑 +export function updateBot(data: BOT) { + return post({ + url: '/v1/bot/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + workspaceId: data?.botInfo?.workspaceId + } + }) +} + +export function publishBot(data: { + id?: string + botId: string + versionRecord: string + publishImChannel: number[] + categoryIds: number[] + permissions: number + openId?: string +}) { + return post({ + url: '/v1/bot/publish', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + botId: data.botId + } + }) +} + +export function getUserList(data: {}) { + return post({ + url: '/v1/workspace/getUserList', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export function searchUser(data: {}) { + return get({ + url: '/v1/user/getUser', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function addUser(data: { workspaceId?: number; username?: string; role?: string }) { + return post({ + url: '/v1/workspace/addUser', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + workspaceId: data?.workspaceId + } + }) +} + +export function deleteUser(data: { workspaceId: number; username: string }) { + return post({ + url: '/v1/workspace/deleteUser', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + workspaceId: data?.workspaceId + } + }) +} + +export function updateUserRole(data: { + workspaceId: number + username: string + role: string +}) { + return post({ + url: '/v1/workspace/updateUserRole', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + workspaceId: data?.workspaceId + } + }) +} + +export function executeBot(data: { botId: string; input: string; topicId: string }) { + return post({ + url: '/v1/bot/execute', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + botId: data.botId + } + }) +} + +export function getPresetQuestion(data: { + botId: string + input: string + topicId: string +}) { + return get({ + url: '/v1/bot/getPresetQuestion', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + botId: data.botId + } + }) +} + +// 绑定数据库列表 +export function getDatabaseList(data: { botId: string; input: string; topicId: string }) { + return get({ + url: '/v1/bot/getPresetQuestion', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + botId: data.botId + } + }) +} + +// 初始化绑定表数据 +export function initFormData(data: {}) { + return get({ + url: '/v1/ai_table/getTableByBotId', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function uploadBotAvatar(data: { base64: string; botId?: number }) { + return post({ + url: '/v1/image/bot/upload', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + botId: data.botId + } + }) +} + +export function createBotAvatar(data: { botName: string; botDesc: string }) { + return get({ + url: '/v1/image/bot/generate', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getAiGenApi(data) { + return post({ + url: '/v1/ai_table/generate', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 参数列表 +export function getBotPluginParameter(data?: { id: string }) { + return get({ + url: '/v1/botplugin/get', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function updateFormInfo(data) { + return post({ + url: `/v1/ai_table/updateColumnInfos`, + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function clearDebuggerMessage(data: { botId: string; topicId: string }) { + return post({ + url: '/v1/bot/clearConversations', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + botId: data.botId + } + }) +} + +export function getCommentList(data: { + itemId: string + type: number + commentType: string + pageSize: number + pageNum: number +}) { + return get({ + url: '/v1/comment/page', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export function getCommentDetail(data: { itemId: string; type: number }) { + return get({ + url: '/v1/comment/detail', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export function updateComment(data: { + id?: string + itemId: string + type: number + score: number + commentContent: string +}) { + return post({ + url: '/v1/comment/insertOrUpdate', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export function getCommentRates(data: { itemId: string; type: number }) { + return get({ + url: '/v1/comment/statistics', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +/** + * @description 获取用户在某个工作空间的角色 + * @param {long} workspaceId + */ +export function getUserWorkspaceRole(data: { workspaceId: number }) { + return get({ + url: `/v1/workspace/getUserWorkspaceRole`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + data, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} diff --git a/m78-all/m78-fe/src/api/translate.ts b/m78-all/m78-fe/src/api/translate.ts new file mode 100644 index 000000000..7324cc347 --- /dev/null +++ b/m78-all/m78-fe/src/api/translate.ts @@ -0,0 +1,108 @@ +import { post, get } from '@/utils/request' + +export function fetchTranslateType(data: { content: string }) { + return post({ + url: '/v1/translate/language/type/analyze', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchAudioToText(data: {}) { + return post({ + url: '/v1/translate/audioToText', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchTextToAudio(data: { text: string; dialect?: string }) { + return fetch(import.meta.env.VITE_GLOB_API_NEW_URL + 'v1/audio/textToAudio', { + method: 'post', + body: JSON.stringify(data), + headers: { + 'Content-Type': 'application/json' + } + }).then((res) => { + return res.blob() + }) +} + +export function fetchTranslateFavorite(uuid: string) { + return post({ + url: '/v1/translate/favorite', + data: { + uuid + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchTranslateUnfavorite(uuid: string) { + return post({ + url: '/v1/translate/unfavorite', + data: { + uuid + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// export function fetchImagetStream(data: {}) { +// return post({ +// url: '/v1/image/stream', +// data, +// baseURL: import.meta.env.VITE_GLOB_API_NEW_URL +// }) +// } +export function fetchImageStream(data?: any, signal?: any, onDownloadProgress?: any) { + return post({ + url: '/v1/image/stream', + data, + signal: signal, + onDownloadProgress: onDownloadProgress, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +export function fetchDocStream(data?: any, signal?: any, onDownloadProgress?: any) { + return post({ + url: '/v1/translate/uploadDocument', + data, + signal: signal, + onDownloadProgress: onDownloadProgress, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchTranslateHistoryList(data: { type: number }) { + return post({ + url: '/v1/translate/history', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchTranslateHistoryDelete(data: { uuid: string }) { + return post({ + url: '/v1/translate/delete', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function fetchTranslateChat(data: {}, signal) { + return post({ + url: '/v1/translate/text/chat', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL, + signal + }) +} + +export function fetchTranslateFavorites(data: {}) { + return get({ + url: '/v1/translate/favorites', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/api/workflow.ts b/m78-all/m78-fe/src/api/workflow.ts new file mode 100644 index 000000000..a361761d7 --- /dev/null +++ b/m78-all/m78-fe/src/api/workflow.ts @@ -0,0 +1,92 @@ +import { get, post, deleteApi } from '@/utils/request' + +// edit +export function saveFlow(data) { + return post({ + url: '/v1/flow/update/setting', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +export function editBase(data) { + return post({ + url: '/v1/flow/update/base', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 创建 +export function createFlow(data) { + return post({ + url: '/v1/flow/create', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +export function updateFlow(data) { + return post({ + url: '/v1/flow/update', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +export function deleteFlow(flowBaseId) { + return deleteApi({ + url: `/v1/flow/delete?flowBaseId=${flowBaseId}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +// 获取详情 +export function getFlowDetail(id) { + return get({ + url: `/v1/flow/detail?id=${id}`, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} +// flow list +export function getFlowList(data) { + return post({ + url: '/v1/flow/list ', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function testFlow(data: { flowId: string; inputs: Record }) { + return post({ + url: '/v1/flow/test', + data, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getPluginList() { + return post({ + url: '/v1/botplugin/list', + data: { + pageNum: 1, + pageSize: 100 + }, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +export function getFlowStatus(data?: any, onDownloadProgress?: any) { + return post({ + url: '/v1/flow/flowStatus/stream', + data, + onDownloadProgress: onDownloadProgress, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} + +// 生成代码 +export function getCodeGen(data?: any, onDownloadProgress?: any) { + return post({ + url: '/v1/code/generate', + data, + onDownloadProgress: onDownloadProgress, + baseURL: import.meta.env.VITE_GLOB_API_NEW_URL + }) +} diff --git a/m78-all/m78-fe/src/assets/openid-open.png b/m78-all/m78-fe/src/assets/openid-open.png new file mode 100644 index 000000000..cbb08535f Binary files /dev/null and b/m78-all/m78-fe/src/assets/openid-open.png differ diff --git a/m78-all/m78-fe/src/assets/openid.jpg b/m78-all/m78-fe/src/assets/openid.jpg new file mode 100644 index 000000000..2166e4dff Binary files /dev/null and b/m78-all/m78-fe/src/assets/openid.jpg differ diff --git a/m78-all/m78-fe/src/assets/probot-bg-image.png b/m78-all/m78-fe/src/assets/probot-bg-image.png new file mode 100644 index 000000000..1852ba355 Binary files /dev/null and b/m78-all/m78-fe/src/assets/probot-bg-image.png differ diff --git a/m78-all/m78-fe/src/common/constant.ts b/m78-all/m78-fe/src/common/constant.ts new file mode 100644 index 000000000..c74fc95b7 --- /dev/null +++ b/m78-all/m78-fe/src/common/constant.ts @@ -0,0 +1 @@ +export const openEnv = import.meta.env.VITE_APP_ENV === 'open' diff --git a/m78-all/m78-fe/src/common/formMethod.ts b/m78-all/m78-fe/src/common/formMethod.ts new file mode 100644 index 000000000..9e5f23899 --- /dev/null +++ b/m78-all/m78-fe/src/common/formMethod.ts @@ -0,0 +1,24 @@ +import type { FormInstance } from 'element-plus' + +//提交 +export const submitForm = async (formEl: FormInstance | undefined, form: any) => { + if (!formEl) return + const checkEl = await formEl.validate((valid, fields) => { + if (valid) { + return true + } else { + console.log('error submit!', fields) + return false + } + }) + if (checkEl) { + return Promise.resolve(form || undefined) + } + return Promise.reject(form || undefined) +} + +//重置 +export const resetForm = (formEl: FormInstance | undefined) => { + if (!formEl) return + formEl.resetFields() +} diff --git a/m78-all/m78-fe/src/common/probot.ts b/m78-all/m78-fe/src/common/probot.ts new file mode 100644 index 000000000..34745e936 --- /dev/null +++ b/m78-all/m78-fe/src/common/probot.ts @@ -0,0 +1,31 @@ +import { ElMessage, ElMessageBox } from 'element-plus' +import { deleteTeam } from '@/api/probot-team' + +export const removeTeam = (workspaceId: string | number, callback: () => void) => { + ElMessageBox.confirm('确定要删除当前团队?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then((action) => { + if (action === 'confirm') { + deleteTeam({ + workspaceId + }) + .then((data) => { + if (data.data) { + ElMessage.success('删除成功!') + callback && callback() + } else { + ElMessage.error(data.message || '删除失败') + } + }) + .catch((e) => { + console.log(e) + }) + } + }) + .catch(() => {}) +} + +export default {} diff --git a/m78-all/m78-fe/src/components.d.ts b/m78-all/m78-fe/src/components.d.ts new file mode 100644 index 000000000..a6d30af67 --- /dev/null +++ b/m78-all/m78-fe/src/components.d.ts @@ -0,0 +1,123 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + AnalysisLoading: typeof import('./components/AnalysisLoading.vue')['default'] + Avatar: typeof import('./components/common-message/Message/Avatar.vue')['default'] + BaseHeader: typeof import('./components/layouts/BaseHeader.vue')['default'] + BaseIcon: typeof import('./components/BaseIcon.vue')['default'] + BaseIconUpload: typeof import('./components/BaseIconUpload.vue')['default'] + BaseInfo: typeof import('./components/BaseInfo.vue')['default'] + BaseList: typeof import('./components/BaseList.vue')['default'] + BaseSounds: typeof import('./components/BaseSounds.vue')['default'] + BaseStar: typeof import('./components/BaseStar.vue')['default'] + CommmonTextarea: typeof import('./components/CommmonTextarea.vue')['default'] + CommonBg: typeof import('./components/common-bg/index.vue')['default'] + CommonDialog: typeof import('./components/CommonDialog.vue')['default'] + CommonFavoriteBtn: typeof import('./components/CommonFavoriteBtn.vue')['default'] + CommonFoot: typeof import('./components/CommonFoot.vue')['default'] + CommonHistory: typeof import('./components/CommonHistory.vue')['default'] + CommonInput: typeof import('./components/CommonInput.vue')['default'] + CommonPage: typeof import('./components/common-page/CommonPage.vue')['default'] + CommonPagination: typeof import('./components/CommonPagination.vue')['default'] + CreateExportApi: typeof import('./components/export-http/CreateExportApi.vue')['default'] + Dynamic: typeof import('./components/common/Dynamic.vue')['default'] + ElAffix: typeof import('element-plus/es')['ElAffix'] + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCarousel: typeof import('element-plus/es')['ElCarousel'] + ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem'] + ElCascader: typeof import('element-plus/es')['ElCascader'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElProgress: typeof import('element-plus/es')['ElProgress'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRate: typeof import('element-plus/es')['ElRate'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSlider: typeof import('element-plus/es')['ElSlider'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTimePicker: typeof import('element-plus/es')['ElTimePicker'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + ExportApiTable: typeof import('./components/export-http/ExportApiTable.vue')['default'] + HeaderAvatar: typeof import('./components/common/HeaderAvatar.vue')['default'] + HeaderAvatarModel: typeof import('./components/common/HeaderAvatarModel.vue')['default'] + HistoryChatList: typeof import('./components/history-chat-list/index.vue')['default'] + I18nToggle: typeof import('./components/common/I18nToggle.vue')['default'] + IconCommunity: typeof import('./components/icons/IconCommunity.vue')['default'] + IconDocumentation: typeof import('./components/icons/IconDocumentation.vue')['default'] + IconEcosystem: typeof import('./components/icons/IconEcosystem.vue')['default'] + IconSupport: typeof import('./components/icons/IconSupport.vue')['default'] + IconTooling: typeof import('./components/icons/IconTooling.vue')['default'] + JsonView: typeof import('./components/export-http/JsonView.vue')['default'] + Layouts: typeof import('./components/layouts/index.vue')['default'] + LLMModelSel: typeof import('./components/LLMModelSel.vue')['default'] + Loading: typeof import('./components/common-message/Message/Loading.vue')['default'] + Logo: typeof import('./components/common/Logo.vue')['default'] + MarkdownMessage: typeof import('./components/common/markdown-message/index.vue')['default'] + Message: typeof import('./components/common-message/Message/index.vue')['default'] + MyBtn: typeof import('./components/MyBtn.vue')['default'] + ProbotBaseTitle: typeof import('./components/ProbotBaseTitle.vue')['default'] + ProbotLayout: typeof import('./components/layouts/ProbotLayout.vue')['default'] + ProbotLibrary: typeof import('./components/layouts/ProbotLibrary.vue')['default'] + ProbotResources: typeof import('./components/layouts/ProbotResources.vue')['default'] + ProbotTeamDialog: typeof import('./components/ProbotTeamDialog.vue')['default'] + RateDialog: typeof import('./components/RateDialog.vue')['default'] + Rates: typeof import('./components/Rates.vue')['default'] + Recorder: typeof import('./components/common/recorder/index.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + Sheet: typeof import('./components/sheet/index.vue')['default'] + Text: typeof import('./components/common-message/Message/Text.vue')['default'] + WordEdit: typeof import('./components/word-edit/index.vue')['default'] + } + export interface ComponentCustomProperties { + vInfiniteScroll: typeof import('element-plus/es')['ElInfiniteScroll'] + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/m78-all/m78-fe/src/components/AnalysisLoading.vue b/m78-all/m78-fe/src/components/AnalysisLoading.vue new file mode 100644 index 000000000..3aa13f8d6 --- /dev/null +++ b/m78-all/m78-fe/src/components/AnalysisLoading.vue @@ -0,0 +1,186 @@ + + + + diff --git a/m78-all/m78-fe/src/components/BaseIcon.vue b/m78-all/m78-fe/src/components/BaseIcon.vue new file mode 100644 index 000000000..c62a22c6f --- /dev/null +++ b/m78-all/m78-fe/src/components/BaseIcon.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/BaseIconUpload.vue b/m78-all/m78-fe/src/components/BaseIconUpload.vue new file mode 100644 index 000000000..8eddc6ab8 --- /dev/null +++ b/m78-all/m78-fe/src/components/BaseIconUpload.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/BaseInfo.vue b/m78-all/m78-fe/src/components/BaseInfo.vue new file mode 100644 index 000000000..fed54dca6 --- /dev/null +++ b/m78-all/m78-fe/src/components/BaseInfo.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/BaseList.vue b/m78-all/m78-fe/src/components/BaseList.vue new file mode 100644 index 000000000..c0b4840a7 --- /dev/null +++ b/m78-all/m78-fe/src/components/BaseList.vue @@ -0,0 +1,375 @@ + + + + + + diff --git a/m78-all/m78-fe/src/components/BaseSounds.vue b/m78-all/m78-fe/src/components/BaseSounds.vue new file mode 100644 index 000000000..6bb139bbe --- /dev/null +++ b/m78-all/m78-fe/src/components/BaseSounds.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/BaseStar.vue b/m78-all/m78-fe/src/components/BaseStar.vue new file mode 100644 index 000000000..8dc329795 --- /dev/null +++ b/m78-all/m78-fe/src/components/BaseStar.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/CommmonTextarea.vue b/m78-all/m78-fe/src/components/CommmonTextarea.vue new file mode 100644 index 000000000..5ad421d8b --- /dev/null +++ b/m78-all/m78-fe/src/components/CommmonTextarea.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/CommonDialog.vue b/m78-all/m78-fe/src/components/CommonDialog.vue new file mode 100644 index 000000000..fb7ba2586 --- /dev/null +++ b/m78-all/m78-fe/src/components/CommonDialog.vue @@ -0,0 +1,85 @@ + + + + diff --git a/m78-all/m78-fe/src/components/CommonFavoriteBtn.vue b/m78-all/m78-fe/src/components/CommonFavoriteBtn.vue new file mode 100644 index 000000000..ae3ae809b --- /dev/null +++ b/m78-all/m78-fe/src/components/CommonFavoriteBtn.vue @@ -0,0 +1,90 @@ + + + diff --git a/m78-all/m78-fe/src/components/CommonFoot.vue b/m78-all/m78-fe/src/components/CommonFoot.vue new file mode 100644 index 000000000..4964675ef --- /dev/null +++ b/m78-all/m78-fe/src/components/CommonFoot.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/CommonHistory.vue b/m78-all/m78-fe/src/components/CommonHistory.vue new file mode 100644 index 000000000..138ab2d00 --- /dev/null +++ b/m78-all/m78-fe/src/components/CommonHistory.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/CommonInput.vue b/m78-all/m78-fe/src/components/CommonInput.vue new file mode 100644 index 000000000..1fe7d9966 --- /dev/null +++ b/m78-all/m78-fe/src/components/CommonInput.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/CommonPagination.vue b/m78-all/m78-fe/src/components/CommonPagination.vue new file mode 100644 index 000000000..185accc18 --- /dev/null +++ b/m78-all/m78-fe/src/components/CommonPagination.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/LLMModelSel.vue b/m78-all/m78-fe/src/components/LLMModelSel.vue new file mode 100644 index 000000000..c5ce72cbc --- /dev/null +++ b/m78-all/m78-fe/src/components/LLMModelSel.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/MyBtn.vue b/m78-all/m78-fe/src/components/MyBtn.vue new file mode 100644 index 000000000..2d6b90e28 --- /dev/null +++ b/m78-all/m78-fe/src/components/MyBtn.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/ProbotBaseTitle.vue b/m78-all/m78-fe/src/components/ProbotBaseTitle.vue new file mode 100644 index 000000000..bb5604761 --- /dev/null +++ b/m78-all/m78-fe/src/components/ProbotBaseTitle.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/ProbotTeamDialog.vue b/m78-all/m78-fe/src/components/ProbotTeamDialog.vue new file mode 100644 index 000000000..35f1fdb00 --- /dev/null +++ b/m78-all/m78-fe/src/components/ProbotTeamDialog.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/RateDialog.vue b/m78-all/m78-fe/src/components/RateDialog.vue new file mode 100644 index 000000000..525799536 --- /dev/null +++ b/m78-all/m78-fe/src/components/RateDialog.vue @@ -0,0 +1,130 @@ + + + diff --git a/m78-all/m78-fe/src/components/Rates.vue b/m78-all/m78-fe/src/components/Rates.vue new file mode 100644 index 000000000..5d5c15e3d --- /dev/null +++ b/m78-all/m78-fe/src/components/Rates.vue @@ -0,0 +1,222 @@ + + + diff --git a/m78-all/m78-fe/src/components/codeMirror/index.ts b/m78-all/m78-fe/src/components/codeMirror/index.ts new file mode 100644 index 000000000..8deae8fda --- /dev/null +++ b/m78-all/m78-fe/src/components/codeMirror/index.ts @@ -0,0 +1,36 @@ +import { ref } from 'vue' +import 'codemirror/mode/javascript/javascript.js' +import 'codemirror/theme/idea.css' +import 'codemirror/addon/display/autorefresh' +import 'codemirror/addon/display/placeholder.js' + +export default function () { + const codemirror = ref(null) + + // 校验错误 + const validateData = (): boolean => { + if (codemirror.value) { + const el = (codemirror.value as HTMLElement).querySelector('.CodeMirror-lint-marker-error') + return !!el + } + return false + } + + return { + validateData, + cmOptions: { + lint: false, + mode: 'text/javascript', // 语言模式 + theme: 'idea', // 主题 + lineNumbers: false, // 显示行号 + smartIndent: true, // 智能缩进 + indentUnit: 2, // 智能缩进单位为4个空格长度 + foldGutter: true, // 启用行槽中的代码折叠 + styleActiveLine: true, // 显示选中行的样式 + autoRefresh: true, + autoCloseBrackets: true, + autofocus: true, + autocorrect: true + } + } +} diff --git a/m78-all/m78-fe/src/components/common-bg/assets/icon.svg b/m78-all/m78-fe/src/components/common-bg/assets/icon.svg new file mode 100644 index 000000000..c7e6e3891 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-bg/assets/icon.svg @@ -0,0 +1,10 @@ + + m78222222 + + + + + + + + \ No newline at end of file diff --git a/m78-all/m78-fe/src/components/common-bg/assets/m78.svg b/m78-all/m78-fe/src/components/common-bg/assets/m78.svg new file mode 100644 index 000000000..e8f88c685 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-bg/assets/m78.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/m78-all/m78-fe/src/components/common-bg/index.vue b/m78-all/m78-fe/src/components/common-bg/index.vue new file mode 100644 index 000000000..8fbf62004 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-bg/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common-message/Message/Avatar.vue b/m78-all/m78-fe/src/components/common-message/Message/Avatar.vue new file mode 100644 index 000000000..a39623b44 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-message/Message/Avatar.vue @@ -0,0 +1,49 @@ + + + diff --git a/m78-all/m78-fe/src/components/common-message/Message/Loading.vue b/m78-all/m78-fe/src/components/common-message/Message/Loading.vue new file mode 100644 index 000000000..42200a9ac --- /dev/null +++ b/m78-all/m78-fe/src/components/common-message/Message/Loading.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common-message/Message/Text.vue b/m78-all/m78-fe/src/components/common-message/Message/Text.vue new file mode 100644 index 000000000..97e05a5b5 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-message/Message/Text.vue @@ -0,0 +1,285 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/components/common-message/Message/index.vue b/m78-all/m78-fe/src/components/common-message/Message/index.vue new file mode 100644 index 000000000..36b8663b0 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-message/Message/index.vue @@ -0,0 +1,165 @@ + + + diff --git a/m78-all/m78-fe/src/components/common-message/Message/m78.png b/m78-all/m78-fe/src/components/common-message/Message/m78.png new file mode 100644 index 000000000..11fadfe7f Binary files /dev/null and b/m78-all/m78-fe/src/components/common-message/Message/m78.png differ diff --git a/m78-all/m78-fe/src/components/common-message/Message/style.scss b/m78-all/m78-fe/src/components/common-message/Message/style.scss new file mode 100644 index 000000000..dfc7aad68 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-message/Message/style.scss @@ -0,0 +1,75 @@ +.markdown-body { + background-color: transparent; + font-size: 14px; + + p { + white-space: pre-wrap; + } + + ol { + list-style-type: decimal; + } + + ul { + list-style-type: disc; + } + + pre code, + pre tt { + line-height: 1.65; + } + + .highlight pre, + pre { + background-color: #fff; + } + + code.hljs { + padding: 0; + } + + .code-block { + &-wrapper { + position: relative; + padding-top: 24px; + } + + &-header { + position: absolute; + top: 5px; + right: 0; + width: 100%; + padding: 0 1rem; + display: flex; + justify-content: flex-end; + align-items: center; + color: #b3b3b3; + + &__copy { + cursor: pointer; + margin-left: 0.5rem; + user-select: none; + + &:hover { + color: #80d4ff; + } + } + } + } + +} + +html.dark { + + .message-reply { + .whitespace-pre-wrap { + white-space: pre-wrap; + color: var(--n-text-color); + } + } + + .highlight pre, + pre { + background-color: #282c34; + } +} diff --git a/m78-all/m78-fe/src/components/common-message/index.ts b/m78-all/m78-fe/src/components/common-message/index.ts new file mode 100644 index 000000000..e5b21df45 --- /dev/null +++ b/m78-all/m78-fe/src/components/common-message/index.ts @@ -0,0 +1,3 @@ +import Message from './Message/index.vue' + +export { Message } diff --git a/m78-all/m78-fe/src/components/common-page/CommonPage.vue b/m78-all/m78-fe/src/components/common-page/CommonPage.vue new file mode 100644 index 000000000..571c8665e --- /dev/null +++ b/m78-all/m78-fe/src/components/common-page/CommonPage.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common/Dynamic.vue b/m78-all/m78-fe/src/components/common/Dynamic.vue new file mode 100644 index 000000000..83840c18e --- /dev/null +++ b/m78-all/m78-fe/src/components/common/Dynamic.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common/HeaderAvatar.vue b/m78-all/m78-fe/src/components/common/HeaderAvatar.vue new file mode 100644 index 000000000..f6d788183 --- /dev/null +++ b/m78-all/m78-fe/src/components/common/HeaderAvatar.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common/HeaderAvatarModel.vue b/m78-all/m78-fe/src/components/common/HeaderAvatarModel.vue new file mode 100644 index 000000000..b6a587d1c --- /dev/null +++ b/m78-all/m78-fe/src/components/common/HeaderAvatarModel.vue @@ -0,0 +1,156 @@ + + + + + + diff --git a/m78-all/m78-fe/src/components/common/I18nToggle.vue b/m78-all/m78-fe/src/components/common/I18nToggle.vue new file mode 100644 index 000000000..5cc2fcb00 --- /dev/null +++ b/m78-all/m78-fe/src/components/common/I18nToggle.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common/Logo.vue b/m78-all/m78-fe/src/components/common/Logo.vue new file mode 100644 index 000000000..e8e07049e --- /dev/null +++ b/m78-all/m78-fe/src/components/common/Logo.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common/images/logo.png b/m78-all/m78-fe/src/components/common/images/logo.png new file mode 100644 index 000000000..65e74cc26 Binary files /dev/null and b/m78-all/m78-fe/src/components/common/images/logo.png differ diff --git a/m78-all/m78-fe/src/components/common/images/m78.svg b/m78-all/m78-fe/src/components/common/images/m78.svg new file mode 100644 index 000000000..c32af019e --- /dev/null +++ b/m78-all/m78-fe/src/components/common/images/m78.svg @@ -0,0 +1,20 @@ + + + m7811111 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/MarkdownMessage.scss b/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/MarkdownMessage.scss new file mode 100644 index 000000000..034478776 --- /dev/null +++ b/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/MarkdownMessage.scss @@ -0,0 +1,87 @@ +.markdown-body { + display: flex; + flex-direction: column; + background-color: transparent; + font-size: 14px; + + p { + white-space: pre-wrap; + } + + ol { + list-style-type: decimal; + } + + ul { + list-style-type: disc; + } + + pre code, + pre tt { + line-height: 1.65; + } + + .highlight pre, + pre { + background-color: #fff; + } + + code.hljs { + padding: 0; + } + + .code-block { + &-wrapper { + position: relative; + padding-top: 24px; + } + + &-header { + position: absolute; + top: 5px; + right: 0; + width: 100%; + padding: 0 1rem; + display: flex; + justify-content: flex-end; + align-items: center; + color: #b3b3b3; + + &__copy { + cursor: pointer; + margin-left: 0.5rem; + user-select: none; + + &:hover { + color: #65a665; + } + } + + &__insert { + cursor: pointer; + margin-left: 0.5rem; + user-select: none; + + &:hover { + color: #65a665; + } + } + } + } + +} + +html.dark { + + .message-reply { + .whitespace-pre-wrap { + white-space: pre-wrap; + color: var(--n-text-color); + } + } + + .highlight pre, + pre { + background-color: #282c34; + } +} diff --git a/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/github-markdown.scss b/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/github-markdown.scss new file mode 100644 index 000000000..b67a2f7e6 --- /dev/null +++ b/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/github-markdown.scss @@ -0,0 +1,1103 @@ +html.dark { + .markdown-body { + color-scheme: dark; + --color-prettylights-syntax-comment: #8b949e; + --color-prettylights-syntax-constant: #79c0ff; + --color-prettylights-syntax-entity: #d2a8ff; + --color-prettylights-syntax-storage-modifier-import: #c9d1d9; + --color-prettylights-syntax-entity-tag: #7ee787; + --color-prettylights-syntax-keyword: #ff7b72; + --color-prettylights-syntax-string: #a5d6ff; + --color-prettylights-syntax-variable: #ffa657; + --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; + --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; + --color-prettylights-syntax-invalid-illegal-bg: #8e1519; + --color-prettylights-syntax-carriage-return-text: #f0f6fc; + --color-prettylights-syntax-carriage-return-bg: #b62324; + --color-prettylights-syntax-string-regexp: #7ee787; + --color-prettylights-syntax-markup-list: #f2cc60; + --color-prettylights-syntax-markup-heading: #1f6feb; + --color-prettylights-syntax-markup-italic: #c9d1d9; + --color-prettylights-syntax-markup-bold: #c9d1d9; + --color-prettylights-syntax-markup-deleted-text: #ffdcd7; + --color-prettylights-syntax-markup-deleted-bg: #67060c; + --color-prettylights-syntax-markup-inserted-text: #aff5b4; + --color-prettylights-syntax-markup-inserted-bg: #033a16; + --color-prettylights-syntax-markup-changed-text: #ffdfb6; + --color-prettylights-syntax-markup-changed-bg: #5a1e02; + --color-prettylights-syntax-markup-ignored-text: #c9d1d9; + --color-prettylights-syntax-markup-ignored-bg: #1158c7; + --color-prettylights-syntax-meta-diff-range: #d2a8ff; + --color-prettylights-syntax-brackethighlighter-angle: #8b949e; + --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; + --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; + --color-fg-default: #fff; + --color-fg-muted: #8b949e; + --color-fg-subtle: #6e7681; + --color-canvas-default: #0d1117; + --color-canvas-subtle: #161b22; + --color-border-default: #30363d; + --color-border-muted: #21262d; + --color-neutral-muted: rgba(110,118,129,0.4); + --color-accent-fg: #58a6ff; + --color-accent-emphasis: #1f6feb; + --color-attention-subtle: rgba(187,128,9,0.15); + --color-danger-fg: #f85149; + } + } + + html { + .markdown-body { + color-scheme: light; + --color-prettylights-syntax-comment: #6e7781; + --color-prettylights-syntax-constant: #0550ae; + --color-prettylights-syntax-entity: #8250df; + --color-prettylights-syntax-storage-modifier-import: #24292f; + --color-prettylights-syntax-entity-tag: #116329; + --color-prettylights-syntax-keyword: #cf222e; + --color-prettylights-syntax-string: #0a3069; + --color-prettylights-syntax-variable: #953800; + --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; + --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; + --color-prettylights-syntax-invalid-illegal-bg: #82071e; + --color-prettylights-syntax-carriage-return-text: #f6f8fa; + --color-prettylights-syntax-carriage-return-bg: #cf222e; + --color-prettylights-syntax-string-regexp: #116329; + --color-prettylights-syntax-markup-list: #3b2300; + --color-prettylights-syntax-markup-heading: #0550ae; + --color-prettylights-syntax-markup-italic: #24292f; + --color-prettylights-syntax-markup-bold: #24292f; + --color-prettylights-syntax-markup-deleted-text: #82071e; + --color-prettylights-syntax-markup-deleted-bg: #ffebe9; + --color-prettylights-syntax-markup-inserted-text: #116329; + --color-prettylights-syntax-markup-inserted-bg: #dafbe1; + --color-prettylights-syntax-markup-changed-text: #953800; + --color-prettylights-syntax-markup-changed-bg: #ffd8b5; + --color-prettylights-syntax-markup-ignored-text: #eaeef2; + --color-prettylights-syntax-markup-ignored-bg: #0550ae; + --color-prettylights-syntax-meta-diff-range: #8250df; + --color-prettylights-syntax-brackethighlighter-angle: #57606a; + --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; + --color-prettylights-syntax-constant-other-reference-link: #0a3069; + --color-fg-default: #24292f; + --color-fg-muted: #57606a; + --color-fg-subtle: #6e7781; + --color-canvas-default: #ffffff; + --color-canvas-subtle: #f6f8fa; + --color-border-default: #d0d7de; + --color-border-muted: hsla(210,18%,87%,1); + --color-neutral-muted: rgba(175,184,193,0.2); + --color-accent-fg: #0969da; + --color-accent-emphasis: #0969da; + --color-attention-subtle: #fff8c5; + --color-danger-fg: #cf222e; + } + } + + .markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + color: var(--color-fg-default); + background-color: var(--color-canvas-default); + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; + font-size: 16px; + line-height: 2; + word-wrap: break-word; + } + + .markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; + } + + .markdown-body h1:hover .anchor .octicon-link:before, + .markdown-body h2:hover .anchor .octicon-link:before, + .markdown-body h3:hover .anchor .octicon-link:before, + .markdown-body h4:hover .anchor .octicon-link:before, + .markdown-body h5:hover .anchor .octicon-link:before, + .markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); + } + + .markdown-body details, + .markdown-body figcaption, + .markdown-body figure { + display: block; + } + + .markdown-body summary { + display: list-item; + } + + .markdown-body [hidden] { + display: none !important; + } + + .markdown-body a { + background-color: transparent; + color: var(--color-accent-fg); + text-decoration: none; + } + + .markdown-body abbr[title] { + border-bottom: none; + text-decoration: underline dotted; + } + + .markdown-body b, + .markdown-body strong { + font-weight: var(--base-text-weight-semibold, 600); + } + + .markdown-body dfn { + font-style: italic; + } + + .markdown-body h1 { + margin: .67em 0; + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid var(--color-border-muted); + } + + .markdown-body mark { + background-color: var(--color-attention-subtle); + color: var(--color-fg-default); + } + + .markdown-body small { + font-size: 90%; + } + + .markdown-body sub, + .markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + .markdown-body sub { + bottom: -0.25em; + } + + .markdown-body sup { + top: -0.5em; + } + + .markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; + background-color: var(--color-canvas-default); + } + + .markdown-body code, + .markdown-body kbd, + .markdown-body pre, + .markdown-body samp { + font-family: monospace; + font-size: 1em; + } + + .markdown-body figure { + margin: 1em 40px; + } + + .markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: transparent; + border-bottom: 1px solid var(--color-border-muted); + height: .25em; + padding: 0; + margin: 24px 0; + background-color: var(--color-border-default); + border: 0; + } + + .markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; + } + + .markdown-body [type=button], + .markdown-body [type=reset], + .markdown-body [type=submit] { + -webkit-appearance: button; + } + + .markdown-body [type=checkbox], + .markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; + } + + .markdown-body [type=number]::-webkit-inner-spin-button, + .markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; + } + + .markdown-body [type=search]::-webkit-search-cancel-button, + .markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + } + + .markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; + } + + .markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; + } + + .markdown-body a:hover { + text-decoration: underline; + } + + .markdown-body ::placeholder { + color: var(--color-fg-subtle); + opacity: 1; + } + + .markdown-body hr::before { + display: table; + content: ""; + } + + .markdown-body hr::after { + display: table; + clear: both; + content: ""; + } + + .markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + } + + .markdown-body td, + .markdown-body th { + padding: 0; + } + + .markdown-body details summary { + cursor: pointer; + } + + .markdown-body details:not([open])>*:not(summary) { + display: none !important; + } + + .markdown-body a:focus, + .markdown-body [role=button]:focus, + .markdown-body input[type=radio]:focus, + .markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--color-accent-fg); + outline-offset: -2px; + box-shadow: none; + } + + .markdown-body a:focus:not(:focus-visible), + .markdown-body [role=button]:focus:not(:focus-visible), + .markdown-body input[type=radio]:focus:not(:focus-visible), + .markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px transparent; + } + + .markdown-body a:focus-visible, + .markdown-body [role=button]:focus-visible, + .markdown-body input[type=radio]:focus-visible, + .markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--color-accent-fg); + outline-offset: -2px; + box-shadow: none; + } + + .markdown-body a:not([class]):focus, + .markdown-body a:not([class]):focus-visible, + .markdown-body input[type=radio]:focus, + .markdown-body input[type=radio]:focus-visible, + .markdown-body input[type=checkbox]:focus, + .markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; + } + + .markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + line-height: 10px; + color: var(--color-fg-default); + vertical-align: middle; + background-color: var(--color-canvas-subtle); + border: solid 1px var(--color-neutral-muted); + border-bottom-color: var(--color-neutral-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--color-neutral-muted); + } + + .markdown-body h1, + .markdown-body h2, + .markdown-body h3, + .markdown-body h4, + .markdown-body h5, + .markdown-body h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: var(--base-text-weight-semibold, 600); + line-height: 1.25; + } + + .markdown-body h2 { + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid var(--color-border-muted); + } + + .markdown-body h3 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1.25em; + } + + .markdown-body h4 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1em; + } + + .markdown-body h5 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: .875em; + } + + .markdown-body h6 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: .85em; + color: var(--color-fg-muted); + } + + .markdown-body p { + margin-top: 0; + margin-bottom: 10px; + } + + .markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: var(--color-fg-muted); + border-left: .25em solid var(--color-border-default); + } + + .markdown-body ul, + .markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; + } + + .markdown-body ol ol, + .markdown-body ul ol { + list-style-type: lower-roman; + } + + .markdown-body ul ul ol, + .markdown-body ul ol ol, + .markdown-body ol ul ol, + .markdown-body ol ol ol { + list-style-type: lower-alpha; + } + + .markdown-body dd { + margin-left: 0; + } + + .markdown-body tt, + .markdown-body code, + .markdown-body samp { + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + font-size: 12px; + } + + .markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + font-size: 12px; + word-wrap: normal; + } + + .markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; + } + + .markdown-body input::-webkit-outer-spin-button, + .markdown-body input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; + appearance: none; + } + + .markdown-body::before { + display: table; + content: ""; + } + + .markdown-body::after { + display: table; + clear: both; + content: ""; + } + + .markdown-body>*:first-child { + margin-top: 0 !important; + } + + .markdown-body>*:last-child { + margin-bottom: 0 !important; + } + + .markdown-body a:not([href]) { + color: inherit; + text-decoration: none; + } + + .markdown-body .absent { + color: var(--color-danger-fg); + } + + .markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; + } + + .markdown-body .anchor:focus { + outline: none; + } + + .markdown-body p, + .markdown-body blockquote, + .markdown-body ul, + .markdown-body ol, + .markdown-body dl, + .markdown-body table, + .markdown-body pre, + .markdown-body details { + margin-top: 0; + margin-bottom: 16px; + } + + .markdown-body blockquote>:first-child { + margin-top: 0; + } + + .markdown-body blockquote>:last-child { + margin-bottom: 0; + } + + .markdown-body h1 .octicon-link, + .markdown-body h2 .octicon-link, + .markdown-body h3 .octicon-link, + .markdown-body h4 .octicon-link, + .markdown-body h5 .octicon-link, + .markdown-body h6 .octicon-link { + color: var(--color-fg-default); + vertical-align: middle; + visibility: hidden; + } + + .markdown-body h1:hover .anchor, + .markdown-body h2:hover .anchor, + .markdown-body h3:hover .anchor, + .markdown-body h4:hover .anchor, + .markdown-body h5:hover .anchor, + .markdown-body h6:hover .anchor { + text-decoration: none; + } + + .markdown-body h1:hover .anchor .octicon-link, + .markdown-body h2:hover .anchor .octicon-link, + .markdown-body h3:hover .anchor .octicon-link, + .markdown-body h4:hover .anchor .octicon-link, + .markdown-body h5:hover .anchor .octicon-link, + .markdown-body h6:hover .anchor .octicon-link { + visibility: visible; + } + + .markdown-body h1 tt, + .markdown-body h1 code, + .markdown-body h2 tt, + .markdown-body h2 code, + .markdown-body h3 tt, + .markdown-body h3 code, + .markdown-body h4 tt, + .markdown-body h4 code, + .markdown-body h5 tt, + .markdown-body h5 code, + .markdown-body h6 tt, + .markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; + } + + .markdown-body summary h1, + .markdown-body summary h2, + .markdown-body summary h3, + .markdown-body summary h4, + .markdown-body summary h5, + .markdown-body summary h6 { + display: inline-block; + } + + .markdown-body summary h1 .anchor, + .markdown-body summary h2 .anchor, + .markdown-body summary h3 .anchor, + .markdown-body summary h4 .anchor, + .markdown-body summary h5 .anchor, + .markdown-body summary h6 .anchor { + margin-left: -40px; + } + + .markdown-body summary h1, + .markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; + } + + .markdown-body ul.no-list, + .markdown-body ol.no-list { + padding: 0; + list-style-type: none; + } + + .markdown-body ol[type=a] { + list-style-type: lower-alpha; + } + + .markdown-body ol[type=A] { + list-style-type: upper-alpha; + } + + .markdown-body ol[type=i] { + list-style-type: lower-roman; + } + + .markdown-body ol[type=I] { + list-style-type: upper-roman; + } + + .markdown-body ol[type="1"] { + list-style-type: decimal; + } + + .markdown-body div>ol:not([type]) { + list-style-type: decimal; + } + + .markdown-body ul ul, + .markdown-body ul ol, + .markdown-body ol ol, + .markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; + } + + .markdown-body li>p { + margin-top: 16px; + } + + .markdown-body li+li { + margin-top: .25em; + } + + .markdown-body dl { + padding: 0; + } + + .markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: var(--base-text-weight-semibold, 600); + } + + .markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; + } + + .markdown-body table th { + font-weight: var(--base-text-weight-semibold, 600); + } + + .markdown-body table th, + .markdown-body table td { + padding: 6px 13px; + border: 1px solid var(--color-border-default); + } + + .markdown-body table tr { + background-color: var(--color-canvas-default); + border-top: 1px solid var(--color-border-muted); + } + + .markdown-body table tr:nth-child(2n) { + background-color: var(--color-canvas-subtle); + } + + .markdown-body table img { + background-color: transparent; + } + + .markdown-body img[align=right] { + padding-left: 20px; + } + + .markdown-body img[align=left] { + padding-right: 20px; + } + + .markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: transparent; + } + + .markdown-body span.frame { + display: block; + overflow: hidden; + } + + .markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid var(--color-border-default); + } + + .markdown-body span.frame span img { + display: block; + float: left; + } + + .markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: var(--color-fg-default); + } + + .markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; + } + + .markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; + } + + .markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; + } + + .markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; + } + + .markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; + } + + .markdown-body span.align-right span img { + margin: 0; + text-align: right; + } + + .markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; + } + + .markdown-body span.float-left span { + margin: 13px 0 0; + } + + .markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; + } + + .markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; + } + + .markdown-body code, + .markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: var(--color-neutral-muted); + border-radius: 6px; + } + + .markdown-body code br, + .markdown-body tt br { + display: none; + } + + .markdown-body del code { + text-decoration: inherit; + } + + .markdown-body samp { + font-size: 85%; + } + + .markdown-body pre code { + font-size: 100%; + } + + .markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; + } + + .markdown-body .highlight { + margin-bottom: 16px; + } + + .markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; + } + + .markdown-body .highlight pre, + .markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: var(--color-canvas-subtle); + border-radius: 6px; + } + + .markdown-body pre code, + .markdown-body pre tt { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; + } + + .markdown-body .csv-data td, + .markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; + } + + .markdown-body .csv-data .blob-num { + padding: 10px 8px 9px; + text-align: right; + background: var(--color-canvas-default); + border: 0; + } + + .markdown-body .csv-data tr { + border-top: 0; + } + + .markdown-body .csv-data th { + font-weight: var(--base-text-weight-semibold, 600); + background: var(--color-canvas-subtle); + border-top: 0; + } + + .markdown-body [data-footnote-ref]::before { + content: "["; + } + + .markdown-body [data-footnote-ref]::after { + content: "]"; + } + + .markdown-body .footnotes { + font-size: 12px; + color: var(--color-fg-muted); + border-top: 1px solid var(--color-border-default); + } + + .markdown-body .footnotes ol { + padding-left: 16px; + } + + .markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 16px; + margin-top: 16px; + } + + .markdown-body .footnotes li { + position: relative; + } + + .markdown-body .footnotes li:target::before { + position: absolute; + top: -8px; + right: -8px; + bottom: -8px; + left: -24px; + pointer-events: none; + content: ""; + border: 2px solid var(--color-accent-emphasis); + border-radius: 6px; + } + + .markdown-body .footnotes li:target { + color: var(--color-fg-default); + } + + .markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; + } + + .markdown-body .pl-c { + color: var(--color-prettylights-syntax-comment); + } + + .markdown-body .pl-c1, + .markdown-body .pl-s .pl-v { + color: var(--color-prettylights-syntax-constant); + } + + .markdown-body .pl-e, + .markdown-body .pl-en { + color: var(--color-prettylights-syntax-entity); + } + + .markdown-body .pl-smi, + .markdown-body .pl-s .pl-s1 { + color: var(--color-prettylights-syntax-storage-modifier-import); + } + + .markdown-body .pl-ent { + color: var(--color-prettylights-syntax-entity-tag); + } + + .markdown-body .pl-k { + color: var(--color-prettylights-syntax-keyword); + } + + .markdown-body .pl-s, + .markdown-body .pl-pds, + .markdown-body .pl-s .pl-pse .pl-s1, + .markdown-body .pl-sr, + .markdown-body .pl-sr .pl-cce, + .markdown-body .pl-sr .pl-sre, + .markdown-body .pl-sr .pl-sra { + color: var(--color-prettylights-syntax-string); + } + + .markdown-body .pl-v, + .markdown-body .pl-smw { + color: var(--color-prettylights-syntax-variable); + } + + .markdown-body .pl-bu { + color: var(--color-prettylights-syntax-brackethighlighter-unmatched); + } + + .markdown-body .pl-ii { + color: var(--color-prettylights-syntax-invalid-illegal-text); + background-color: var(--color-prettylights-syntax-invalid-illegal-bg); + } + + .markdown-body .pl-c2 { + color: var(--color-prettylights-syntax-carriage-return-text); + background-color: var(--color-prettylights-syntax-carriage-return-bg); + } + + .markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: var(--color-prettylights-syntax-string-regexp); + } + + .markdown-body .pl-ml { + color: var(--color-prettylights-syntax-markup-list); + } + + .markdown-body .pl-mh, + .markdown-body .pl-mh .pl-en, + .markdown-body .pl-ms { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-heading); + } + + .markdown-body .pl-mi { + font-style: italic; + color: var(--color-prettylights-syntax-markup-italic); + } + + .markdown-body .pl-mb { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-bold); + } + + .markdown-body .pl-md { + color: var(--color-prettylights-syntax-markup-deleted-text); + background-color: var(--color-prettylights-syntax-markup-deleted-bg); + } + + .markdown-body .pl-mi1 { + color: var(--color-prettylights-syntax-markup-inserted-text); + background-color: var(--color-prettylights-syntax-markup-inserted-bg); + } + + .markdown-body .pl-mc { + color: var(--color-prettylights-syntax-markup-changed-text); + background-color: var(--color-prettylights-syntax-markup-changed-bg); + } + + .markdown-body .pl-mi2 { + color: var(--color-prettylights-syntax-markup-ignored-text); + background-color: var(--color-prettylights-syntax-markup-ignored-bg); + } + + .markdown-body .pl-mdr { + font-weight: bold; + color: var(--color-prettylights-syntax-meta-diff-range); + } + + .markdown-body .pl-ba { + color: var(--color-prettylights-syntax-brackethighlighter-angle); + } + + .markdown-body .pl-sg { + color: var(--color-prettylights-syntax-sublimelinter-gutter-mark); + } + + .markdown-body .pl-corl { + text-decoration: underline; + color: var(--color-prettylights-syntax-constant-other-reference-link); + } + + .markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: var(--base-text-weight-normal, 400); + line-height: 1; + vertical-align: -0.075em; + } + + .markdown-body g-emoji img { + width: 1em; + height: 1em; + } + + .markdown-body .task-list-item { + list-style-type: none; + } + + .markdown-body .task-list-item label { + font-weight: var(--base-text-weight-normal, 400); + } + + .markdown-body .task-list-item.enabled label { + cursor: pointer; + } + + .markdown-body .task-list-item+.task-list-item { + margin-top: 4px; + } + + .markdown-body .task-list-item .handle { + display: none; + } + + .markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; + } + + .markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; + } + + .markdown-body .contains-task-list { + position: relative; + } + + .markdown-body .contains-task-list:hover .task-list-item-convert-container, + .markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip: auto; + } + + .markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); + } + \ No newline at end of file diff --git a/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/highlight.scss b/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/highlight.scss new file mode 100644 index 000000000..446a1e2e0 --- /dev/null +++ b/m78-all/m78-fe/src/components/common/markdown-message/assets/scss/highlight.scss @@ -0,0 +1,206 @@ +html.dark { + pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em + } + + code.hljs { + padding: 3px 5px + } + + .hljs { + color: #abb2bf; + background: #282c34 + } + + .hljs-keyword, + .hljs-operator, + .hljs-pattern-match { + color: #f92672 + } + + .hljs-function, + .hljs-pattern-match .hljs-constructor { + color: #61aeee + } + + .hljs-function .hljs-params { + color: #a6e22e + } + + .hljs-function .hljs-params .hljs-typing { + color: #fd971f + } + + .hljs-module-access .hljs-module { + color: #7e57c2 + } + + .hljs-constructor { + color: #e2b93d + } + + .hljs-constructor .hljs-string { + color: #9ccc65 + } + + .hljs-comment, + .hljs-quote { + color: #b18eb1; + font-style: italic + } + + .hljs-doctag, + .hljs-formula { + color: #c678dd + } + + .hljs-deletion, + .hljs-name, + .hljs-section, + .hljs-selector-tag, + .hljs-subst { + color: #e06c75 + } + + .hljs-literal { + color: #56b6c2 + } + + .hljs-addition, + .hljs-attribute, + .hljs-meta .hljs-string, + .hljs-regexp, + .hljs-string { + color: #98c379 + } + + .hljs-built_in, + .hljs-class .hljs-title, + .hljs-title.class_ { + color: #e6c07b + } + + .hljs-attr, + .hljs-number, + .hljs-selector-attr, + .hljs-selector-class, + .hljs-selector-pseudo, + .hljs-template-variable, + .hljs-type, + .hljs-variable { + color: #d19a66 + } + + .hljs-bullet, + .hljs-link, + .hljs-meta, + .hljs-selector-id, + .hljs-symbol, + .hljs-title { + color: #61aeee + } + + .hljs-emphasis { + font-style: italic + } + + .hljs-strong { + font-weight: 700 + } + + .hljs-link { + text-decoration: underline + } +} + +html { + pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em + } + + code.hljs { + padding: 3px 5px; + &::-webkit-scrollbar { + height: 4px; + } + } + + .hljs { + color: #383a42; + background: #fafafa + } + + .hljs-comment, + .hljs-quote { + color: #a0a1a7; + font-style: italic + } + + .hljs-doctag, + .hljs-formula, + .hljs-keyword { + color: #a626a4 + } + + .hljs-deletion, + .hljs-name, + .hljs-section, + .hljs-selector-tag, + .hljs-subst { + color: #e45649 + } + + .hljs-literal { + color: #0184bb + } + + .hljs-addition, + .hljs-attribute, + .hljs-meta .hljs-string, + .hljs-regexp, + .hljs-string { + color: #50a14f + } + + .hljs-attr, + .hljs-number, + .hljs-selector-attr, + .hljs-selector-class, + .hljs-selector-pseudo, + .hljs-template-variable, + .hljs-type, + .hljs-variable { + color: #986801 + } + + .hljs-bullet, + .hljs-link, + .hljs-meta, + .hljs-selector-id, + .hljs-symbol, + .hljs-title { + color: #4078f2 + } + + .hljs-built_in, + .hljs-class .hljs-title, + .hljs-title.class_ { + color: #c18401 + } + + .hljs-emphasis { + font-style: italic + } + + .hljs-strong { + font-weight: 700 + } + + .hljs-link { + text-decoration: underline + } +} diff --git a/m78-all/m78-fe/src/components/common/markdown-message/index.vue b/m78-all/m78-fe/src/components/common/markdown-message/index.vue new file mode 100644 index 000000000..f5e90bbd2 --- /dev/null +++ b/m78-all/m78-fe/src/components/common/markdown-message/index.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/common/recorder/index.vue b/m78-all/m78-fe/src/components/common/recorder/index.vue new file mode 100644 index 000000000..c356c427d --- /dev/null +++ b/m78-all/m78-fe/src/components/common/recorder/index.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/export-http/CreateExportApi.vue b/m78-all/m78-fe/src/components/export-http/CreateExportApi.vue new file mode 100644 index 000000000..097360b78 --- /dev/null +++ b/m78-all/m78-fe/src/components/export-http/CreateExportApi.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/export-http/ExportApiTable.vue b/m78-all/m78-fe/src/components/export-http/ExportApiTable.vue new file mode 100644 index 000000000..cd97887da --- /dev/null +++ b/m78-all/m78-fe/src/components/export-http/ExportApiTable.vue @@ -0,0 +1,216 @@ + + + diff --git a/m78-all/m78-fe/src/components/export-http/JsonView.vue b/m78-all/m78-fe/src/components/export-http/JsonView.vue new file mode 100644 index 000000000..c327fd141 --- /dev/null +++ b/m78-all/m78-fe/src/components/export-http/JsonView.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/history-chat-list/index.vue b/m78-all/m78-fe/src/components/history-chat-list/index.vue new file mode 100644 index 000000000..7bcbcefa7 --- /dev/null +++ b/m78-all/m78-fe/src/components/history-chat-list/index.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/icons/IconCommunity.vue b/m78-all/m78-fe/src/components/icons/IconCommunity.vue new file mode 100644 index 000000000..2dc8b0552 --- /dev/null +++ b/m78-all/m78-fe/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/m78-all/m78-fe/src/components/icons/IconDocumentation.vue b/m78-all/m78-fe/src/components/icons/IconDocumentation.vue new file mode 100644 index 000000000..6d4791cfb --- /dev/null +++ b/m78-all/m78-fe/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/m78-all/m78-fe/src/components/icons/IconEcosystem.vue b/m78-all/m78-fe/src/components/icons/IconEcosystem.vue new file mode 100644 index 000000000..c3a4f078c --- /dev/null +++ b/m78-all/m78-fe/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/m78-all/m78-fe/src/components/icons/IconSupport.vue b/m78-all/m78-fe/src/components/icons/IconSupport.vue new file mode 100644 index 000000000..7452834d3 --- /dev/null +++ b/m78-all/m78-fe/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/m78-all/m78-fe/src/components/icons/IconTooling.vue b/m78-all/m78-fe/src/components/icons/IconTooling.vue new file mode 100644 index 000000000..660598d7c --- /dev/null +++ b/m78-all/m78-fe/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/m78-all/m78-fe/src/components/layouts/BaseHeader.vue b/m78-all/m78-fe/src/components/layouts/BaseHeader.vue new file mode 100644 index 000000000..36e1d07cd --- /dev/null +++ b/m78-all/m78-fe/src/components/layouts/BaseHeader.vue @@ -0,0 +1,149 @@ + + + + + + diff --git a/m78-all/m78-fe/src/components/layouts/ProbotLayout.vue b/m78-all/m78-fe/src/components/layouts/ProbotLayout.vue new file mode 100644 index 000000000..998d95f64 --- /dev/null +++ b/m78-all/m78-fe/src/components/layouts/ProbotLayout.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/layouts/ProbotLibrary.vue b/m78-all/m78-fe/src/components/layouts/ProbotLibrary.vue new file mode 100644 index 000000000..335dae73e --- /dev/null +++ b/m78-all/m78-fe/src/components/layouts/ProbotLibrary.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/layouts/ProbotResources.vue b/m78-all/m78-fe/src/components/layouts/ProbotResources.vue new file mode 100644 index 000000000..e559d5ea3 --- /dev/null +++ b/m78-all/m78-fe/src/components/layouts/ProbotResources.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/layouts/index.vue b/m78-all/m78-fe/src/components/layouts/index.vue new file mode 100644 index 000000000..71c07576e --- /dev/null +++ b/m78-all/m78-fe/src/components/layouts/index.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/sheet/index.vue b/m78-all/m78-fe/src/components/sheet/index.vue new file mode 100644 index 000000000..ccd8c1eaf --- /dev/null +++ b/m78-all/m78-fe/src/components/sheet/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/m78-all/m78-fe/src/components/sheet/xlsxspread.ts b/m78-all/m78-fe/src/components/sheet/xlsxspread.ts new file mode 100644 index 000000000..b2c7b6600 --- /dev/null +++ b/m78-all/m78-fe/src/components/sheet/xlsxspread.ts @@ -0,0 +1,136 @@ +/*! xlsxspread.js (C) SheetJS LLC -- https://sheetjs.com/ */ +/* eslint-env browser */ +/*global XLSX */ +/*exported stox, xtos */ + +/** + * Converts data from SheetJS to x-spreadsheet + * + * @param {Object} wb SheetJS workbook object + * + * @returns {Object[]} An x-spreadsheet data + */ +import * as XLSX from 'xlsx' + +export function stox(wb: XLSX.WorkBook) { + const out: { name: any; rows: {} }[] = [] + // console.log('wb', wb) + wb.SheetNames.forEach(function (name: string | number) { + const o = { name: name, rows: {} } + const ws = wb.Sheets[name] + // console.log('ws', ws) + if (!ws || !ws['!ref']) return + const range = XLSX.utils.decode_range(ws['!ref']) + // sheet_to_json will lost empty row and col at begin as default + range.s = { r: 0, c: 0 } + const aoa = XLSX.utils.sheet_to_json(ws, { + raw: false, + header: 1, + range: range + }) + aoa.forEach(function (r, i) { + const cells = {} + r.forEach(function (c: any, j: string | number) { + cells[j] = { text: c || String(c) } + + const cellRef = XLSX.utils.encode_cell({ r: i, c: j }) + + if (ws[cellRef] != null && ws[cellRef].f != null) { + cells[j].text = '=' + ws[cellRef].f + } + }) + o.rows[i] = { cells: cells } + }) + o.rows.len = aoa.length + + o.merges = [] + ;(ws['!merges'] || []).forEach(function (merge: XLSX.Range, i: string | number) { + //Needed to support merged cells with empty content + if (o.rows[merge.s.r] == null) { + o.rows[merge.s.r] = { cells: {} } + } + if (o.rows[merge.s.r].cells[merge.s.c] == null) { + o.rows[merge.s.r].cells[merge.s.c] = {} + } + + o.rows[merge.s.r].cells[merge.s.c].merge = [merge.e.r - merge.s.r, merge.e.c - merge.s.c] + + o.merges[i] = XLSX.utils.encode_range(merge) + }) + + out.push(o) + }) + + return out +} + +/** + * Converts data from x-spreadsheet to SheetJS + * + * @param {Object[]} sdata An x-spreadsheet data object + * + * @returns {Object} A SheetJS workbook object + */ +export function xtos(sdata: { rows: any; name: string | undefined }[]) { + const out = XLSX.utils.book_new() + sdata.forEach(function (xws: { rows: any; name: string | undefined }) { + const ws = {} + const rowobj = xws.rows + const minCoord = { r: 0, c: 0 }, + maxCoord = { r: 0, c: 0 } + for (let ri = 0; ri < rowobj.len; ++ri) { + const row = rowobj[ri] + if (!row) continue + + Object.keys(row.cells).forEach(function (k) { + const idx = +k + if (isNaN(idx)) return + + const lastRef = XLSX.utils.encode_cell({ r: ri, c: idx }) + if (ri > maxCoord.r) maxCoord.r = ri + if (idx > maxCoord.c) maxCoord.c = idx + + let cellText = row.cells[k].text, + type = 's' + if (!cellText) { + cellText = '' + type = 'z' + } else if (!isNaN(Number(cellText))) { + cellText = Number(cellText) + type = 'n' + } else if (cellText.toLowerCase() === 'true' || cellText.toLowerCase() === 'false') { + cellText = Boolean(cellText) + type = 'b' + } + + ws[lastRef] = { v: cellText, t: type } + + if (type == 's' && cellText[0] == '=') { + ws[lastRef].f = cellText.slice(1) + } + + if (row.cells[k].merge != null) { + if (ws['!merges'] == null) ws['!merges'] = [] + + ws['!merges'].push({ + s: { r: ri, c: idx }, + e: { + r: ri + row.cells[k].merge[0], + c: idx + row.cells[k].merge[1] + } + }) + } + }) + } + ws['!ref'] = minCoord + ? XLSX.utils.encode_range({ + s: minCoord, + e: maxCoord + }) + : 'A1' + + XLSX.utils.book_append_sheet(out, ws, xws.name) + }) + + return out +} diff --git a/m78-all/m78-fe/src/components/word-edit/index.vue b/m78-all/m78-fe/src/components/word-edit/index.vue new file mode 100644 index 000000000..230d2599f --- /dev/null +++ b/m78-all/m78-fe/src/components/word-edit/index.vue @@ -0,0 +1,447 @@ + + + + diff --git a/m78-all/m78-fe/src/components/word-edit/mutationObserver.ts b/m78-all/m78-fe/src/components/word-edit/mutationObserver.ts new file mode 100644 index 000000000..4abad6377 --- /dev/null +++ b/m78-all/m78-fe/src/components/word-edit/mutationObserver.ts @@ -0,0 +1,26 @@ +const observer = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + // 检查是否有子元素变化 + if (mutation.type === 'childList') { + mutation.addedNodes.forEach(function (addedNode) { + // 检查是否有class为aie-codeblock-tools-comments的子元素 + const commentsElement = (addedNode as HTMLElement).querySelector( + '.aie-codeblock-tools-comments' + ) + console.log('commentsElement', commentsElement) + if (commentsElement) { + const newChild = document.createElement('div') + newChild.className = 'new-child' + newChild.innerText = 'New Comment' + commentsElement.replaceWith(newChild) + } + }) + } + }) +}) + +const config = { childList: true, subtree: true } + +export function addListener(container: any) { + observer.observe(container, config) +} diff --git a/m78-all/m78-fe/src/components/word-edit/toolbarKeys.ts b/m78-all/m78-fe/src/components/word-edit/toolbarKeys.ts new file mode 100644 index 000000000..f931dedaf --- /dev/null +++ b/m78-all/m78-fe/src/components/word-edit/toolbarKeys.ts @@ -0,0 +1,38 @@ +export const toolbarKeys = [ + 'undo', + 'redo', + 'heading', + 'font-family', + 'font-size', + 'bold', + 'italic', + 'underline', + 'strike', + 'code', + 'todo', + 'emoji', + 'highlight', + 'font-color', + 'bullet-list', + 'ordered-list', + 'indent-decrease', + 'indent-increase', + 'align', + 'line-height', + 'image', + 'quote', + 'code-block', + 'table' +] + +export const fontFamily = { + values: [ + { name: '宋体', value: 'SimSun' }, + { name: '仿宋', value: 'FangSong' }, + { name: '黑体', value: 'SimHei' }, + { name: '楷体', value: 'KaiTi' }, + { name: '微软雅黑', value: 'Microsoft YaHei' }, + { name: '方正仿宋简体_GBK', value: 'FangSong_GB2312' }, + { name: 'Arial', value: 'Arial' } + ] +} diff --git a/m78-all/m78-fe/src/components/word-edit/waterMark.ts b/m78-all/m78-fe/src/components/word-edit/waterMark.ts new file mode 100644 index 000000000..6efd6fc20 --- /dev/null +++ b/m78-all/m78-fe/src/components/word-edit/waterMark.ts @@ -0,0 +1,123 @@ +interface IOption { + width: number + height: number + content: string + fontSize: number + font: string + color: string + rotateDegree: number +} + +const logo = ` +m7811111 + + + + + + + + + + + + + + + + +` + +const svgUrl = URL.createObjectURL(new Blob([logo], { type: 'image/svg+xml' })) + +const drawWaterMark = async ({ + className = 'water-node', + width = 220, + height = 160, + position = 'absolute', + top = 0, + left = 0, + right = 0, + bottom = 0, + zIndex = 1000, + content = '这里是水印内容', + fontSize = 14, + fontFamily = 'PingFang SC, sans-serif', + color = 'rgba(156, 162, 169, 0.1)', + rotate = -15 +}) => { + const option: IOption = { + width, + height, + content, + fontSize, + font: `${fontSize}px ${fontFamily}`, + color, + rotateDegree: (rotate * Math.PI) / 180 + } + + const imgUrl1 = await drawImg({ + ...option, + x: 120, + y: 100 + }) + const imgUrl2 = await drawImg({ + ...option, + x: 300, + y: 220 + }) + + const style = document.createElement('style') + style.innerHTML = `.${className}:after { + content: ''; + ${top || top === 0 ? `top: ${top}px;` : ''} + ${left || left === 0 ? `left: ${left}px;` : ''} + ${right || right === 0 ? `right: ${right}px;` : ''} + ${bottom || bottom === 0 ? `bottom: ${bottom}px;` : ''} + background-repeat: repeat; + pointer-events: none; + ${position ? `position: ${position}` : ''}; + ${zIndex ? `z-index:${zIndex}` : ''}; + background-image: url(${imgUrl1}), url(${imgUrl2}); + background-size: ${option.width * 2}px ${option.height}px; + }` + document.head.appendChild(style) +} + +const drawImg = ( + options: IOption & { + x: number + y: number + } +) => { + return new Promise((resolve) => { + const canvas = document.createElement('canvas') + canvas.width = options.width * 2 + canvas.height = options.height + const ctx = canvas.getContext('2d') + if (ctx) { + const img = new Image() + img.src = svgUrl + img.onload = () => { + ctx.globalAlpha = 0.08 + ctx.font = options.font + ctx.fillStyle = options.color + ctx.rotate(options.rotateDegree) + ctx.textAlign = 'center' + ctx.fillText(options.content, options.x, options.y) + ctx.drawImage(img, options.x - 40, options.y - options.fontSize - 30) + // ctx.fillText('M78', options.x, options.y - options.fontSize - 5) + resolve(canvas.toDataURL('image/png')) + setTimeout(() => { + URL.revokeObjectURL(svgUrl) + }, 1000) + // ctx.globalAlpha = 1.0 + } + img.onerror = () => { + URL.revokeObjectURL(svgUrl) + } + } + }) +} + +export default drawWaterMark diff --git a/m78-all/m78-fe/src/composables/dark.ts b/m78-all/m78-fe/src/composables/dark.ts new file mode 100644 index 000000000..5467599bd --- /dev/null +++ b/m78-all/m78-fe/src/composables/dark.ts @@ -0,0 +1,4 @@ +import { useDark, useToggle } from '@vueuse/core' + +export const isDark = useDark() +export const toggleDark = useToggle(isDark) diff --git a/m78-all/m78-fe/src/composables/index.ts b/m78-all/m78-fe/src/composables/index.ts new file mode 100644 index 000000000..e8d156608 --- /dev/null +++ b/m78-all/m78-fe/src/composables/index.ts @@ -0,0 +1 @@ +export * from './dark' diff --git a/m78-all/m78-fe/src/env.d.ts b/m78-all/m78-fe/src/env.d.ts new file mode 100644 index 000000000..9b4c650d9 --- /dev/null +++ b/m78-all/m78-fe/src/env.d.ts @@ -0,0 +1,7 @@ +/// + +declare module '*.vue' { + import { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/m78-all/m78-fe/src/locales/en-US.ts b/m78-all/m78-fe/src/locales/en-US.ts new file mode 100644 index 000000000..a9a51a415 --- /dev/null +++ b/m78-all/m78-fe/src/locales/en-US.ts @@ -0,0 +1,436 @@ +export default { + common: { + add: 'Add', + addSuccess: 'Add Success', + edit: 'Edit', + editSuccess: 'Edit Success', + delete: 'Delete', + deleteSuccess: 'Delete Success', + deleteFailed: 'Delete Failed', + save: 'Save', + saveSuccess: 'Save Success', + saveError: 'Save failed', + refresh: 'Refresh', + reset: 'Reset', + action: 'Action', + export: 'Export', + exportSuccess: 'Export Success', + import: 'Import', + importSuccess: 'Import Success', + clear: 'Clear', + clearSuccess: 'Clear Success', + yes: 'Yes', + no: 'No', + confirm: 'Confirm', + cancle: 'cancel', + download: 'Download', + noData: 'No Data', + wrong: 'Something went wrong, please try again later.', + success: 'Success', + failed: 'Failed', + verify: 'Verify', + unauthorizedTips: 'Unauthorized, please verify first.', + upload: 'Upload', + drag: 'Drag {docType} or click {btnTitle} to upload', + loading: 'Loading...', + confirmDel: 'Are you sure you want to delete it?', + copy: 'copy', + copySuccess: 'Successfully copied', + copyError: 'copy failed' + }, + chat: { + title: 'AI Chat', + newChat: 'New Chat', + newChatButton: 'New Chat', + placeholder: 'Ask me anything...(Shift + Enter = line break, "/" to trigger prompts)', + placeholderMobile: 'Ask me anything...', + copyCode: 'Copy Code', + clearChat: 'Clear Chat', + clearChatConfirm: 'Are you sure to clear this chat?', + exportImage: 'Export Image', + exportImageConfirm: 'Are you sure to export this chat to png?', + exportSuccess: 'Export Success', + exportFailed: 'Export Failed', + usingContext: 'Context Mode', + turnOnContext: + 'Multi-turn conversation mode: Good communication effect, understanding historical context, consumes more tokens', + turnOffContext: + 'One question one answer mode: Average communication effect, understanding limited to current input, consumes fewer tokens', + deleteMessage: 'Delete Message', + deleteMessageConfirm: 'Are you sure to delete this message?', + deleteHistoryConfirm: 'Are you sure to clear this history?', + clearHistoryConfirm: 'Are you sure to clear chat history?', + preview: 'Preview', + showRawText: 'Show as raw text', + replace: 'Replace' + }, + setting: { + setting: 'Custom Settings', + classification: 'Classification', + general: 'General', + advanced: 'Advanced', + config: 'Config', + avatarLink: 'Avatar Link', + name: 'Name', + description: 'Description', + role: 'Role', + temperature: 'Temperature', + top_p: 'Top_p', + resetUserInfo: 'Reset UserInfo', + chatHistory: 'ChatHistory', + theme: 'Theme', + language: 'Language', + api: 'API', + reverseProxy: 'Reverse Proxy', + timeout: 'Timeout', + socks: 'Socks', + httpsProxy: 'HTTPS Proxy', + balance: 'API Balance', + monthlyUsage: 'Monthly Usage', + model: 'Model' + }, + store: { + siderButton: 'Prompt Store', + local: 'Local', + online: 'Online', + title: 'Title', + description: 'Description', + clearStoreConfirm: 'Whether to clear the data?', + importPlaceholder: 'Please paste the JSON data here', + addRepeatTitleTips: 'Title duplicate, please re-enter', + addRepeatContentTips: 'Content duplicate: {msg}, please re-enter', + editRepeatTitleTips: 'Title conflict, please revise', + editRepeatContentTips: 'Content conflict {msg} , please re-modify', + importError: 'Key value mismatch', + importRepeatTitle: 'Title repeatedly skipped: {msg}', + importRepeatContent: 'Content is repeatedly skipped: {msg}', + onlineImportWarning: 'Note: Please check the JSON file source!', + downloadError: 'Please check the network status and JSON file validity' + }, + home: { + title: 'Wisdom without boundaries, limitless creativity', + code: `Intelligent coding, code optimization
Real-time learning, rapid integration
Project code maintenance and iteration
Advanced artificial intelligence technology
`, + doc: `AI-driven document processing tool
Intelligent classification, content extraction, intelligent search
Improve work efficiency, reduce human errors
`, + chat: `Intelligent, intuitive and highly personalized chat assistant
Natural language understanding
Continuous learning, applicable in multiple scenes
`, + translate: `Fast, accurate and smooth language translation services
Contextual understanding, instant translation
Enterprise-level features, professional terminology library
`, + platform: 'platform dependent', + platformContent: + "AI technology is becoming a key driving force for innovation and efficiency in this rapidly developing digital age. Our AI platform provides you with a seamless integrated environment, allowing you to easily leverage the powerful capabilities of artificial intelligence. Whether it's natural language processing, machine learning, image recognition, or intelligent data analysis, we can help you unlock new potential.", + product: 'product', + contact: 'Contact Us', + corporateName: 'corporate name', + telephone: 'Telephone', + contactEmail: 'Contact Email' + }, + homeInput: { + soundFail: 'Recording failure' + }, + menu: { + menu1: 'Product', + menu2: 'Docs', + menu3: 'Pricing', + menu4: 'Contact Us' + }, + excle: { + upload: 'Local Import', + myDocs: 'My Docs', + myFavorites: 'My Favorites', + aIDocAssistant: 'AI Document Assistant', + success: 'Success', + parsing: 'Parsing', + failed: 'Failed', + docs: 'document', + loadingText: 'AI parsing, please wait~', + metadata: 'Meta information', + delete: 'Delete', + favorite: 'Favorite', + favSucTips: 'Favorite added', + favFaileTips: 'Failed to add to favorites', + RemoveFav: 'Remove from Favorites', + cancleFavfailed: 'Failed to remove from Favorites', + cancleFavSuc: 'Removed from Favorites successfully', + MessageAIDocAssistant: 'Message AI Assistant...', + cancle: 'Cancle', + confirm: 'Confirm', + editChatHis: 'Edit chat records', + content: 'Content', + enterText: 'Please provide the content', + conditions: 'Conditions', + addConditions: 'Add conditions', + chatRecords: 'Chat records', + noChatRecords: 'No chat records', + advancedSettings: 'Advanced settings', + uplodingDocTips: 'Uploading, please wait~', + sendMsg: 'Send msaage', + canceled: 'Canceled', + parsingSuc: 'Parsing success', + parsingFailed: 'Parsing failed', + uploadSuc: 'Upload successful!', + deletingTip: 'Deleting, please wait!', + uploadSuccess: 'Upload successful!', + addRow: 'Append row', + addCol: 'Append column', + addRowSuc: 'Appended row succeeded!', + addColSuc: 'Appended column succeeded!', + addRowFail: 'Failed to append a row!', + addColFail: 'Failed to append a column!', + deleteRow: 'Delete row', + deleteCol: 'Delete column', + colName: 'Column Name', + enterColNameTip: 'Please enter a column name', + read: 'Reading', + edit: 'Edit', + hasChangeMode: 'Switched to {modeName} mode', + exportHttp: 'Exporting HTTP interface', + exportHttpName: 'Name', + exportApi: 'Export Api', + editExportHttp: 'Edit export interface', + createExportHttp: 'Create export interface', + testQuery: 'Debug' + }, + code: { + tip: 'AI Code Assistant for IDE', + btnStar: 'Start using the AI Code Assistant', + btnTry: 'Web Editor trial', + title1: 'Understanding Code Context', + content1P1: + 'Understand the syntax and structure of programming languages, analyze scopes and declarations', + content1P2: 'Learn business logic in code', + content1P3: 'Make relevant inferences based on context', + title2: 'AI technology empowers development', + content2P1: 'Generate Code Block', + content2P2: 'Explain the code to help you quickly understand the project', + content2P3: + 'Dialogue based code guidance, guiding the completion of project maintenance and iteration', + title3: 'Local privatization layout', + content3P1: 'Local privatization arrangement and first-class protection mechanism', + content3P2: + 'Privatization of underlying AI models and privatization of underlying knowledge database storage', + content3P3: 'Desensitization of data based on syntax tree parsing' + }, + about: { + aboutUs: 'About Us', + contactUs: 'Contact Us', + problemFeedback: 'Problem feedback', + aboutContent: `In this rapidly developing digital age, AI technology is becoming a key force driving innovation and efficiency. Our AI platform provides you with a seamless integrated environment, allowing you to easily leverage the powerful capabilities of artificial intelligence. Whether it's natural language processing, machine learning, image recognition, or intelligent data analysis, we can help you unlock new potential.`, + contactWebChat: 'WeChat official account', + contactDing: 'DingTalk Group', + contactEmail: 'Email', + contactGitHub: 'GitHub', + name: 'full name', + namePlaceholder: 'Please enter your name', + emial: 'Email', + emialPlaceholder: 'Please enter the email address', + emailTip: 'The email format is incorrect!', + theme: 'theme', + themePlaceholder: 'Please enter the theme', + content: 'content', + contentPlaceholder: 'Please enter the content', + submit: 'submit', + feekSuccess: 'Feedback successful!' + }, + translate: { + styleTitle: 'Customized translation style', + styleTip: 'AI translation will meet the requirements you specified', + styleContent: `AI translation will meet the requirements you specified, such as:
`, + styleContent2: `"Xiao Ming" must be translated as "Honey";
+ Translation results require faithfulness, expressiveness, and elegance;
+ The starry river, full of clear dreams, is translated as "reflecting the starlight of the river"`, + stylePlaceholder: 'Please enter a custom translation style', + styleSave: 'save', + + text: 'characters', + img: 'picture', + doc: 'document', + web: 'website', + docLoading: 'Identifying file, please wait', + docError: 'There was a problem with the document processing, please try again~', + imgLoading: 'Recognizing image, please wait', + imgRenderLoading: 'Image recognized, extracting text...', + imgError: 'There was a problem with the image processing, please try again~', + imgNoData: 'No data was recognized in the picture, please try again~', + clipboard: 'Paste from clipboard', + clipboardNoData: 'There are no pictures in the clipboard', + detectLanguage: 'Detect Language', + langPlaceholder: 'Please enter content to search', + originPlaceholderDefault: 'Please enter the text you want to process', + originPlaceholderRecording: 'Please start speaking', + originPlaceholderProcessing: 'Please wait, we are currently processing the recording', + sound: 'Phonetic translation', + stopSound: 'Stop voice translation', + translateBtnTxtDefault: 'translate', + translateBtnTxtLoading: 'In translation', + read: 'read aloud', + stopRead: 'Stop reading aloud', + readNoData: 'There is no content to be read aloud, and reading aloud cannot be performed.', + edit: 'edit', + copyNoData: 'The current text has no content', + recording: 'Recording in progress, please wait', + resultRecording: 'Please wait, we are currently translating the recording', + translateLoading: 'Translation in progress, please wait a moment', + recordingError: 'Sorry, please try again', + originNoData: 'Please enter the content for translation', + rightTitle: 'AI Translation Assistant', + historyBtnTitle: 'History', + noUuidMsg: 'Please translate first!', + category: 'Translation category', + historyTableTitle: 'History', + favoritesTableTitle: 'My Collection', + delTitle: 'prompt', + delTip: 'Confirm deletion?', + delCancle: 'cancel', + delSure: 'sure', + delSuccess: 'Delete successful', + delError: 'Delete failed' + }, + word: { + docTitle: 'Document list', + terminating: 'Terminating, please wait', + articleGenerated: 'Article is being generated, please wait.', + translating: 'Translating, please wait', + aiGenerated: 'AI generated', + zhToEn: 'Chinese to English', + enToZh: 'English to Chinese', + save: 'save', + enterTitle: 'enter article title', + enterContent: 'Please enter the article content', + enterArticleContent: 'click to enter article content...', + aiFunction: 'AI func', + stopAi: 'Terminate AI?', + warning: 'warning' + }, + probot: { + menu1: 'Product Library', + menu2: 'resource management', + menu3: 'Create Probot', + mySpace: 'Space', + teamSpace: 'Team Space', + search: 'Search', + userManager: { + addUser: 'Add user', + editUser: 'Edit user', + role: 'role', + user: 'user', + pleaceEnterKeyword: 'please enter a keyword', + pleaceSelectUser: 'please select user', + pleaceSelectRole: 'please select a role', + member: 'Member management', + pleaceEnterUserName: 'please enter user name', + addUserName: 'Add member', + userName: 'username', + joinTime: 'join time', + modify: 'modify', + remove: 'remove', + close: 'Close', + operate: 'operate', + roleList: { + all: 'all', + super: 'superman', + creator: 'creator', + manager: 'administrator', + member: 'member' + }, + transfer: 'Transfer ownership', + transferSucc: 'Transfer successful!', + transferErr: 'Transfer failed!', + noPermission: 'No permission!', + confirmDelUser: 'Confirm to delete member {name}?', + warning: 'warning', + addSucc: 'successful!', + editSucc: 'successful!', + deleteBot: 'Are you sure you want to delete {name}?', + status: 'status', + enterProbotName: 'please enter Probot name', + selectType: 'please choose the type', + selectStatus: 'please choose the status', + createBotBtn: 'Create Probot', + lastUpdate: 'latest update' + } + }, + plugin: { + noCompTips: 'No components available at the moment', + tablePluginName: 'Plugin name', + components: 'Components', + status: 'Status', + createTime: 'Create Time', + creator: 'Creator', + updateTime: 'Update Time', + updater: 'Updater', + manage: 'Manage', + published: 'published', + unpublished: 'unpublished', + enable: 'enable', + unopened: 'unopened', + notDebugged: 'not debugged', + debuggingSuccessful: 'Debugging successful', + debuggingFailed: 'Debugging failed', + pleaseEnterDescription: 'Please enter a description', + photoTips: + 'After entering the plugin name and description, click to automatically generate the avatar', + inputParams: 'Enter parameters', + parameter: 'parameter name', + pleaseEnter: 'please enter', + parameterVal: 'parameter value', + debuggingResults: 'Result', + debug: 'debug', + debugTitle: 'Debug', + close: 'Close', + editComponent: 'Edit', + addComponent: 'Add', + compName: 'Name', + compNameLabel: 'name', + pleaseEnterComponentName: 'please enter the component name', + compDesc: 'description', + pleaseEnterComponentDesc: 'please enter the component description', + compType: 'type', + pleaseSelectTypeComponent: 'please select the component type', + requestMethod: 'method', + pleaseSelectMethod: 'please select a method', + pleaseEnterURL: 'please enter the URL', + requestHeader: 'request header', + arguments: 'input parameters', + output: 'output parameters', + previousStep: 'Previous Step', + nextStep: 'Next Step', + key: 'Key', + value: 'Value', + pleaseSelect: 'Please select', + workspace: 'Workspace', + mySpace: 'My space', + addComponentBtn: 'Add', + takeOffline: 'Take offline', + publish: 'Publish', + successfullylistedSale: 'Successfully listed', + successfullyTakenOffline: 'Successfully delisted', + parameterName: 'parameter name', + basicInformation: 'Basic Information', + parameterConfiguration: 'Parameter Configuration', + category: 'Category', + metadata: 'Metadata', + description: 'Description', + debugStatus: 'Debug status', + enabledStatus: 'Enabled status', + pluginName: 'plugin name', + enterPluginName: 'please enter the plugin name', + username: 'username', + enterUserName: 'please enter user name', + createPluginBtn: 'Create plugin', + noPlugin: 'No plugins yet', + name: 'name', + mateInfo: 'meta information', + desc: 'description', + operate: 'operate', + deletePlugin: 'Confirm to delete the current plugin {name}?', + warning: 'warning', + editPluginTitle: 'Edit plugin', + addPluginTitle: 'New plugin', + enterPluginUrl: 'please enter the plugin url', + enterMateInfo: 'please enter meta information', + search: 'Search' + }, + commonTextarea: { + sendMsg: 'Send Message', + enterWithShift: + 'Enable enter + shift key to send messages. If enabled, enter is for new lines, enter + shift is for sending; otherwise, enter is for sending, and enter + shift is for new lines.' + } +} diff --git a/m78-all/m78-fe/src/locales/index.ts b/m78-all/m78-fe/src/locales/index.ts new file mode 100644 index 000000000..64bdebc39 --- /dev/null +++ b/m78-all/m78-fe/src/locales/index.ts @@ -0,0 +1,43 @@ +import type { App } from 'vue' +import { createI18n } from 'vue-i18n' +import { en, zhCn } from 'element-plus/es/locale/index.mjs' +import enUS from './en-US' +import zhCN from './zh-CN' +import { useAppStoreWithOut } from '@/stores/app' +import type { Language } from '@/stores/app/helper' + +const appStore = useAppStoreWithOut() + +const defaultLocale = appStore.language || 'en-US' + +const i18n = createI18n({ + locale: defaultLocale, + fallbackLocale: 'en-US', + allowComposition: true, + messages: { + 'en-US': enUS, + 'zh-CN': zhCN + } +}) + +export const t = i18n.global.t + +export function setLocale(locale: Language) { + i18n.global.locale = locale +} + +export function setupI18n(app: App) { + app.use(i18n) +} + +export function getElementPlusI18n(locale: Language) { + if (locale == 'en-US') { + return en + } else if (locale == 'zh-CN') { + return zhCn + } + + return en +} + +export default i18n diff --git a/m78-all/m78-fe/src/locales/zh-CN.ts b/m78-all/m78-fe/src/locales/zh-CN.ts new file mode 100644 index 000000000..6f213737a --- /dev/null +++ b/m78-all/m78-fe/src/locales/zh-CN.ts @@ -0,0 +1,442 @@ +export default { + common: { + add: '添加', + addSuccess: '添加成功', + edit: '编辑', + editSuccess: '编辑成功', + delete: '删除', + deleteSuccess: '删除成功', + deleteFailed: '删除成功', + save: '保存', + saveSuccess: '保存成功', + saveError: '保存失败', + refresh: '刷新', + reset: '重置', + action: '操作', + export: '导出', + exportSuccess: '导出成功', + import: '导入', + importSuccess: '导入成功', + clear: '清空', + clearSuccess: '清空成功', + yes: '是', + no: '否', + confirm: '确定', + cancle: '取消', + download: '下载', + noData: '暂无数据', + wrong: '好像出错了,请稍后再试。', + success: '操作成功', + failed: '操作失败', + verify: '验证', + unauthorizedTips: '未经授权,请先进行验证。', + upload: '上传', + drag: '拖拽{docType}至此处或点击{btnTitle}{docType}', + loading: '加载中...', + confirmDel: '确定要删除吗?', + copy: '复制', + copyError: '复制失败', + copySuccess: '复制成功' + }, + chat: { + title: 'AI聊天', + newChat: '新建聊天', + newChatButton: '新建聊天', + placeholder: '来说点什么吧...(Shift + Enter = 换行)', + placeholderMobile: '来说点什么...', + copyCode: '复制代码', + clearChat: '清空会话', + clearChatConfirm: '是否清空会话?', + exportImage: '保存会话到图片', + exportImageConfirm: '是否将会话保存为图片?', + exportSuccess: '保存成功', + exportFailed: '保存失败', + usingContext: '上下文模式', + turnOnContext: '多轮对话模式:沟通效果佳,理解历史上下文,会多消耗一部分token', + turnOffContext: '一问一答模式:沟通效果一般,理解范围局限于你当次的输入,token消耗小', + deleteMessage: '删除消息', + deleteMessageConfirm: '是否删除此消息?', + deleteHistoryConfirm: '确定删除此记录?', + clearHistoryConfirm: '确定清空聊天记录?', + preview: '预览', + showRawText: '显示原文', + replace: '替换' + }, + dataSource: { + title: '数据源', + newButton: '新建数据源' + }, + setting: { + setting: '自定义设置', + classification: '分类管理', + general: '总览', + advanced: '高级', + config: '配置', + avatarLink: '头像链接', + name: '名称', + description: '描述', + role: '角色设定', + temperature: 'Temperature', + top_p: 'Top_p', + resetUserInfo: '重置用户信息', + chatHistory: '聊天记录', + theme: '主题', + language: '语言', + api: 'API', + reverseProxy: '反向代理', + timeout: '超时', + socks: 'Socks', + httpsProxy: 'HTTPS Proxy', + balance: 'API余额', + monthlyUsage: '本月使用量', + model: '模型' + }, + store: { + siderButton: '提示词商店', + local: '本地', + online: '在线', + title: '标题', + description: '描述', + clearStoreConfirm: '是否清空数据?', + importPlaceholder: '请粘贴 JSON 数据到此处', + addRepeatTitleTips: '标题重复,请重新输入', + addRepeatContentTips: '内容重复:{msg},请重新输入', + editRepeatTitleTips: '标题冲突,请重新修改', + editRepeatContentTips: '内容冲突{msg} ,请重新修改', + importError: '键值不匹配', + importRepeatTitle: '标题重复跳过:{msg}', + importRepeatContent: '内容重复跳过:{msg}', + onlineImportWarning: '注意:请检查 JSON 文件来源!', + downloadError: '请检查网络状态与 JSON 文件有效性' + }, + home: { + title: '智慧无界,创想无限', + code: `智能编码,代码优化
实时学习,快速集成
项目代码维护和迭代
先进的人工智能技术
`, + doc: ` AI驱动的文档处理工具
智能归类,内容提取,智能搜索
提升工作效率,减少人为错误
`, + chat: ` 智能直观高度个性的聊天助手
自然语言理解
持续学习,多场景适用性
`, + translate: `快速准确流畅的语言翻译服务
上下文理解,即时翻译
企业级功能,专业术语库
`, + platform: '平台相关', + platformContent: + 'AI技术在这个快速发展的数字时代,正成为推动创新和效率的关键力量。我们的AI平台为您提供了一个无缝集成的环境,让您能够轻松地利用人工智能的强大功能,无论是自然语言处理、机器学习、图像识别还是智能数据分析,我们都能帮助您解锁新的潜力。', + product: '产品', + contact: '联系我们', + corporateName: '公司名称', + telephone: '联系电话', + contactEmail: '联系邮箱' + }, + homeInput: { + soundFail: '录音异常' + }, + menu: { + menu1: '产品', + menu2: '文档', + menu3: '定价', + menu4: '联系我们' + }, + excle: { + upload: '本地导入', + myDocs: '我的文档', + myFavorites: '我的收藏', + aIDocAssistant: 'AI文档助手', + success: '成功', + parsing: '解析中', + failed: '失败', + docs: '文档', + loadingText: 'AI解析中,请稍后~', + metadata: 'Meta元数据', + delete: '删除', + favorite: '收藏', + favSucTips: '收藏成功', + favFaileTips: '收藏失败', + RemoveFav: '取消收藏', + cancleFavfailed: '取消收藏失败', + cancleFavSuc: '取消收藏成功', + MessageAIDocAssistant: '给AI助手发消息...', + cancle: '取消', + confirm: '确定', + editChatHis: '编辑聊天记录', + content: '内容', + enterText: '请输入聊天内容', + conditions: '条件', + addConditions: '增加条件', + chatRecords: '聊天记录', + noChatRecords: '暂无聊天记录', + advancedSettings: '高级配置', + uplodingDocTips: '正在上传,请稍后~', + sendMsg: '发送信息', + canceled: '已取消', + parsingSuc: '解析成功!', + parsingFailed: '解析失败!', + uploadSuc: '上传成功!', + deletingTip: '删除中,请稍后!', + uploadSuccess: '上传成功!', + addRow: '追加一行', + addCol: '追加一列', + addRowSuc: '追加一行成功!', + addColSuc: '追加一列成功!', + addRowFail: '追加行失败!', + addColFail: '追加列失败!', + deleteRow: '删除行', + deleteCol: '删除列', + deleteRowSuc: '删除行成功!', + deleteColSuc: '删除列成功!', + deleteRowFail: '删除行失败!', + deleteColFail: '删除列失败!', + colName: '列名', + enterColNameTip: '请输入列名!', + read: '阅读', + edit: '编辑', + hasChangeMode: '已切换为{modeName}模式', + exportHttp: '导出HTTP接口', + exportHttpName: '名称', + exportApi: '导出接口', + editExportHttp: '编辑导出接口', + createExportHttp: '创建导出接口', + testQuery: '调试' + }, + code: { + tip: '用于IDE的AI代码助手', + btnStar: '开始使用AI代码助手', + btnTry: 'Web Editor试用', + title1: '理解代码上下文', + content1P1: '理解编程语言的语法和结构,分析作用域和声明', + content1P2: '学习代码中的业务逻辑', + content1P3: '结合上下文进行相关推断', + title2: 'AI技术为开发赋能', + content2P1: '生成代码块', + content2P2: '解释代码,帮助您快速了解项目', + content2P3: '对话式代码指导,引导完成项目维护和迭代', + title3: '本地私有化布置', + content3P1: '本地私有化布置,保护机制一流', + content3P2: '底层AI模型私有化,底层知识数据库存储私有化', + content3P3: '基于语法树解析对数据脱敏' + }, + about: { + aboutUs: '关于我们', + contactUs: '联系我们', + problemFeedback: '问题反馈', + aboutContent: + '在这个快速发展的数字时代,AI技术正成为推动创新和效率的关键力量。我们的AI平台为您提供了一个无缝集成的环境,让您能够轻松地利用人工智能的强大功能,无论是自然语言处理、机器学习、图像识别还是智能数据分析,我们都能帮助您解锁新的潜力。', + contactWebChat: '微信公众号', + contactDing: '钉钉群组', + contactEmail: '邮件', + contactGitHub: 'GitHub', + name: '姓名', + namePlaceholder: '请输入姓名', + emial: 'Email', + emialPlaceholder: '请输入Email', + emailTip: '邮箱格式不正确!', + theme: '主题', + themePlaceholder: '请输入主题', + content: '内容', + contentPlaceholder: '请输入内容', + submit: '提交', + feekSuccess: '反馈成功!' + }, + translate: { + styleTitle: '定制化翻译风格', + styleTip: 'AI翻译时将满足您指定的要求', + styleContent: `AI翻译时将满足您指定的要求,比如:
`, + styleContent2: ` + “小明”必须翻译为"Honey";
+ 翻译结果要求信、达、雅;
+ 满船清梦压星河的星河按照“倒映着星光的河水”翻译`, + stylePlaceholder: '请输入自定义翻译风格', + styleSave: '保存', + text: '文字', + img: '图片', + doc: '文档', + web: '网站', + docLoading: '正在识别文件中,请稍等', + docError: '文档处理出了点问题,请重新试试吧~', + imgLoading: '正在识别图片中,请稍等', + imgRenderLoading: '图片已识别,正在提取文字中...', + imgError: '图片处理出了点问题,请重新试试吧~', + imgNoData: '图片中没有识别到数据,请重新试试吧~', + clipboard: '从剪贴板中粘贴', + clipboardNoData: '剪贴板里没有图片', + detectLanguage: '检测语言', + langPlaceholder: '请输入内容进行搜索', + originPlaceholderDefault: '请输入您想要处理的文本', + originPlaceholderRecording: '请开始说话', + originPlaceholderProcessing: '请稍等,正在处理录音中...', + sound: '语音翻译', + stopSound: '停止语音翻译', + translateBtnTxtDefault: '翻译', + translateBtnTxtLoading: '翻译中', + read: '朗读', + stopRead: '停止朗读', + readNoData: '没有朗读内容,无法进行朗读', + edit: '编辑', + copyNoData: '当前文本没有内容', + recording: '正在进行录音,请等待', + resultRecording: '请稍等,正在翻译录音中', + translateLoading: '正在翻译中,请稍等', + recordingError: '不好意思,请再试一次', + originNoData: '请输入内容进行翻译', + + rightTitle: 'AI 翻译助手', + historyBtnTitle: '历史记录', + noUuidMsg: '请先进行翻译!', + category: '翻译类别', + historyTableTitle: '历史记录', + favoritesTableTitle: '我的收藏', + delTitle: '提示', + delTip: '确定删除?', + delCancle: '取消', + delSure: '确定', + delSuccess: '删除成功', + delError: '删除失败' + }, + word: { + docTitle: '文档列表', + terminating: '正在终止,请等待', + articleGenerated: '正在生成文章,请等待', + translating: '翻译中,请等待', + aiGenerated: 'AI生成', + zhToEn: '中译英', + enToZh: '英译中', + save: '保存', + enterTitle: '输入文章标题', + enterContent: '请输入文章内容', + enterArticleContent: '点击输入文章内容...', + aiFunction: 'AI功能', + stopAi: '是否终止AI?', + warning: '提示' + }, + probot: { + menu1: '商品库', + menu2: '资源管理', + menu3: '创建Probot', + mySpace: '我的空间', + createTeam: '创建团队', + editTeam: '编辑团队', + teamSpace: '团队空间', + search: '查询', + userManager: { + addUser: '添加用户', + editUser: '编辑用户', + role: '角色', + user: '用户', + pleaceEnterKeyword: '请输入关键词', + pleaceSelectUser: '请选择用户', + pleaceSelectRole: '请选择角色', + member: '成员管理', + pleaceEnterUserName: '请输入用户名', + addUserName: '添加成员', + userName: '用户名', + joinTime: '加入时间', + modify: '修改', + remove: '移除', + close: '关闭', + operate: '操作', + roleList: { + all: '全部', + super: '超级管理员', + creator: '创建人', + manager: '管理员', + member: '成员' + }, + transfer: '转让所有权', + transferSucc: '转让成功!', + transferErr: '转让失败!', + noPermission: '无权限!', + confirmDelUser: '确定要删除成员 {name}?', + warning: '提示', + addSucc: '添加成功!', + editSucc: '编辑成功!', + deleteBot: '确定要删除{name}?', + status: '状态', + enterProbotName: '请输入Probot名称', + selectType: '请选择类型', + selectStatus: '请选择状态', + createBotBtn: '创建Probot', + lastUpdate: '最后更新' + } + }, + plugin: { + noCompTips: '暂无组件', + components: '组件', + status: '状态', + createTime: '创建时间', + creator: '创建人', + updateTime: '更新时间', + updater: '更新人', + manage: '组件管理', + published: '已上架', + unpublished: '未上架', + enable: '启用', + unopened: '未启用', + notDebugged: '未调试', + debuggingSuccessful: '调试成功', + debuggingFailed: '调试失败', + pleaseEnterDescription: '请输入描述', + photoTips: '输入插件名称和介绍后,点击自动生成头像。', + inputParams: '输入参数', + parameter: '参数名', + pleaseEnter: '请输入', + parameterVal: '参数值', + debuggingResults: '调试结果', + debug: '调试', + debugTitle: '调试', + close: '关闭', + editComponent: '编辑组件', + addComponent: '添加组件', + compName: '组件名称', + compNameLabel: '组件名称', + description: '描述', + pleaseEnterComponentName: '请输入组件名称', + compDesc: '组件描述', + pleaseEnterComponentDesc: '请输入组件描述', + compType: '组件类型', + pleaseSelectTypeComponent: '请选择组件类型', + requestMethod: '请求方法', + pleaseSelectMethod: '请选择方法', + pleaseEnterURL: '请输入URL', + requestHeader: '请求头', + arguments: '入参', + output: '出参', + previousStep: '上一步', + nextStep: '下一步', + key: '键', + value: '值', + pleaseSelect: '请选择', + workspace: '工作空间', + mySpace: '我的空间', + addComponentBtn: '添加组件', + takeOffline: '下架', + publish: '上架', + successfullylistedSale: '上架成功', + successfullyTakenOffline: '下架成功', + parameterName: '参数名称', + basicInformation: '基本信息', + parameterConfiguration: '参数配置', + category: '分类', + metadata: '元数据', + debugStatus: '调试状态', + enabledStatus: '启用状态', + pluginName: '插件名称', + tablePluginName: '插件名称', + enterPluginName: '请输入插件名称', + username: '用户名', + enterUserName: '请输入用户名', + createPluginBtn: '创建插件', + noPlugin: '暂无工具', + name: '名称', + mateInfo: '元信息', + desc: '描述', + operate: '操作', + deletePlugin: '确定删除当前插件 {name}?', + warning: '提示', + editPluginTitle: '编辑插件', + addPluginTitle: '新建插件', + enterPluginUrl: '请输入插件URL', + enterMateInfo: '请输入元信息', + search: '查询' + }, + commonTextare: { + sendMsg: '发送信息', + enterWithShift: + '是否开启enter + shift键发送,开启则enter是换行,enter + shift是发送,否则enter是发送,enter + shift是换行' + } +} diff --git a/m78-all/m78-fe/src/main.ts b/m78-all/m78-fe/src/main.ts new file mode 100644 index 000000000..0917f50be --- /dev/null +++ b/m78-all/m78-fe/src/main.ts @@ -0,0 +1,58 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' +// import ElementPlus from 'element-plus' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import '@/utils/polyfill' + +import App from './App.vue' +import router from './router' +import { setupStore } from './stores' + +import '@/styles/index.scss' +import 'uno.css' +// If you want to use ElMessage, import it. +import 'element-plus/theme-chalk/src/message.scss' +import 'element-plus/theme-chalk/src/message-box.scss' +import { setupI18n } from './locales' +import JsonViewer from 'vue3-json-viewer' +import 'vue3-json-viewer/dist/index.css' +import contextmenu from 'v-contextmenu' +import 'v-contextmenu/dist/themes/default.css' + +declare global { + interface Window { + __APP_INFO__: { + buildTime: string + } + } +} + +const app = createApp(App) + +// app.use(ElementPlus) + +setupStore(app) + +setupI18n(app) + +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} + +app.use(JsonViewer) +app.use(contextmenu) +app.use(createPinia()) +app.use(router) + +app.mount('#app') + +const styles = [ + 'color: white', + 'background: green', + 'font-size: 19px', + 'border: 1px solid #fff', + 'text-shadow: 2px 2px black', + 'padding: 5px' +].join(';') +console.log(`%c版本更新时间: ${__APP_INFO__.buildTime}`, styles) +console.log(`%c浏览器信息: ${navigator.userAgent}`, styles) diff --git a/m78-all/m78-fe/src/router/index.ts b/m78-all/m78-fe/src/router/index.ts new file mode 100644 index 000000000..1a89165ad --- /dev/null +++ b/m78-all/m78-fe/src/router/index.ts @@ -0,0 +1,167 @@ +import { createRouter, createWebHistory } from 'vue-router' +import Layout from '@/components/layouts/index.vue' +import ProbotLayout from '@/components/layouts/ProbotLayout.vue' + +const router = createRouter({ + history: createWebHistory(`${import.meta.env.VITE_APP_ROUTER_PATH}`), + routes: [ + { + path: '/', + name: 'Root', + component: Layout, + children: [ + { + path: '/', + name: 'HomeView', + component: () => import('@/views/home/index.vue') + }, + { + path: '/code', + name: 'AI Code', + component: () => import('@/views/code/index.vue') + }, + { + path: '/doc', + name: 'AI Document', + component: () => import('@/views/doc/index.vue') + }, + { + path: '/translate', + name: 'AI Translate', + component: () => import('@/views/translate/index.vue') + }, + { + path: '/chat', + name: 'AI Chat', + component: () => import('@/views/chat/layout/Layout.vue') + }, + { + path: '/data-source', + name: 'AI Datasource', + component: () => import('@/views/data-source/index.vue') + }, + { + path: '/agent', + name: 'AI Agent', + component: () => import('@/views/agent/index.vue') + }, + { + path: '/about', + name: 'about', + component: () => import('@/views/about/index.vue') + }, + { + path: '/manual/:id?', + name: 'manual', + component: () => import('@/views/manual/index.vue') + }, + { + path: '/word', + name: 'AI Word', + component: () => import('@/views/word/index.vue') + }, + { + path: '/ws/test', + name: 'AI Word', + component: () => import('@/views/websocket/index.vue') + }, + { + path: '/probot-layout', + name: 'ProbotLayout', + component: ProbotLayout, + children: [ + { + path: '/probot', + name: 'AI Probot', + component: () => import('@/views/probot/index.vue') + }, + { + path: '/probot-index', + name: 'AI Probot Index', + component: () => import('@/views/probot/index.vue') + }, + { + path: '/probot-list', + name: 'AI Probot List', + component: () => import('@/views/probot-list/index.vue') + }, + { + path: '/probot-plugin-list', + name: 'AI Probot Plugin List', + component: () => import('@/views/plugins-list/index.vue') + }, + { + path: '/probot-create', + name: 'AI Probot Create', + component: () => import('@/views/probot/create/index.vue') + }, + { + path: '/probot-edit/:id?', + name: 'AI Probot Edit', + component: () => import('@/views/probot/create/index.vue') + }, + { + path: '/probot-view/:id?', + name: 'AI Probot View', + component: () => import('@/views/probot/create/index.vue') + }, + { + path: '/probot-space/:id?', + name: 'AI Probot Space', + component: () => import('@/views/probot/my-space/index.vue') + }, + { + path: '/probot-my-collect/:id?', + name: 'AI Probot My Collect', + component: () => import('@/views/probot/my-space/index.vue') + }, + { + path: '/probot-comp-list/:space/:plugin', + name: 'AI Probot Comp List', + component: () => import('@/views/probot/my-space/plugins/list/index.vue') + }, + { + path: '/probot-knowledge-manage/:id/:knowledgeBaseId', + name: 'AI Probot Knowledge Manage', + component: () => import('@/views/probot/my-space/knowledge/manage/index.vue') + }, + { + path: '/probot-team', + name: 'AI Probot Team', + component: () => import('@/views/probot-team/index.vue') + }, + { + path: '/probot-classification', + name: 'AI Probot Classification', + component: () => import('@/views/probot-classification/index.vue') + } + ] + } + ] + }, + { + path: '/probot-layout-visit', + name: 'ProbotLayoutVisit', + component: ProbotLayout, + children: [ + { + path: '/probot-visit/:id', + name: 'AI Probot Visit', + component: () => import('@/views/probot/visit/index.vue') + }, + { + path: '/plugin-detail', + name: 'AI Probot Plugin Detail', + component: () => import('@/views/plugin-detail/index.vue') + } + ] + }, + { + path: '/probot/workflow/:id', + name: 'AI Probot workflowItem', + component: () => import('@/views/workflow/index.vue') + } + ] +}) + +export default router diff --git a/m78-all/m78-fe/src/stores/app/helper.ts b/m78-all/m78-fe/src/stores/app/helper.ts new file mode 100644 index 000000000..f94b6f695 --- /dev/null +++ b/m78-all/m78-fe/src/stores/app/helper.ts @@ -0,0 +1,26 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'appSetting' + +export type Theme = 'light' | 'dark' | 'auto' + +export type Language = 'zh-CN' | 'en-US' + +export interface AppState { + siderCollapsed: boolean + theme: Theme + language: Language +} + +export function defaultSetting(): AppState { + return { siderCollapsed: false, theme: 'light', language: 'zh-CN' } +} + +export function getLocalSetting(): AppState { + const localSetting: AppState | undefined = ss.get(LOCAL_NAME) + return { ...defaultSetting(), ...localSetting } +} + +export function setLocalSetting(setting: AppState): void { + ss.set(LOCAL_NAME, setting) +} diff --git a/m78-all/m78-fe/src/stores/app/index.ts b/m78-all/m78-fe/src/stores/app/index.ts new file mode 100644 index 000000000..20ded6464 --- /dev/null +++ b/m78-all/m78-fe/src/stores/app/index.ts @@ -0,0 +1,34 @@ +import { defineStore } from 'pinia' +import type { AppState, Language, Theme } from './helper' +import { getLocalSetting, setLocalSetting } from './helper' +import { store } from '@/stores' + +export const useAppStore = defineStore('app-store', { + state: (): AppState => getLocalSetting(), + actions: { + setSiderCollapsed(collapsed: boolean) { + this.siderCollapsed = collapsed + this.recordState() + }, + + setTheme(theme: Theme) { + this.theme = theme + this.recordState() + }, + + setLanguage(language: Language) { + if (this.language !== language) { + this.language = language + this.recordState() + } + }, + + recordState() { + setLocalSetting(this.$state) + } + } +}) + +export function useAppStoreWithOut() { + return useAppStore(store) +} diff --git a/m78-all/m78-fe/src/stores/auth/helper.ts b/m78-all/m78-fe/src/stores/auth/helper.ts new file mode 100644 index 000000000..c16e0feda --- /dev/null +++ b/m78-all/m78-fe/src/stores/auth/helper.ts @@ -0,0 +1,15 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'SECRET_TOKEN' + +export function getToken() { + return ss.get(LOCAL_NAME) +} + +export function setToken(token: string) { + return ss.set(LOCAL_NAME, token) +} + +export function removeToken() { + return ss.remove(LOCAL_NAME) +} diff --git a/m78-all/m78-fe/src/stores/auth/index.ts b/m78-all/m78-fe/src/stores/auth/index.ts new file mode 100644 index 000000000..ec4b45a96 --- /dev/null +++ b/m78-all/m78-fe/src/stores/auth/index.ts @@ -0,0 +1,50 @@ +import { defineStore } from 'pinia' +import { getToken, removeToken, setToken } from './helper' +import { fetchSession } from '@/api' + +interface SessionResponse { + auth: boolean + model: 'ChatGPTAPI' | 'ChatGPTUnofficialProxyAPI' +} + +export interface AuthState { + token: string | undefined + session: SessionResponse | null +} + +export const useAuthStore = defineStore('auth-store', { + state: (): AuthState => ({ + token: getToken(), + session: null + }), + + getters: { + isChatGPTAPI(state): boolean { + return state.session?.model === 'ChatGPTAPI' + } + }, + + actions: { + async getSession() { + try { + const { data } = await fetchSession() + this.session = { ...data } + return Promise.resolve(data) + } catch (error) { + return Promise.reject(error) + } + }, + + setToken(token: string) { + this.token = token + setToken(token) + }, + + removeToken() { + this.token = undefined + removeToken() + } + } +}) + +export function useAuthStoreWithout() {} diff --git a/m78-all/m78-fe/src/stores/chat/helper.ts b/m78-all/m78-fe/src/stores/chat/helper.ts new file mode 100644 index 000000000..eeadce047 --- /dev/null +++ b/m78-all/m78-fe/src/stores/chat/helper.ts @@ -0,0 +1,23 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'chatStorage' + +export function defaultState(): Chat.ChatState { + const uuid = 1 + return { + active: uuid, + homeInput: '', + usingContext: true, + history: [{ uuid, title: 'New Chat', isEdit: false }], + chat: [{ uuid, data: [] }] + } +} + +export function getLocalState(): Chat.ChatState { + const localState = ss.get(LOCAL_NAME) + return { ...defaultState(), ...localState } +} + +export function setLocalState(state: Chat.ChatState) { + ss.set(LOCAL_NAME, state) +} diff --git a/m78-all/m78-fe/src/stores/chat/index.ts b/m78-all/m78-fe/src/stores/chat/index.ts new file mode 100644 index 000000000..969245e00 --- /dev/null +++ b/m78-all/m78-fe/src/stores/chat/index.ts @@ -0,0 +1,293 @@ +import { defineStore } from 'pinia' +import { + getChatMessageList, + addChatMessage, + delChatMessage, + clearChatMessage, + addChat as createChat, + getChatList, + delChat, + updateChat +} from '@/api/chat' +import { getLocalState, setLocalState } from './helper' + +export const useChatStore = defineStore('chat-store', { + state: (): Chat.ChatState => getLocalState(), + + getters: { + getChatHistoryByCurrentActive(state: Chat.ChatState) { + const index = state.history.findIndex((item) => item.uuid === state.active) + if (index !== -1) return state.history[index] + return null + }, + + getChatByUuid(state: Chat.ChatState) { + return (uuid?: number) => { + if (uuid) return state.chat.find((item) => item.uuid === uuid)?.data ?? [] + return state.chat.find((item) => item.uuid === state.active)?.data ?? [] + } + } + }, + + actions: { + updateHomeInput(prompt: string) { + this.homeInput = prompt + this.recordState() + }, + + setUsingContext(context: boolean) { + this.usingContext = context + this.recordState() + }, + + async addHistory(form: { title: string }, chatData: Chat.Chat[] = []) { + const { code, data } = await createChat({ + title: form.title, + description: '' + }) + if (code == 0 && data) { + const uuid = data.id + this.history.unshift({ + uuid, + title: form.title, + isEdit: false + }) + this.chat.unshift({ uuid: uuid, data: chatData }) + this.active = uuid + this.recordState() + } + + return code + }, + + async updateHistory(uuid: number, edit: Partial) { + const index = this.history.findIndex((item) => item.uuid === uuid) + if (index !== -1) { + const history = this.history[index] + await updateChat({ + id: uuid, + title: history.title, + knowledgeConfig: + history.knowledgeConfig || edit.knowledgeConfig + ? { + ...history?.knowledgeConfig, + ...edit?.knowledgeConfig + } + : null + }) + this.history[index] = { ...history, ...edit } + this.recordState() + } + }, + + async initHistory() { + const that = this + that.history = [] + that.chat = [] + try { + const { code, data } = await getChatList() + if (code == 0 && Array.isArray(data)) { + const history = (that.history = data + .map((item) => { + return { + title: item.title, + uuid: item.id, + knowledgeConfig: item.knowledgeConfig, + isEdit: false + } + }) + .reverse()) + if (history.findIndex((item) => item.uuid == this.active) < 0) { + this.active = history[0]?.uuid + } + for (const it of history) { + const { code, data } = await getChatMessageList({ + topicId: it.uuid + }) + if (code == 0 && Array.isArray(data)) { + const chatList = data.map((it) => { + // 将历史数据loading全部置为false + return { ...JSON.parse(it.meta.$$FeChat || '{}'), id: it.id, loading: false } + }) + // console.log('chatList:', chatList) + this.chat.unshift({ uuid: it.uuid, data: chatList }) + } else { + this.chat.unshift({ uuid: it.uuid, data: [] }) + } + } + } + } catch (e) { + console.error(e) + } + this.recordState() + }, + + async deleteHistory(index: number) { + const history = this.history[index] + await delChat({ + topicId: history.uuid + }) + + this.history.splice(index, 1) + this.chat.splice(index, 1) + + if (this.history.length === 0) { + this.active = null + this.recordState() + return + } + + if (index > 0 && index <= this.history.length) { + const uuid = this.history[index - 1].uuid + this.active = uuid + this.recordState() + return + } + + if (index === 0) { + if (this.history.length > 0) { + const uuid = this.history[0].uuid + this.active = uuid + this.recordState() + } + } + + if (index > this.history.length) { + const uuid = this.history[this.history.length - 1].uuid + this.active = uuid + this.recordState() + } + }, + + async setActive(uuid: number) { + this.active = uuid + return await this.recordState() + }, + + getChatByUuidAndIndex(uuid: number, index: number) { + if (!uuid || uuid === 0) { + if (this.chat.length) return this.chat[0].data[index] + return null + } + const chatIndex = this.chat.findIndex((item) => item.uuid === uuid) + if (chatIndex !== -1) return this.chat[chatIndex].data[index] + return null + }, + + addChatByUuid(uuid: number, chat: Chat.Chat) { + if (!uuid || uuid === 0) { + if (this.history.length === 0) { + const uuid = Date.now() + this.history.push({ uuid, title: chat.text, isEdit: false }) + this.chat.push({ uuid, data: [chat] }) + this.active = uuid + this.recordState() + } else { + this.chat[0].data.push(chat) + if (this.history[0].title === 'New Chat') this.history[0].title = chat.text + this.recordState() + } + } + + const index = this.chat.findIndex((item) => item.uuid === uuid) + if (index !== -1) { + this.chat[index].data.push(chat) + if (this.history[index].title === 'New Chat') this.history[index].title = chat.text + this.recordState() + } + }, + + async updateChatMessageByUuid(uuid: number, index: number, chat: Chat.Chat, role: Chat.Role) { + const { code, data } = await addChatMessage({ + topicId: uuid, + message: chat.text, + messageRole: role, + meta: { + $$FeChat: JSON.stringify(chat) + } + }) + console.log(data) + if (code == 0 && data) { + chat.id = data.id + // this.updateChatByUuid(uuid, index, chat) + } + }, + + updateChatByUuid(uuid: number, index: number, chat: Chat.Chat) { + if (!uuid || uuid === 0) { + if (this.chat.length) { + this.chat[0].data[index] = chat + this.recordState() + } + return + } + + const chatIndex = this.chat.findIndex((item) => item.uuid === uuid) + if (chatIndex !== -1) { + this.chat[chatIndex].data[index] = chat + this.recordState() + } + }, + + updateChatSomeByUuid(uuid: number, index: number, chat: Partial) { + if (!uuid || uuid === 0) { + if (this.chat.length) { + this.chat[0].data[index] = { ...this.chat[0].data[index], ...chat } + this.recordState() + } + return + } + + const chatIndex = this.chat.findIndex((item) => item.uuid === uuid) + if (chatIndex !== -1) { + this.chat[chatIndex].data[index] = { ...this.chat[chatIndex].data[index], ...chat } + this.recordState() + } + }, + + async deleteChatByUuid(uuid: number, index: number) { + if (!uuid || uuid === 0) { + if (this.chat.length) { + this.chat[0].data.splice(index, 1) + this.recordState() + } + return + } + + const chatIndex = this.chat.findIndex((item) => item.uuid === uuid) + if (chatIndex !== -1) { + const chat = this.chat[chatIndex].data[index] + await delChatMessage({ + messageId: chat.id + }) + this.chat[chatIndex].data.splice(index, 1) + this.recordState() + } + }, + + async clearChatByUuid(uuid: number) { + const { code } = await clearChatMessage({ + topicId: uuid + }) + if (code == 0) { + if (!uuid || uuid === 0) { + if (this.chat.length) { + this.chat[0].data = [] + this.recordState() + } + return + } + + const index = this.chat.findIndex((item) => item.uuid === uuid) + if (index !== -1) { + this.chat[index].data = [] + this.recordState() + } + } + }, + + recordState() { + setLocalState(this.$state) + } + } +}) diff --git a/m78-all/m78-fe/src/stores/chatContext/index.ts b/m78-all/m78-fe/src/stores/chatContext/index.ts new file mode 100644 index 000000000..d493116eb --- /dev/null +++ b/m78-all/m78-fe/src/stores/chatContext/index.ts @@ -0,0 +1,43 @@ +import { ref } from 'vue' +import { defineStore } from 'pinia' + +export interface ChatContextMsg { + content: string + role: Chat.Role +} + +export interface ChatContext { + isAllow: boolean + msgList: ChatContextMsg[] +} + +export const useChatContextStore = defineStore('chat-context', () => { + const chatContext = ref({ + isAllow: true, + msgList: [] + }) + + function addChatContext(context: ChatContextMsg) { + const msgList = chatContext.value.msgList + if (msgList.length < 10) { + chatContext.value.msgList = [...msgList, context] + } else { + msgList.shift() + chatContext.value.msgList = [...msgList, context] + } + } + + function disableContext() { + chatContext.value.isAllow = false + } + + function enableContext() { + chatContext.value.isAllow = true + } + + function clearContext() { + chatContext.value.msgList = [] + } + + return { chatContext, addChatContext, disableContext, enableContext, clearContext } +}) diff --git a/m78-all/m78-fe/src/stores/common-textarea/helper.ts b/m78-all/m78-fe/src/stores/common-textarea/helper.ts new file mode 100644 index 000000000..b1e4e628a --- /dev/null +++ b/m78-all/m78-fe/src/stores/common-textarea/helper.ts @@ -0,0 +1,20 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'commonTextareaSetting' + +export interface CommonTextareaState { + enterWithShiftKey: boolean +} + +export function defaultSetting(): CommonTextareaState { + return { enterWithShiftKey: false } +} + +export function getLocalSetting(): CommonTextareaState { + const localSetting: CommonTextareaState | undefined = ss.get(LOCAL_NAME) + return { ...defaultSetting(), ...localSetting } +} + +export function setLocalSetting(setting: CommonTextareaState): void { + ss.set(LOCAL_NAME, setting) +} diff --git a/m78-all/m78-fe/src/stores/common-textarea/index.ts b/m78-all/m78-fe/src/stores/common-textarea/index.ts new file mode 100644 index 000000000..ed155d4a1 --- /dev/null +++ b/m78-all/m78-fe/src/stores/common-textarea/index.ts @@ -0,0 +1,17 @@ +import { defineStore } from 'pinia' +import type { CommonTextareaState } from './helper' +import { getLocalSetting, setLocalSetting } from './helper' + +export const useCommonTextareaStore = defineStore('common-textarea-store', { + state: (): CommonTextareaState => getLocalSetting(), + actions: { + setEnterWithEnterShiftKey(enterWithShiftKey: boolean) { + this.enterWithShiftKey = enterWithShiftKey + this.recordState() + }, + + recordState() { + setLocalSetting(this.$state) + } + } +}) diff --git a/m78-all/m78-fe/src/stores/counter.ts b/m78-all/m78-fe/src/stores/counter.ts new file mode 100644 index 000000000..b6757ba57 --- /dev/null +++ b/m78-all/m78-fe/src/stores/counter.ts @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/m78-all/m78-fe/src/stores/data-source/helper.ts b/m78-all/m78-fe/src/stores/data-source/helper.ts new file mode 100644 index 000000000..ad4872ad6 --- /dev/null +++ b/m78-all/m78-fe/src/stores/data-source/helper.ts @@ -0,0 +1,20 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'DataSource' + +export interface DataSource { + meta: Record +} + +export function defaultState(): DataSource { + return { meta: {} } +} + +export function getLocalState(): DataSource { + const localSetting: DataSource | undefined = ss.get(LOCAL_NAME) + return { ...defaultState(), ...localSetting } +} + +export function setLocalState(state: DataSource): void { + ss.set(LOCAL_NAME, state) +} diff --git a/m78-all/m78-fe/src/stores/data-source/index.ts b/m78-all/m78-fe/src/stores/data-source/index.ts new file mode 100644 index 000000000..92ac7b3ee --- /dev/null +++ b/m78-all/m78-fe/src/stores/data-source/index.ts @@ -0,0 +1,26 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' +import type { DataSource } from '@/views/data-source/data-source' + +export const useDataSourceStore = defineStore('dataSource', () => { + const _activeDbId = ref('') + const activeDbId = computed(() => _activeDbId.value) + const _curDbInfo = ref(null) + const curDbInfo = computed(() => _curDbInfo.value) + const _activeTableName = ref('') + const activeTableName = computed(() => _activeTableName.value) + + const setActiveDbId = (id: string) => { + _activeDbId.value = id + } + + const setCurDbInfo = (dbInfo: DataSource.DB) => { + _curDbInfo.value = dbInfo + } + + const setActiveTableName = (tableName: string) => { + _activeTableName.value = tableName + } + + return { activeDbId, activeTableName, curDbInfo, setActiveDbId, setCurDbInfo, setActiveTableName } +}) diff --git a/m78-all/m78-fe/src/stores/doc/helper.ts b/m78-all/m78-fe/src/stores/doc/helper.ts new file mode 100644 index 000000000..d727367b0 --- /dev/null +++ b/m78-all/m78-fe/src/stores/doc/helper.ts @@ -0,0 +1 @@ +export interface DocStatus {} diff --git a/m78-all/m78-fe/src/stores/doc/index.ts b/m78-all/m78-fe/src/stores/doc/index.ts new file mode 100644 index 000000000..1b0f0b439 --- /dev/null +++ b/m78-all/m78-fe/src/stores/doc/index.ts @@ -0,0 +1,13 @@ +import type { DocStatus } from './helper' +import { defineStore } from 'pinia' +export const useExcleStore = defineStore('doc-store', { + state: (): DocStatus => { + return { + value: [ + { code: 3, text: 'excle.failed', tagType: 'danger', tagClass: 'tag-item-danger' }, + { code: 2, text: 'excle.parsing', tagType: '', tagClass: 'tag-item-primary' }, + { code: 1, text: 'excle.success', tagType: '', tagClass: 'normal' } + ] + } + } +}) diff --git a/m78-all/m78-fe/src/stores/index.ts b/m78-all/m78-fe/src/stores/index.ts new file mode 100644 index 000000000..7160d24f3 --- /dev/null +++ b/m78-all/m78-fe/src/stores/index.ts @@ -0,0 +1,17 @@ +import type { App } from 'vue' +import { createPinia } from 'pinia' + +export const store = createPinia() + +export function setupStore(app: App) { + app.use(store) +} + +export * from './app' +export * from './chat' +export * from './user' +export * from './prompt' +export * from './settings' +export * from './auth' +export * from './chatContext' +export * from './doc' diff --git a/m78-all/m78-fe/src/stores/probot/index.ts b/m78-all/m78-fe/src/stores/probot/index.ts new file mode 100644 index 000000000..ccce82ce2 --- /dev/null +++ b/m78-all/m78-fe/src/stores/probot/index.ts @@ -0,0 +1,92 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useProbotStore = defineStore('probot', () => { + const _bindKnowlege = ref< + { + id: string + name: string + desc: string + creator: string + }[] + >([]) + const bindKnowlege = computed(() => _bindKnowlege.value) + + const _createdRobtId = ref('') + const createdRobtId = computed(() => _createdRobtId.value) + const categoryTypeList = ref([]) + const categoryList = ref<{ + '': Array<{ + id: number + name: string + }> + '1': Array<{ + id: number + name: string + }> + '2': Array<{ + id: number + name: string + }> + }>({ + '': [], + '1': [], + '2': [] + }) + const statusList = [ + { + value: '', + label: '全部' + }, + { + value: '0', + label: '私有' + }, + { + value: '1', + label: '公开' + } + ] + const workspaceId = ref() + const workspaceList = ref([]) + + const setBindKnowlege = (bindKnowlege: any) => { + _bindKnowlege.value = bindKnowlege + } + + const setCreatedRobtId = (createdRobtId: string) => { + _createdRobtId.value = createdRobtId + } + const setCategoryTypeList = (data: any) => { + categoryTypeList.value = data + } + const setCategoryList = (data: any) => { + categoryList.value = { + ...categoryList.value, + ...data + } + } + + const setWorkspaceId = (data: any) => { + workspaceId.value = data + } + const setWorkspaceList = (data: any) => { + workspaceList.value = data + } + + return { + bindKnowlege, + createdRobtId, + setBindKnowlege, + setCreatedRobtId, + categoryTypeList, + setCategoryTypeList, + categoryList, + setCategoryList, + workspaceList, + setWorkspaceList, + workspaceId, + setWorkspaceId, + statusList + } +}) diff --git a/m78-all/m78-fe/src/stores/prompt/helper.ts b/m78-all/m78-fe/src/stores/prompt/helper.ts new file mode 100644 index 000000000..6b21c2b8c --- /dev/null +++ b/m78-all/m78-fe/src/stores/prompt/helper.ts @@ -0,0 +1,18 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'promptStore' + +export type PromptList = [] + +export interface PromptStore { + promptList: PromptList +} + +export function getLocalPromptList(): PromptStore { + const promptStore: PromptStore | undefined = ss.get(LOCAL_NAME) + return promptStore ?? { promptList: [] } +} + +export function setLocalPromptList(promptStore: PromptStore): void { + ss.set(LOCAL_NAME, promptStore) +} diff --git a/m78-all/m78-fe/src/stores/prompt/index.ts b/m78-all/m78-fe/src/stores/prompt/index.ts new file mode 100644 index 000000000..e19fe817a --- /dev/null +++ b/m78-all/m78-fe/src/stores/prompt/index.ts @@ -0,0 +1,17 @@ +import { defineStore } from 'pinia' +import type { PromptStore } from './helper' +import { getLocalPromptList, setLocalPromptList } from './helper' + +export const usePromptStore = defineStore('prompt-store', { + state: (): PromptStore => getLocalPromptList(), + + actions: { + updatePromptList(promptList: []) { + this.$patch({ promptList }) + setLocalPromptList({ promptList }) + }, + getPromptList() { + return this.$state + } + } +}) diff --git a/m78-all/m78-fe/src/stores/settings/helper.ts b/m78-all/m78-fe/src/stores/settings/helper.ts new file mode 100644 index 000000000..4e1c1b718 --- /dev/null +++ b/m78-all/m78-fe/src/stores/settings/helper.ts @@ -0,0 +1,36 @@ +import { ss } from '@/utils/storage' + +const LOCAL_NAME = 'settingsStorage' + +export interface SettingsState { + chatModel: string + translateModel: string + documentModel: string + codeModel: string + temperature: number + top_p: number +} + +export function defaultSetting(): SettingsState { + return { + chatModel: '', + translateModel: '', + documentModel: '', + codeModel: '', + temperature: 0.8, + top_p: 1 + } +} + +export function getLocalState(): SettingsState { + const localSetting: SettingsState | undefined = ss.get(LOCAL_NAME) + return { ...defaultSetting(), ...localSetting } +} + +export function setLocalState(setting: SettingsState): void { + ss.set(LOCAL_NAME, setting) +} + +export function removeLocalState() { + ss.remove(LOCAL_NAME) +} diff --git a/m78-all/m78-fe/src/stores/settings/index.ts b/m78-all/m78-fe/src/stores/settings/index.ts new file mode 100644 index 000000000..22787ded0 --- /dev/null +++ b/m78-all/m78-fe/src/stores/settings/index.ts @@ -0,0 +1,39 @@ +import { defineStore } from 'pinia' +import type { SettingsState } from './helper' +import { defaultSetting, getLocalState, removeLocalState, setLocalState } from './helper' +import { getUserConfig } from '@/api/index' + +export const useSettingStore = defineStore('setting-store', { + state: (): SettingsState => getLocalState(), + actions: { + async fetchModels() { + const { code, data } = await getUserConfig({}) + let models: Record = {} + if (code == 0 && data && data.modelConfig) { + const modelConfig = data.modelConfig + models = { ...modelConfig } + } + const settings = { + codeModel: models.codeModel || '', + documentModel: models.documentModel || '', + chatModel: models.chatModel || '', + translateModel: models.translateModel || '' + } + this.updateSetting(settings) + }, + + updateSetting(settings: Partial) { + this.$state = { ...this.$state, ...settings } + this.recordState() + }, + + resetSetting() { + this.$state = defaultSetting() + removeLocalState() + }, + + recordState() { + setLocalState(this.$state) + } + } +}) diff --git a/m78-all/m78-fe/src/stores/user/helper.ts b/m78-all/m78-fe/src/stores/user/helper.ts new file mode 100644 index 000000000..c5776d341 --- /dev/null +++ b/m78-all/m78-fe/src/stores/user/helper.ts @@ -0,0 +1,61 @@ +import { ss } from '@/utils/storage' +import { fetchUser } from '@/api' + +const LOCAL_NAME = 'userStorage' + +export interface UserInfo { + avatar: string + username: string + name: string + ztoken: string + loginUrl: string + logoutUrl: string + description: string +} + +export interface UserState { + userInfo: UserInfo +} + +export function defaultSetting(): UserState { + return { + userInfo: { + avatar: '', + name: '', + username: '', + ztoken: '', + loginUrl: '', + logoutUrl: '', + description: '欢迎您使用' + } + } +} + +export async function getUser(): Promise { + const user: UserState = { + ...defaultSetting() + } + try { + const { code, data } = await fetchUser() + if (code == 0) { + user.userInfo.avatar = data.avatar || user.userInfo.avatar + user.userInfo.name = data.name || user.userInfo.name + user.userInfo.username = data.username || user.userInfo.username + user.userInfo.ztoken = data.ztoken || user.userInfo.ztoken + user.userInfo.loginUrl = data.loginUrl || user.userInfo.loginUrl + user.userInfo.logoutUrl = data.logoutUrl || user.userInfo.logoutUrl + } + } catch (e) { + console.error(e) + } + return user.userInfo +} + +export function getLocalState(): UserState { + const localSetting: UserState | undefined = ss.get(LOCAL_NAME) + return { ...defaultSetting(), ...localSetting } +} + +export function setLocalState(setting: UserState): void { + ss.set(LOCAL_NAME, setting) +} diff --git a/m78-all/m78-fe/src/stores/user/index.ts b/m78-all/m78-fe/src/stores/user/index.ts new file mode 100644 index 000000000..57555e8f2 --- /dev/null +++ b/m78-all/m78-fe/src/stores/user/index.ts @@ -0,0 +1,31 @@ +import { defineStore } from 'pinia' +import type { UserState } from './helper' +import { getLocalState, getUser, setLocalState } from './helper' + +export const useUserStore = defineStore('user-store', { + state: (): UserState => getLocalState(), + actions: { + async initUserInfo() { + try { + const userInfo = await getUser() + this.$state.userInfo = { ...this.userInfo, ...userInfo } + this.recordState() + } catch (err) { + console.error(err) + } + }, + + async setZToken(token: string) { + try { + this.$state.userInfo.ztoken = token + this.recordState() + } catch (err) { + console.error(err) + } + }, + + recordState() { + setLocalState(this.$state) + } + } +}) diff --git a/m78-all/m78-fe/src/stores/workflow/index.ts b/m78-all/m78-fe/src/stores/workflow/index.ts new file mode 100644 index 000000000..36a48ffc3 --- /dev/null +++ b/m78-all/m78-fe/src/stores/workflow/index.ts @@ -0,0 +1,11 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('workflow', () => { + const _pluginList = ref([]) + const pluginList = computed(() => _pluginList.value) + + const setPluginList = () => {} + + return { pluginList, setPluginList } +}) diff --git a/m78-all/m78-fe/src/styles/chat/github-markdown.scss b/m78-all/m78-fe/src/styles/chat/github-markdown.scss new file mode 100644 index 000000000..c9285778a --- /dev/null +++ b/m78-all/m78-fe/src/styles/chat/github-markdown.scss @@ -0,0 +1,1102 @@ +html.dark { + .markdown-body { + color-scheme: dark; + --color-prettylights-syntax-comment: #8b949e; + --color-prettylights-syntax-constant: #79c0ff; + --color-prettylights-syntax-entity: #d2a8ff; + --color-prettylights-syntax-storage-modifier-import: #c9d1d9; + --color-prettylights-syntax-entity-tag: #7ee787; + --color-prettylights-syntax-keyword: #ff7b72; + --color-prettylights-syntax-string: #a5d6ff; + --color-prettylights-syntax-variable: #ffa657; + --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; + --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; + --color-prettylights-syntax-invalid-illegal-bg: #8e1519; + --color-prettylights-syntax-carriage-return-text: #f0f6fc; + --color-prettylights-syntax-carriage-return-bg: #b62324; + --color-prettylights-syntax-string-regexp: #7ee787; + --color-prettylights-syntax-markup-list: #f2cc60; + --color-prettylights-syntax-markup-heading: #1f6feb; + --color-prettylights-syntax-markup-italic: #c9d1d9; + --color-prettylights-syntax-markup-bold: #c9d1d9; + --color-prettylights-syntax-markup-deleted-text: #ffdcd7; + --color-prettylights-syntax-markup-deleted-bg: #67060c; + --color-prettylights-syntax-markup-inserted-text: #aff5b4; + --color-prettylights-syntax-markup-inserted-bg: #033a16; + --color-prettylights-syntax-markup-changed-text: #ffdfb6; + --color-prettylights-syntax-markup-changed-bg: #5a1e02; + --color-prettylights-syntax-markup-ignored-text: #c9d1d9; + --color-prettylights-syntax-markup-ignored-bg: #1158c7; + --color-prettylights-syntax-meta-diff-range: #d2a8ff; + --color-prettylights-syntax-brackethighlighter-angle: #8b949e; + --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; + --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; + --color-fg-default: #c9d1d9; + --color-fg-muted: #8b949e; + --color-fg-subtle: #6e7681; + --color-canvas-default: #0d1117; + --color-canvas-subtle: #161b22; + --color-border-default: #30363d; + --color-border-muted: #21262d; + --color-neutral-muted: rgba(110,118,129,0.4); + --color-accent-fg: #58a6ff; + --color-accent-emphasis: #1f6feb; + --color-attention-subtle: rgba(187,128,9,0.15); + --color-danger-fg: #f85149; + } +} + +html { + .markdown-body { + color-scheme: light; + --color-prettylights-syntax-comment: #6e7781; + --color-prettylights-syntax-constant: #0550ae; + --color-prettylights-syntax-entity: #8250df; + --color-prettylights-syntax-storage-modifier-import: #24292f; + --color-prettylights-syntax-entity-tag: #116329; + --color-prettylights-syntax-keyword: #cf222e; + --color-prettylights-syntax-string: #0a3069; + --color-prettylights-syntax-variable: #953800; + --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; + --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; + --color-prettylights-syntax-invalid-illegal-bg: #82071e; + --color-prettylights-syntax-carriage-return-text: #f6f8fa; + --color-prettylights-syntax-carriage-return-bg: #cf222e; + --color-prettylights-syntax-string-regexp: #116329; + --color-prettylights-syntax-markup-list: #3b2300; + --color-prettylights-syntax-markup-heading: #0550ae; + --color-prettylights-syntax-markup-italic: #24292f; + --color-prettylights-syntax-markup-bold: #24292f; + --color-prettylights-syntax-markup-deleted-text: #82071e; + --color-prettylights-syntax-markup-deleted-bg: #ffebe9; + --color-prettylights-syntax-markup-inserted-text: #116329; + --color-prettylights-syntax-markup-inserted-bg: #dafbe1; + --color-prettylights-syntax-markup-changed-text: #953800; + --color-prettylights-syntax-markup-changed-bg: #ffd8b5; + --color-prettylights-syntax-markup-ignored-text: #eaeef2; + --color-prettylights-syntax-markup-ignored-bg: #0550ae; + --color-prettylights-syntax-meta-diff-range: #8250df; + --color-prettylights-syntax-brackethighlighter-angle: #57606a; + --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; + --color-prettylights-syntax-constant-other-reference-link: #0a3069; + --color-fg-default: #24292f; + --color-fg-muted: #57606a; + --color-fg-subtle: #6e7781; + --color-canvas-default: #ffffff; + --color-canvas-subtle: #f6f8fa; + --color-border-default: #d0d7de; + --color-border-muted: hsla(210,18%,87%,1); + --color-neutral-muted: rgba(175,184,193,0.2); + --color-accent-fg: #0969da; + --color-accent-emphasis: #0969da; + --color-attention-subtle: #fff8c5; + --color-danger-fg: #cf222e; + } +} + +.markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + color: var(--color-fg-default); + background-color: var(--color-canvas-default); + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: transparent; + color: var(--color-accent-fg); + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid var(--color-border-muted); +} + +.markdown-body mark { + background-color: var(--color-attention-subtle); + color: var(--color-fg-default); +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; + background-color: var(--color-canvas-default); +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 40px; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: transparent; + border-bottom: 1px solid var(--color-border-muted); + height: .25em; + padding: 0; + margin: 24px 0; + background-color: var(--color-border-default); + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: var(--color-fg-subtle); + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body details:not([open])>*:not(summary) { + display: none !important; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--color-accent-fg); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px transparent; +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--color-accent-fg); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + line-height: 10px; + color: var(--color-fg-default); + vertical-align: middle; + background-color: var(--color-canvas-subtle); + border: solid 1px var(--color-neutral-muted); + border-bottom-color: var(--color-neutral-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--color-neutral-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: var(--base-text-weight-semibold, 600); + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid var(--color-border-muted); +} + +.markdown-body h3 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1em; +} + +.markdown-body h5 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: .875em; +} + +.markdown-body h6 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: .85em; + color: var(--color-fg-muted); +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: var(--color-fg-muted); + border-left: .25em solid var(--color-border-default); +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; + appearance: none; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: var(--color-danger-fg); +} + +.markdown-body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 16px; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: var(--color-fg-default); + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type=a] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type=A] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type=i] { + list-style-type: lower-roman; +} + +.markdown-body ol[type=I] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 16px; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +.markdown-body table th { + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid var(--color-border-default); +} + +.markdown-body table tr { + background-color: var(--color-canvas-default); + border-top: 1px solid var(--color-border-muted); +} + +.markdown-body table tr:nth-child(2n) { + background-color: var(--color-canvas-subtle); +} + +.markdown-body table img { + background-color: transparent; +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: transparent; +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid var(--color-border-default); +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: var(--color-fg-default); +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: var(--color-neutral-muted); + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 16px; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: var(--color-canvas-subtle); + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 8px 9px; + text-align: right; + background: var(--color-canvas-default); + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: var(--base-text-weight-semibold, 600); + background: var(--color-canvas-subtle); + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: var(--color-fg-muted); + border-top: 1px solid var(--color-border-default); +} + +.markdown-body .footnotes ol { + padding-left: 16px; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 16px; + margin-top: 16px; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: -8px; + right: -8px; + bottom: -8px; + left: -24px; + pointer-events: none; + content: ""; + border: 2px solid var(--color-accent-emphasis); + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: var(--color-fg-default); +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: var(--color-prettylights-syntax-comment); +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: var(--color-prettylights-syntax-constant); +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: var(--color-prettylights-syntax-entity); +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: var(--color-prettylights-syntax-storage-modifier-import); +} + +.markdown-body .pl-ent { + color: var(--color-prettylights-syntax-entity-tag); +} + +.markdown-body .pl-k { + color: var(--color-prettylights-syntax-keyword); +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: var(--color-prettylights-syntax-string); +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: var(--color-prettylights-syntax-variable); +} + +.markdown-body .pl-bu { + color: var(--color-prettylights-syntax-brackethighlighter-unmatched); +} + +.markdown-body .pl-ii { + color: var(--color-prettylights-syntax-invalid-illegal-text); + background-color: var(--color-prettylights-syntax-invalid-illegal-bg); +} + +.markdown-body .pl-c2 { + color: var(--color-prettylights-syntax-carriage-return-text); + background-color: var(--color-prettylights-syntax-carriage-return-bg); +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: var(--color-prettylights-syntax-string-regexp); +} + +.markdown-body .pl-ml { + color: var(--color-prettylights-syntax-markup-list); +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-heading); +} + +.markdown-body .pl-mi { + font-style: italic; + color: var(--color-prettylights-syntax-markup-italic); +} + +.markdown-body .pl-mb { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-bold); +} + +.markdown-body .pl-md { + color: var(--color-prettylights-syntax-markup-deleted-text); + background-color: var(--color-prettylights-syntax-markup-deleted-bg); +} + +.markdown-body .pl-mi1 { + color: var(--color-prettylights-syntax-markup-inserted-text); + background-color: var(--color-prettylights-syntax-markup-inserted-bg); +} + +.markdown-body .pl-mc { + color: var(--color-prettylights-syntax-markup-changed-text); + background-color: var(--color-prettylights-syntax-markup-changed-bg); +} + +.markdown-body .pl-mi2 { + color: var(--color-prettylights-syntax-markup-ignored-text); + background-color: var(--color-prettylights-syntax-markup-ignored-bg); +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: var(--color-prettylights-syntax-meta-diff-range); +} + +.markdown-body .pl-ba { + color: var(--color-prettylights-syntax-brackethighlighter-angle); +} + +.markdown-body .pl-sg { + color: var(--color-prettylights-syntax-sublimelinter-gutter-mark); +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: var(--color-prettylights-syntax-constant-other-reference-link); +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: var(--base-text-weight-normal, 400); + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: var(--base-text-weight-normal, 400); +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 4px; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list { + position: relative; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip: auto; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} diff --git a/m78-all/m78-fe/src/styles/chat/highlight.scss b/m78-all/m78-fe/src/styles/chat/highlight.scss new file mode 100644 index 000000000..446a1e2e0 --- /dev/null +++ b/m78-all/m78-fe/src/styles/chat/highlight.scss @@ -0,0 +1,206 @@ +html.dark { + pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em + } + + code.hljs { + padding: 3px 5px + } + + .hljs { + color: #abb2bf; + background: #282c34 + } + + .hljs-keyword, + .hljs-operator, + .hljs-pattern-match { + color: #f92672 + } + + .hljs-function, + .hljs-pattern-match .hljs-constructor { + color: #61aeee + } + + .hljs-function .hljs-params { + color: #a6e22e + } + + .hljs-function .hljs-params .hljs-typing { + color: #fd971f + } + + .hljs-module-access .hljs-module { + color: #7e57c2 + } + + .hljs-constructor { + color: #e2b93d + } + + .hljs-constructor .hljs-string { + color: #9ccc65 + } + + .hljs-comment, + .hljs-quote { + color: #b18eb1; + font-style: italic + } + + .hljs-doctag, + .hljs-formula { + color: #c678dd + } + + .hljs-deletion, + .hljs-name, + .hljs-section, + .hljs-selector-tag, + .hljs-subst { + color: #e06c75 + } + + .hljs-literal { + color: #56b6c2 + } + + .hljs-addition, + .hljs-attribute, + .hljs-meta .hljs-string, + .hljs-regexp, + .hljs-string { + color: #98c379 + } + + .hljs-built_in, + .hljs-class .hljs-title, + .hljs-title.class_ { + color: #e6c07b + } + + .hljs-attr, + .hljs-number, + .hljs-selector-attr, + .hljs-selector-class, + .hljs-selector-pseudo, + .hljs-template-variable, + .hljs-type, + .hljs-variable { + color: #d19a66 + } + + .hljs-bullet, + .hljs-link, + .hljs-meta, + .hljs-selector-id, + .hljs-symbol, + .hljs-title { + color: #61aeee + } + + .hljs-emphasis { + font-style: italic + } + + .hljs-strong { + font-weight: 700 + } + + .hljs-link { + text-decoration: underline + } +} + +html { + pre code.hljs { + display: block; + overflow-x: auto; + padding: 1em + } + + code.hljs { + padding: 3px 5px; + &::-webkit-scrollbar { + height: 4px; + } + } + + .hljs { + color: #383a42; + background: #fafafa + } + + .hljs-comment, + .hljs-quote { + color: #a0a1a7; + font-style: italic + } + + .hljs-doctag, + .hljs-formula, + .hljs-keyword { + color: #a626a4 + } + + .hljs-deletion, + .hljs-name, + .hljs-section, + .hljs-selector-tag, + .hljs-subst { + color: #e45649 + } + + .hljs-literal { + color: #0184bb + } + + .hljs-addition, + .hljs-attribute, + .hljs-meta .hljs-string, + .hljs-regexp, + .hljs-string { + color: #50a14f + } + + .hljs-attr, + .hljs-number, + .hljs-selector-attr, + .hljs-selector-class, + .hljs-selector-pseudo, + .hljs-template-variable, + .hljs-type, + .hljs-variable { + color: #986801 + } + + .hljs-bullet, + .hljs-link, + .hljs-meta, + .hljs-selector-id, + .hljs-symbol, + .hljs-title { + color: #4078f2 + } + + .hljs-built_in, + .hljs-class .hljs-title, + .hljs-title.class_ { + color: #c18401 + } + + .hljs-emphasis { + font-style: italic + } + + .hljs-strong { + font-weight: 700 + } + + .hljs-link { + text-decoration: underline + } +} diff --git a/m78-all/m78-fe/src/styles/element/dark.scss b/m78-all/m78-fe/src/styles/element/dark.scss new file mode 100644 index 000000000..0453e73d7 --- /dev/null +++ b/m78-all/m78-fe/src/styles/element/dark.scss @@ -0,0 +1,18 @@ +// only scss variables +$--colors: ( + 'primary': ( + 'base': #00a9ff + ) +); + +$--bg-color: ( + 'page': #0a0a0a, + '': #222831, + 'overlay': #1d1e1f, + 'input': 'none' +); + +@forward 'element-plus/theme-chalk/src/dark/var.scss' with ( + $colors: $--colors, + $bg-color: $--bg-color +); diff --git a/m78-all/m78-fe/src/styles/element/index.scss b/m78-all/m78-fe/src/styles/element/index.scss new file mode 100644 index 000000000..f9eeeee84 --- /dev/null +++ b/m78-all/m78-fe/src/styles/element/index.scss @@ -0,0 +1,63 @@ +$--colors: ( + 'white': #ffffff, + 'black': #000000, + 'primary': ( + 'base': #00a9ff + ), + 'success': ( + 'base': #1ad000 + ), + 'warning': ( + 'base': #e19800 + ), + 'danger': ( + 'base': #d50031 + ), + 'error': ( + 'base': #d50031 + ), + 'info': ( + 'base': #a0e9ff + ) +); + +$--bg-color: ( + '': '#E6FFFD', + 'input': #fff +); + +$text-color: ( + 'primary': #303133, + 'regular': #606266, + 'secondary': #909399, + 'placeholder': #a8abb2, + 'disabled': #c0c4cc +); + +$--fill-color: ( + '': #f0f2f5, + 'light': #f5f7fa, + 'lighter': #fafafa, + 'extra-light': #fafcff, + 'dark': #ebedf0, + 'darker': #e6e8eb, + 'blank': #ffffff +); + +// we can add this to custom namespace, default is 'el' +@forward 'element-plus/theme-chalk/src/mixins/config.scss' with ( + $namespace: 'oz' +); + +// You should use them in scss, because we calculate it by sass. +// comment next lines to use default color +@forward 'element-plus/theme-chalk/src/common/var.scss' with ( + // do not use same name, it will override. + $colors: $--colors, + $button-padding-horizontal: ('default': 10px), + $bg-color: $--bg-color, + // $fill-color: $--fill-color, + ); + +// custom dark variables +@use './dark.scss'; diff --git a/m78-all/m78-fe/src/styles/index.scss b/m78-all/m78-fe/src/styles/index.scss new file mode 100644 index 000000000..a4f1d5814 --- /dev/null +++ b/m78-all/m78-fe/src/styles/index.scss @@ -0,0 +1,96 @@ +@use './reset.scss'; +@use './chat/highlight.scss'; +@use './chat/github-markdown.scss'; +@use 'element-plus/theme-chalk/src/dark/css-vars.scss' as *; + +html, +body { + height: 100%; +} + +#app { + display: flex; + flex-direction: column; + height: 100%; +} + +body { + font-family: Inter, system-ui, Avenir, 'Helvetica Neue', Helvetica, 'PingFang SC', + 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + margin: 0; + background: linear-gradient(to bottom, #f8f9fa 0%, #e9ecef 50%, #dee2e6 100%); + background-blend-mode: normal, color-burn; +} + +.dark { + body { + background: linear-gradient(to bottom, #323232 0%, #3f3f3f 40%, #1c1c1c 150%), + linear-gradient(to top, rgba(255, 255, 255, 0.4) 0%, rgba(0, 0, 0, 0.25) 200%); + background-blend-mode: multiply; + } +} +.oz-table tr.oz-table__row, +.oz-table tr th.oz-table__cell, +.oz-dialog { + background-color: #fff; +} + +a, +.oz-dialog__headerbtn .oz-dialog__close { + color: var(--oz-color-primary); +} + +.oz-popper.is-dark { + color: #fff; +} + +// 超过一行,省略号展示,父级要加overflow:hidden +@mixin text-ellipsis { + width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +// 超过两行省略 +@mixin two-line-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; // 控制多行的行数 + -webkit-box-orient: vertical; +} +.oz-dropdown > .oz-tooltip__trigger { + outline: none; +} +:root { + --oz-color-danger: #f56c6c; + --oz-drawer-bg-color: #fff; + --oz-bg-color: #fff; +} +.oz-overlay { + .oz-drawer__header { + border-bottom: solid 1px #b9babb; + padding-bottom: 20px; + margin-bottom: 0; + } +} + +.common-dialog { + .oz-dialog__body { + padding-top: 10px; + padding-bottom: 10px; + } +} +.user-select-multiple { + .oz-tag.oz-tag--info { + color: initial; + } +} + +.oz-input .oz-input__count, +.oz-textarea .oz-input__count { + color: rgba(0, 0, 0, 0.3); +} diff --git a/m78-all/m78-fe/src/styles/reset.scss b/m78-all/m78-fe/src/styles/reset.scss new file mode 100644 index 000000000..e240e469b --- /dev/null +++ b/m78-all/m78-fe/src/styles/reset.scss @@ -0,0 +1,232 @@ +/* +KISSY CSS Reset +理念:清除和重置是紧密不可分的 +特色:1.适应中文 2.基于最新主流浏览器 +*/ + +body { + *, + *::after, + *::before { + box-sizing: border-box; + } +} + +/* 清除内外边距 */ + +body, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +p, +blockquote, + +/* structural elements 结构元素 */ + +dl, +dt, +dd, +ul, +ol, +li, + +/* list elements 列表元素 */ + +pre, + +/* text formatting elements 文本格式元素 */ + +fieldset, +lengend, +button, +input, +textarea, + +/* form elements 表单元素 */ + +th, +td { + /* table elements 表格元素 */ + margin: 0; + padding: 0; +} + +/* 设置默认字体 */ + +body, +button, +input, +select, +textarea { + /* for ie */ + font-size: 12px; + border: none; + outline: none; + font-family: Arial, Helvetica, sans-serif, "Microsoft YaHei"; +} + +input, +select, +textarea { + outline: none; + resize: none; +} + +i { + font-style: normal; +} + +button { + cursor: pointer; +} + +input::-ms-clear { + display: none; +} + +h1 { + font-size: 18px; + /* 18px / 12px = 1.5 */ +} + +h2 { + font-size: 16px; +} + +h3 { + font-size: 14px; +} + +h4, +h5, +h6 { + font-size: 100%; +} + +address, +cite, +dfn, +em, +var { + font-style: normal; +} + +/* 将斜体扶正 */ + +small { + font-size: 12px; +} + +/* 小于 12px 的中文很难阅读,让 small 正常化 */ + +/* 重置列表元素 */ + +ul, +ol { + list-style: none; +} + +/* 重置文本格式元素 */ + +a { + text-decoration: none; +} + +abbr[title], +acronym[title] { + /* 注:1.ie6 不支持 abbr; 2.这里用了属性选择符,ie6 下无效果 */ + border-bottom: 1px dotted; + cursor: help; +} + +q:before, +q:after { + content: ""; +} + +/* 重置表单元素 */ + +legend { + color: #000; +} + +/* for ie6 */ + +fieldset, +img { + border: none; +} + +/* img 搭车:让链接里的 img 无边框 */ + +/* 注:optgroup 无法扶正 */ + +button, +input, +select, +textarea { + font-size: 100%; + /* 使得表单元素在 ie 下能继承字体大小 */ +} + +/* 重置表格元素 */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/* 重置 hr */ + +hr { + border: none; + height: 1px; +} + +/* 让非ie浏览器默认也显示垂直滚动条,防止因滚动条引起的闪烁 */ + +html { + //overflow-y: scroll; +} + +/* 解决safari中input现实小人的问题 */ + +input::-webkit-contacts-auto-fill-button { + visibility: hidden; + display: none !important; + pointer-events: none; + position: absolute; + right: 0; +} + +/* 解决ie10以上版本下默认关闭和眼睛图标 */ + +::-ms-clear, +::-ms-reveal { + display: none; +} + +//去chrome input框黄色背景 +input:-webkit-autofill, +textarea:-webkit-autofill, +select:-webkit-autofill { + -webkit-box-shadow: 0 0 0 1000px white inset; +} + +input[type="text"]:focus, +input[type="password"]:focus, +textarea:focus { + -webkit-box-shadow: 0 0 0 1000px white inset; +} + +.switch-container.flow-switch-container .el-switch__core:before { + content: "否"; +} +.switch-container.flow-switch-container.el-switch.is-checked + .el-switch__core:before { + content: "是"; +} diff --git a/m78-all/m78-fe/src/svgs/m78.svg b/m78-all/m78-fe/src/svgs/m78.svg new file mode 100644 index 000000000..7dcb1367b --- /dev/null +++ b/m78-all/m78-fe/src/svgs/m78.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/m78-all/m78-fe/src/typings/chat.d.ts b/m78-all/m78-fe/src/typings/chat.d.ts new file mode 100644 index 000000000..6fd4255fd --- /dev/null +++ b/m78-all/m78-fe/src/typings/chat.d.ts @@ -0,0 +1,68 @@ +declare namespace Chat { + type Role = 'USER' | 'SYSTEM' | 'ASSISTANT' + + interface ChatContext { + content: string + role: Role + } + + interface Chat { + id: string | number + dateTime: string + text: string + inversion?: boolean + error?: boolean + showCursor?: boolean + loading?: boolean + conversationOptions?: ConversationRequest | null + requestOptions: { + prompt: string + chatContext: ChatContext[] | null + options?: ConversationRequest | null + } + } + + interface KnowledgeConfig { + knowledgeBaseId: string + fileIdList: string[] + } + + interface History { + uuid: number + title: string + isEdit: boolean + knowledgeConfig?: KnowledgeConfig + } + + interface ChatState { + active: number | null + homeInput: string + usingContext: boolean + history: History[] + chat: { + uuid: number + data: Chat[] + }[] + } + + interface ConversationRequest { + conversationId?: string + parentMessageId?: string + } + + interface ConversationResponse { + conversationId: string + detail: { + choices: { finish_reason: string; index: number; logprobs: any; text: string }[] + created: number + id: string + model: string + object: string + usage: { completion_tokens: number; prompt_tokens: number; total_tokens: number } + } + id: string + parentMessageId: string + role: string + text: string + } +} diff --git a/m78-all/m78-fe/src/typings/dataSource.d.ts b/m78-all/m78-fe/src/typings/dataSource.d.ts new file mode 100644 index 000000000..eebe9ee34 --- /dev/null +++ b/m78-all/m78-fe/src/typings/dataSource.d.ts @@ -0,0 +1,48 @@ +declare namespace DataSource { + interface DB { + id: string + host: string + port: string + database: string + user: string + pwd: string + jdbcUrl: string + cluster: string | null + kerberos: string | null + queue: string | null + userName: string + type: string + customKnowledge: string + createTime: string + updateTime: string + } + + interface Table { + tableName: string + columnInfoList: string | null + type: string | null + source: string | null + pkName: string + } + + interface Tree extends DB { + id: string + name: string + } + + interface HistoryChat { + id: string + content: string + mappingContent: string + } + + interface ChatItem { + hideMore: boolean + error: boolean + dateTime: string + indexKey: string + text: string + loading: boolean + inversion: boolean + } +} diff --git a/m78-all/m78-fe/src/typings/env.d.ts b/m78-all/m78-fe/src/typings/env.d.ts new file mode 100644 index 000000000..9eb5a159a --- /dev/null +++ b/m78-all/m78-fe/src/typings/env.d.ts @@ -0,0 +1,8 @@ +/// + +interface ImportMetaEnv { + readonly VITE_GLOB_API_URL: string + readonly VITE_APP_API_BASE_URL: string + readonly VITE_GLOB_OPEN_LONG_REPLY: string + readonly VITE_GLOB_APP_PWA: string +} diff --git a/m78-all/m78-fe/src/typings/global.d.ts b/m78-all/m78-fe/src/typings/global.d.ts new file mode 100644 index 000000000..d3deb2cfa --- /dev/null +++ b/m78-all/m78-fe/src/typings/global.d.ts @@ -0,0 +1 @@ +interface Window {} diff --git a/m78-all/m78-fe/src/utils/bus.ts b/m78-all/m78-fe/src/utils/bus.ts new file mode 100644 index 000000000..661763fd9 --- /dev/null +++ b/m78-all/m78-fe/src/utils/bus.ts @@ -0,0 +1,9 @@ +import mitt, { type Emitter } from 'mitt' + +// 定义类型别名,因全局使用并且需要自定义事件名称,所以使用索引签名定义内容 +type Events = { + [propName: string]: any +} +// 提供泛型参数让 emitter 能自动推断参数类型 +const mittBus: Emitter = mitt() +export default mittBus diff --git a/m78-all/m78-fe/src/utils/copy.ts b/m78-all/m78-fe/src/utils/copy.ts new file mode 100644 index 000000000..aff32d8e7 --- /dev/null +++ b/m78-all/m78-fe/src/utils/copy.ts @@ -0,0 +1,16 @@ +export function copyToClip(text: string) { + return new Promise((resolve, reject) => { + try { + const input: HTMLTextAreaElement = document.createElement('textarea') + input.setAttribute('readonly', 'readonly') + input.value = text + document.body.appendChild(input) + input.select() + if (document.execCommand('copy')) document.execCommand('copy') + document.body.removeChild(input) + resolve(text) + } catch (error) { + reject(error) + } + }) +} diff --git a/m78-all/m78-fe/src/utils/functions/debounce.ts b/m78-all/m78-fe/src/utils/functions/debounce.ts new file mode 100644 index 000000000..5fc5f9a9c --- /dev/null +++ b/m78-all/m78-fe/src/utils/functions/debounce.ts @@ -0,0 +1,18 @@ +type CallbackFunc = (...args: T) => void + +export function debounce( + func: CallbackFunc, + wait: number +): (...args: T) => void { + let timeoutId: ReturnType | undefined + + return (...args: T) => { + const later = () => { + clearTimeout(timeoutId) + func(...args) + } + + clearTimeout(timeoutId) + timeoutId = setTimeout(later, wait) + } +} diff --git a/m78-all/m78-fe/src/utils/functions/index.ts b/m78-all/m78-fe/src/utils/functions/index.ts new file mode 100644 index 000000000..debb005cb --- /dev/null +++ b/m78-all/m78-fe/src/utils/functions/index.ts @@ -0,0 +1,7 @@ +export function getCurrentDate() { + const date = new Date() + const day = date.getDate() + const month = date.getMonth() + 1 + const year = date.getFullYear() + return `${year}-${month}-${day}` +} diff --git a/m78-all/m78-fe/src/utils/graph.ts b/m78-all/m78-fe/src/utils/graph.ts new file mode 100644 index 000000000..3fca12d5a --- /dev/null +++ b/m78-all/m78-fe/src/utils/graph.ts @@ -0,0 +1,50 @@ +export class Graph { + nodes: { id: string }[] + adj: Record + + constructor(lines: { sourceNodeId: string; targetNodeId: string }[], nodes: { id: string }[]) { + this.nodes = nodes || [] + + const adj: Record = {} + lines.forEach((it) => { + if (adj[it.sourceNodeId]) { + adj[it.sourceNodeId].push(it.targetNodeId) + } else { + adj[it.sourceNodeId] = [it.targetNodeId] + } + }) + this.adj = adj + } + + BFS(sortNodes: { id: string }[]) { + const visited: Record = {} + const nodes = this.nodes + for (const node of nodes) { + const queue: string[] = [node.id] + BFSUtil(sortNodes, nodes, this.adj, visited, queue) + } + } +} + +const BFSUtil = ( + sortNodes: { id: string }[], + nodes: { id: string }[], + adj: Record, + visited: Record, + queue: string[] +) => { + while (queue.length > 0) { + const q = queue.shift() + if (q != null && !visited[q]) { + visited[q] = true + const ids = adj[q] + if (ids) { + ids.forEach((it) => { + queue.push(it) + }) + } + const item = nodes.find((it) => it.id === q) + if (item) sortNodes.push(item) + } + } +} diff --git a/m78-all/m78-fe/src/utils/is/index.ts b/m78-all/m78-fe/src/utils/is/index.ts new file mode 100644 index 000000000..20f9b0307 --- /dev/null +++ b/m78-all/m78-fe/src/utils/is/index.ts @@ -0,0 +1,57 @@ +export function isNumber(value: T | unknown): value is number { + return Object.prototype.toString.call(value) === '[object Number]' +} + +export function isString(value: T | unknown): value is string { + return Object.prototype.toString.call(value) === '[object String]' +} + +export function isBoolean(value: T | unknown): value is boolean { + return Object.prototype.toString.call(value) === '[object Boolean]' +} + +export function isNull(value: T | unknown): value is null { + return Object.prototype.toString.call(value) === '[object Null]' +} + +export function isUndefined(value: T | unknown): value is undefined { + return Object.prototype.toString.call(value) === '[object Undefined]' +} + +export function isObject(value: T | unknown): value is object { + return Object.prototype.toString.call(value) === '[object Object]' +} + +export function isArray(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object Array]' +} + +export function isFunction any | void | never>( + value: T | unknown +): value is T { + return Object.prototype.toString.call(value) === '[object Function]' +} + +export function isDate(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object Date]' +} + +export function isRegExp(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object RegExp]' +} + +export function isPromise>(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object Promise]' +} + +export function isSet>(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object Set]' +} + +export function isMap>(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object Map]' +} + +export function isFile(value: T | unknown): value is T { + return Object.prototype.toString.call(value) === '[object File]' +} diff --git a/m78-all/m78-fe/src/utils/polyfill.ts b/m78-all/m78-fe/src/utils/polyfill.ts new file mode 100644 index 000000000..48d81e8c2 --- /dev/null +++ b/m78-all/m78-fe/src/utils/polyfill.ts @@ -0,0 +1,3 @@ +if (typeof (window as any).global === 'undefined') { + ;(window as any).global = window +} diff --git a/m78-all/m78-fe/src/utils/request/axios.ts b/m78-all/m78-fe/src/utils/request/axios.ts new file mode 100644 index 000000000..8300a3b96 --- /dev/null +++ b/m78-all/m78-fe/src/utils/request/axios.ts @@ -0,0 +1,29 @@ +import axios, { type AxiosResponse } from 'axios' +import { useAuthStore } from '@/stores/auth' + +const service = axios.create({}) + +service.interceptors.request.use( + (config) => { + config.baseURL = config.baseURL || import.meta.env.VITE_GLOB_API_URL + const token = useAuthStore().token + if (token) config.headers.Authorization = `Bearer ${token}` + return config + }, + (error) => { + return Promise.reject(error.response) + } +) + +service.interceptors.response.use( + (response: AxiosResponse): AxiosResponse => { + if (response.status === 200) return response + + throw new Error(response.status.toString()) + }, + (error) => { + return Promise.reject(error) + } +) + +export default service diff --git a/m78-all/m78-fe/src/utils/request/index.ts b/m78-all/m78-fe/src/utils/request/index.ts new file mode 100644 index 000000000..f989f57b1 --- /dev/null +++ b/m78-all/m78-fe/src/utils/request/index.ts @@ -0,0 +1,132 @@ +import type { AxiosProgressEvent, AxiosResponse, GenericAbortSignal } from 'axios' +import request from './axios' + +export interface HttpOption { + url: string + data?: any + method?: string + headers?: any + baseURL?: string + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void + signal?: GenericAbortSignal + beforeRequest?: () => void + afterRequest?: () => void +} + +export interface Response { + data: T + message: string | null + status: string | number + code: string | number +} + +function http({ + url, + data, + method, + headers, + baseURL, + onDownloadProgress, + signal, + beforeRequest, + afterRequest +}: HttpOption) { + const successHandler = (res: AxiosResponse>) => { + if (res.data) return res.data + + return Promise.reject(res.data) + } + + const failHandler = (error: Response) => { + afterRequest?.() + throw new Error(error?.message || 'Error') + } + + beforeRequest?.() + + method = method || 'GET' + + const params = Object.assign(typeof data === 'function' ? data() : data ?? {}, {}) + if (method === 'GET') { + return request + .get(url, { params, headers, signal, onDownloadProgress, baseURL }) + .then(successHandler, failHandler) + } else if (method === 'POST') { + return request + .post(url, params, { headers, signal, onDownloadProgress, baseURL }) + .then(successHandler, failHandler) + } else if (method === 'DELETE') { + return request + .delete(url, { headers, signal, onDownloadProgress, baseURL }) + .then(successHandler, failHandler) + } +} + +export function get({ + url, + data, + method = 'GET', + baseURL, + headers, + onDownloadProgress, + signal, + beforeRequest, + afterRequest +}: HttpOption): Promise> { + return http({ + url, + method, + data, + baseURL, + headers, + onDownloadProgress, + signal, + beforeRequest, + afterRequest + }) +} +export function deleteApi({ + url, + data, + method = 'DELETE', + baseURL, + signal, + beforeRequest, + afterRequest +}: HttpOption): Promise> { + return http({ + url, + method, + data, + baseURL, + signal, + beforeRequest, + afterRequest + }) +} + +export function post({ + url, + data, + method = 'POST', + headers, + baseURL, + onDownloadProgress, + signal, + beforeRequest, + afterRequest +}: HttpOption): Promise> { + return http({ + url, + method, + data, + headers, + baseURL, + onDownloadProgress, + signal, + beforeRequest, + afterRequest + }) +} + +export default post diff --git a/m78-all/m78-fe/src/utils/storage/index.ts b/m78-all/m78-fe/src/utils/storage/index.ts new file mode 100644 index 000000000..ac13a60b1 --- /dev/null +++ b/m78-all/m78-fe/src/utils/storage/index.ts @@ -0,0 +1,55 @@ +interface StorageData { + data: T + expire: number | null +} + +export function createLocalStorage(options?: { expire?: number | null }) { + const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7 + + const { expire } = Object.assign({ expire: DEFAULT_CACHE_TIME }, options) + + function set(key: string, data: T) { + const storageData: StorageData = { + data, + expire: expire !== null ? new Date().getTime() + expire * 1000 : null + } + + const json = JSON.stringify(storageData) + window.localStorage.setItem(key, json) + } + + function get(key: string) { + const json = window.localStorage.getItem(key) + if (json) { + let storageData: StorageData | null = null + + try { + storageData = JSON.parse(json) + } catch { + // Prevent failure + } + + if (storageData) { + const { data, expire } = storageData + if (expire === null || expire >= Date.now()) return data + } + + remove(key) + return null + } + } + + function remove(key: string) { + window.localStorage.removeItem(key) + } + + function clear() { + window.localStorage.clear() + } + + return { set, get, remove, clear } +} + +export const ls = createLocalStorage() + +export const ss = createLocalStorage({ expire: null }) diff --git a/m78-all/m78-fe/src/views/about/assets/email.png b/m78-all/m78-fe/src/views/about/assets/email.png new file mode 100644 index 000000000..7b7380fc3 Binary files /dev/null and b/m78-all/m78-fe/src/views/about/assets/email.png differ diff --git a/m78-all/m78-fe/src/views/about/assets/github.png b/m78-all/m78-fe/src/views/about/assets/github.png new file mode 100644 index 000000000..915a75ae4 Binary files /dev/null and b/m78-all/m78-fe/src/views/about/assets/github.png differ diff --git a/m78-all/m78-fe/src/views/about/assets/github2.png b/m78-all/m78-fe/src/views/about/assets/github2.png new file mode 100644 index 000000000..b9532c9d7 Binary files /dev/null and b/m78-all/m78-fe/src/views/about/assets/github2.png differ diff --git a/m78-all/m78-fe/src/views/about/assets/photo.png b/m78-all/m78-fe/src/views/about/assets/photo.png new file mode 100644 index 000000000..546beba58 Binary files /dev/null and b/m78-all/m78-fe/src/views/about/assets/photo.png differ diff --git a/m78-all/m78-fe/src/views/about/components/About.vue b/m78-all/m78-fe/src/views/about/components/About.vue new file mode 100644 index 000000000..7f85da0d0 --- /dev/null +++ b/m78-all/m78-fe/src/views/about/components/About.vue @@ -0,0 +1,19 @@ + + + + diff --git a/m78-all/m78-fe/src/views/about/components/Connect.vue b/m78-all/m78-fe/src/views/about/components/Connect.vue new file mode 100644 index 000000000..8bf76e151 --- /dev/null +++ b/m78-all/m78-fe/src/views/about/components/Connect.vue @@ -0,0 +1,64 @@ + + + diff --git a/m78-all/m78-fe/src/views/about/components/Feedback.vue b/m78-all/m78-fe/src/views/about/components/Feedback.vue new file mode 100644 index 000000000..a617ded5d --- /dev/null +++ b/m78-all/m78-fe/src/views/about/components/Feedback.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/about/index.vue b/m78-all/m78-fe/src/views/about/index.vue new file mode 100644 index 000000000..cb59e0441 --- /dev/null +++ b/m78-all/m78-fe/src/views/about/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/agent/index.vue b/m78-all/m78-fe/src/views/agent/index.vue new file mode 100644 index 000000000..1f23f89e7 --- /dev/null +++ b/m78-all/m78-fe/src/views/agent/index.vue @@ -0,0 +1,179 @@ + + + diff --git a/m78-all/m78-fe/src/views/agent/mixin/base.ts b/m78-all/m78-fe/src/views/agent/mixin/base.ts new file mode 100644 index 000000000..bb1e8204b --- /dev/null +++ b/m78-all/m78-fe/src/views/agent/mixin/base.ts @@ -0,0 +1,79 @@ +import 'pixi-spine' +import { v4 as uuidv4 } from 'uuid' +import * as PIXI from 'pixi.js' +import { Spine } from 'pixi-spine' +import { all, characterWidth, characterHeight } from './characters' + +let i = 0 + +export function createCharacter(name: string, colCount: number) { + const character = new PIXI.Container() + character.alpha = 0.9 + + const style = new PIXI.TextStyle({ + fontFamily: 'Arial', + fontSize: 18, + fontWeight: 'bold', + fill: ['#ffffff', '#00ff99'], // gradient + stroke: '#4a1850', + strokeThickness: 5, + dropShadow: true, + dropShadowColor: '#000000', + dropShadowBlur: 4, + dropShadowAngle: Math.PI / 6, + dropShadowDistance: 6, + wordWrap: true, + wordWrapWidth: 440, + lineJoin: 'round' + }) + + const id = Math.floor(Math.random() * all.length) + console.log(id, all[id]) + const m = all[id] + bindSpine(character, m, name, style) + + character.eventMode = 'static' + character.cursor = 'pointer' + + // 自定义属性 + character.uuid = uuidv4() + + const row = Math.floor(i / colCount) + const col = i % colCount + character.x = col * characterWidth + characterWidth / 2 + character.y = row * characterHeight + characterHeight + + i++ + return character +} + +function bindSpine(me: PIXI.Container, m: string, name: string, style: PIXI.TextStyle) { + PIXI.Assets.load(`${import.meta.env.VITE_APP_STATIC_PATH}images/character/${m}.json`).then( + (resource) => { + const text = new PIXI.Text(name, style) + text.anchor.set(0.5, 0.5) + + const animation = new Spine(resource.spineData) + animation.scale.set(0.8) + + console.log(animation.state.data) + me.addChild(animation) + me.addChild(text) + animation.position.set(0, 0) + text.position.set(0, 0) + + me.playAnimation = (actionName: string, loop: boolean = false) => { + if (!actionName) { + const actions = animation.state.data.skeletonData.animations + if (actions && actions.length > 0) + actionName = actions[Math.floor(Math.random() * actions.length)].name + } + if (animation.state.hasAnimation(actionName)) { + animation.state.setAnimation(0, actionName, loop) + animation.state.timeScale = 0.6 + animation.autoUpdate = true + } + } + } + ) +} diff --git a/m78-all/m78-fe/src/views/agent/mixin/characters/index.ts b/m78-all/m78-fe/src/views/agent/mixin/characters/index.ts new file mode 100644 index 000000000..024277475 --- /dev/null +++ b/m78-all/m78-fe/src/views/agent/mixin/characters/index.ts @@ -0,0 +1,44 @@ +// export const actions = ['action', 'happy', 'joy', 'sad', 'stand', 'surprised', 'talk', 'uneasy'] + +export const characterWidth = 260 + +export const characterHeight = 300 + +export const all = [ + '201201', + '201301', + '202101', + '203101', + '203201', + '203301', + '204101', + '204301', + '205101', + '205301', + '206101', + '206301', + '207101', + '207201', + '207301', + '208101', + '208201', + '208301', + '209101', + '210101', + '210201', + '210301', + '211101', + '211201', + '211301', + '212101', + '212301', + '213101', + '213201', + '213301', + '214101', + '213201', + '213301', + '215101', + '215201', + '215301' +] diff --git a/m78-all/m78-fe/src/views/agent/mixin/chat.ts b/m78-all/m78-fe/src/views/agent/mixin/chat.ts new file mode 100644 index 000000000..8be453d54 --- /dev/null +++ b/m78-all/m78-fe/src/views/agent/mixin/chat.ts @@ -0,0 +1,52 @@ +// import * as PIXI from 'pixi.js' + +// export function showChat(me: PIXI.Container, text: string) { +// // const dialogContainer = new PIXI.Container() +// // dialogContainer.position.set(100, 100) + +// // const dialogBackground = new PIXI.Graphics() +// // dialogBackground.beginFill(0xffffff) +// // dialogBackground.drawRect(0, 0, 300, 100) +// // dialogBackground.endFill() + +// // dialogContainer.addChild(dialogBackground) + +// const style = new PIXI.TextStyle({ +// fontFamily: 'Arial', +// fontSize: 16, +// fill: '#fff', +// wordWrap: true, +// wordWrapWidth: 100 +// }) +// const words = new PIXI.Text(text, style) +// words.anchor.set(0.5, 0.5) +// // words.x = me.width +// // words.y = -me.height + +// me.removeChild(me.lastWords) +// // dialogContainer.x = 0 +// // dialogContainer.y = -2 * me.height - dialogBackground.height +// // dialogContainer.addChild(words) + +// me.addChild(words) +// words.position.set(0, -me.height) +// me.lastWords = words +// } + +// export function showError(me: PIXI.Container, message: string) { +// const style = new PIXI.TextStyle({ +// fontFamily: 'Arial', +// fontSize: 36, +// fontWeight: 'bold', +// fill: 'red' +// }) +// const text = new PIXI.Text(message, style) +// text.anchor.set(0.5, 0.5) +// text.x = me.width / 2 +// text.y = -2 * me.height + +// me.addChild(text) +// setTimeout(() => { +// me.removeChild(text) +// }, 800) +// } diff --git a/m78-all/m78-fe/src/views/agent/mixin/event.ts b/m78-all/m78-fe/src/views/agent/mixin/event.ts new file mode 100644 index 000000000..13240d151 --- /dev/null +++ b/m78-all/m78-fe/src/views/agent/mixin/event.ts @@ -0,0 +1,24 @@ +import * as PIXI from 'pixi.js' + +// ArrowUp?: boolean +// ArrowDown?: boolean +// ArrowLeft?: boolean +// ArrowRight?: boolean +export const keys: Record = {} + +export const bindAppEvent = (app: PIXI.Application) => { + app.ticker.add(() => { + if (keys.ArrowUp && app.target) { + app.target.y -= 1 + } + if (keys.ArrowDown && app.target) { + app.target.y += 1 + } + if (keys.ArrowLeft && app.target) { + app.target.x -= 1 + } + if (keys.ArrowRight && app.target) { + app.target.x += 1 + } + }) +} diff --git a/m78-all/m78-fe/src/views/agent/mixin/index.ts b/m78-all/m78-fe/src/views/agent/mixin/index.ts new file mode 100644 index 000000000..0bd9e595b --- /dev/null +++ b/m78-all/m78-fe/src/views/agent/mixin/index.ts @@ -0,0 +1,57 @@ +import * as PIXI from 'pixi.js' + +export * from './base' +export * from './chat' +export * from './event' +export * from './characters' + +// Strength of the impulse push between two objects +const impulsePower = 5 + +export function testForAABB(object1: PIXI.Container, object2: PIXI.Container) { + const bounds1 = object1.getBounds() + const bounds2 = object2.getBounds() + + return ( + bounds1.x < bounds2.x + bounds2.width && + bounds1.x + bounds1.width > bounds2.x && + bounds1.y < bounds2.y + bounds2.height && + bounds1.y + bounds1.height > bounds2.y + ) +} + +// Calculates the results of a collision, allowing us to give an impulse that +// shoves objects apart +export function collisionResponse(object1: PIXI.Container, object2: PIXI.Container) { + if (!object1 || !object2) { + return new PIXI.Point(0) + } + + const vCollision = new PIXI.Point(object2.x - object1.x, object2.y - object1.y) + + const distance = Math.sqrt( + (object2.x - object1.x) * (object2.x - object1.x) + + (object2.y - object1.y) * (object2.y - object1.y) + ) + + const vCollisionNorm = new PIXI.Point(vCollision.x / distance, vCollision.y / distance) + + const vRelativeVelocity = new PIXI.Point( + object1.acceleration.x - object2.acceleration.x, + object1.acceleration.y - object2.acceleration.y + ) + + const speed = vRelativeVelocity.x * vCollisionNorm.x + vRelativeVelocity.y * vCollisionNorm.y + + const impulse = (impulsePower * speed) / (object1.mass + object2.mass) + + return new PIXI.Point(impulse * vCollisionNorm.x, impulse * vCollisionNorm.y) +} + +// Calculate the distance between two given points +export function distanceBetweenTwoPoints(p1: PIXI.Point, p2: PIXI.Point) { + const a = p1.x - p2.x + const b = p1.y - p2.y + + return Math.hypot(a, b) +} diff --git a/m78-all/m78-fe/src/views/chat/components/DetailDrawer.vue b/m78-all/m78-fe/src/views/chat/components/DetailDrawer.vue new file mode 100644 index 000000000..9289d8b74 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/components/DetailDrawer.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/chat/hooks/useChat.ts b/m78-all/m78-fe/src/views/chat/hooks/useChat.ts new file mode 100644 index 000000000..b4e983cca --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/hooks/useChat.ts @@ -0,0 +1,33 @@ +import { useChatStore } from '@/stores/chat' + +export function useChat() { + const chatStore = useChatStore() + + const getChatByUuidAndIndex = (uuid: number, index: number) => { + return chatStore.getChatByUuidAndIndex(uuid, index) + } + + const addChat = (uuid: number, chat: Chat.Chat) => { + chatStore.addChatByUuid(uuid, chat) + } + + const updateChat = (uuid: number, index: number, chat: Chat.Chat) => { + chatStore.updateChatByUuid(uuid, index, chat) + } + + const updateChatMessage = (uuid: number, index: number, chat: Chat.Chat, role: Chat.Role) => { + chatStore.updateChatMessageByUuid(uuid, index, chat, role) + } + + const updateChatSome = (uuid: number, index: number, chat: Partial) => { + chatStore.updateChatSomeByUuid(uuid, index, chat) + } + + return { + addChat, + updateChat, + updateChatMessage, + updateChatSome, + getChatByUuidAndIndex + } +} diff --git a/m78-all/m78-fe/src/views/chat/hooks/useScroll.ts b/m78-all/m78-fe/src/views/chat/hooks/useScroll.ts new file mode 100644 index 000000000..80864c91f --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/hooks/useScroll.ts @@ -0,0 +1,42 @@ +import type { Ref } from 'vue' +import { nextTick, ref } from 'vue' + +type ScrollElement = HTMLDivElement | null + +interface ScrollReturn { + scrollRef: Ref + scrollToBottom: () => Promise + scrollToTop: () => Promise + scrollToBottomIfAtBottom: () => Promise +} + +export function useScroll(): ScrollReturn { + const scrollRef = ref(null) + + const scrollToBottom = async () => { + await nextTick() + if (scrollRef.value) scrollRef.value.scrollTop = scrollRef.value.scrollHeight + } + + const scrollToTop = async () => { + await nextTick() + if (scrollRef.value) scrollRef.value.scrollTop = 0 + } + + const scrollToBottomIfAtBottom = async () => { + await nextTick() + if (scrollRef.value) { + const threshold = 100 // 阈值,表示滚动条到底部的距离阈值 + const distanceToBottom = + scrollRef.value.scrollHeight - scrollRef.value.scrollTop - scrollRef.value.clientHeight + if (distanceToBottom <= threshold) scrollRef.value.scrollTop = scrollRef.value.scrollHeight + } + } + + return { + scrollRef, + scrollToBottom, + scrollToTop, + scrollToBottomIfAtBottom + } +} diff --git a/m78-all/m78-fe/src/views/chat/hooks/useUsingContext.ts b/m78-all/m78-fe/src/views/chat/hooks/useUsingContext.ts new file mode 100644 index 000000000..73f0e5082 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/hooks/useUsingContext.ts @@ -0,0 +1,21 @@ +import { computed } from 'vue' +import { ElMessage } from 'element-plus' +import 'element-plus/theme-chalk/src/message.scss' +import { t } from '@/locales' +import { useChatStore } from '@/stores/chat' + +export function useUsingContext() { + const chatStore = useChatStore() + const usingContext = computed(() => chatStore.usingContext) + + function toggleUsingContext() { + chatStore.setUsingContext(!usingContext.value) + if (usingContext.value) ElMessage.success(t('chat.turnOnContext')) + else ElMessage.warning(t('chat.turnOffContext')) + } + + return { + usingContext, + toggleUsingContext + } +} diff --git a/m78-all/m78-fe/src/views/chat/index.vue b/m78-all/m78-fe/src/views/chat/index.vue new file mode 100644 index 000000000..714aa145d --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/index.vue @@ -0,0 +1,563 @@ + + + diff --git a/m78-all/m78-fe/src/views/chat/knowledge-base/UploadFile.vue b/m78-all/m78-fe/src/views/chat/knowledge-base/UploadFile.vue new file mode 100644 index 000000000..e42a19220 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/knowledge-base/UploadFile.vue @@ -0,0 +1,331 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/chat/knowledge-base/index.vue b/m78-all/m78-fe/src/views/chat/knowledge-base/index.vue new file mode 100644 index 000000000..bb859640d --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/knowledge-base/index.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/Layout.vue b/m78-all/m78-fe/src/views/chat/layout/Layout.vue new file mode 100644 index 000000000..0cfe4dc3c --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/Layout.vue @@ -0,0 +1,25 @@ + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/Permission.vue b/m78-all/m78-fe/src/views/chat/layout/Permission.vue new file mode 100644 index 000000000..2290d77c3 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/Permission.vue @@ -0,0 +1,69 @@ + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/index.ts b/m78-all/m78-fe/src/views/chat/layout/index.ts new file mode 100644 index 000000000..6f94c82c0 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/index.ts @@ -0,0 +1,3 @@ +import ChatLayout from './Layout.vue' + +export { ChatLayout } diff --git a/m78-all/m78-fe/src/views/chat/layout/sider/ConnectionDrawer.vue b/m78-all/m78-fe/src/views/chat/layout/sider/ConnectionDrawer.vue new file mode 100644 index 000000000..243632e90 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/sider/ConnectionDrawer.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/sider/File.vue b/m78-all/m78-fe/src/views/chat/layout/sider/File.vue new file mode 100644 index 000000000..efdcfbb1f --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/sider/File.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/sider/Footer.vue b/m78-all/m78-fe/src/views/chat/layout/sider/Footer.vue new file mode 100644 index 000000000..95bfd7355 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/sider/Footer.vue @@ -0,0 +1,26 @@ + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/sider/List.vue b/m78-all/m78-fe/src/views/chat/layout/sider/List.vue new file mode 100644 index 000000000..989dda71f --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/sider/List.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/chat/layout/sider/index.vue b/m78-all/m78-fe/src/views/chat/layout/sider/index.vue new file mode 100644 index 000000000..210231c96 --- /dev/null +++ b/m78-all/m78-fe/src/views/chat/layout/sider/index.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/code/assets/code1.mp4 b/m78-all/m78-fe/src/views/code/assets/code1.mp4 new file mode 100644 index 000000000..64831a522 Binary files /dev/null and b/m78-all/m78-fe/src/views/code/assets/code1.mp4 differ diff --git a/m78-all/m78-fe/src/views/code/assets/code2.mp4 b/m78-all/m78-fe/src/views/code/assets/code2.mp4 new file mode 100644 index 000000000..55c370c8b Binary files /dev/null and b/m78-all/m78-fe/src/views/code/assets/code2.mp4 differ diff --git a/m78-all/m78-fe/src/views/code/assets/code3.mp4 b/m78-all/m78-fe/src/views/code/assets/code3.mp4 new file mode 100644 index 000000000..f60e87a4a Binary files /dev/null and b/m78-all/m78-fe/src/views/code/assets/code3.mp4 differ diff --git a/m78-all/m78-fe/src/views/code/assets/svg1.svg b/m78-all/m78-fe/src/views/code/assets/svg1.svg new file mode 100644 index 000000000..46ae2562c --- /dev/null +++ b/m78-all/m78-fe/src/views/code/assets/svg1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/m78-all/m78-fe/src/views/code/assets/svg2.svg b/m78-all/m78-fe/src/views/code/assets/svg2.svg new file mode 100644 index 000000000..05b59146e --- /dev/null +++ b/m78-all/m78-fe/src/views/code/assets/svg2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/m78-all/m78-fe/src/views/code/assets/svg3.svg b/m78-all/m78-fe/src/views/code/assets/svg3.svg new file mode 100644 index 000000000..5b992e500 --- /dev/null +++ b/m78-all/m78-fe/src/views/code/assets/svg3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/m78-all/m78-fe/src/views/code/components/CodeVideo.vue b/m78-all/m78-fe/src/views/code/components/CodeVideo.vue new file mode 100644 index 000000000..ca00403a1 --- /dev/null +++ b/m78-all/m78-fe/src/views/code/components/CodeVideo.vue @@ -0,0 +1,209 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/code/index.vue b/m78-all/m78-fe/src/views/code/index.vue new file mode 100644 index 000000000..6ec8ee1a0 --- /dev/null +++ b/m78-all/m78-fe/src/views/code/index.vue @@ -0,0 +1,210 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/data-source/components/Content.vue b/m78-all/m78-fe/src/views/data-source/components/Content.vue new file mode 100644 index 000000000..064a56566 --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/components/Content.vue @@ -0,0 +1,149 @@ + + + diff --git a/m78-all/m78-fe/src/views/data-source/components/Database.vue b/m78-all/m78-fe/src/views/data-source/components/Database.vue new file mode 100644 index 000000000..1cd833bb7 --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/components/Database.vue @@ -0,0 +1,194 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/data-source/components/MetaData.vue b/m78-all/m78-fe/src/views/data-source/components/MetaData.vue new file mode 100644 index 000000000..7cbe1b070 --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/components/MetaData.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/data-source/components/NewDataSource.vue b/m78-all/m78-fe/src/views/data-source/components/NewDataSource.vue new file mode 100644 index 000000000..ebf818812 --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/components/NewDataSource.vue @@ -0,0 +1,147 @@ + + + diff --git a/m78-all/m78-fe/src/views/data-source/components/NewTable.vue b/m78-all/m78-fe/src/views/data-source/components/NewTable.vue new file mode 100644 index 000000000..12a4987e0 --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/components/NewTable.vue @@ -0,0 +1,162 @@ + + + diff --git a/m78-all/m78-fe/src/views/data-source/components/TableData.vue b/m78-all/m78-fe/src/views/data-source/components/TableData.vue new file mode 100644 index 000000000..e69de29bb diff --git a/m78-all/m78-fe/src/views/data-source/components/Tree.vue b/m78-all/m78-fe/src/views/data-source/components/Tree.vue new file mode 100644 index 000000000..f805d5e70 --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/components/Tree.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/data-source/index.vue b/m78-all/m78-fe/src/views/data-source/index.vue new file mode 100644 index 000000000..3efc22e2c --- /dev/null +++ b/m78-all/m78-fe/src/views/data-source/index.vue @@ -0,0 +1,311 @@ + + + + + +./data-source diff --git a/m78-all/m78-fe/src/views/doc/components/ChangeExcleMode.vue b/m78-all/m78-fe/src/views/doc/components/ChangeExcleMode.vue new file mode 100644 index 000000000..c75c3adca --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/ChangeExcleMode.vue @@ -0,0 +1,79 @@ + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/ChatList.vue b/m78-all/m78-fe/src/views/doc/components/ChatList.vue new file mode 100644 index 000000000..52c66e4e1 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/ChatList.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/DocStatusMap.vue b/m78-all/m78-fe/src/views/doc/components/DocStatusMap.vue new file mode 100644 index 000000000..67cd6fc22 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/DocStatusMap.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/ExcleAction.vue b/m78-all/m78-fe/src/views/doc/components/ExcleAction.vue new file mode 100644 index 000000000..fb847c310 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/ExcleAction.vue @@ -0,0 +1,91 @@ + + + diff --git a/m78-all/m78-fe/src/views/doc/components/FavoriteBtn.vue b/m78-all/m78-fe/src/views/doc/components/FavoriteBtn.vue new file mode 100644 index 000000000..6b21bebf6 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/FavoriteBtn.vue @@ -0,0 +1,20 @@ + + diff --git a/m78-all/m78-fe/src/views/doc/components/FileNameCom.vue b/m78-all/m78-fe/src/views/doc/components/FileNameCom.vue new file mode 100644 index 000000000..a6f58a936 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/FileNameCom.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/ImportDoc.vue b/m78-all/m78-fe/src/views/doc/components/ImportDoc.vue new file mode 100644 index 000000000..515a335ae --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/ImportDoc.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/MetaData.vue b/m78-all/m78-fe/src/views/doc/components/MetaData.vue new file mode 100644 index 000000000..d635db237 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/MetaData.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/MoreCom.vue b/m78-all/m78-fe/src/views/doc/components/MoreCom.vue new file mode 100644 index 000000000..a53f12854 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/MoreCom.vue @@ -0,0 +1,26 @@ + + + diff --git a/m78-all/m78-fe/src/views/doc/components/MyExcle.vue b/m78-all/m78-fe/src/views/doc/components/MyExcle.vue new file mode 100644 index 000000000..4164d4c4c --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/MyExcle.vue @@ -0,0 +1,602 @@ + + + diff --git a/m78-all/m78-fe/src/views/doc/components/MyExcleNew.vue b/m78-all/m78-fe/src/views/doc/components/MyExcleNew.vue new file mode 100644 index 000000000..cea011bc1 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/MyExcleNew.vue @@ -0,0 +1,320 @@ + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/MyText.vue b/m78-all/m78-fe/src/views/doc/components/MyText.vue new file mode 100644 index 000000000..8cc9b2d76 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/MyText.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/doc/components/StarsHistory.vue b/m78-all/m78-fe/src/views/doc/components/StarsHistory.vue new file mode 100644 index 000000000..e337c1fed --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/components/StarsHistory.vue @@ -0,0 +1,198 @@ + + + diff --git a/m78-all/m78-fe/src/views/doc/index.vue b/m78-all/m78-fe/src/views/doc/index.vue new file mode 100644 index 000000000..529de65a7 --- /dev/null +++ b/m78-all/m78-fe/src/views/doc/index.vue @@ -0,0 +1,500 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/home/components/CardModule.vue b/m78-all/m78-fe/src/views/home/components/CardModule.vue new file mode 100644 index 000000000..16f221cfd --- /dev/null +++ b/m78-all/m78-fe/src/views/home/components/CardModule.vue @@ -0,0 +1,225 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/home/components/HomeInput.vue b/m78-all/m78-fe/src/views/home/components/HomeInput.vue new file mode 100644 index 000000000..3796c795d --- /dev/null +++ b/m78-all/m78-fe/src/views/home/components/HomeInput.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/home/dynamic-bg/vector.ts b/m78-all/m78-fe/src/views/home/dynamic-bg/vector.ts new file mode 100644 index 000000000..03e5f11f3 --- /dev/null +++ b/m78-all/m78-fe/src/views/home/dynamic-bg/vector.ts @@ -0,0 +1,787 @@ +const CAV = { FRONT: 0, BACK: 1, DOUBLE: 2, SVGNS: 'http://www.w3.org/2000/svg' } +CAV.Array = typeof Float32Array === 'function' ? Float32Array : Array +CAV.Utils = { + isNumber: function (a) { + return !isNaN(parseFloat(a)) && isFinite(a) + } +} +;(function () { + for ( + var a = 0, b = ['ms', 'moz', 'webkit', 'o'], c = 0; + c < b.length && !window.requestAnimationFrame; + ++c + ) + (window.requestAnimationFrame = window[b[c] + 'RequestAnimationFrame']), + (window.cancelAnimationFrame = + window[b[c] + 'CancelAnimationFrame'] || window[b[c] + 'CancelRequestAnimationFrame']) + if (!window.requestAnimationFrame) + window.requestAnimationFrame = function (b) { + const c = new Date().getTime(), + f = Math.max(0, 16 - (c - a)), + g = window.setTimeout(function () { + b(c + f) + }, f) + a = c + f + return g + } + if (!window.cancelAnimationFrame) + window.cancelAnimationFrame = function (a) { + clearTimeout(a) + } +})() +Math.PIM2 = Math.PI * 2 +Math.PID2 = Math.PI / 2 +Math.randomInRange = function (a, b) { + return a + (b - a) * Math.random() +} +Math.clamp = function (a, b, c) { + a = Math.max(a, b) + return (a = Math.min(a, c)) +} +CAV.Vector3 = { + create: function (a, b, c) { + const d = new CAV.Array(3) + this.set(d, a, b, c) + return d + }, + clone: function (a) { + const b = this.create() + this.copy(b, a) + return b + }, + set: function (a, b, c, d) { + a[0] = b || 0 + a[1] = c || 0 + a[2] = d || 0 + return this + }, + setX: function (a, b) { + a[0] = b || 0 + return this + }, + setY: function (a, b) { + a[1] = b || 0 + return this + }, + setZ: function (a, b) { + a[2] = b || 0 + return this + }, + copy: function (a, b) { + a[0] = b[0] + a[1] = b[1] + a[2] = b[2] + return this + }, + add: function (a, b) { + a[0] += b[0] + a[1] += b[1] + a[2] += b[2] + return this + }, + addVectors: function (a, b, c) { + a[0] = b[0] + c[0] + a[1] = b[1] + c[1] + a[2] = b[2] + c[2] + return this + }, + addScalar: function (a, b) { + a[0] += b + a[1] += b + a[2] += b + return this + }, + subtract: function (a, b) { + a[0] -= b[0] + a[1] -= b[1] + a[2] -= b[2] + return this + }, + subtractVectors: function (a, b, c) { + a[0] = b[0] - c[0] + a[1] = b[1] - c[1] + a[2] = b[2] - c[2] + return this + }, + subtractScalar: function (a, b) { + a[0] -= b + a[1] -= b + a[2] -= b + return this + }, + multiply: function (a, b) { + a[0] *= b[0] + a[1] *= b[1] + a[2] *= b[2] + return this + }, + multiplyVectors: function (a, b, c) { + a[0] = b[0] * c[0] + a[1] = b[1] * c[1] + a[2] = b[2] * c[2] + return this + }, + multiplyScalar: function (a, b) { + a[0] *= b + a[1] *= b + a[2] *= b + return this + }, + divide: function (a, b) { + a[0] /= b[0] + a[1] /= b[1] + a[2] /= b[2] + return this + }, + divideVectors: function (a, b, c) { + a[0] = b[0] / c[0] + a[1] = b[1] / c[1] + a[2] = b[2] / c[2] + return this + }, + divideScalar: function (a, b) { + b !== 0 ? ((a[0] /= b), (a[1] /= b), (a[2] /= b)) : ((a[0] = 0), (a[1] = 0), (a[2] = 0)) + return this + }, + cross: function (a, b) { + const c = a[0], + d = a[1], + e = a[2] + a[0] = d * b[2] - e * b[1] + a[1] = e * b[0] - c * b[2] + a[2] = c * b[1] - d * b[0] + return this + }, + crossVectors: function (a, b, c) { + a[0] = b[1] * c[2] - b[2] * c[1] + a[1] = b[2] * c[0] - b[0] * c[2] + a[2] = b[0] * c[1] - b[1] * c[0] + return this + }, + min: function (a, b) { + a[0] < b && (a[0] = b) + a[1] < b && (a[1] = b) + a[2] < b && (a[2] = b) + return this + }, + max: function (a, b) { + a[0] > b && (a[0] = b) + a[1] > b && (a[1] = b) + a[2] > b && (a[2] = b) + return this + }, + clamp: function (a, b, c) { + this.min(a, b) + this.max(a, c) + return this + }, + limit: function (a, b, c) { + const d = this.length(a) + b !== null && d < b ? this.setLength(a, b) : c !== null && d > c && this.setLength(a, c) + return this + }, + dot: function (a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + }, + normalise: function (a) { + return this.divideScalar(a, this.length(a)) + }, + negate: function (a) { + return this.multiplyScalar(a, -1) + }, + distanceSquared: function (a, b) { + const c = a[0] - b[0], + d = a[1] - b[1], + e = a[2] - b[2] + return c * c + d * d + e * e + }, + distance: function (a, b) { + return Math.sqrt(this.distanceSquared(a, b)) + }, + lengthSquared: function (a) { + return a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + }, + length: function (a) { + return Math.sqrt(this.lengthSquared(a)) + }, + setLength: function (a, b) { + const c = this.length(a) + c !== 0 && b !== c && this.multiplyScalar(a, b / c) + return this + } +} +CAV.Vector4 = { + create: function (a, b, c) { + const d = new CAV.Array(4) + this.set(d, a, b, c) + return d + }, + set: function (a, b, c, d, e) { + a[0] = b || 0 + a[1] = c || 0 + a[2] = d || 0 + a[3] = e || 0 + return this + }, + setX: function (a, b) { + a[0] = b || 0 + return this + }, + setY: function (a, b) { + a[1] = b || 0 + return this + }, + setZ: function (a, b) { + a[2] = b || 0 + return this + }, + setW: function (a, b) { + a[3] = b || 0 + return this + }, + add: function (a, b) { + a[0] += b[0] + a[1] += b[1] + a[2] += b[2] + a[3] += b[3] + return this + }, + multiplyVectors: function (a, b, c) { + a[0] = b[0] * c[0] + a[1] = b[1] * c[1] + a[2] = b[2] * c[2] + a[3] = b[3] * c[3] + return this + }, + multiplyScalar: function (a, b) { + a[0] *= b + a[1] *= b + a[2] *= b + a[3] *= b + return this + }, + min: function (a, b) { + a[0] < b && (a[0] = b) + a[1] < b && (a[1] = b) + a[2] < b && (a[2] = b) + a[3] < b && (a[3] = b) + return this + }, + max: function (a, b) { + a[0] > b && (a[0] = b) + a[1] > b && (a[1] = b) + a[2] > b && (a[2] = b) + a[3] > b && (a[3] = b) + return this + }, + clamp: function (a, b, c) { + this.min(a, b) + this.max(a, c) + return this + } +} +CAV.Color = function (a, b) { + this.rgba = CAV.Vector4.create() + this.hex = a || '#000000' + this.opacity = CAV.Utils.isNumber(b) ? b : 1 + this.set(this.hex, this.opacity) +} +CAV.Color.prototype = { + set: function (a, b) { + var a = a.replace('#', ''), + c = a.length / 3 + this.rgba[0] = parseInt(a.substring(c * 0, c * 1), 16) / 255 + this.rgba[1] = parseInt(a.substring(c * 1, c * 2), 16) / 255 + this.rgba[2] = parseInt(a.substring(c * 2, c * 3), 16) / 255 + this.rgba[3] = CAV.Utils.isNumber(b) ? b : this.rgba[3] + return this + }, + hexify: function (a) { + a = Math.ceil(a * 255).toString(16) + a.length === 1 && (a = '0' + a) + return a + }, + format: function () { + const a = this.hexify(this.rgba[0]), + b = this.hexify(this.rgba[1]), + c = this.hexify(this.rgba[2]) + return (this.hex = '#' + a + b + c) + } +} +CAV.Object = function () { + this.position = CAV.Vector3.create() +} +CAV.Object.prototype = { + setPosition: function (a, b, c) { + CAV.Vector3.set(this.position, a, b, c) + return this + } +} +CAV.Light = function (a, b) { + CAV.Object.call(this) + this.ambient = new CAV.Color(a || '#FFFFFF') + this.diffuse = new CAV.Color(b || '#FFFFFF') + this.ray = CAV.Vector3.create() +} +CAV.Light.prototype = Object.create(CAV.Object.prototype) +CAV.Vertex = function (a, b, c) { + this.position = CAV.Vector3.create(a, b, c) +} +CAV.Vertex.prototype = { + setPosition: function (a, b, c) { + CAV.Vector3.set(this.position, a, b, c) + return this + } +} +CAV.Triangle = function (a, b, c) { + this.a = a || new CAV.Vertex() + this.b = b || new CAV.Vertex() + this.c = c || new CAV.Vertex() + this.vertices = [this.a, this.b, this.c] + this.u = CAV.Vector3.create() + this.v = CAV.Vector3.create() + this.centroid = CAV.Vector3.create() + this.normal = CAV.Vector3.create() + this.color = new CAV.Color() + this.polygon = document.createElementNS(CAV.SVGNS, 'polygon') + this.polygon.setAttributeNS(null, 'stroke-linejoin', 'round') + this.polygon.setAttributeNS(null, 'stroke-miterlimit', '1') + this.polygon.setAttributeNS(null, 'stroke-width', '1') + this.computeCentroid() + this.computeNormal() +} +CAV.Triangle.prototype = { + computeCentroid: function () { + this.centroid[0] = this.a.position[0] + this.b.position[0] + this.c.position[0] + this.centroid[1] = this.a.position[1] + this.b.position[1] + this.c.position[1] + this.centroid[2] = this.a.position[2] + this.b.position[2] + this.c.position[2] + CAV.Vector3.divideScalar(this.centroid, 3) + return this + }, + computeNormal: function () { + CAV.Vector3.subtractVectors(this.u, this.b.position, this.a.position) + CAV.Vector3.subtractVectors(this.v, this.c.position, this.a.position) + CAV.Vector3.crossVectors(this.normal, this.u, this.v) + CAV.Vector3.normalise(this.normal) + return this + } +} +CAV.Geometry = function () { + this.vertices = [] + this.triangles = [] + this.dirty = false +} +CAV.Geometry.prototype = { + update: function () { + if (this.dirty) { + let a, b + for (a = this.triangles.length - 1; a >= 0; a--) + (b = this.triangles[a]), b.computeCentroid(), b.computeNormal() + this.dirty = false + } + return this + } +} +CAV.Plane = function (a, b, c, d) { + CAV.Geometry.call(this) + this.width = a || 100 + this.height = b || 100 + this.segments = c || 4 + this.slices = d || 4 + this.segmentWidth = this.width / this.segments + this.sliceHeight = this.height / this.slices + var e, + f, + g, + c = [], + t0, + t1 + e = this.width * -0.5 + f = this.height * 0.5 + for (a = 0; a <= this.segments; a++) { + c.push([]) + for (b = 0; b <= this.slices; b++) + (d = new CAV.Vertex(e + a * this.segmentWidth, f - b * this.sliceHeight)), + c[a].push(d), + this.vertices.push(d) + } + for (a = 0; a < this.segments; a++) + for (b = 0; b < this.slices; b++) + (d = c[a + 0][b + 0]), + (e = c[a + 0][b + 1]), + (f = c[a + 1][b + 0]), + (g = c[a + 1][b + 1]), + (t0 = new CAV.Triangle(d, e, f)), + (t1 = new CAV.Triangle(f, e, g)), + this.triangles.push(t0, t1) +} +CAV.Plane.prototype = Object.create(CAV.Geometry.prototype) +CAV.Material = function (a, b) { + this.ambient = new CAV.Color(a || '#444444') + this.diffuse = new CAV.Color(b || '#FFFFFF') + this.slave = new CAV.Color() +} +CAV.Mesh = function (a, b) { + CAV.Object.call(this) + this.geometry = a || new CAV.Geometry() + this.material = b || new CAV.Material() + this.side = CAV.FRONT + this.visible = true +} +CAV.Mesh.prototype = Object.create(CAV.Object.prototype) +CAV.Mesh.prototype.update = function (a, b) { + let c, d, e, f, g + this.geometry.update() + if (b) + for (c = this.geometry.triangles.length - 1; c >= 0; c--) { + d = this.geometry.triangles[c] + CAV.Vector4.set(d.color.rgba) + for (e = a.length - 1; e >= 0; e--) + (f = a[e]), + CAV.Vector3.subtractVectors(f.ray, f.position, d.centroid), + CAV.Vector3.normalise(f.ray), + (g = CAV.Vector3.dot(d.normal, f.ray)), + this.side === CAV.FRONT + ? (g = Math.max(g, 0)) + : this.side === CAV.BACK + ? (g = Math.abs(Math.min(g, 0))) + : this.side === CAV.DOUBLE && (g = Math.max(Math.abs(g), 0)), + CAV.Vector4.multiplyVectors( + this.material.slave.rgba, + this.material.ambient.rgba, + f.ambient.rgba + ), + CAV.Vector4.add(d.color.rgba, this.material.slave.rgba), + CAV.Vector4.multiplyVectors( + this.material.slave.rgba, + this.material.diffuse.rgba, + f.diffuse.rgba + ), + CAV.Vector4.multiplyScalar(this.material.slave.rgba, g), + CAV.Vector4.add(d.color.rgba, this.material.slave.rgba) + CAV.Vector4.clamp(d.color.rgba, 0, 1) + } + return this +} +CAV.Scene = function () { + this.meshes = [] + this.lights = [] +} +CAV.Scene.prototype = { + add: function (a) { + a instanceof CAV.Mesh && !~this.meshes.indexOf(a) + ? this.meshes.push(a) + : a instanceof CAV.Light && !~this.lights.indexOf(a) && this.lights.push(a) + return this + }, + remove: function (a) { + a instanceof CAV.Mesh && ~this.meshes.indexOf(a) + ? this.meshes.splice(this.meshes.indexOf(a), 1) + : a instanceof CAV.Light && + ~this.lights.indexOf(a) && + this.lights.splice(this.lights.indexOf(a), 1) + return this + } +} +CAV.Renderer = function () { + this.halfHeight = this.halfWidth = this.height = this.width = 0 +} +CAV.Renderer.prototype = { + setSize: function (a, b) { + if (!(this.width === a && this.height === b)) + return ( + (this.width = a), + (this.height = b), + (this.halfWidth = this.width * 0.5), + (this.halfHeight = this.height * 0.5), + this + ) + }, + clear: function () { + return this + }, + render: function () { + return this + } +} +CAV.CanvasRenderer = function () { + CAV.Renderer.call(this) + this.element = document.createElement('canvas') + this.element.style.display = 'block' + this.context = this.element.getContext('2d') + this.setSize(this.element.width, this.element.height) +} +CAV.CanvasRenderer.prototype = Object.create(CAV.Renderer.prototype) +CAV.CanvasRenderer.prototype.setSize = function (a, b) { + CAV.Renderer.prototype.setSize.call(this, a, b) + this.element.width = a + this.element.height = b + this.context.setTransform(1, 0, 0, -1, this.halfWidth, this.halfHeight) + return this +} +CAV.CanvasRenderer.prototype.clear = function () { + CAV.Renderer.prototype.clear.call(this) + this.context.clearRect(-this.halfWidth, -this.halfHeight, this.width, this.height) + return this +} +CAV.CanvasRenderer.prototype.render = function (a) { + CAV.Renderer.prototype.render.call(this, a) + let b, c, d, e, f + this.clear() + this.context.lineJoin = 'round' + this.context.lineWidth = 1 + for (b = a.meshes.length - 1; b >= 0; b--) + if (((c = a.meshes[b]), c.visible)) { + c.update(a.lights, true) + for (d = c.geometry.triangles.length - 1; d >= 0; d--) + (e = c.geometry.triangles[d]), + (f = e.color.format()), + this.context.beginPath(), + this.context.moveTo(e.a.position[0], e.a.position[1]), + this.context.lineTo(e.b.position[0], e.b.position[1]), + this.context.lineTo(e.c.position[0], e.c.position[1]), + this.context.closePath(), + (this.context.strokeStyle = f), + (this.context.fillStyle = f), + this.context.stroke(), + this.context.fill() + } + return this +} + +function Victor(container, anitOut) { + let J + const z = document.getElementById(container || 'container') + const w = document.getElementById(anitOut || 'anitOut') + const ele = z.querySelector('canvas') + if (ele) { + w.innerHTML = '' + } + if (document.createElement('canvas').getContext) { + const t = { + width: 1.5, + height: 1.5, + depth: 10, + segments: 12, + slices: 6, + xRange: 0.8, + yRange: 0.1, + zRange: 1, + ambient: '#525252', + diffuse: '#FFFFFF', + speed: 0.0002 + } + const G = { + count: 2, + xyScalar: 1, + zOffset: 100, + ambient: '#002c4a', + diffuse: '#005584', + speed: 0.001, + gravity: 1200, + dampening: 0.95, + minLimit: 10, + maxLimit: null, + minDistance: 20, + maxDistance: 400, + autopilot: false, + draw: false, + bounds: CAV.Vector3.create(), + step: CAV.Vector3.create( + Math.randomInRange(0.2, 1), + Math.randomInRange(0.2, 1), + Math.randomInRange(0.2, 1) + ) + } + const m = 'canvas' + const E = 'svg' + const x = { + renderer: m + } + let i, + n = Date.now() + const L = CAV.Vector3.create() + const k = CAV.Vector3.create() + let D, I, h, q, y + let g + let r + + function C() { + F() + p() + s() + B() + v() + K(z.offsetWidth, z.offsetHeight) + o() + } + + function F() { + g = new CAV.CanvasRenderer() + H(x.renderer) + } + + function H(N) { + if (D) { + w.removeChild(D.element) + } + switch (N) { + case m: + D = g + break + } + D.setSize(z.offsetWidth, z.offsetHeight) + w.appendChild(D.element) + } + + function p() { + I = new CAV.Scene() + } + + function s() { + I.remove(h) + D.clear() + q = new CAV.Plane(t.width * D.width, t.height * D.height, t.segments, t.slices) + y = new CAV.Material(t.ambient, t.diffuse) + h = new CAV.Mesh(q, y) + I.add(h) + let N, O + for (N = q.vertices.length - 1; N >= 0; N--) { + O = q.vertices[N] + O.anchor = CAV.Vector3.clone(O.position) + O.step = CAV.Vector3.create( + Math.randomInRange(0.2, 1), + Math.randomInRange(0.2, 1), + Math.randomInRange(0.2, 1) + ) + O.time = Math.randomInRange(0, Math.PIM2) + } + } + + function B() { + let O, N + for (O = I.lights.length - 1; O >= 0; O--) { + N = I.lights[O] + I.remove(N) + } + D.clear() + for (O = 0; O < G.count; O++) { + N = new CAV.Light(G.ambient, G.diffuse) + N.ambientHex = N.ambient.format() + N.diffuseHex = N.diffuse.format() + I.add(N) + N.mass = Math.randomInRange(0.5, 1) + N.velocity = CAV.Vector3.create() + N.acceleration = CAV.Vector3.create() + N.force = CAV.Vector3.create() + } + } + + function K(O, N) { + D.setSize(O, N) + CAV.Vector3.set(L, D.halfWidth, D.halfHeight) + s() + } + + function o() { + i = Date.now() - n + u() + M() + requestAnimationFrame(o) + } + + function u() { + let Q, + P, + O, + R, + T, + V, + U, + S = t.depth / 2 + CAV.Vector3.copy(G.bounds, L) + CAV.Vector3.multiplyScalar(G.bounds, G.xyScalar) + CAV.Vector3.setZ(k, G.zOffset) + for (R = I.lights.length - 1; R >= 0; R--) { + T = I.lights[R] + CAV.Vector3.setZ(T.position, G.zOffset) + const N = Math.clamp( + CAV.Vector3.distanceSquared(T.position, k), + G.minDistance, + G.maxDistance + ) + const W = (G.gravity * T.mass) / N + CAV.Vector3.subtractVectors(T.force, k, T.position) + CAV.Vector3.normalise(T.force) + CAV.Vector3.multiplyScalar(T.force, W) + CAV.Vector3.set(T.acceleration) + CAV.Vector3.add(T.acceleration, T.force) + CAV.Vector3.add(T.velocity, T.acceleration) + CAV.Vector3.multiplyScalar(T.velocity, G.dampening) + CAV.Vector3.limit(T.velocity, G.minLimit, G.maxLimit) + CAV.Vector3.add(T.position, T.velocity) + } + for (V = q.vertices.length - 1; V >= 0; V--) { + U = q.vertices[V] + Q = Math.sin(U.time + U.step[0] * i * t.speed) + P = Math.cos(U.time + U.step[1] * i * t.speed) + O = Math.sin(U.time + U.step[2] * i * t.speed) + CAV.Vector3.set( + U.position, + t.xRange * q.segmentWidth * Q, + t.yRange * q.sliceHeight * P, + t.zRange * S * O - S + ) + CAV.Vector3.add(U.position, U.anchor) + } + q.dirty = true + } + + function M() { + D.render(I) + } + + function J(O) { + let Q, + N, + S = O + const P = function (T) { + for (Q = 0, l = I.lights.length; Q < l; Q++) { + N = I.lights[Q] + N.ambient.set(T) + N.ambientHex = N.ambient.format() + } + } + const R = function (T) { + for (Q = 0, l = I.lights.length; Q < l; Q++) { + N = I.lights[Q] + N.diffuse.set(T) + N.diffuseHex = N.diffuse.format() + } + } + return { + set: function () { + P(S[0]) + R(S[1]) + } + } + } + + function v() { + window.addEventListener('resize', j) + } + + function A(N) { + CAV.Vector3.set(k, N.x, D.height - N.y) + CAV.Vector3.subtract(k, L) + } + + function j(N) { + K(z.offsetWidth, z.offsetHeight) + M() + } + C() + } + return J +} +export default Victor diff --git a/m78-all/m78-fe/src/views/home/index.vue b/m78-all/m78-fe/src/views/home/index.vue new file mode 100644 index 000000000..9ed820ba0 --- /dev/null +++ b/m78-all/m78-fe/src/views/home/index.vue @@ -0,0 +1,130 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Chat1.vue b/m78-all/m78-fe/src/views/manual/components/Chat1.vue new file mode 100644 index 000000000..022c246fb --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Chat1.vue @@ -0,0 +1,46 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Code1.vue b/m78-all/m78-fe/src/views/manual/components/Code1.vue new file mode 100644 index 000000000..9786e4d30 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Code1.vue @@ -0,0 +1,51 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Code2.vue b/m78-all/m78-fe/src/views/manual/components/Code2.vue new file mode 100644 index 000000000..cb64f75b7 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Code2.vue @@ -0,0 +1,68 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/ContentItem.vue b/m78-all/m78-fe/src/views/manual/components/ContentItem.vue new file mode 100644 index 000000000..1584634c1 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/ContentItem.vue @@ -0,0 +1,53 @@ + + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Document1.vue b/m78-all/m78-fe/src/views/manual/components/Document1.vue new file mode 100644 index 000000000..f66d9dc9d --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Document1.vue @@ -0,0 +1,20 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Document2.vue b/m78-all/m78-fe/src/views/manual/components/Document2.vue new file mode 100644 index 000000000..a3cc86c0a --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Document2.vue @@ -0,0 +1,39 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Document3.vue b/m78-all/m78-fe/src/views/manual/components/Document3.vue new file mode 100644 index 000000000..0487273b2 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Document3.vue @@ -0,0 +1,46 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Document4.vue b/m78-all/m78-fe/src/views/manual/components/Document4.vue new file mode 100644 index 000000000..e569347ce --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Document4.vue @@ -0,0 +1,36 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/MenuItem.vue b/m78-all/m78-fe/src/views/manual/components/MenuItem.vue new file mode 100644 index 000000000..f9ea4140d --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/MenuItem.vue @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Translate1.vue b/m78-all/m78-fe/src/views/manual/components/Translate1.vue new file mode 100644 index 000000000..8f31c93fc --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Translate1.vue @@ -0,0 +1,28 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Translate2.vue b/m78-all/m78-fe/src/views/manual/components/Translate2.vue new file mode 100644 index 000000000..ef9db8947 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Translate2.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Translate3.vue b/m78-all/m78-fe/src/views/manual/components/Translate3.vue new file mode 100644 index 000000000..f87ee5b9e --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Translate3.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Translate4.vue b/m78-all/m78-fe/src/views/manual/components/Translate4.vue new file mode 100644 index 000000000..306ca5414 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Translate4.vue @@ -0,0 +1,37 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/Translate5.vue b/m78-all/m78-fe/src/views/manual/components/Translate5.vue new file mode 100644 index 000000000..59cb29de4 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/components/Translate5.vue @@ -0,0 +1,33 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/manual/components/code1-1.png b/m78-all/m78-fe/src/views/manual/components/code1-1.png new file mode 100644 index 000000000..6287d6889 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code1-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/code1-2.png b/m78-all/m78-fe/src/views/manual/components/code1-2.png new file mode 100644 index 000000000..201b85251 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code1-2.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/code1-3.png b/m78-all/m78-fe/src/views/manual/components/code1-3.png new file mode 100644 index 000000000..c6d32264b Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code1-3.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/code1-4.jpeg b/m78-all/m78-fe/src/views/manual/components/code1-4.jpeg new file mode 100644 index 000000000..5b7c7a16a Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code1-4.jpeg differ diff --git a/m78-all/m78-fe/src/views/manual/components/code2-1.png b/m78-all/m78-fe/src/views/manual/components/code2-1.png new file mode 100644 index 000000000..95a7f4aa2 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code2-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/code2-2.png b/m78-all/m78-fe/src/views/manual/components/code2-2.png new file mode 100644 index 000000000..a0e7ee4ad Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code2-2.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/code2-3.png b/m78-all/m78-fe/src/views/manual/components/code2-3.png new file mode 100644 index 000000000..bc5945170 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/code2-3.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document2-1.png b/m78-all/m78-fe/src/views/manual/components/document2-1.png new file mode 100644 index 000000000..1f8ae63fa Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document2-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document2-2.png b/m78-all/m78-fe/src/views/manual/components/document2-2.png new file mode 100644 index 000000000..d5f2529c8 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document2-2.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document2-3.png b/m78-all/m78-fe/src/views/manual/components/document2-3.png new file mode 100644 index 000000000..3654647a0 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document2-3.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document2-4.png b/m78-all/m78-fe/src/views/manual/components/document2-4.png new file mode 100644 index 000000000..64702d6da Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document2-4.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document3-1.png b/m78-all/m78-fe/src/views/manual/components/document3-1.png new file mode 100644 index 000000000..95075500a Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document3-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document3-2.png b/m78-all/m78-fe/src/views/manual/components/document3-2.png new file mode 100644 index 000000000..522cf0304 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document3-2.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document3-3.png b/m78-all/m78-fe/src/views/manual/components/document3-3.png new file mode 100644 index 000000000..9c4be8481 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document3-3.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document3-4.png b/m78-all/m78-fe/src/views/manual/components/document3-4.png new file mode 100644 index 000000000..dc47f5e0e Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document3-4.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/document4-1.jpeg b/m78-all/m78-fe/src/views/manual/components/document4-1.jpeg new file mode 100644 index 000000000..0a212e390 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document4-1.jpeg differ diff --git a/m78-all/m78-fe/src/views/manual/components/document4-2.png b/m78-all/m78-fe/src/views/manual/components/document4-2.png new file mode 100644 index 000000000..35e7c87f2 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/document4-2.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/translate1-1.png b/m78-all/m78-fe/src/views/manual/components/translate1-1.png new file mode 100644 index 000000000..759df07f4 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/translate1-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/translate2-1.png b/m78-all/m78-fe/src/views/manual/components/translate2-1.png new file mode 100644 index 000000000..237150c8a Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/translate2-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/translate3-1.png b/m78-all/m78-fe/src/views/manual/components/translate3-1.png new file mode 100644 index 000000000..02e6cb356 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/translate3-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/components/translate4-1.png b/m78-all/m78-fe/src/views/manual/components/translate4-1.png new file mode 100644 index 000000000..e8b1d7186 Binary files /dev/null and b/m78-all/m78-fe/src/views/manual/components/translate4-1.png differ diff --git a/m78-all/m78-fe/src/views/manual/index.vue b/m78-all/m78-fe/src/views/manual/index.vue new file mode 100644 index 000000000..45c74ed76 --- /dev/null +++ b/m78-all/m78-fe/src/views/manual/index.vue @@ -0,0 +1,269 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/plugin-detail/CompItem.vue b/m78-all/m78-fe/src/views/plugin-detail/CompItem.vue new file mode 100644 index 000000000..c775f6dd3 --- /dev/null +++ b/m78-all/m78-fe/src/views/plugin-detail/CompItem.vue @@ -0,0 +1,121 @@ + + + + diff --git a/m78-all/m78-fe/src/views/plugin-detail/Tab.vue b/m78-all/m78-fe/src/views/plugin-detail/Tab.vue new file mode 100644 index 000000000..861d7ab4c --- /dev/null +++ b/m78-all/m78-fe/src/views/plugin-detail/Tab.vue @@ -0,0 +1,91 @@ + + + diff --git a/m78-all/m78-fe/src/views/plugin-detail/index.vue b/m78-all/m78-fe/src/views/plugin-detail/index.vue new file mode 100644 index 000000000..33eda9870 --- /dev/null +++ b/m78-all/m78-fe/src/views/plugin-detail/index.vue @@ -0,0 +1,53 @@ + + + + diff --git a/m78-all/m78-fe/src/views/plugin-detail/visit/More.vue b/m78-all/m78-fe/src/views/plugin-detail/visit/More.vue new file mode 100644 index 000000000..cf9cd3d56 --- /dev/null +++ b/m78-all/m78-fe/src/views/plugin-detail/visit/More.vue @@ -0,0 +1,90 @@ + + + + + + + + diff --git a/m78-all/m78-fe/src/views/plugin-detail/visit/index.vue b/m78-all/m78-fe/src/views/plugin-detail/visit/index.vue new file mode 100644 index 000000000..08afaba93 --- /dev/null +++ b/m78-all/m78-fe/src/views/plugin-detail/visit/index.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/plugins-list/index.vue b/m78-all/m78-fe/src/views/plugins-list/index.vue new file mode 100644 index 000000000..cf96b5366 --- /dev/null +++ b/m78-all/m78-fe/src/views/plugins-list/index.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot-classification/CreateClass.vue b/m78-all/m78-fe/src/views/probot-classification/CreateClass.vue new file mode 100644 index 000000000..c6e3c3b19 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot-classification/CreateClass.vue @@ -0,0 +1,121 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot-classification/index.vue b/m78-all/m78-fe/src/views/probot-classification/index.vue new file mode 100644 index 000000000..8d4f46b22 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot-classification/index.vue @@ -0,0 +1,144 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot-list/index.vue b/m78-all/m78-fe/src/views/probot-list/index.vue new file mode 100644 index 000000000..8c0d10e74 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot-list/index.vue @@ -0,0 +1,161 @@ + + + + diff --git a/m78-all/m78-fe/src/views/probot-team/index.vue b/m78-all/m78-fe/src/views/probot-team/index.vue new file mode 100644 index 000000000..29354959e --- /dev/null +++ b/m78-all/m78-fe/src/views/probot-team/index.vue @@ -0,0 +1,130 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/baseInfo.js b/m78-all/m78-fe/src/views/probot/baseInfo.js new file mode 100644 index 000000000..627cc9a91 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/baseInfo.js @@ -0,0 +1,52 @@ +const ymdOptions = [ + { + value: 'day', + label: '每天' + }, + { + value: 'week', + label: '每周' + }, + { + value: 'month', + label: '每月' + } +] +const arr = Array.from({ length: 31 }, (_, i) => 1 + i) +const daysOps = arr.map((item) => { + return { + label: item + '号', + value: item + '' + } +}) +const weekDays = [ + { + value: '0', + label: '周一' + }, + { + value: '1', + label: '周二' + }, + { + value: '2', + label: '周三' + }, + { + value: '3', + label: '周四' + }, + { + value: '4', + label: '周五' + }, + { + value: '5', + label: '周六' + }, + { + value: '6', + label: '周日' + } +] +export { ymdOptions, daysOps, weekDays } diff --git a/m78-all/m78-fe/src/views/probot/components/BaseAvatar.vue b/m78-all/m78-fe/src/views/probot/components/BaseAvatar.vue new file mode 100644 index 000000000..de6e16bbe --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/BaseAvatar.vue @@ -0,0 +1,222 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/BaseGroup.vue b/m78-all/m78-fe/src/views/probot/components/BaseGroup.vue new file mode 100644 index 000000000..6626294c7 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/BaseGroup.vue @@ -0,0 +1,88 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/BaseIconPlatform.vue b/m78-all/m78-fe/src/views/probot/components/BaseIconPlatform.vue new file mode 100644 index 000000000..72199a424 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/BaseIconPlatform.vue @@ -0,0 +1,38 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/BaseLink.vue b/m78-all/m78-fe/src/views/probot/components/BaseLink.vue new file mode 100644 index 000000000..0437fdcea --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/BaseLink.vue @@ -0,0 +1,38 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/BaseTabs.vue b/m78-all/m78-fe/src/views/probot/components/BaseTabs.vue new file mode 100644 index 000000000..9da045497 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/BaseTabs.vue @@ -0,0 +1,87 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/CornYMDSel.vue b/m78-all/m78-fe/src/views/probot/components/CornYMDSel.vue new file mode 100644 index 000000000..069309c01 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/CornYMDSel.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/DataTypeSel.vue b/m78-all/m78-fe/src/views/probot/components/DataTypeSel.vue new file mode 100644 index 000000000..8df5280f9 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/DataTypeSel.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/DaySel.vue b/m78-all/m78-fe/src/views/probot/components/DaySel.vue new file mode 100644 index 000000000..3de7bf423 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/DaySel.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/Debugger.vue b/m78-all/m78-fe/src/views/probot/components/Debugger.vue new file mode 100644 index 000000000..bc809ad18 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/Debugger.vue @@ -0,0 +1,28 @@ + + + diff --git a/m78-all/m78-fe/src/views/probot/components/DebuggerPage.vue b/m78-all/m78-fe/src/views/probot/components/DebuggerPage.vue new file mode 100644 index 000000000..2832ffd93 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/DebuggerPage.vue @@ -0,0 +1,456 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/Deploy.vue b/m78-all/m78-fe/src/views/probot/components/Deploy.vue new file mode 100644 index 000000000..5e2ef688a --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/Deploy.vue @@ -0,0 +1,322 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/DeployLetterOpenIdDialog.vue b/m78-all/m78-fe/src/views/probot/components/DeployLetterOpenIdDialog.vue new file mode 100644 index 000000000..dc44cb69c --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/DeployLetterOpenIdDialog.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/DeployOpenIdDialog.vue b/m78-all/m78-fe/src/views/probot/components/DeployOpenIdDialog.vue new file mode 100644 index 000000000..2d84472cd --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/DeployOpenIdDialog.vue @@ -0,0 +1,105 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/DeployOptimizeDialog.vue b/m78-all/m78-fe/src/views/probot/components/DeployOptimizeDialog.vue new file mode 100644 index 000000000..af0660987 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/DeployOptimizeDialog.vue @@ -0,0 +1,83 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/GenByAi.vue b/m78-all/m78-fe/src/views/probot/components/GenByAi.vue new file mode 100644 index 000000000..83668f67b --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/GenByAi.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/IntervalCom.vue b/m78-all/m78-fe/src/views/probot/components/IntervalCom.vue new file mode 100644 index 000000000..3ab355262 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/IntervalCom.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/Tags.vue b/m78-all/m78-fe/src/views/probot/components/Tags.vue new file mode 100644 index 000000000..8c2dfa0e7 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/Tags.vue @@ -0,0 +1,74 @@ + + + diff --git a/m78-all/m78-fe/src/views/probot/components/TaskTypeSel.vue b/m78-all/m78-fe/src/views/probot/components/TaskTypeSel.vue new file mode 100644 index 000000000..a20758262 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/TaskTypeSel.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/TooltipMenu.vue b/m78-all/m78-fe/src/views/probot/components/TooltipMenu.vue new file mode 100644 index 000000000..5b8ef5548 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/TooltipMenu.vue @@ -0,0 +1,52 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/components/WeekdaySel.vue b/m78-all/m78-fe/src/views/probot/components/WeekdaySel.vue new file mode 100644 index 000000000..25aa36831 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/components/WeekdaySel.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BaseCommitLog.vue b/m78-all/m78-fe/src/views/probot/create/BaseCommitLog.vue new file mode 100644 index 000000000..590f646f5 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BaseCommitLog.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BaseForm.vue b/m78-all/m78-fe/src/views/probot/create/BaseForm.vue new file mode 100644 index 000000000..672c8155a --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BaseForm.vue @@ -0,0 +1,155 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindDialog.vue b/m78-all/m78-fe/src/views/probot/create/BindDialog.vue new file mode 100644 index 000000000..7592a0491 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindDialog.vue @@ -0,0 +1,114 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindForm.vue b/m78-all/m78-fe/src/views/probot/create/BindForm.vue new file mode 100644 index 000000000..c69007b8e --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindForm.vue @@ -0,0 +1,289 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindKnowlege.vue b/m78-all/m78-fe/src/views/probot/create/BindKnowlege.vue new file mode 100644 index 000000000..82b5da02a --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindKnowlege.vue @@ -0,0 +1,120 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindLayout.vue b/m78-all/m78-fe/src/views/probot/create/BindLayout.vue new file mode 100644 index 000000000..785d0a55d --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindLayout.vue @@ -0,0 +1,78 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindPlug.vue b/m78-all/m78-fe/src/views/probot/create/BindPlug.vue new file mode 100644 index 000000000..5dca57bf9 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindPlug.vue @@ -0,0 +1,179 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindPlugFilter.vue b/m78-all/m78-fe/src/views/probot/create/BindPlugFilter.vue new file mode 100644 index 000000000..304da30d7 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindPlugFilter.vue @@ -0,0 +1,114 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindPlugParameterList.vue b/m78-all/m78-fe/src/views/probot/create/BindPlugParameterList.vue new file mode 100644 index 000000000..c3d5f8846 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindPlugParameterList.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindTaskForm.vue b/m78-all/m78-fe/src/views/probot/create/BindTaskForm.vue new file mode 100644 index 000000000..84f59170b --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindTaskForm.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindWorkflow.vue b/m78-all/m78-fe/src/views/probot/create/BindWorkflow.vue new file mode 100644 index 000000000..bea9fa787 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindWorkflow.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindWorkflowFilter.vue b/m78-all/m78-fe/src/views/probot/create/BindWorkflowFilter.vue new file mode 100644 index 000000000..09bf8a9f5 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindWorkflowFilter.vue @@ -0,0 +1,113 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/BindWorkflowParameterList.vue b/m78-all/m78-fe/src/views/probot/create/BindWorkflowParameterList.vue new file mode 100644 index 000000000..ff84a808a --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/BindWorkflowParameterList.vue @@ -0,0 +1,63 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/ConfigDynamic.vue b/m78-all/m78-fe/src/views/probot/create/ConfigDynamic.vue new file mode 100644 index 000000000..4ce14dd5f --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/ConfigDynamic.vue @@ -0,0 +1,129 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/ConfigForm.vue b/m78-all/m78-fe/src/views/probot/create/ConfigForm.vue new file mode 100644 index 000000000..feef19419 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/ConfigForm.vue @@ -0,0 +1,310 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/ConfigOptimizeDialog.vue b/m78-all/m78-fe/src/views/probot/create/ConfigOptimizeDialog.vue new file mode 100644 index 000000000..ca30dbcfd --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/ConfigOptimizeDialog.vue @@ -0,0 +1,148 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/ContextForm.vue b/m78-all/m78-fe/src/views/probot/create/ContextForm.vue new file mode 100644 index 000000000..a540c42c1 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/ContextForm.vue @@ -0,0 +1,73 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/DatabaseForm.vue b/m78-all/m78-fe/src/views/probot/create/DatabaseForm.vue new file mode 100644 index 000000000..52cd749a1 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/DatabaseForm.vue @@ -0,0 +1,171 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/FlowForm.vue b/m78-all/m78-fe/src/views/probot/create/FlowForm.vue new file mode 100644 index 000000000..dff7e6052 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/FlowForm.vue @@ -0,0 +1,281 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/HeadForm.vue b/m78-all/m78-fe/src/views/probot/create/HeadForm.vue new file mode 100644 index 000000000..cbd2fb759 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/HeadForm.vue @@ -0,0 +1,158 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/History.vue b/m78-all/m78-fe/src/views/probot/create/History.vue new file mode 100644 index 000000000..c6a9d93f6 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/History.vue @@ -0,0 +1,41 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/TaskForm.vue b/m78-all/m78-fe/src/views/probot/create/TaskForm.vue new file mode 100644 index 000000000..4f8aff1b1 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/TaskForm.vue @@ -0,0 +1,187 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/create/index.vue b/m78-all/m78-fe/src/views/probot/create/index.vue new file mode 100644 index 000000000..6e2799d7f --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/create/index.vue @@ -0,0 +1,385 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/index.vue b/m78-all/m78-fe/src/views/probot/index.vue new file mode 100644 index 000000000..03c820859 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/index.vue @@ -0,0 +1,192 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/MySpaceHead.vue b/m78-all/m78-fe/src/views/probot/my-space/MySpaceHead.vue new file mode 100644 index 000000000..37529575b --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/MySpaceHead.vue @@ -0,0 +1,171 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/TransferUser.vue b/m78-all/m78-fe/src/views/probot/my-space/TransferUser.vue new file mode 100644 index 000000000..1f6bd68fb --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/TransferUser.vue @@ -0,0 +1,130 @@ + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/User/EditUser.vue b/m78-all/m78-fe/src/views/probot/my-space/User/EditUser.vue new file mode 100644 index 000000000..3331da908 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/User/EditUser.vue @@ -0,0 +1,193 @@ + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/User/UserList.vue b/m78-all/m78-fe/src/views/probot/my-space/User/UserList.vue new file mode 100644 index 000000000..20d485121 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/User/UserList.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/User/interface.ts b/m78-all/m78-fe/src/views/probot/my-space/User/interface.ts new file mode 100644 index 000000000..530c63f50 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/User/interface.ts @@ -0,0 +1,6 @@ +export enum ERole { + super = 999, + creator = 2, + manager = 1, + member = 0 +} diff --git a/m78-all/m78-fe/src/views/probot/my-space/index.vue b/m78-all/m78-fe/src/views/probot/my-space/index.vue new file mode 100644 index 000000000..3c33c3b28 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/index.vue @@ -0,0 +1,38 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/index.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/index.vue new file mode 100644 index 000000000..91bf4a987 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/index.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/knowledgeDialog.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/knowledgeDialog.vue new file mode 100644 index 000000000..3cdbcbfaf --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/knowledgeDialog.vue @@ -0,0 +1,316 @@ + + + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/Ask.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/Ask.vue new file mode 100644 index 000000000..c78912ed6 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/Ask.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/EditDrawer.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/EditDrawer.vue new file mode 100644 index 000000000..0c3c176ea --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/EditDrawer.vue @@ -0,0 +1,266 @@ + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/File.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/File.vue new file mode 100644 index 000000000..901bf7a09 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/File.vue @@ -0,0 +1,347 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/TableList.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/TableList.vue new file mode 100644 index 000000000..1b5001006 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/TableList.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/index.vue b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/index.vue new file mode 100644 index 000000000..f954d1fb0 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/manage/index.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/knowledge/remove.ts b/m78-all/m78-fe/src/views/probot/my-space/knowledge/remove.ts new file mode 100644 index 000000000..bd103b981 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/knowledge/remove.ts @@ -0,0 +1,28 @@ +/* + * @Description: + * @Date: 2024-03-20 16:33:45 + * @LastEditTime: 2024-03-23 15:51:57 + */ +import { ElMessage, ElMessageBox } from 'element-plus' +import { t } from '@/locales' +import { deleteApi } from '@/api/probot-knowledge' + +export default (row: any, callback: () => void) => { + ElMessageBox.confirm(t('common.confirmDel'), 'Warning', { + type: 'warning', + confirmButtonText: t('common.yes'), + cancelButtonText: t('common.no'), + title: t('common.delete') + }).then(async () => { + deleteApi({ + id: row.id + }).then((res) => { + if (res.code === 0) { + ElMessage.success('删除成功') + callback && callback() + } else { + ElMessage.error(res.message) + } + }) + }) +} diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/EditPlugin.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/EditPlugin.vue new file mode 100644 index 000000000..dd7435845 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/EditPlugin.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/EditPluginGroup.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/EditPluginGroup.vue new file mode 100644 index 000000000..f2b17a485 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/EditPluginGroup.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/TableList.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/TableList.vue new file mode 100644 index 000000000..5d834d9f1 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/TableList.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/constants.ts b/m78-all/m78-fe/src/views/probot/my-space/plugins/constants.ts new file mode 100644 index 000000000..0f9035664 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/constants.ts @@ -0,0 +1,153 @@ +import { t } from '@/locales' + +const createEnum = ( + arr: Array<{ + value: T1 + key: T2 + label: T3 + }> +): { + values: Array + keys: Array + labels: Array + getEnum: ( + value: T1 | T2 | T3, + type: 'value' | 'key' | 'label' + ) => { + value: T1 + key: T2 + label: T3 + } +} => { + return { + values: arr.map((v) => v.value), + keys: arr.map((v) => v.key), + labels: arr.map((v) => v.label), + getEnum(value, type) { + let index + switch (type) { + case 'value': + index = this.values.indexOf(value as T1) + break + case 'key': + index = this.keys.indexOf(value as T2) + break + case 'label': + index = this.labels.indexOf(value as T3) + break + default: + break + } + if (index === undefined || index === null) { + return { + key: '' as T2, + label: '' as T3, + value: undefined as T1 + } + } + return { + key: this.keys[index], + label: this.labels[index], + value: this.values[index] + } + } + } +} +/** + * 插件 + */ +export const E_PLUGIN = createEnum([ + { + value: 0, + key: 'PUB', + label: t('plugin.published') + }, + { + value: 1, + key: 'CANCEL', + label: t('plugin.unpublished') + } +]) + +/** + * 组件 + */ +export const E_COMP = createEnum([ + { + value: 0, + key: 'ENABLED', + label: t('plugin.enable') + }, + { + value: 1, + key: 'DISABLED', + label: t('plugin.unopened') + } +]) + +/** + * 组件调试状态 + */ +export const E_DEBUG = createEnum([ + { + value: 0, + key: 'UNTESTED', + label: t('plugin.notDebugged') + }, + { + value: 1, + key: 'TEST_SUCCESS', + label: t('plugin.debuggingSuccessful') + }, + { + value: 2, + key: 'TEST_FAILED', + label: t('plugin.debuggingFailed') + } +]) + +export const METHOD_LIST = { + post: '0', + get: '1', + put: '2', + delete: '3', + head: '4', + opts: '5', + patch: '6' +} + +export const HEADER = [ + 'Accept', + 'Accept-Charset', + 'Accept-Encoding', + 'Accept-Language', + 'Accept-Ranges', + 'Authorization', + 'Cache-Control', + 'Connection', + 'Cookie', + 'Content-Length', + 'Content-Type', + 'Content-MD5', + 'Date', + 'Expect', + 'From', + 'Host', + 'If-Match', + 'If-Modified-Since', + 'If-None-Match', + 'If-Range', + 'If-Unmodified-Since', + 'Max-Forwards', + 'Origin', + 'Pragma', + 'Proxy-Authorization', + 'Range', + 'Referer', + 'TE', + 'Upgrade', + 'User-Agent', + 'Via', + 'Warning', + 'X-User-Agent' +] diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/index.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/index.vue new file mode 100644 index 000000000..0d5859b44 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Debug.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Debug.vue new file mode 100644 index 000000000..f3a2200d3 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Debug.vue @@ -0,0 +1,211 @@ + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/DebugDawer.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/DebugDawer.vue new file mode 100644 index 000000000..39ef08075 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/DebugDawer.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/EditComp.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/EditComp.vue new file mode 100644 index 000000000..e3353eca5 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/EditComp.vue @@ -0,0 +1,435 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Headers.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Headers.vue new file mode 100644 index 000000000..a6233ee73 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Headers.vue @@ -0,0 +1,105 @@ + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Params.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Params.vue new file mode 100644 index 000000000..c0edac4fa --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Params.vue @@ -0,0 +1,86 @@ + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Steps.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Steps.vue new file mode 100644 index 000000000..d1ace55a8 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/Steps.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/TableList.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/TableList.vue new file mode 100644 index 000000000..1ca433d09 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/TableList.vue @@ -0,0 +1,180 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/plugins/list/index.vue b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/index.vue new file mode 100644 index 000000000..47208293d --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/plugins/list/index.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/probots/index.vue b/m78-all/m78-fe/src/views/probot/my-space/probots/index.vue new file mode 100644 index 000000000..ea26cb7ea --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/probots/index.vue @@ -0,0 +1,347 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/my-space/tabs.vue b/m78-all/m78-fe/src/views/probot/my-space/tabs.vue new file mode 100644 index 000000000..522150928 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/my-space/tabs.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/probot/visit/More.vue b/m78-all/m78-fe/src/views/probot/visit/More.vue new file mode 100644 index 000000000..920ce83cb --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/visit/More.vue @@ -0,0 +1,164 @@ + + + + + + + + diff --git a/m78-all/m78-fe/src/views/probot/visit/index.vue b/m78-all/m78-fe/src/views/probot/visit/index.vue new file mode 100644 index 000000000..8ac463411 --- /dev/null +++ b/m78-all/m78-fe/src/views/probot/visit/index.vue @@ -0,0 +1,268 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/ChatList.vue b/m78-all/m78-fe/src/views/translate/components/ChatList.vue new file mode 100644 index 000000000..25367e27c --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/ChatList.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/FavoriteBtn.vue b/m78-all/m78-fe/src/views/translate/components/FavoriteBtn.vue new file mode 100644 index 000000000..a928f5252 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/FavoriteBtn.vue @@ -0,0 +1,29 @@ + + + diff --git a/m78-all/m78-fe/src/views/translate/components/HistoryTable.vue b/m78-all/m78-fe/src/views/translate/components/HistoryTable.vue new file mode 100644 index 000000000..0f3d183fa --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/HistoryTable.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/InputBox.vue b/m78-all/m78-fe/src/views/translate/components/InputBox.vue new file mode 100644 index 000000000..56bf7ce77 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/InputBox.vue @@ -0,0 +1,560 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/Lang.vue b/m78-all/m78-fe/src/views/translate/components/Lang.vue new file mode 100644 index 000000000..d09b4d412 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/Lang.vue @@ -0,0 +1,189 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/LangMenu.vue b/m78-all/m78-fe/src/views/translate/components/LangMenu.vue new file mode 100644 index 000000000..5bb48b487 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/LangMenu.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/LangSelect.vue b/m78-all/m78-fe/src/views/translate/components/LangSelect.vue new file mode 100644 index 000000000..61d8b4999 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/LangSelect.vue @@ -0,0 +1,113 @@ + + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/TranslateDoc.vue b/m78-all/m78-fe/src/views/translate/components/TranslateDoc.vue new file mode 100644 index 000000000..50b8d2e2b --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/TranslateDoc.vue @@ -0,0 +1,120 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/TranslateFile.vue b/m78-all/m78-fe/src/views/translate/components/TranslateFile.vue new file mode 100644 index 000000000..a6fb48cd0 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/TranslateFile.vue @@ -0,0 +1,138 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/TranslateImage.vue b/m78-all/m78-fe/src/views/translate/components/TranslateImage.vue new file mode 100644 index 000000000..3b1ecc6ba --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/TranslateImage.vue @@ -0,0 +1,136 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/TranslateText.vue b/m78-all/m78-fe/src/views/translate/components/TranslateText.vue new file mode 100644 index 000000000..34636eacf --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/TranslateText.vue @@ -0,0 +1,10 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/TranslateWeb.vue b/m78-all/m78-fe/src/views/translate/components/TranslateWeb.vue new file mode 100644 index 000000000..8c6e71e0b --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/TranslateWeb.vue @@ -0,0 +1,10 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/TranslationStyle.vue b/m78-all/m78-fe/src/views/translate/components/TranslationStyle.vue new file mode 100644 index 000000000..4fb262c2a --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/TranslationStyle.vue @@ -0,0 +1,85 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/translate/components/langEn.ts b/m78-all/m78-fe/src/views/translate/components/langEn.ts new file mode 100644 index 000000000..a0613ab22 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/langEn.ts @@ -0,0 +1,140 @@ +/* + * @Description: + * @Date: 2024-01-22 19:42:57 + * @LastEditTime: 2024-01-23 00:09:17 + */ +export default [ + 'English', + 'Chinese (Simplified)', + 'Albanian', + 'Arabic', + 'Amharic', + 'Assamese language', + 'Azerbaijani', + 'Evian', + 'Aymara language', + 'Irish', + 'Estonian language', + 'Olya language', + 'Oromo language', + 'Basque language', + 'Belarusian', + 'Bambara language', + 'Bulgarian language', + 'Icelandic', + 'Polish', + 'Bosnian', + 'Persian', + 'Bojepur language', + 'Boer (South African Dutch)', + 'Tatar language', + 'Danish', + 'German', + 'Divish language', + 'Tignian language', + 'Duogelai language', + 'Russian', + 'French', + 'Sanskrit', + 'Filipino language', + 'Finnish', + 'Frisian', + 'Khmer language', + 'Georgian', + 'Gonggen language', + 'Gujarati language', + 'Guarani language', + 'Kazakh language', + 'Haitian Creole', + 'Korean', + 'Hausa language', + 'Dutch', + 'Kyrgyz language', + 'Galician language', + 'Catalan', + 'Czech', + 'Kannada language', + 'Corsican language', + 'Creole language', + 'Croatian', + 'Kechua language', + 'Kurdish (Kurmanji language)', + 'Kurdish (Sorani)', + 'Latin', + 'Latvian language', + 'Laotian', + 'Lithuanian language', + 'Lingla language', + 'Luganda language', + 'Luxembourg language', + 'Rwandan', + 'Romanian', + 'Margash language', + 'Maltese language', + 'Marathi language', + 'Malayalam language', + 'Malay', + 'Macedonian', + 'Matili language', + 'Maori language', + 'Mehtai (Manipur)', + 'Mongolian', + 'Bengali', + 'Mizo language', + 'Burmese', + 'Miao language', + 'South African Cosa language', + 'South African Zulu language', + 'Nepali', + 'Norwegian', + 'Punjabi language', + 'Portuguese', + 'Pashto language', + 'Zicheva language', + 'Qiwei language', + 'Japanese', + 'Swedish', + 'Samoan language', + 'Serbian', + 'Sepeti language', + 'Sesoto language', + 'Sinhalese', + 'Esperanto', + 'Slovak', + 'Slovenian language', + 'Swahili', + 'Scottish Gaelic', + 'Cebu language', + 'Somali', + 'Tajik', + 'Telugu language', + 'Tamil', + 'Thai', + 'Turkish', + 'Turkmen language', + 'Welsh', + 'Uyghur language', + 'Urdu language', + 'Ukrainian', + 'Uzbek language', + 'Spanish', + 'Hebrew', + 'Greek', + 'Hawaiian language', + 'Believe in German', + 'Hungarian', + 'Xiuna language', + 'Armenian', + 'Ibo language', + 'Ilocano language', + 'Italian', + 'Yiddish language', + 'Hindi', + 'Indonesian Sundanese', + 'Indonesian', + 'Indonesian Javanese', + 'Yoruba language', + 'Vietnamese', + 'Chinese (Traditional)', + 'Zongjia language' +] diff --git a/m78-all/m78-fe/src/views/translate/components/langZh.ts b/m78-all/m78-fe/src/views/translate/components/langZh.ts new file mode 100644 index 000000000..40a4869a5 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/components/langZh.ts @@ -0,0 +1,140 @@ +/* + * @Description: + * @Date: 2024-01-22 19:42:57 + * @LastEditTime: 2024-01-22 20:04:35 + */ +export default [ + '英语', + '中文(简体)', + '阿尔巴尼亚语', + '阿拉伯语', + '阿姆哈拉语', + '阿萨姆语', + '阿塞拜疆语', + '埃维语', + '艾马拉语', + '爱尔兰语', + '爱沙尼亚语', + '奥利亚语', + '奥罗莫语', + '巴斯克语', + '白俄罗斯语', + '班巴拉语', + '保加利亚语', + '冰岛语', + '波兰语', + '波斯尼亚语', + '波斯语', + '博杰普尔语', + '布尔语(南非荷兰语)', + '鞑靼语', + '丹麦语', + '德语', + '迪维希语', + '蒂格尼亚语', + '多格来语', + '俄语', + '法语', + '梵语', + '菲律宾语', + '芬兰语', + '弗里西语', + '高棉语', + '格鲁吉亚语', + '贡根语', + '古吉拉特语', + '瓜拉尼语', + '哈萨克语', + '海地克里奥尔语', + '韩语', + '豪萨语', + '荷兰语', + '吉尔吉斯语', + '加利西亚语', + '加泰罗尼亚语', + '捷克语', + '卡纳达语', + '科西嘉语', + '克里奥尔语', + '克罗地亚语', + '克丘亚语', + '库尔德语(库尔曼吉语)', + '库尔德语(索拉尼)', + '拉丁语', + '拉脱维亚语', + '老挝语', + '立陶宛语', + '林格拉语', + '卢干达语', + '卢森堡语', + '卢旺达语', + '罗马尼亚语', + '马尔加什语', + '马耳他语', + '马拉地语', + '马拉雅拉姆语', + '马来语', + '马其顿语', + '迈蒂利语', + '毛利语', + '梅泰语(曼尼普尔语)', + '蒙古语', + '孟加拉语', + '米佐语', + '缅甸语', + '苗语', + '南非科萨语', + '南非祖鲁语', + '尼泊尔语', + '挪威语', + '旁遮普语', + '葡萄牙语', + '普什图语', + '齐切瓦语', + '契维语', + '日语', + '瑞典语', + '萨摩亚语', + '塞尔维亚语', + '塞佩蒂语', + '塞索托语', + '僧伽罗语', + '世界语', + '斯洛伐克语', + '斯洛文尼亚语', + '斯瓦希里语', + '苏格兰盖尔语', + '宿务语', + '索马里语', + '塔吉克语', + '泰卢固语', + '泰米尔语', + '泰语', + '土耳其语', + '土库曼语', + '威尔士语', + '维吾尔语', + '乌尔都语', + '乌克兰语', + '乌兹别克语', + '西班牙语', + '希伯来语', + '希腊语', + '夏威夷语', + '信德语', + '匈牙利语', + '修纳语', + '亚美尼亚语', + '伊博语', + '伊洛卡诺语', + '意大利语', + '意第绪语', + '印地语', + '印尼巽他语', + '印尼语', + '印尼爪哇语', + '约鲁巴语', + '越南语', + '中文(繁体)', + '宗加语' +] diff --git a/m78-all/m78-fe/src/views/translate/index.vue b/m78-all/m78-fe/src/views/translate/index.vue new file mode 100644 index 000000000..80a7cf310 --- /dev/null +++ b/m78-all/m78-fe/src/views/translate/index.vue @@ -0,0 +1,325 @@ + + + + + + diff --git a/m78-all/m78-fe/src/views/websocket/index.vue b/m78-all/m78-fe/src/views/websocket/index.vue new file mode 100644 index 000000000..04026f062 --- /dev/null +++ b/m78-all/m78-fe/src/views/websocket/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/m78-all/m78-fe/src/views/word/index.vue b/m78-all/m78-fe/src/views/word/index.vue new file mode 100644 index 000000000..fe0e35294 --- /dev/null +++ b/m78-all/m78-fe/src/views/word/index.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow-list/CreateFlow.vue b/m78-all/m78-fe/src/views/workflow-list/CreateFlow.vue new file mode 100644 index 000000000..7ab398867 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow-list/CreateFlow.vue @@ -0,0 +1,141 @@ + + + diff --git a/m78-all/m78-fe/src/views/workflow-list/components/StatusSel.vue b/m78-all/m78-fe/src/views/workflow-list/components/StatusSel.vue new file mode 100644 index 000000000..1a2c9a53e --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow-list/components/StatusSel.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow-list/index.vue b/m78-all/m78-fe/src/views/workflow-list/index.vue new file mode 100644 index 000000000..9b50e315e --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow-list/index.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/components/Header.vue b/m78-all/m78-fe/src/views/workflow/components/Header.vue new file mode 100644 index 000000000..1e08d45eb --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/components/Header.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/components/NodeTem.vue b/m78-all/m78-fe/src/views/workflow/components/NodeTem.vue new file mode 100644 index 000000000..b0e13a123 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/components/NodeTem.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/components/PluginItem.vue b/m78-all/m78-fe/src/views/workflow/components/PluginItem.vue new file mode 100644 index 000000000..9e8cffd78 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/components/PluginItem.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/components/Sidebar.vue b/m78-all/m78-fe/src/views/workflow/components/Sidebar.vue new file mode 100644 index 000000000..6ee7fc55f --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/components/Sidebar.vue @@ -0,0 +1,141 @@ + + + diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-Code.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-Code.png new file mode 100644 index 000000000..00ef4626b Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-Code.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-Condition.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-Condition.png new file mode 100644 index 000000000..4ccb858ee Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-Condition.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-End.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-End.png new file mode 100644 index 000000000..f6962285a Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-End.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-Knowledge.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-Knowledge.png new file mode 100644 index 000000000..0784c87ec Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-Knowledge.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-LLM.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-LLM.png new file mode 100644 index 000000000..10f957a64 Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-LLM.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-Start.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-Start.png new file mode 100644 index 000000000..ef0e58658 Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-Start.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/icon-plugin.png b/m78-all/m78-fe/src/views/workflow/imgs/icon-plugin.png new file mode 100644 index 000000000..ae6cb3960 Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/icon-plugin.png differ diff --git a/m78-all/m78-fe/src/views/workflow/imgs/workflow.png b/m78-all/m78-fe/src/views/workflow/imgs/workflow.png new file mode 100644 index 000000000..de6f6d2b6 Binary files /dev/null and b/m78-all/m78-fe/src/views/workflow/imgs/workflow.png differ diff --git a/m78-all/m78-fe/src/views/workflow/index.vue b/m78-all/m78-fe/src/views/workflow/index.vue new file mode 100644 index 000000000..5df55d2dd --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/index.vue @@ -0,0 +1,1136 @@ + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/DropzoneBackground.vue b/m78-all/m78-fe/src/views/workflow/work-flow/DropzoneBackground.vue new file mode 100644 index 000000000..0abd35cd4 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/DropzoneBackground.vue @@ -0,0 +1,11 @@ + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/Icon.vue b/m78-all/m78-fe/src/views/workflow/work-flow/Icon.vue new file mode 100644 index 000000000..14e1ad3f0 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/Icon.vue @@ -0,0 +1,40 @@ + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/NodeItemNew.vue b/m78-all/m78-fe/src/views/workflow/work-flow/NodeItemNew.vue new file mode 100644 index 000000000..d0840535a --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/NodeItemNew.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/NodeItemSon.vue b/m78-all/m78-fe/src/views/workflow/work-flow/NodeItemSon.vue new file mode 100644 index 000000000..f9ea616af --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/NodeItemSon.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/baseInfo.js b/m78-all/m78-fe/src/views/workflow/work-flow/baseInfo.js new file mode 100644 index 000000000..a378b929b --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/baseInfo.js @@ -0,0 +1,182 @@ +import LLMImg from '../imgs/icon-LLM.png' +import CodeImg from '../imgs/icon-Code.png' +import KnowledgeImg from '../imgs/icon-Knowledge.png' +import ConditionImg from '../imgs/icon-Condition.png' +import StartImg from '../imgs/icon-Start.png' +import EndImg from '../imgs/icon-End.png' +import PluginImg from '../imgs/icon-plugin.png' +const returnSpotPostion = (nodeId) => { + const startNode = document.getElementById(nodeId) + const startNodeH = startNode.offsetHeight + const startNodeW = startNode.offsetWidth + const startTransform = startNode.style.transform + const numStr = startTransform + .replace(/translate\(/g, '') + .replace(/\)/g, '') + .replace(/px/g, '') + const startArr = numStr.split(',').map((item) => Number(item)) + const spotsY = startArr[1] + startNodeH / 2 + const spots = { + left: { + x: startArr[0], + y: spotsY + }, + right: { + x: startArr[0] + startNodeW, + y: spotsY + } + } + return spots +} +const validateRef = (rule, value, callback, curObj) => { + const { referenceInfo, type } = curObj + if (type == 'reference' && (!referenceInfo || (referenceInfo && referenceInfo.length == 0))) { + callback(new Error('参数值不可为空')) + } else if (type == 'value' && !curObj.value) { + callback(new Error('参数值不可为空')) + } else { + callback() + } +} + +const validateRef2 = (rule, value, callback, curObj) => { + const { referenceInfo2, type2 } = curObj + if (type2 == 'reference' && (!referenceInfo2 || (referenceInfo2 && referenceInfo2.length == 0))) { + callback(new Error('参数值不可为空')) + } else if (type2 == 'value' && !curObj.value2) { + callback(new Error('参数值不可为空')) + } else { + callback() + } +} + +const validPName = (rule, value, callback, arr) => { + const reg = /^[a-zA-Z_]([a-zA-Z0-9_]+)?$/ + if (!value) { + callback(new Error('参数名不可为空')) + } else if (!reg.test(value)) { + callback(new Error('以字母或下划线开头且仅包含字母,数字,下划线')) + } else { + const newA = arr || [] + const names = newA.map((item) => item.name) + const newL = new Set(names).size + const preL = newA.length + if (newL != preL) { + callback(new Error('参数不可重复!')) + } else { + callback() + } + } +} +// type 用户后端传值 +const nodesBase = { + llm: { + type: 'llm', + width: 500, + imgSrc: LLMImg, + title: '大模型', + desc: '调用大语言模型,使用变量和提示词生成回复' + }, + code: { + type: 'code', + width: 500, + imgSrc: CodeImg, + title: '代码', + desc: '编写代码,处理输入变量来生成返回值' + }, + plugin: { + type: 'plugin', + width: 500, + imgSrc: PluginImg, + title: '插件', + desc: '填写输入输出参数' + }, + precondition: { + type: 'precondition', + width: 600, + imgSrc: ConditionImg, + title: '选择器', + desc: '连接两个上下游分支,如果设定的条件成立则只运行“如果”分支,不成立则只运行否定分支' + }, + knowledge: { + type: 'knowledge', + width: 420, + imgSrc: KnowledgeImg, + title: '知识库', + desc: '在选定的知识中,根据输入变量召回最匹配的信息,并以列表形式返回' + }, + begin: { + type: 'begin', + width: 320, + imgSrc: StartImg, + title: '开始', + desc: '工作流的起始节点,用于设定启动工作流需要的信息' + }, + end: { + type: 'end', + width: 470, + imgSrc: EndImg, + title: '结束', + desc: '工作流的最终节点,用于返回工作流运行后的结果信息' + }, + nodeif: { + type: 'nodeif', + width: 470, + imgSrc: StartImg, + title: 'IF', + desc: '条件-if' + }, + nodeelse: { + type: 'nodeelse', + width: 470, + imgSrc: StartImg, + title: 'ELSE', + desc: '条件-else' + } +} +const knowledgeTree = [ + { + value: 'outputList', + label: 'outputList', + desc: 'Array', + children: [ + { + value: 'output', + label: 'output', + desc: 'String' + } + ] + } +] + +const opList = [ + { + value: 'EQUALS', + label: '等于' + }, + { + value: 'NOT_EQUALS', + label: '不等于' + }, + { + value: 'GREATER_THAN', + label: '大于' + }, + { + label: '小于', + value: 'LESS_THAN' + }, + { + label: '包含', + value: 'CONTAINS' + } +] +export { + returnSpotPostion, + nodesBase, + validateRef, + validateRef2, + validPName, + knowledgeTree, + opList +} diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/Code.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/Code.vue new file mode 100644 index 000000000..b9f32e3e2 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/Code.vue @@ -0,0 +1,491 @@ + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/Condition.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/Condition.vue new file mode 100644 index 000000000..77449ee72 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/Condition.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/Desc.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/Desc.vue new file mode 100644 index 000000000..37c92a95c --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/Desc.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/End.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/End.vue new file mode 100644 index 000000000..4c72b9452 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/End.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/Knowledge.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/Knowledge.vue new file mode 100644 index 000000000..9e928a771 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/Knowledge.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/LLM.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/LLM.vue new file mode 100644 index 000000000..4f915e0ee --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/LLM.vue @@ -0,0 +1,558 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeDrop.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeDrop.vue new file mode 100644 index 000000000..05fc6fd62 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeDrop.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeElse.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeElse.vue new file mode 100644 index 000000000..8a645e67e --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeElse.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeIf.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeIf.vue new file mode 100644 index 000000000..6d54c4846 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/NodeIf.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/Plugin.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/Plugin.vue new file mode 100644 index 000000000..4f08b5cbc --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/Plugin.vue @@ -0,0 +1,300 @@ + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/RunDrawer.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/RunDrawer.vue new file mode 100644 index 000000000..c6a8283fc --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/RunDrawer.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/Start.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/Start.vue new file mode 100644 index 000000000..ac624c0b0 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/Start.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/StatusDiv.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/StatusDiv.vue new file mode 100644 index 000000000..4db93b0eb --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/StatusDiv.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/TitleTooltip.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/TitleTooltip.vue new file mode 100644 index 000000000..959be0770 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/TitleTooltip.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/AnswerModelSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/AnswerModelSel.vue new file mode 100644 index 000000000..bcf84fc25 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/AnswerModelSel.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/BatchResItem.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/BatchResItem.vue new file mode 100644 index 000000000..e8c5fe2ef --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/BatchResItem.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/BatchResult.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/BatchResult.vue new file mode 100644 index 000000000..1210bc67e --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/BatchResult.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CodeEditor.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CodeEditor.vue new file mode 100644 index 000000000..32f7e00e6 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CodeEditor.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CodeGenerator.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CodeGenerator.vue new file mode 100644 index 000000000..3d221bc0d --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CodeGenerator.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ConditionLabelSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ConditionLabelSel.vue new file mode 100644 index 000000000..daabf6c91 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ConditionLabelSel.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ConditionsSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ConditionsSel.vue new file mode 100644 index 000000000..c84c52ff5 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ConditionsSel.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CopyBtn.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CopyBtn.vue new file mode 100644 index 000000000..4d6c950a0 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/CopyBtn.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/KnowledgeSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/KnowledgeSel.vue new file mode 100644 index 000000000..fdc2f3300 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/KnowledgeSel.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/LLMBatchSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/LLMBatchSel.vue new file mode 100644 index 000000000..c14ff18dc --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/LLMBatchSel.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/LLMOutputsTypeSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/LLMOutputsTypeSel.vue new file mode 100644 index 000000000..399b6756b --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/LLMOutputsTypeSel.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/OutputTypeSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/OutputTypeSel.vue new file mode 100644 index 000000000..2c1d9a5bd --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/OutputTypeSel.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCas.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCas.vue new file mode 100644 index 000000000..eb7d1039a --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCas.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCasBatch.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCasBatch.vue new file mode 100644 index 000000000..8a7f0053f --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCasBatch.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCasLLM.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCasLLM.vue new file mode 100644 index 000000000..e68fc03d0 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/QuotaCasLLM.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ResultPop.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ResultPop.vue new file mode 100644 index 000000000..74cf47f64 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/ResultPop.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/SearchStrategySel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/SearchStrategySel.vue new file mode 100644 index 000000000..1b6557aab --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/SearchStrategySel.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusError.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusError.vue new file mode 100644 index 000000000..e8ed31258 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusError.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusInputs.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusInputs.vue new file mode 100644 index 000000000..4445f97ab --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusInputs.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusOutputs.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusOutputs.vue new file mode 100644 index 000000000..e9bbb83f2 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/StatusOutputs.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/VariateTypeSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/VariateTypeSel.vue new file mode 100644 index 000000000..70445eaee --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/VariateTypeSel.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/workflow/work-flow/components/components/referTreeSel.vue b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/referTreeSel.vue new file mode 100644 index 000000000..861e693d4 --- /dev/null +++ b/m78-all/m78-fe/src/views/workflow/work-flow/components/components/referTreeSel.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/xlsx/index.vue b/m78-all/m78-fe/src/views/xlsx/index.vue new file mode 100644 index 000000000..a05d03923 --- /dev/null +++ b/m78-all/m78-fe/src/views/xlsx/index.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/m78-all/m78-fe/src/views/xlsx/xlsxspread.ts b/m78-all/m78-fe/src/views/xlsx/xlsxspread.ts new file mode 100644 index 000000000..e19346cf7 --- /dev/null +++ b/m78-all/m78-fe/src/views/xlsx/xlsxspread.ts @@ -0,0 +1,137 @@ +/*! xlsxspread.js (C) SheetJS LLC -- https://sheetjs.com/ */ +/* eslint-env browser */ +/*global XLSX */ +/*exported stox, xtos */ + +/** + * Converts data from SheetJS to x-spreadsheet + * + * @param {Object} wb SheetJS workbook object + * + * @returns {Object[]} An x-spreadsheet data + */ +import * as XLSX from 'xlsx' + +export function stox(wb) { + const out = [] + console.log('wb', wb) + wb.SheetNames.forEach(function (name) { + const o = { name: name, rows: {} } + const ws = wb.Sheets[name] + console.log('ws', ws) + if (!ws || !ws['!ref']) return + const range = XLSX.utils.decode_range(ws['!ref']) + // sheet_to_json will lost empty row and col at begin as default + range.s = { r: 0, c: 0 } + const aoa = XLSX.utils.sheet_to_json(ws, { + raw: false, + header: 1, + range: range + }) + console.log('aoa', aoa) + aoa.forEach(function (r, i) { + const cells = {} + r.forEach(function (c, j) { + cells[j] = { text: c || String(c) } + + const cellRef = XLSX.utils.encode_cell({ r: i, c: j }) + + if (ws[cellRef] != null && ws[cellRef].f != null) { + cells[j].text = '=' + ws[cellRef].f + } + }) + o.rows[i] = { cells: cells } + }) + o.rows.len = aoa.length + + o.merges = [] + ;(ws['!merges'] || []).forEach(function (merge, i) { + //Needed to support merged cells with empty content + if (o.rows[merge.s.r] == null) { + o.rows[merge.s.r] = { cells: {} } + } + if (o.rows[merge.s.r].cells[merge.s.c] == null) { + o.rows[merge.s.r].cells[merge.s.c] = {} + } + + o.rows[merge.s.r].cells[merge.s.c].merge = [merge.e.r - merge.s.r, merge.e.c - merge.s.c] + + o.merges[i] = XLSX.utils.encode_range(merge) + }) + + out.push(o) + }) + + return out +} + +/** + * Converts data from x-spreadsheet to SheetJS + * + * @param {Object[]} sdata An x-spreadsheet data object + * + * @returns {Object} A SheetJS workbook object + */ +export function xtos(sdata) { + const out = XLSX.utils.book_new() + sdata.forEach(function (xws) { + const ws = {} + const rowobj = xws.rows + const minCoord = { r: 0, c: 0 }, + maxCoord = { r: 0, c: 0 } + for (var ri = 0; ri < rowobj.len; ++ri) { + var row = rowobj[ri] + if (!row) continue + + Object.keys(row.cells).forEach(function (k) { + const idx = +k + if (isNaN(idx)) return + + const lastRef = XLSX.utils.encode_cell({ r: ri, c: idx }) + if (ri > maxCoord.r) maxCoord.r = ri + if (idx > maxCoord.c) maxCoord.c = idx + + let cellText = row.cells[k].text, + type = 's' + if (!cellText) { + cellText = '' + type = 'z' + } else if (!isNaN(Number(cellText))) { + cellText = Number(cellText) + type = 'n' + } else if (cellText.toLowerCase() === 'true' || cellText.toLowerCase() === 'false') { + cellText = Boolean(cellText) + type = 'b' + } + + ws[lastRef] = { v: cellText, t: type } + + if (type == 's' && cellText[0] == '=') { + ws[lastRef].f = cellText.slice(1) + } + + if (row.cells[k].merge != null) { + if (ws['!merges'] == null) ws['!merges'] = [] + + ws['!merges'].push({ + s: { r: ri, c: idx }, + e: { + r: ri + row.cells[k].merge[0], + c: idx + row.cells[k].merge[1] + } + }) + } + }) + } + ws['!ref'] = minCoord + ? XLSX.utils.encode_range({ + s: minCoord, + e: maxCoord + }) + : 'A1' + + XLSX.utils.book_append_sheet(out, ws, xws.name) + }) + + return out +} diff --git a/m78-all/m78-fe/tsconfig.app.json b/m78-all/m78-fe/tsconfig.app.json new file mode 100644 index 000000000..6dc91862e --- /dev/null +++ b/m78-all/m78-fe/tsconfig.app.json @@ -0,0 +1,20 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": [ + "env.d.ts", + "src/**/*", + "src/**/*.vue", + "src/**/*.ts", + "src/**/*.d.ts", + "src/views/home/dynamic-bg" + ], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "baseUrl": ".", + "paths": { + "@/*": ["./src/*", "./src/composables/*"] + } + } +} diff --git a/m78-all/m78-fe/tsconfig.json b/m78-all/m78-fe/tsconfig.json new file mode 100644 index 000000000..431cb7f3e --- /dev/null +++ b/m78-all/m78-fe/tsconfig.json @@ -0,0 +1,14 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ], + "compilerOptions": { + "module": "ESNext" + } +} diff --git a/m78-all/m78-fe/tsconfig.node.json b/m78-all/m78-fe/tsconfig.node.json new file mode 100644 index 000000000..dee96bed4 --- /dev/null +++ b/m78-all/m78-fe/tsconfig.node.json @@ -0,0 +1,16 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/m78-all/m78-fe/vite.config.ts b/m78-all/m78-fe/vite.config.ts new file mode 100644 index 000000000..b27491fa1 --- /dev/null +++ b/m78-all/m78-fe/vite.config.ts @@ -0,0 +1,82 @@ +import { fileURLToPath, URL } from 'node:url' +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import moment from 'moment-timezone' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' + +import Unocss from 'unocss/vite' +import svgLoader from 'vite-svg-loader' +import { + presetAttributify, + presetIcons, + presetUno, + transformerDirectives, + transformerVariantGroup +} from 'unocss' + +const now = new Date() +const __APP_INFO__ = { + buildTime: moment(now).utc().tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss') +} +// https://vitejs.dev/config/ +export default defineConfig({ + base: '/', + plugins: [ + vue(), + svgLoader(), + vueJsx(), + Components({ + // allow auto load markdown components under `./src/components/` + extensions: ['vue', 'md'], + // allow auto import and register components used in markdown + include: [/\.vue$/, /\.vue\?vue/, /\.md$/], + resolvers: [ + ElementPlusResolver({ + importStyle: 'sass' + }) + ], + dts: 'src/components.d.ts' + }), + Unocss({ + presets: [ + presetUno(), + presetAttributify(), + presetIcons({ + scale: 1.2, + warn: true + }) + ], + transformers: [transformerDirectives(), transformerVariantGroup()] + }) + ], + server: { + host: '0.0.0.0', + proxy: { + '/api/': { + target: 'http://', + changeOrigin: true, + ws: true, + headers: {} + } + } + }, + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + // 忽略后缀名的配置选项, 添加 .vue 选项时要记得原本默认忽略的选项也要手动写入 + extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] + }, + css: { + preprocessorOptions: { + scss: { + additionalData: `@use "@/styles/element/index.scss" as *;` + } + } + }, + define: { + __APP_INFO__: JSON.stringify(__APP_INFO__) + } +})