diff --git a/src/generator/writers/writeFunction.ts b/src/generator/writers/writeFunction.ts index 2116c6a48..945d8af8d 100644 --- a/src/generator/writers/writeFunction.ts +++ b/src/generator/writers/writeFunction.ts @@ -97,6 +97,11 @@ export function writeStatement(f: ASTStatement, self: string | null, returns: Ty ctx.append(`${path} = ${writeCastedExpression(f.expression, t, ctx)};`); return; + } else if (f.kind === 'statement_augmentedassign') { + let path = f.path.map((v, i) => (i === 0) ? id(v.name) : v.name).join(`'`); + let t = getExpType(ctx.ctx, f.path[f.path.length - 1]); + ctx.append(`${path} = ${cast(t, t, `${path} ${f.op} ${writeExpression(f.expression, ctx)}`, ctx)};`); + return; } else if (f.kind === 'statement_condition') { writeCondition(f, self, false, returns, ctx); return; diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 0994d5a3a..66292b62a 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -2884,3 +2884,479 @@ exports[`grammar should parse case-26 1`] = ` "kind": "program", } `; + +exports[`grammar should parse case-27 1`] = ` +{ + "entries": [ + { + "args": [], + "attributes": [], + "id": 68, + "kind": "def_function", + "name": "testFunc", + "origin": "user", + "ref": fun testFunc(): Int { + let a: Int = 1; + let b: Int = 2; + a += b; + b += a; + a += 3; + a += b + 4; + b -= 1; + a -= b; + a -= b - 1; + b *= 2; + a *= b; + a *= b * 2; + b /= 2; + a /= b; + a /= b / 2; + a %= 2; + a %= b; + a %= b % 2; + return a; +}, + "return": { + "id": 1, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + "statements": [ + { + "expression": { + "id": 3, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 4, + "kind": "statement_let", + "name": "a", + "ref": let a: Int = 1;, + "type": { + "id": 2, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 6, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 7, + "kind": "statement_let", + "name": "b", + "ref": let b: Int = 2;, + "type": { + "id": 5, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 9, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 10, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 8, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a += b;, + }, + { + "expression": { + "id": 12, + "kind": "id", + "ref": a, + "value": "a", + }, + "id": 13, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 11, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b += a;, + }, + { + "expression": { + "id": 15, + "kind": "number", + "ref": 3, + "value": 3n, + }, + "id": 16, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 14, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a += 3;, + }, + { + "expression": { + "id": 20, + "kind": "op_binary", + "left": { + "id": 18, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "+", + "ref": b + 4, + "right": { + "id": 19, + "kind": "number", + "ref": 4, + "value": 4n, + }, + }, + "id": 21, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 17, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a += b + 4;, + }, + { + "expression": { + "id": 23, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 24, + "kind": "statement_augmentedassign", + "op": "-", + "path": [ + { + "id": 22, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b -= 1;, + }, + { + "expression": { + "id": 26, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 27, + "kind": "statement_augmentedassign", + "op": "-", + "path": [ + { + "id": 25, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a -= b;, + }, + { + "expression": { + "id": 31, + "kind": "op_binary", + "left": { + "id": 29, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "-", + "ref": b - 1, + "right": { + "id": 30, + "kind": "number", + "ref": 1, + "value": 1n, + }, + }, + "id": 32, + "kind": "statement_augmentedassign", + "op": "-", + "path": [ + { + "id": 28, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a -= b - 1;, + }, + { + "expression": { + "id": 34, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 35, + "kind": "statement_augmentedassign", + "op": "*", + "path": [ + { + "id": 33, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b *= 2;, + }, + { + "expression": { + "id": 37, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 38, + "kind": "statement_augmentedassign", + "op": "*", + "path": [ + { + "id": 36, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a *= b;, + }, + { + "expression": { + "id": 42, + "kind": "op_binary", + "left": { + "id": 40, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "*", + "ref": b * 2, + "right": { + "id": 41, + "kind": "number", + "ref": 2, + "value": 2n, + }, + }, + "id": 43, + "kind": "statement_augmentedassign", + "op": "*", + "path": [ + { + "id": 39, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a *= b * 2;, + }, + { + "expression": { + "id": 45, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 46, + "kind": "statement_augmentedassign", + "op": "/", + "path": [ + { + "id": 44, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b /= 2;, + }, + { + "expression": { + "id": 48, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 49, + "kind": "statement_augmentedassign", + "op": "/", + "path": [ + { + "id": 47, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a /= b;, + }, + { + "expression": { + "id": 53, + "kind": "op_binary", + "left": { + "id": 51, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "/", + "ref": b / 2, + "right": { + "id": 52, + "kind": "number", + "ref": 2, + "value": 2n, + }, + }, + "id": 54, + "kind": "statement_augmentedassign", + "op": "/", + "path": [ + { + "id": 50, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a /= b / 2;, + }, + { + "expression": { + "id": 56, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 57, + "kind": "statement_augmentedassign", + "op": "%", + "path": [ + { + "id": 55, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a %= 2;, + }, + { + "expression": { + "id": 59, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 60, + "kind": "statement_augmentedassign", + "op": "%", + "path": [ + { + "id": 58, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a %= b;, + }, + { + "expression": { + "id": 64, + "kind": "op_binary", + "left": { + "id": 62, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "%", + "ref": b % 2, + "right": { + "id": 63, + "kind": "number", + "ref": 2, + "value": 2n, + }, + }, + "id": 65, + "kind": "statement_augmentedassign", + "op": "%", + "path": [ + { + "id": 61, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a %= b % 2;, + }, + { + "expression": { + "id": 66, + "kind": "id", + "ref": a, + "value": "a", + }, + "id": 67, + "kind": "statement_return", + "ref": return a;, + }, + ], + }, + ], + "id": 69, + "kind": "program", +} +`; diff --git a/src/grammar/ast.ts b/src/grammar/ast.ts index f6175e043..e1e469f7a 100644 --- a/src/grammar/ast.ts +++ b/src/grammar/ast.ts @@ -374,6 +374,15 @@ export type ASTSTatementAssign = { ref: ASTRef } +export type ASTSTatementAugmentedAssign = { + kind: 'statement_augmentedassign', + id: number, + op: '+' | '-' | '*' | '/' | '%', + path: ASTLvalueRef[], + expression: ASTExpression, + ref: ASTRef +} + export type ASTCondition = { kind: 'statement_condition', id: number, @@ -413,9 +422,9 @@ export type ASTStatementRepeat = { // Unions // -export type ASTStatement = ASTStatementLet | ASTStatementReturn | ASTStatementExpression | ASTSTatementAssign | ASTCondition | ASTStatementWhile | ASTStatementUntil | ASTStatementRepeat; +export type ASTStatement = ASTStatementLet | ASTStatementReturn | ASTStatementExpression | ASTSTatementAssign | ASTSTatementAugmentedAssign | ASTCondition | ASTStatementWhile | ASTStatementUntil | ASTStatementRepeat; export type ASTExpression = ASTOpBinary | ASTOpUnary | ASTOpField | ASTNumber | ASTID | ASTBoolean | ASTOpCall | ASTOpCallStatic | ASTOpNew | ASTNull | ASTLvalueRef | ASTInitOf | ASTString; -export type ASTNode = ASTExpression | ASTProgram | ASTStruct | ASTField | ASTContract | ASTArgument | ASTFunction | ASTOpCall | ASTStatementLet | ASTStatementReturn | ASTProgram | ASTPrimitive | ASTOpCallStatic | ASTStatementExpression | ASTNativeFunction | ASTSTatementAssign | ASTOpNew | ASTNewParameter | ASTTypeRef | ASTNull | ASTCondition | ASTInitFunction | ASTStatementWhile | ASTStatementUntil | ASTStatementRepeat | ASTReceive | ASTLvalueRef | ASTString | ASTTrait | ASTProgramImport | ASTFunction | ASTNativeFunction | ASTInitOf | ASTString | ASTConstant; +export type ASTNode = ASTExpression | ASTProgram | ASTStruct | ASTField | ASTContract | ASTArgument | ASTFunction | ASTOpCall | ASTStatementLet | ASTStatementReturn | ASTProgram | ASTPrimitive | ASTOpCallStatic | ASTStatementExpression | ASTNativeFunction | ASTSTatementAssign | ASTSTatementAugmentedAssign | ASTOpNew | ASTNewParameter | ASTTypeRef | ASTNull | ASTCondition | ASTInitFunction | ASTStatementWhile | ASTStatementUntil | ASTStatementRepeat | ASTReceive | ASTLvalueRef | ASTString | ASTTrait | ASTProgramImport | ASTFunction | ASTNativeFunction | ASTInitOf | ASTString | ASTConstant; export type ASTType = ASTPrimitive | ASTStruct | ASTContract | ASTTrait; type DistributiveOmit = T extends any @@ -552,6 +561,12 @@ export function traverse(node: ASTNode, callback: (node: ASTNode) => void) { } traverse(node.expression, callback); } + if (node.kind === 'statement_augmentedassign') { + for (let e of node.path) { + traverse(e, callback); + } + traverse(node.expression, callback); + } if (node.kind === 'statement_condition') { traverse(node.expression, callback); for (let e of node.trueStatements) { diff --git a/src/grammar/clone.ts b/src/grammar/clone.ts index 14f5807b1..a9a4f8d3a 100644 --- a/src/grammar/clone.ts +++ b/src/grammar/clone.ts @@ -19,6 +19,12 @@ export function cloneNode(src: T): T { path: src.path.map(cloneNode), expression: cloneNode(src.expression), }); + } else if (src.kind === 'statement_augmentedassign') { + return cloneASTNode({ + ...src, + path: src.path.map(cloneNode), + expression: cloneNode(src.expression), + }); } else if (src.kind === 'statement_let') { return cloneASTNode({ ...src, diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index ee7f81c77..808435447 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -92,6 +92,7 @@ Tact { | StatementReturn | StatementExpression | StatementAssign + | StatementAugmentedAssign | StatementCondition | StatementWhile | StatementRepeat @@ -102,6 +103,16 @@ Tact { | return ";" --withoutExpression StatementExpression = Expression ";" StatementAssign = LValue "=" Expression ";" + StatementAugmentedAssign = StatementAugmentedAssignAdd + | StatementAugmentedAssignSub + | StatementAugmentedAssignMul + | StatementAugmentedAssignDiv + | StatementAugmentedAssignRem + StatementAugmentedAssignAdd = LValue "+=" Expression ";" + StatementAugmentedAssignSub = LValue "-=" Expression ";" + StatementAugmentedAssignMul = LValue "*=" Expression ";" + StatementAugmentedAssignDiv = LValue "/=" Expression ";" + StatementAugmentedAssignRem = LValue "%=" Expression ";" StatementCondition = if Expression "{" Statement* "}" ~else --simple | if Expression "{" Statement* "}" else "{" Statement* "}" --withElse | if Expression "{" Statement* "}" else StatementCondition --withElseIf diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 019ab38b5..c52fc9422 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -83,6 +83,12 @@ export interface TactActionDict extends ActionDict { StatementReturn?: (this: NonterminalNode, arg0: NonterminalNode) => T; StatementExpression?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode) => T; StatementAssign?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + StatementAugmentedAssign?: (this: NonterminalNode, arg0: NonterminalNode) => T; + StatementAugmentedAssignAdd?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + StatementAugmentedAssignSub?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + StatementAugmentedAssignMul?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + StatementAugmentedAssignDiv?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + StatementAugmentedAssignRem?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; StatementCondition_simple?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: IterationNode, arg4: TerminalNode) => T; StatementCondition_withElse?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: IterationNode, arg4: TerminalNode, arg5: NonterminalNode, arg6: TerminalNode, arg7: IterationNode, arg8: TerminalNode) => T; StatementCondition_withElseIf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: IterationNode, arg4: TerminalNode, arg5: NonterminalNode, arg6: NonterminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 7d6b0ab94..3234af8c8 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralDec // Order is important\n integerLiteralDec = digit+\n integerLiteralHex = \"0x\" hexDigit+\n | \"0X\" hexDigit+\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n stringLiteralCharacter = ~(\"\\\"\" | \"\\\\\" | lineTerminator) any\n stringLiteral = \"\\\"\" stringLiteralCharacter* \"\\\"\"\n\n // Keywords\n // NOTE Order is important\n keyword = fun \n | let\n | return \n | extend \n | native \n | public \n | null \n | if \n | else \n | while \n | repeat \n | do \n | until \n | as \n | mutates\n | extends\n | import\n | with\n | trait\n | initOf\n | override\n | abstract\n | virtual\n | inline\n | const\n contract = \"contract\" ~idPart\n let = \"let\" ~idPart\n fun = \"fun\" ~idPart\n return = \"return\" ~idPart\n extend = \"extend\" ~idPart\n native = \"native\" ~idPart\n public = \"public\" ~idPart\n null = \"null\" ~idPart\n if = \"if\" ~idPart\n else = \"else\" ~idPart\n while = \"while\" ~idPart\n repeat = \"repeat\" ~idPart\n do = \"do\" ~idPart\n until = \"until\" ~idPart\n as = \"as\" ~idPart\n mutates = \"mutates\" ~idPart\n extends = \"extends\" ~idPart\n import = \"import\" ~idPart\n with = \"with\" ~idPart\n trait = \"trait\" ~idPart\n initOf = \"initOf\" ~idPart\n virtual = \"virtual\" ~idPart\n override = \"override\" ~idPart\n inline = \"inline\" ~idPart\n const = \"const\" ~idPart\n abstract = \"abstract\" ~idPart\n\n // Attributes\n nameAttribute = \"@name\"\n\n // Reserved\n reservedWord = keyword\n\n // Comments\n space += comment | lineTerminator\n comment = multiLineComment | singleLineComment\n lineTerminator = \"\\n\" | \"\\r\" | \"\\u2028\" | \"\\u2029\"\n multiLineComment = \"/*\" (~\"*/\" any)* \"*/\"\n singleLineComment = \"//\" (~lineTerminator any)*\n}"},"Tact",null,"Program",{"Program":["define",{"sourceInterval":[49,71]},null,[],["star",{"sourceInterval":[59,71]},["app",{"sourceInterval":[59,70]},"ProgramItem",[]]]],"ProgramItem":["define",{"sourceInterval":[76,300]},null,[],["alt",{"sourceInterval":[90,300]},["app",{"sourceInterval":[90,96]},"Struct",[]],["app",{"sourceInterval":[115,123]},"Contract",[]],["app",{"sourceInterval":[142,151]},"Primitive",[]],["app",{"sourceInterval":[170,184]},"StaticFunction",[]],["app",{"sourceInterval":[203,217]},"NativeFunction",[]],["app",{"sourceInterval":[236,249]},"ProgramImport",[]],["app",{"sourceInterval":[268,273]},"Trait",[]],["app",{"sourceInterval":[292,300]},"Constant",[]]]],"ProgramImport":["define",{"sourceInterval":[305,345]},null,[],["seq",{"sourceInterval":[321,345]},["app",{"sourceInterval":[321,327]},"import",[]],["app",{"sourceInterval":[328,341]},"stringLiteral",[]],["terminal",{"sourceInterval":[342,345]},";"]]],"Primitive":["define",{"sourceInterval":[380,412]},null,[],["seq",{"sourceInterval":[392,412]},["terminal",{"sourceInterval":[392,403]},"primitive"],["app",{"sourceInterval":[404,408]},"Type",[]],["terminal",{"sourceInterval":[409,412]},";"]]],"StaticFunction":["define",{"sourceInterval":[441,466]},null,[],["app",{"sourceInterval":[458,466]},"Function",[]]],"NativeFunction_withVoid":["define",{"sourceInterval":[488,592]},null,[],["seq",{"sourceInterval":[488,581]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["terminal",{"sourceInterval":[574,577]},")"],["terminal",{"sourceInterval":[578,581]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[614,727]},null,[],["seq",{"sourceInterval":[614,716]},["app",{"sourceInterval":[614,627]},"nameAttribute",[]],["terminal",{"sourceInterval":[628,631]},"("],["app",{"sourceInterval":[632,638]},"funcId",[]],["terminal",{"sourceInterval":[639,642]},")"],["star",{"sourceInterval":[643,661]},["app",{"sourceInterval":[643,660]},"FunctionAttribute",[]]],["app",{"sourceInterval":[662,668]},"native",[]],["app",{"sourceInterval":[669,671]},"id",[]],["terminal",{"sourceInterval":[672,675]},"("],["app",{"sourceInterval":[676,699]},"ListOf",[["app",{"sourceInterval":[683,694]},"FunctionArg",[]],["terminal",{"sourceInterval":[695,698]},","]]],["terminal",{"sourceInterval":[700,703]},")"],["terminal",{"sourceInterval":[704,707]},":"],["app",{"sourceInterval":[708,712]},"Type",[]],["terminal",{"sourceInterval":[713,716]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,727]},null,[],["alt",{"sourceInterval":[488,727]},["app",{"sourceInterval":[488,581]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[614,716]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[770,796]},null,[],["seq",{"sourceInterval":[770,785]},["app",{"sourceInterval":[770,781]},"typeLiteral",[]],["terminal",{"sourceInterval":[782,785]},"?"]]],"Type_required":["define",{"sourceInterval":[808,830]},null,[],["app",{"sourceInterval":[808,819]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[842,907]},null,[],["seq",{"sourceInterval":[842,901]},["terminal",{"sourceInterval":[842,847]},"map"],["terminal",{"sourceInterval":[848,851]},"<"],["app",{"sourceInterval":[852,863]},"typeLiteral",[]],["opt",{"sourceInterval":[864,872]},["seq",{"sourceInterval":[865,870]},["app",{"sourceInterval":[865,867]},"as",[]],["app",{"sourceInterval":[868,870]},"id",[]]]],["terminal",{"sourceInterval":[873,876]},","],["app",{"sourceInterval":[877,888]},"typeLiteral",[]],["opt",{"sourceInterval":[889,897]},["seq",{"sourceInterval":[890,895]},["app",{"sourceInterval":[890,892]},"as",[]],["app",{"sourceInterval":[893,895]},"id",[]]]],["terminal",{"sourceInterval":[898,901]},">"]]],"Type_bounced":["define",{"sourceInterval":[919,958]},null,[],["seq",{"sourceInterval":[919,948]},["terminal",{"sourceInterval":[919,928]},"bounced"],["terminal",{"sourceInterval":[929,932]},"<"],["app",{"sourceInterval":[933,944]},"typeLiteral",[]],["terminal",{"sourceInterval":[945,948]},">"]]],"Type":["define",{"sourceInterval":[763,958]},null,[],["alt",{"sourceInterval":[770,958]},["app",{"sourceInterval":[770,785]},"Type_optional",[]],["app",{"sourceInterval":[808,819]},"Type_required",[]],["app",{"sourceInterval":[842,901]},"Type_map",[]],["app",{"sourceInterval":[919,948]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[971,996]},null,[],["seq",{"sourceInterval":[971,986]},["app",{"sourceInterval":[971,973]},"id",[]],["terminal",{"sourceInterval":[974,977]},":"],["app",{"sourceInterval":[978,982]},"Type",[]],["terminal",{"sourceInterval":[983,986]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1009,1057]},null,[],["seq",{"sourceInterval":[1009,1039]},["app",{"sourceInterval":[1009,1011]},"id",[]],["terminal",{"sourceInterval":[1012,1015]},":"],["app",{"sourceInterval":[1016,1020]},"Type",[]],["terminal",{"sourceInterval":[1021,1024]},"="],["app",{"sourceInterval":[1025,1035]},"Expression",[]],["terminal",{"sourceInterval":[1036,1039]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1070,1111]},null,[],["seq",{"sourceInterval":[1070,1091]},["app",{"sourceInterval":[1070,1072]},"id",[]],["terminal",{"sourceInterval":[1073,1076]},":"],["app",{"sourceInterval":[1077,1081]},"Type",[]],["app",{"sourceInterval":[1082,1084]},"as",[]],["app",{"sourceInterval":[1085,1087]},"id",[]],["terminal",{"sourceInterval":[1088,1091]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1124,1187]},null,[],["seq",{"sourceInterval":[1124,1160]},["app",{"sourceInterval":[1124,1126]},"id",[]],["terminal",{"sourceInterval":[1127,1130]},":"],["app",{"sourceInterval":[1131,1135]},"Type",[]],["app",{"sourceInterval":[1136,1138]},"as",[]],["app",{"sourceInterval":[1139,1141]},"id",[]],["terminal",{"sourceInterval":[1142,1145]},"="],["app",{"sourceInterval":[1146,1156]},"Expression",[]],["terminal",{"sourceInterval":[1157,1160]},";"]]],"Field":["define",{"sourceInterval":[963,1187]},null,[],["alt",{"sourceInterval":[971,1187]},["app",{"sourceInterval":[971,986]},"Field_default",[]],["app",{"sourceInterval":[1009,1039]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1070,1091]},"Field_withSerialization",[]],["app",{"sourceInterval":[1124,1160]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1233,1253]},null,[],["app",{"sourceInterval":[1233,1240]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1278,1299]},null,[],["app",{"sourceInterval":[1278,1286]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1324,1345]},null,[],["app",{"sourceInterval":[1324,1332]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1213,1345]},null,[],["alt",{"sourceInterval":[1233,1345]},["app",{"sourceInterval":[1233,1240]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1278,1286]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1324,1332]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1361,1433]},null,[],["seq",{"sourceInterval":[1361,1421]},["star",{"sourceInterval":[1361,1379]},["app",{"sourceInterval":[1361,1378]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1380,1384]},["app",{"sourceInterval":[1381,1384]},"fun",[]]],["app",{"sourceInterval":[1385,1390]},"const",[]],["app",{"sourceInterval":[1391,1393]},"id",[]],["terminal",{"sourceInterval":[1394,1397]},":"],["app",{"sourceInterval":[1398,1402]},"Type",[]],["terminal",{"sourceInterval":[1403,1406]},"="],["app",{"sourceInterval":[1407,1417]},"Expression",[]],["terminal",{"sourceInterval":[1418,1421]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1449,1521]},null,[],["seq",{"sourceInterval":[1449,1494]},["star",{"sourceInterval":[1449,1467]},["app",{"sourceInterval":[1449,1466]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1468,1472]},["app",{"sourceInterval":[1469,1472]},"fun",[]]],["app",{"sourceInterval":[1473,1478]},"const",[]],["app",{"sourceInterval":[1479,1481]},"id",[]],["terminal",{"sourceInterval":[1482,1485]},":"],["app",{"sourceInterval":[1486,1490]},"Type",[]],["terminal",{"sourceInterval":[1491,1494]},";"]]],"Constant":["define",{"sourceInterval":[1350,1521]},null,[],["alt",{"sourceInterval":[1361,1521]},["app",{"sourceInterval":[1361,1421]},"Constant_withValue",[]],["app",{"sourceInterval":[1449,1494]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1550,1602]},null,[],["seq",{"sourceInterval":[1550,1590]},["terminal",{"sourceInterval":[1550,1558]},"struct"],["app",{"sourceInterval":[1559,1570]},"typeLiteral",[]],["terminal",{"sourceInterval":[1571,1574]},"{"],["star",{"sourceInterval":[1575,1586]},["app",{"sourceInterval":[1575,1585]},"StructBody",[]]],["terminal",{"sourceInterval":[1587,1590]},"}"]]],"Struct_message":["define",{"sourceInterval":[1616,1667]},null,[],["seq",{"sourceInterval":[1616,1657]},["terminal",{"sourceInterval":[1616,1625]},"message"],["app",{"sourceInterval":[1626,1637]},"typeLiteral",[]],["terminal",{"sourceInterval":[1638,1641]},"{"],["star",{"sourceInterval":[1642,1653]},["app",{"sourceInterval":[1642,1652]},"StructBody",[]]],["terminal",{"sourceInterval":[1654,1657]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1681,1761]},null,[],["seq",{"sourceInterval":[1681,1745]},["terminal",{"sourceInterval":[1681,1690]},"message"],["terminal",{"sourceInterval":[1691,1694]},"("],["app",{"sourceInterval":[1695,1709]},"integerLiteral",[]],["terminal",{"sourceInterval":[1710,1713]},")"],["app",{"sourceInterval":[1714,1725]},"typeLiteral",[]],["terminal",{"sourceInterval":[1726,1729]},"{"],["star",{"sourceInterval":[1730,1741]},["app",{"sourceInterval":[1730,1740]},"StructBody",[]]],["terminal",{"sourceInterval":[1742,1745]},"}"]]],"Struct":["define",{"sourceInterval":[1541,1761]},null,[],["alt",{"sourceInterval":[1550,1761]},["app",{"sourceInterval":[1550,1590]},"Struct_originary",[]],["app",{"sourceInterval":[1616,1657]},"Struct_message",[]],["app",{"sourceInterval":[1681,1745]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1766,1784]},null,[],["app",{"sourceInterval":[1779,1784]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1817,1878]},null,[],["seq",{"sourceInterval":[1817,1869]},["star",{"sourceInterval":[1817,1835]},["app",{"sourceInterval":[1817,1834]},"ContractAttribute",[]]],["app",{"sourceInterval":[1836,1844]},"contract",[]],["app",{"sourceInterval":[1845,1847]},"id",[]],["terminal",{"sourceInterval":[1848,1851]},"{"],["star",{"sourceInterval":[1852,1865]},["app",{"sourceInterval":[1852,1864]},"ContractBody",[]]],["terminal",{"sourceInterval":[1866,1869]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1894,1979]},null,[],["seq",{"sourceInterval":[1894,1966]},["star",{"sourceInterval":[1894,1912]},["app",{"sourceInterval":[1894,1911]},"ContractAttribute",[]]],["app",{"sourceInterval":[1913,1921]},"contract",[]],["app",{"sourceInterval":[1922,1924]},"id",[]],["app",{"sourceInterval":[1925,1929]},"with",[]],["app",{"sourceInterval":[1930,1944]},"ListOf",[["app",{"sourceInterval":[1937,1939]},"id",[]],["terminal",{"sourceInterval":[1940,1943]},","]]],["terminal",{"sourceInterval":[1945,1948]},"{"],["star",{"sourceInterval":[1949,1962]},["app",{"sourceInterval":[1949,1961]},"ContractBody",[]]],["terminal",{"sourceInterval":[1963,1966]},"}"]]],"Contract":["define",{"sourceInterval":[1806,1979]},null,[],["alt",{"sourceInterval":[1817,1979]},["app",{"sourceInterval":[1817,1869]},"Contract_simple",[]],["app",{"sourceInterval":[1894,1966]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1984,2056]},null,[],["seq",{"sourceInterval":[1999,2056]},["terminal",{"sourceInterval":[1999,2005]},"init"],["terminal",{"sourceInterval":[2006,2009]},"("],["app",{"sourceInterval":[2010,2033]},"ListOf",[["app",{"sourceInterval":[2017,2028]},"FunctionArg",[]],["terminal",{"sourceInterval":[2029,2032]},","]]],["terminal",{"sourceInterval":[2034,2037]},")"],["terminal",{"sourceInterval":[2038,2041]},"{"],["star",{"sourceInterval":[2042,2052]},["app",{"sourceInterval":[2042,2051]},"Statement",[]]],["terminal",{"sourceInterval":[2053,2056]},"}"]]],"ContractBody":["define",{"sourceInterval":[2061,2204]},null,[],["alt",{"sourceInterval":[2076,2204]},["app",{"sourceInterval":[2076,2081]},"Field",[]],["app",{"sourceInterval":[2101,2113]},"ContractInit",[]],["app",{"sourceInterval":[2133,2148]},"ReceiveFunction",[]],["app",{"sourceInterval":[2168,2176]},"Function",[]],["app",{"sourceInterval":[2196,2204]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2235,2293]},null,[],["seq",{"sourceInterval":[2235,2281]},["star",{"sourceInterval":[2235,2253]},["app",{"sourceInterval":[2235,2252]},"ContractAttribute",[]]],["app",{"sourceInterval":[2254,2259]},"trait",[]],["app",{"sourceInterval":[2260,2262]},"id",[]],["terminal",{"sourceInterval":[2263,2266]},"{"],["star",{"sourceInterval":[2267,2277]},["app",{"sourceInterval":[2267,2276]},"TraitBody",[]]],["terminal",{"sourceInterval":[2278,2281]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2306,2385]},null,[],["seq",{"sourceInterval":[2306,2372]},["star",{"sourceInterval":[2306,2324]},["app",{"sourceInterval":[2306,2323]},"ContractAttribute",[]]],["app",{"sourceInterval":[2325,2330]},"trait",[]],["app",{"sourceInterval":[2331,2333]},"id",[]],["app",{"sourceInterval":[2334,2338]},"with",[]],["app",{"sourceInterval":[2339,2353]},"ListOf",[["app",{"sourceInterval":[2346,2348]},"id",[]],["terminal",{"sourceInterval":[2349,2352]},","]]],["terminal",{"sourceInterval":[2354,2357]},"{"],["star",{"sourceInterval":[2358,2368]},["app",{"sourceInterval":[2358,2367]},"TraitBody",[]]],["terminal",{"sourceInterval":[2369,2372]},"}"]]],"Trait":["define",{"sourceInterval":[2227,2385]},null,[],["alt",{"sourceInterval":[2235,2385]},["app",{"sourceInterval":[2235,2281]},"Trait_originary",[]],["app",{"sourceInterval":[2306,2372]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2390,2489]},null,[],["alt",{"sourceInterval":[2402,2489]},["app",{"sourceInterval":[2402,2407]},"Field",[]],["app",{"sourceInterval":[2424,2439]},"ReceiveFunction",[]],["app",{"sourceInterval":[2456,2464]},"Function",[]],["app",{"sourceInterval":[2481,2489]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2542,2588]},null,[],["seq",{"sourceInterval":[2542,2576]},["terminal",{"sourceInterval":[2542,2554]},"@interface"],["terminal",{"sourceInterval":[2555,2558]},"("],["app",{"sourceInterval":[2559,2572]},"stringLiteral",[]],["terminal",{"sourceInterval":[2573,2576]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2522,2588]},null,[],["app",{"sourceInterval":[2542,2588]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2630,2648]},null,[],["terminal",{"sourceInterval":[2630,2635]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2673,2692]},null,[],["app",{"sourceInterval":[2673,2680]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2717,2736]},null,[],["app",{"sourceInterval":[2717,2724]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2761,2780]},null,[],["app",{"sourceInterval":[2761,2768]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2805,2825]},null,[],["app",{"sourceInterval":[2805,2813]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2850,2868]},null,[],["app",{"sourceInterval":[2850,2856]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2893,2913]},null,[],["app",{"sourceInterval":[2893,2901]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2610,2913]},null,[],["alt",{"sourceInterval":[2630,2913]},["app",{"sourceInterval":[2630,2635]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2673,2680]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2717,2724]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2761,2768]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2805,2813]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2850,2856]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2893,2901]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2929,3016]},null,[],["seq",{"sourceInterval":[2929,3005]},["star",{"sourceInterval":[2929,2947]},["app",{"sourceInterval":[2929,2946]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2948,2951]},"fun",[]],["app",{"sourceInterval":[2952,2954]},"id",[]],["terminal",{"sourceInterval":[2955,2958]},"("],["app",{"sourceInterval":[2959,2982]},"ListOf",[["app",{"sourceInterval":[2966,2977]},"FunctionArg",[]],["terminal",{"sourceInterval":[2978,2981]},","]]],["terminal",{"sourceInterval":[2983,2986]},")"],["terminal",{"sourceInterval":[2987,2990]},"{"],["star",{"sourceInterval":[2991,3001]},["app",{"sourceInterval":[2991,3000]},"Statement",[]]],["terminal",{"sourceInterval":[3002,3005]},"}"]]],"Function_withType":["define",{"sourceInterval":[3032,3128]},null,[],["seq",{"sourceInterval":[3032,3117]},["star",{"sourceInterval":[3032,3050]},["app",{"sourceInterval":[3032,3049]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3051,3054]},"fun",[]],["app",{"sourceInterval":[3055,3057]},"id",[]],["terminal",{"sourceInterval":[3058,3061]},"("],["app",{"sourceInterval":[3062,3085]},"ListOf",[["app",{"sourceInterval":[3069,3080]},"FunctionArg",[]],["terminal",{"sourceInterval":[3081,3084]},","]]],["terminal",{"sourceInterval":[3086,3089]},")"],["terminal",{"sourceInterval":[3090,3093]},":"],["app",{"sourceInterval":[3094,3098]},"Type",[]],["terminal",{"sourceInterval":[3099,3102]},"{"],["star",{"sourceInterval":[3103,3113]},["app",{"sourceInterval":[3103,3112]},"Statement",[]]],["terminal",{"sourceInterval":[3114,3117]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3144,3220]},null,[],["seq",{"sourceInterval":[3144,3205]},["star",{"sourceInterval":[3144,3162]},["app",{"sourceInterval":[3144,3161]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3163,3166]},"fun",[]],["app",{"sourceInterval":[3167,3169]},"id",[]],["terminal",{"sourceInterval":[3170,3173]},"("],["app",{"sourceInterval":[3174,3197]},"ListOf",[["app",{"sourceInterval":[3181,3192]},"FunctionArg",[]],["terminal",{"sourceInterval":[3193,3196]},","]]],["terminal",{"sourceInterval":[3198,3201]},")"],["terminal",{"sourceInterval":[3202,3205]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3236,3321]},null,[],["seq",{"sourceInterval":[3236,3306]},["star",{"sourceInterval":[3236,3254]},["app",{"sourceInterval":[3236,3253]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3255,3258]},"fun",[]],["app",{"sourceInterval":[3259,3261]},"id",[]],["terminal",{"sourceInterval":[3262,3265]},"("],["app",{"sourceInterval":[3266,3289]},"ListOf",[["app",{"sourceInterval":[3273,3284]},"FunctionArg",[]],["terminal",{"sourceInterval":[3285,3288]},","]]],["terminal",{"sourceInterval":[3290,3293]},")"],["terminal",{"sourceInterval":[3294,3297]},":"],["app",{"sourceInterval":[3298,3302]},"Type",[]],["terminal",{"sourceInterval":[3303,3306]},";"]]],"Function":["define",{"sourceInterval":[2918,3321]},null,[],["alt",{"sourceInterval":[2929,3321]},["app",{"sourceInterval":[2929,3005]},"Function_withVoid",[]],["app",{"sourceInterval":[3032,3117]},"Function_withType",[]],["app",{"sourceInterval":[3144,3205]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3236,3306]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3326,3351]},null,[],["seq",{"sourceInterval":[3340,3351]},["app",{"sourceInterval":[3340,3342]},"id",[]],["terminal",{"sourceInterval":[3343,3346]},":"],["app",{"sourceInterval":[3347,3351]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3379,3436]},null,[],["seq",{"sourceInterval":[3379,3427]},["terminal",{"sourceInterval":[3379,3388]},"receive"],["terminal",{"sourceInterval":[3389,3392]},"("],["app",{"sourceInterval":[3393,3404]},"FunctionArg",[]],["terminal",{"sourceInterval":[3405,3408]},")"],["terminal",{"sourceInterval":[3409,3412]},"{"],["star",{"sourceInterval":[3413,3423]},["app",{"sourceInterval":[3413,3422]},"Statement",[]]],["terminal",{"sourceInterval":[3424,3427]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3459,3503]},null,[],["seq",{"sourceInterval":[3459,3495]},["terminal",{"sourceInterval":[3459,3468]},"receive"],["terminal",{"sourceInterval":[3469,3472]},"("],["terminal",{"sourceInterval":[3473,3476]},")"],["terminal",{"sourceInterval":[3477,3480]},"{"],["star",{"sourceInterval":[3481,3491]},["app",{"sourceInterval":[3481,3490]},"Statement",[]]],["terminal",{"sourceInterval":[3492,3495]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3526,3586]},null,[],["seq",{"sourceInterval":[3526,3576]},["terminal",{"sourceInterval":[3526,3535]},"receive"],["terminal",{"sourceInterval":[3536,3539]},"("],["app",{"sourceInterval":[3540,3553]},"stringLiteral",[]],["terminal",{"sourceInterval":[3554,3557]},")"],["terminal",{"sourceInterval":[3558,3561]},"{"],["star",{"sourceInterval":[3562,3572]},["app",{"sourceInterval":[3562,3571]},"Statement",[]]],["terminal",{"sourceInterval":[3573,3576]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3609,3667]},null,[],["seq",{"sourceInterval":[3609,3657]},["terminal",{"sourceInterval":[3609,3618]},"bounced"],["terminal",{"sourceInterval":[3619,3622]},"("],["app",{"sourceInterval":[3623,3634]},"FunctionArg",[]],["terminal",{"sourceInterval":[3635,3638]},")"],["terminal",{"sourceInterval":[3639,3642]},"{"],["star",{"sourceInterval":[3643,3653]},["app",{"sourceInterval":[3643,3652]},"Statement",[]]],["terminal",{"sourceInterval":[3654,3657]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3690,3756]},null,[],["seq",{"sourceInterval":[3690,3739]},["terminal",{"sourceInterval":[3690,3700]},"external"],["terminal",{"sourceInterval":[3701,3704]},"("],["app",{"sourceInterval":[3705,3716]},"FunctionArg",[]],["terminal",{"sourceInterval":[3717,3720]},")"],["terminal",{"sourceInterval":[3721,3724]},"{"],["star",{"sourceInterval":[3725,3735]},["app",{"sourceInterval":[3725,3734]},"Statement",[]]],["terminal",{"sourceInterval":[3736,3739]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3779,3848]},null,[],["seq",{"sourceInterval":[3779,3830]},["terminal",{"sourceInterval":[3779,3789]},"external"],["terminal",{"sourceInterval":[3790,3793]},"("],["app",{"sourceInterval":[3794,3807]},"stringLiteral",[]],["terminal",{"sourceInterval":[3808,3811]},")"],["terminal",{"sourceInterval":[3812,3815]},"{"],["star",{"sourceInterval":[3816,3826]},["app",{"sourceInterval":[3816,3825]},"Statement",[]]],["terminal",{"sourceInterval":[3827,3830]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3871,3924]},null,[],["seq",{"sourceInterval":[3871,3908]},["terminal",{"sourceInterval":[3871,3881]},"external"],["terminal",{"sourceInterval":[3882,3885]},"("],["terminal",{"sourceInterval":[3886,3889]},")"],["terminal",{"sourceInterval":[3890,3893]},"{"],["star",{"sourceInterval":[3894,3904]},["app",{"sourceInterval":[3894,3903]},"Statement",[]]],["terminal",{"sourceInterval":[3905,3908]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3361,3924]},null,[],["alt",{"sourceInterval":[3379,3924]},["app",{"sourceInterval":[3379,3427]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3459,3495]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3526,3576]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3609,3657]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3690,3739]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3779,3830]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3871,3908]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3948,4232]},null,[],["alt",{"sourceInterval":[3960,4232]},["app",{"sourceInterval":[3960,3972]},"StatementLet",[]],["app",{"sourceInterval":[3989,4003]},"StatementBlock",[]],["app",{"sourceInterval":[4020,4035]},"StatementReturn",[]],["app",{"sourceInterval":[4052,4071]},"StatementExpression",[]],["app",{"sourceInterval":[4088,4103]},"StatementAssign",[]],["app",{"sourceInterval":[4120,4138]},"StatementCondition",[]],["app",{"sourceInterval":[4155,4169]},"StatementWhile",[]],["app",{"sourceInterval":[4186,4201]},"StatementRepeat",[]],["app",{"sourceInterval":[4218,4232]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4237,4272]},null,[],["seq",{"sourceInterval":[4254,4272]},["terminal",{"sourceInterval":[4254,4257]},"{"],["star",{"sourceInterval":[4258,4268]},["app",{"sourceInterval":[4258,4267]},"Statement",[]]],["terminal",{"sourceInterval":[4269,4272]},"}"]]],"StatementLet":["define",{"sourceInterval":[4277,4326]},null,[],["seq",{"sourceInterval":[4292,4326]},["app",{"sourceInterval":[4292,4295]},"let",[]],["app",{"sourceInterval":[4296,4298]},"id",[]],["terminal",{"sourceInterval":[4299,4302]},":"],["app",{"sourceInterval":[4303,4307]},"Type",[]],["terminal",{"sourceInterval":[4308,4311]},"="],["app",{"sourceInterval":[4312,4322]},"Expression",[]],["terminal",{"sourceInterval":[4323,4326]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4349,4387]},null,[],["seq",{"sourceInterval":[4349,4370]},["app",{"sourceInterval":[4349,4355]},"return",[]],["app",{"sourceInterval":[4356,4366]},"Expression",[]],["terminal",{"sourceInterval":[4367,4370]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4410,4440]},null,[],["seq",{"sourceInterval":[4410,4420]},["app",{"sourceInterval":[4410,4416]},"return",[]],["terminal",{"sourceInterval":[4417,4420]},";"]]],"StatementReturn":["define",{"sourceInterval":[4331,4440]},null,[],["alt",{"sourceInterval":[4349,4440]},["app",{"sourceInterval":[4349,4370]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4410,4420]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4449,4485]},null,[],["seq",{"sourceInterval":[4471,4485]},["app",{"sourceInterval":[4471,4481]},"Expression",[]],["terminal",{"sourceInterval":[4482,4485]},";"]]],"StatementAssign":["define",{"sourceInterval":[4490,4533]},null,[],["seq",{"sourceInterval":[4508,4533]},["app",{"sourceInterval":[4508,4514]},"LValue",[]],["terminal",{"sourceInterval":[4515,4518]},"="],["app",{"sourceInterval":[4519,4529]},"Expression",[]],["terminal",{"sourceInterval":[4530,4533]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[4559,4606]},null,[],["seq",{"sourceInterval":[4559,4597]},["app",{"sourceInterval":[4559,4561]},"if",[]],["app",{"sourceInterval":[4562,4572]},"Expression",[]],["terminal",{"sourceInterval":[4573,4576]},"{"],["star",{"sourceInterval":[4577,4587]},["app",{"sourceInterval":[4577,4586]},"Statement",[]]],["terminal",{"sourceInterval":[4588,4591]},"}"],["not",{"sourceInterval":[4592,4597]},["app",{"sourceInterval":[4593,4597]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[4632,4699]},null,[],["seq",{"sourceInterval":[4632,4688]},["app",{"sourceInterval":[4632,4634]},"if",[]],["app",{"sourceInterval":[4635,4645]},"Expression",[]],["terminal",{"sourceInterval":[4646,4649]},"{"],["star",{"sourceInterval":[4650,4660]},["app",{"sourceInterval":[4650,4659]},"Statement",[]]],["terminal",{"sourceInterval":[4661,4664]},"}"],["app",{"sourceInterval":[4665,4669]},"else",[]],["terminal",{"sourceInterval":[4670,4673]},"{"],["star",{"sourceInterval":[4674,4684]},["app",{"sourceInterval":[4674,4683]},"Statement",[]]],["terminal",{"sourceInterval":[4685,4688]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[4725,4794]},null,[],["seq",{"sourceInterval":[4725,4781]},["app",{"sourceInterval":[4725,4727]},"if",[]],["app",{"sourceInterval":[4728,4738]},"Expression",[]],["terminal",{"sourceInterval":[4739,4742]},"{"],["star",{"sourceInterval":[4743,4753]},["app",{"sourceInterval":[4743,4752]},"Statement",[]]],["terminal",{"sourceInterval":[4754,4757]},"}"],["app",{"sourceInterval":[4758,4762]},"else",[]],["app",{"sourceInterval":[4763,4781]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[4538,4794]},null,[],["alt",{"sourceInterval":[4559,4794]},["app",{"sourceInterval":[4559,4597]},"StatementCondition_simple",[]],["app",{"sourceInterval":[4632,4688]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[4725,4781]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[4799,4859]},null,[],["seq",{"sourceInterval":[4816,4859]},["app",{"sourceInterval":[4816,4821]},"while",[]],["terminal",{"sourceInterval":[4822,4825]},"("],["app",{"sourceInterval":[4826,4836]},"Expression",[]],["terminal",{"sourceInterval":[4837,4840]},")"],["terminal",{"sourceInterval":[4841,4844]},"{"],["star",{"sourceInterval":[4845,4855]},["app",{"sourceInterval":[4845,4854]},"Statement",[]]],["terminal",{"sourceInterval":[4856,4859]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[4864,4926]},null,[],["seq",{"sourceInterval":[4882,4926]},["app",{"sourceInterval":[4882,4888]},"repeat",[]],["terminal",{"sourceInterval":[4889,4892]},"("],["app",{"sourceInterval":[4893,4903]},"Expression",[]],["terminal",{"sourceInterval":[4904,4907]},")"],["terminal",{"sourceInterval":[4908,4911]},"{"],["star",{"sourceInterval":[4912,4922]},["app",{"sourceInterval":[4912,4921]},"Statement",[]]],["terminal",{"sourceInterval":[4923,4926]},"}"]]],"StatementUntil":["define",{"sourceInterval":[4931,4998]},null,[],["seq",{"sourceInterval":[4948,4998]},["app",{"sourceInterval":[4948,4950]},"do",[]],["terminal",{"sourceInterval":[4951,4954]},"{"],["star",{"sourceInterval":[4955,4965]},["app",{"sourceInterval":[4955,4964]},"Statement",[]]],["terminal",{"sourceInterval":[4966,4969]},"}"],["app",{"sourceInterval":[4970,4975]},"until",[]],["terminal",{"sourceInterval":[4976,4979]},"("],["app",{"sourceInterval":[4980,4990]},"Expression",[]],["terminal",{"sourceInterval":[4991,4994]},")"],["terminal",{"sourceInterval":[4995,4998]},";"]]],"LValue_more":["define",{"sourceInterval":[5028,5048]},null,[],["seq",{"sourceInterval":[5028,5041]},["app",{"sourceInterval":[5028,5030]},"id",[]],["terminal",{"sourceInterval":[5031,5034]},"."],["app",{"sourceInterval":[5035,5041]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5062,5073]},null,[],["app",{"sourceInterval":[5062,5064]},"id",[]]],"LValue":["define",{"sourceInterval":[5019,5073]},null,[],["alt",{"sourceInterval":[5028,5073]},["app",{"sourceInterval":[5028,5041]},"LValue_more",[]],["app",{"sourceInterval":[5062,5064]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5098,5123]},null,[],["app",{"sourceInterval":[5111,5123]},"ExpressionOr",[]]],"ExpressionOr_or":["define",{"sourceInterval":[5143,5179]},null,[],["seq",{"sourceInterval":[5143,5174]},["app",{"sourceInterval":[5143,5155]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5156,5160]},"||"],["app",{"sourceInterval":[5161,5174]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5128,5212]},null,[],["alt",{"sourceInterval":[5143,5212]},["app",{"sourceInterval":[5143,5174]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5199,5212]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[5233,5275]},null,[],["seq",{"sourceInterval":[5233,5269]},["app",{"sourceInterval":[5233,5246]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[5247,5251]},"&&"],["app",{"sourceInterval":[5252,5269]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[5217,5313]},null,[],["alt",{"sourceInterval":[5233,5313]},["app",{"sourceInterval":[5233,5269]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[5296,5313]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[5338,5383]},null,[],["seq",{"sourceInterval":[5338,5377]},["app",{"sourceInterval":[5338,5355]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5356,5360]},"!="],["app",{"sourceInterval":[5361,5377]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[5408,5452]},null,[],["seq",{"sourceInterval":[5408,5447]},["app",{"sourceInterval":[5408,5425]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5426,5430]},"=="],["app",{"sourceInterval":[5431,5447]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[5477,5520]},null,[],["seq",{"sourceInterval":[5477,5515]},["app",{"sourceInterval":[5477,5494]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5495,5498]},">"],["app",{"sourceInterval":[5499,5515]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[5545,5590]},null,[],["seq",{"sourceInterval":[5545,5584]},["app",{"sourceInterval":[5545,5562]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5563,5567]},">="],["app",{"sourceInterval":[5568,5584]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[5615,5658]},null,[],["seq",{"sourceInterval":[5615,5653]},["app",{"sourceInterval":[5615,5632]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5633,5636]},"<"],["app",{"sourceInterval":[5637,5653]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[5683,5728]},null,[],["seq",{"sourceInterval":[5683,5722]},["app",{"sourceInterval":[5683,5700]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5701,5705]},"<="],["app",{"sourceInterval":[5706,5722]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[5318,5769]},null,[],["alt",{"sourceInterval":[5338,5769]},["app",{"sourceInterval":[5338,5377]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[5408,5447]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[5477,5515]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[5545,5584]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[5615,5653]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[5683,5722]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[5753,5769]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[5793,5834]},null,[],["seq",{"sourceInterval":[5793,5828]},["app",{"sourceInterval":[5793,5809]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[5810,5814]},">>"],["app",{"sourceInterval":[5815,5828]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[5857,5898]},null,[],["seq",{"sourceInterval":[5857,5892]},["app",{"sourceInterval":[5857,5873]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[5874,5878]},"<<"],["app",{"sourceInterval":[5879,5892]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[5921,5965]},null,[],["seq",{"sourceInterval":[5921,5955]},["app",{"sourceInterval":[5921,5937]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[5938,5941]},"&"],["app",{"sourceInterval":[5942,5955]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[5988,6031]},null,[],["seq",{"sourceInterval":[5988,6022]},["app",{"sourceInterval":[5988,6004]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6005,6008]},"|"],["app",{"sourceInterval":[6009,6022]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[5774,6067]},null,[],["alt",{"sourceInterval":[5793,6067]},["app",{"sourceInterval":[5793,5828]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[5857,5892]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[5921,5955]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[5988,6022]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6054,6067]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6088,6130]},null,[],["seq",{"sourceInterval":[6088,6124]},["app",{"sourceInterval":[6088,6101]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6102,6105]},"+"],["not",{"sourceInterval":[6106,6110]},["terminal",{"sourceInterval":[6107,6110]},"+"]],["app",{"sourceInterval":[6111,6124]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6151,6193]},null,[],["seq",{"sourceInterval":[6151,6187]},["app",{"sourceInterval":[6151,6164]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6165,6168]},"-"],["not",{"sourceInterval":[6169,6173]},["terminal",{"sourceInterval":[6170,6173]},"-"]],["app",{"sourceInterval":[6174,6187]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6072,6227]},null,[],["alt",{"sourceInterval":[6088,6227]},["app",{"sourceInterval":[6088,6124]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6151,6187]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6214,6227]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[6248,6287]},null,[],["seq",{"sourceInterval":[6248,6281]},["app",{"sourceInterval":[6248,6261]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6262,6265]},"*"],["app",{"sourceInterval":[6266,6281]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[6308,6347]},null,[],["seq",{"sourceInterval":[6308,6341]},["app",{"sourceInterval":[6308,6321]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6322,6325]},"/"],["app",{"sourceInterval":[6326,6341]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[6368,6407]},null,[],["seq",{"sourceInterval":[6368,6401]},["app",{"sourceInterval":[6368,6381]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6382,6385]},"%"],["app",{"sourceInterval":[6386,6401]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[6232,6443]},null,[],["alt",{"sourceInterval":[6248,6443]},["app",{"sourceInterval":[6248,6281]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[6308,6341]},"ExpressionMul_div",[]],["app",{"sourceInterval":[6368,6401]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[6428,6443]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[6466,6497]},null,[],["seq",{"sourceInterval":[6466,6491]},["terminal",{"sourceInterval":[6466,6469]},"-"],["app",{"sourceInterval":[6470,6491]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[6520,6551]},null,[],["seq",{"sourceInterval":[6520,6545]},["terminal",{"sourceInterval":[6520,6523]},"+"],["app",{"sourceInterval":[6524,6545]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[6574,6605]},null,[],["seq",{"sourceInterval":[6574,6599]},["terminal",{"sourceInterval":[6574,6577]},"!"],["app",{"sourceInterval":[6578,6599]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[6448,6649]},null,[],["alt",{"sourceInterval":[6466,6649]},["app",{"sourceInterval":[6466,6491]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[6520,6545]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[6574,6599]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[6628,6649]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[6678,6708]},null,[],["seq",{"sourceInterval":[6678,6698]},["app",{"sourceInterval":[6678,6693]},"ExpressionValue",[]],["terminal",{"sourceInterval":[6694,6698]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[6654,6752]},null,[],["alt",{"sourceInterval":[6678,6752]},["app",{"sourceInterval":[6678,6698]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[6737,6752]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[6757,6795]},null,[],["seq",{"sourceInterval":[6777,6795]},["terminal",{"sourceInterval":[6777,6780]},"("],["app",{"sourceInterval":[6781,6791]},"Expression",[]],["terminal",{"sourceInterval":[6792,6795]},")"]]],"ExpressionValue":["define",{"sourceInterval":[6827,7217]},null,[],["alt",{"sourceInterval":[6845,7217]},["app",{"sourceInterval":[6845,6859]},"ExpressionCall",[]],["app",{"sourceInterval":[6882,6897]},"ExpressionField",[]],["app",{"sourceInterval":[6920,6940]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[6963,6980]},"ExpressionBracket",[]],["app",{"sourceInterval":[7003,7016]},"ExpressionNew",[]],["app",{"sourceInterval":[7039,7053]},"integerLiteral",[]],["app",{"sourceInterval":[7076,7087]},"boolLiteral",[]],["app",{"sourceInterval":[7110,7112]},"id",[]],["app",{"sourceInterval":[7135,7139]},"null",[]],["app",{"sourceInterval":[7162,7178]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7201,7217]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[7222,7254]},null,[],["app",{"sourceInterval":[7241,7254]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[7259,7304]},null,[],["seq",{"sourceInterval":[7277,7304]},["app",{"sourceInterval":[7277,7292]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7293,7296]},"."],["app",{"sourceInterval":[7297,7299]},"id",[]],["not",{"sourceInterval":[7300,7304]},["terminal",{"sourceInterval":[7301,7304]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[7309,7380]},null,[],["seq",{"sourceInterval":[7326,7380]},["app",{"sourceInterval":[7326,7341]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7342,7345]},"."],["app",{"sourceInterval":[7346,7348]},"id",[]],["terminal",{"sourceInterval":[7349,7352]},"("],["app",{"sourceInterval":[7353,7376]},"ListOf",[["app",{"sourceInterval":[7360,7370]},"Expression",[]],["terminal",{"sourceInterval":[7372,7375]},","]]],["terminal",{"sourceInterval":[7377,7380]},")"]]],"ExpressionNew":["define",{"sourceInterval":[7385,7437]},null,[],["seq",{"sourceInterval":[7401,7437]},["app",{"sourceInterval":[7401,7403]},"id",[]],["terminal",{"sourceInterval":[7404,7407]},"{"],["app",{"sourceInterval":[7408,7433]},"ListOf",[["app",{"sourceInterval":[7415,7427]},"NewParameter",[]],["terminal",{"sourceInterval":[7429,7432]},","]]],["terminal",{"sourceInterval":[7434,7437]},"}"]]],"NewParameter":["define",{"sourceInterval":[7442,7474]},null,[],["seq",{"sourceInterval":[7457,7474]},["app",{"sourceInterval":[7457,7459]},"id",[]],["terminal",{"sourceInterval":[7460,7463]},":"],["app",{"sourceInterval":[7464,7474]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[7479,7536]},null,[],["seq",{"sourceInterval":[7502,7536]},["app",{"sourceInterval":[7502,7504]},"id",[]],["terminal",{"sourceInterval":[7505,7508]},"("],["app",{"sourceInterval":[7509,7532]},"ListOf",[["app",{"sourceInterval":[7516,7526]},"Expression",[]],["terminal",{"sourceInterval":[7528,7531]},","]]],["terminal",{"sourceInterval":[7533,7536]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[7541,7601]},null,[],["seq",{"sourceInterval":[7560,7601]},["app",{"sourceInterval":[7560,7566]},"initOf",[]],["app",{"sourceInterval":[7567,7569]},"id",[]],["terminal",{"sourceInterval":[7570,7573]},"("],["app",{"sourceInterval":[7574,7597]},"ListOf",[["app",{"sourceInterval":[7581,7591]},"Expression",[]],["terminal",{"sourceInterval":[7593,7596]},","]]],["terminal",{"sourceInterval":[7598,7601]},")"]]],"typeLiteral":["define",{"sourceInterval":[7627,7671]},null,[],["seq",{"sourceInterval":[7641,7671]},["app",{"sourceInterval":[7641,7654]},"letterAsciiUC",[]],["star",{"sourceInterval":[7655,7671]},["app",{"sourceInterval":[7655,7670]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[7676,7719]},null,[],["alt",{"sourceInterval":[7694,7719]},["app",{"sourceInterval":[7694,7705]},"letterAscii",[]],["app",{"sourceInterval":[7708,7713]},"digit",[]],["terminal",{"sourceInterval":[7716,7719]},"_"]]],"integerLiteral":["define",{"sourceInterval":[7926,7980]},null,[],["alt",{"sourceInterval":[7943,7980]},["app",{"sourceInterval":[7943,7960]},"integerLiteralHex",[]],["app",{"sourceInterval":[7963,7980]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8007,8033]},null,[],["plus",{"sourceInterval":[8027,8033]},["app",{"sourceInterval":[8027,8032]},"digit",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8038,8111]},null,[],["alt",{"sourceInterval":[8058,8111]},["seq",{"sourceInterval":[8058,8072]},["terminal",{"sourceInterval":[8058,8062]},"0x"],["plus",{"sourceInterval":[8063,8072]},["app",{"sourceInterval":[8063,8071]},"hexDigit",[]]]],["seq",{"sourceInterval":[8097,8111]},["terminal",{"sourceInterval":[8097,8101]},"0X"],["plus",{"sourceInterval":[8102,8111]},["app",{"sourceInterval":[8102,8110]},"hexDigit",[]]]]]],"letterAsciiLC":["define",{"sourceInterval":[8132,8156]},null,[],["range",{"sourceInterval":[8148,8156]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[8161,8185]},null,[],["range",{"sourceInterval":[8177,8185]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[8190,8233]},null,[],["alt",{"sourceInterval":[8204,8233]},["app",{"sourceInterval":[8204,8217]},"letterAsciiLC",[]],["app",{"sourceInterval":[8220,8233]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[8238,8297]},null,[],["alt",{"sourceInterval":[8254,8297]},["app",{"sourceInterval":[8254,8267]},"letterAsciiLC",[]],["app",{"sourceInterval":[8270,8283]},"letterAsciiUC",[]],["app",{"sourceInterval":[8286,8291]},"digit",[]],["terminal",{"sourceInterval":[8294,8297]},"_"]]],"idStart":["define",{"sourceInterval":[8321,8348]},null,[],["alt",{"sourceInterval":[8331,8348]},["app",{"sourceInterval":[8331,8342]},"letterAscii",[]],["terminal",{"sourceInterval":[8345,8348]},"_"]]],"idPart":["define",{"sourceInterval":[8353,8387]},null,[],["alt",{"sourceInterval":[8362,8387]},["app",{"sourceInterval":[8362,8373]},"letterAscii",[]],["app",{"sourceInterval":[8376,8381]},"digit",[]],["terminal",{"sourceInterval":[8384,8387]},"_"]]],"id":["define",{"sourceInterval":[8392,8430]},null,[],["seq",{"sourceInterval":[8397,8430]},["not",{"sourceInterval":[8397,8410]},["app",{"sourceInterval":[8398,8410]},"reservedWord",[]]],["lex",{"sourceInterval":[8411,8419]},["app",{"sourceInterval":[8412,8419]},"idStart",[]]],["lex",{"sourceInterval":[8420,8430]},["star",{"sourceInterval":[8422,8429]},["app",{"sourceInterval":[8422,8428]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[8451,8512]},null,[],["alt",{"sourceInterval":[8464,8512]},["app",{"sourceInterval":[8464,8475]},"letterAscii",[]],["terminal",{"sourceInterval":[8478,8481]},"_"],["terminal",{"sourceInterval":[8484,8487]},"'"],["terminal",{"sourceInterval":[8490,8493]},"?"],["terminal",{"sourceInterval":[8496,8499]},"!"],["terminal",{"sourceInterval":[8502,8506]},"::"],["terminal",{"sourceInterval":[8509,8512]},"&"]]],"funcId":["define",{"sourceInterval":[8517,8559]},null,[],["seq",{"sourceInterval":[8526,8559]},["app",{"sourceInterval":[8526,8536]},"funcLetter",[]],["star",{"sourceInterval":[8537,8559]},["lex",{"sourceInterval":[8537,8558]},["alt",{"sourceInterval":[8539,8557]},["app",{"sourceInterval":[8539,8549]},"funcLetter",[]],["app",{"sourceInterval":[8552,8557]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[8585,8625]},null,[],["seq",{"sourceInterval":[8599,8625]},["alt",{"sourceInterval":[8600,8616]},["terminal",{"sourceInterval":[8600,8606]},"true"],["terminal",{"sourceInterval":[8609,8616]},"false"]],["not",{"sourceInterval":[8618,8625]},["app",{"sourceInterval":[8619,8625]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[8653,8713]},null,[],["seq",{"sourceInterval":[8678,8713]},["not",{"sourceInterval":[8678,8709]},["alt",{"sourceInterval":[8680,8708]},["terminal",{"sourceInterval":[8680,8684]},"\""],["terminal",{"sourceInterval":[8687,8691]},"\\"],["app",{"sourceInterval":[8694,8708]},"lineTerminator",[]]]],["app",{"sourceInterval":[8710,8713]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[8718,8767]},null,[],["seq",{"sourceInterval":[8734,8767]},["terminal",{"sourceInterval":[8734,8738]},"\""],["star",{"sourceInterval":[8739,8762]},["app",{"sourceInterval":[8739,8761]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[8763,8767]},"\""]]],"keyword":["define",{"sourceInterval":[8820,9333]},null,[],["alt",{"sourceInterval":[8830,9333]},["app",{"sourceInterval":[8830,8833]},"fun",[]],["app",{"sourceInterval":[8849,8852]},"let",[]],["app",{"sourceInterval":[8867,8873]},"return",[]],["app",{"sourceInterval":[8889,8895]},"extend",[]],["app",{"sourceInterval":[8911,8917]},"native",[]],["app",{"sourceInterval":[8933,8939]},"public",[]],["app",{"sourceInterval":[8955,8959]},"null",[]],["app",{"sourceInterval":[8975,8977]},"if",[]],["app",{"sourceInterval":[8993,8997]},"else",[]],["app",{"sourceInterval":[9013,9018]},"while",[]],["app",{"sourceInterval":[9034,9040]},"repeat",[]],["app",{"sourceInterval":[9056,9058]},"do",[]],["app",{"sourceInterval":[9074,9079]},"until",[]],["app",{"sourceInterval":[9095,9097]},"as",[]],["app",{"sourceInterval":[9114,9121]},"mutates",[]],["app",{"sourceInterval":[9136,9143]},"extends",[]],["app",{"sourceInterval":[9158,9164]},"import",[]],["app",{"sourceInterval":[9179,9183]},"with",[]],["app",{"sourceInterval":[9198,9203]},"trait",[]],["app",{"sourceInterval":[9218,9224]},"initOf",[]],["app",{"sourceInterval":[9239,9247]},"override",[]],["app",{"sourceInterval":[9262,9270]},"abstract",[]],["app",{"sourceInterval":[9285,9292]},"virtual",[]],["app",{"sourceInterval":[9307,9313]},"inline",[]],["app",{"sourceInterval":[9328,9333]},"const",[]]]],"contract":["define",{"sourceInterval":[9338,9367]},null,[],["seq",{"sourceInterval":[9349,9367]},["terminal",{"sourceInterval":[9349,9359]},"contract"],["not",{"sourceInterval":[9360,9367]},["app",{"sourceInterval":[9361,9367]},"idPart",[]]]]],"let":["define",{"sourceInterval":[9372,9391]},null,[],["seq",{"sourceInterval":[9378,9391]},["terminal",{"sourceInterval":[9378,9383]},"let"],["not",{"sourceInterval":[9384,9391]},["app",{"sourceInterval":[9385,9391]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[9396,9415]},null,[],["seq",{"sourceInterval":[9402,9415]},["terminal",{"sourceInterval":[9402,9407]},"fun"],["not",{"sourceInterval":[9408,9415]},["app",{"sourceInterval":[9409,9415]},"idPart",[]]]]],"return":["define",{"sourceInterval":[9420,9445]},null,[],["seq",{"sourceInterval":[9429,9445]},["terminal",{"sourceInterval":[9429,9437]},"return"],["not",{"sourceInterval":[9438,9445]},["app",{"sourceInterval":[9439,9445]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[9450,9475]},null,[],["seq",{"sourceInterval":[9459,9475]},["terminal",{"sourceInterval":[9459,9467]},"extend"],["not",{"sourceInterval":[9468,9475]},["app",{"sourceInterval":[9469,9475]},"idPart",[]]]]],"native":["define",{"sourceInterval":[9480,9505]},null,[],["seq",{"sourceInterval":[9489,9505]},["terminal",{"sourceInterval":[9489,9497]},"native"],["not",{"sourceInterval":[9498,9505]},["app",{"sourceInterval":[9499,9505]},"idPart",[]]]]],"public":["define",{"sourceInterval":[9510,9535]},null,[],["seq",{"sourceInterval":[9519,9535]},["terminal",{"sourceInterval":[9519,9527]},"public"],["not",{"sourceInterval":[9528,9535]},["app",{"sourceInterval":[9529,9535]},"idPart",[]]]]],"null":["define",{"sourceInterval":[9540,9561]},null,[],["seq",{"sourceInterval":[9547,9561]},["terminal",{"sourceInterval":[9547,9553]},"null"],["not",{"sourceInterval":[9554,9561]},["app",{"sourceInterval":[9555,9561]},"idPart",[]]]]],"if":["define",{"sourceInterval":[9566,9583]},null,[],["seq",{"sourceInterval":[9571,9583]},["terminal",{"sourceInterval":[9571,9575]},"if"],["not",{"sourceInterval":[9576,9583]},["app",{"sourceInterval":[9577,9583]},"idPart",[]]]]],"else":["define",{"sourceInterval":[9588,9609]},null,[],["seq",{"sourceInterval":[9595,9609]},["terminal",{"sourceInterval":[9595,9601]},"else"],["not",{"sourceInterval":[9602,9609]},["app",{"sourceInterval":[9603,9609]},"idPart",[]]]]],"while":["define",{"sourceInterval":[9614,9637]},null,[],["seq",{"sourceInterval":[9622,9637]},["terminal",{"sourceInterval":[9622,9629]},"while"],["not",{"sourceInterval":[9630,9637]},["app",{"sourceInterval":[9631,9637]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[9642,9667]},null,[],["seq",{"sourceInterval":[9651,9667]},["terminal",{"sourceInterval":[9651,9659]},"repeat"],["not",{"sourceInterval":[9660,9667]},["app",{"sourceInterval":[9661,9667]},"idPart",[]]]]],"do":["define",{"sourceInterval":[9672,9689]},null,[],["seq",{"sourceInterval":[9677,9689]},["terminal",{"sourceInterval":[9677,9681]},"do"],["not",{"sourceInterval":[9682,9689]},["app",{"sourceInterval":[9683,9689]},"idPart",[]]]]],"until":["define",{"sourceInterval":[9694,9717]},null,[],["seq",{"sourceInterval":[9702,9717]},["terminal",{"sourceInterval":[9702,9709]},"until"],["not",{"sourceInterval":[9710,9717]},["app",{"sourceInterval":[9711,9717]},"idPart",[]]]]],"as":["define",{"sourceInterval":[9722,9739]},null,[],["seq",{"sourceInterval":[9727,9739]},["terminal",{"sourceInterval":[9727,9731]},"as"],["not",{"sourceInterval":[9732,9739]},["app",{"sourceInterval":[9733,9739]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[9744,9771]},null,[],["seq",{"sourceInterval":[9754,9771]},["terminal",{"sourceInterval":[9754,9763]},"mutates"],["not",{"sourceInterval":[9764,9771]},["app",{"sourceInterval":[9765,9771]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[9776,9803]},null,[],["seq",{"sourceInterval":[9786,9803]},["terminal",{"sourceInterval":[9786,9795]},"extends"],["not",{"sourceInterval":[9796,9803]},["app",{"sourceInterval":[9797,9803]},"idPart",[]]]]],"import":["define",{"sourceInterval":[9808,9833]},null,[],["seq",{"sourceInterval":[9817,9833]},["terminal",{"sourceInterval":[9817,9825]},"import"],["not",{"sourceInterval":[9826,9833]},["app",{"sourceInterval":[9827,9833]},"idPart",[]]]]],"with":["define",{"sourceInterval":[9838,9859]},null,[],["seq",{"sourceInterval":[9845,9859]},["terminal",{"sourceInterval":[9845,9851]},"with"],["not",{"sourceInterval":[9852,9859]},["app",{"sourceInterval":[9853,9859]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[9864,9887]},null,[],["seq",{"sourceInterval":[9872,9887]},["terminal",{"sourceInterval":[9872,9879]},"trait"],["not",{"sourceInterval":[9880,9887]},["app",{"sourceInterval":[9881,9887]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[9892,9917]},null,[],["seq",{"sourceInterval":[9901,9917]},["terminal",{"sourceInterval":[9901,9909]},"initOf"],["not",{"sourceInterval":[9910,9917]},["app",{"sourceInterval":[9911,9917]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[9922,9949]},null,[],["seq",{"sourceInterval":[9932,9949]},["terminal",{"sourceInterval":[9932,9941]},"virtual"],["not",{"sourceInterval":[9942,9949]},["app",{"sourceInterval":[9943,9949]},"idPart",[]]]]],"override":["define",{"sourceInterval":[9954,9983]},null,[],["seq",{"sourceInterval":[9965,9983]},["terminal",{"sourceInterval":[9965,9975]},"override"],["not",{"sourceInterval":[9976,9983]},["app",{"sourceInterval":[9977,9983]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[9988,10013]},null,[],["seq",{"sourceInterval":[9997,10013]},["terminal",{"sourceInterval":[9997,10005]},"inline"],["not",{"sourceInterval":[10006,10013]},["app",{"sourceInterval":[10007,10013]},"idPart",[]]]]],"const":["define",{"sourceInterval":[10018,10041]},null,[],["seq",{"sourceInterval":[10026,10041]},["terminal",{"sourceInterval":[10026,10033]},"const"],["not",{"sourceInterval":[10034,10041]},["app",{"sourceInterval":[10035,10041]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[10046,10075]},null,[],["seq",{"sourceInterval":[10057,10075]},["terminal",{"sourceInterval":[10057,10067]},"abstract"],["not",{"sourceInterval":[10068,10075]},["app",{"sourceInterval":[10069,10075]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[10099,10122]},null,[],["terminal",{"sourceInterval":[10115,10122]},"@name"]],"reservedWord":["define",{"sourceInterval":[10144,10166]},null,[],["app",{"sourceInterval":[10159,10166]},"keyword",[]]],"space":["extend",{"sourceInterval":[10188,10221]},null,[],["alt",{"sourceInterval":[10197,10221]},["app",{"sourceInterval":[10197,10204]},"comment",[]],["app",{"sourceInterval":[10207,10221]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[10226,10272]},null,[],["alt",{"sourceInterval":[10236,10272]},["app",{"sourceInterval":[10236,10252]},"multiLineComment",[]],["app",{"sourceInterval":[10255,10272]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[10277,10327]},null,[],["alt",{"sourceInterval":[10294,10327]},["terminal",{"sourceInterval":[10294,10298]},"\n"],["terminal",{"sourceInterval":[10301,10305]},"\r"],["terminal",{"sourceInterval":[10308,10316]},"\u2028"],["terminal",{"sourceInterval":[10319,10327]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[10332,10373]},null,[],["seq",{"sourceInterval":[10351,10373]},["terminal",{"sourceInterval":[10351,10355]},"/*"],["star",{"sourceInterval":[10356,10368]},["seq",{"sourceInterval":[10357,10366]},["not",{"sourceInterval":[10357,10362]},["terminal",{"sourceInterval":[10358,10362]},"*/"]],["app",{"sourceInterval":[10363,10366]},"any",[]]]],["terminal",{"sourceInterval":[10369,10373]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[10378,10425]},null,[],["seq",{"sourceInterval":[10398,10425]},["terminal",{"sourceInterval":[10398,10402]},"//"],["star",{"sourceInterval":[10403,10425]},["seq",{"sourceInterval":[10404,10423]},["not",{"sourceInterval":[10404,10419]},["app",{"sourceInterval":[10405,10419]},"lineTerminator",[]]],["app",{"sourceInterval":[10420,10423]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralDec // Order is important\n integerLiteralDec = digit+\n integerLiteralHex = \"0x\" hexDigit+\n | \"0X\" hexDigit+\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n stringLiteralCharacter = ~(\"\\\"\" | \"\\\\\" | lineTerminator) any\n stringLiteral = \"\\\"\" stringLiteralCharacter* \"\\\"\"\n\n // Keywords\n // NOTE Order is important\n keyword = fun \n | let\n | return \n | extend \n | native \n | public \n | null \n | if \n | else \n | while \n | repeat \n | do \n | until \n | as \n | mutates\n | extends\n | import\n | with\n | trait\n | initOf\n | override\n | abstract\n | virtual\n | inline\n | const\n contract = \"contract\" ~idPart\n let = \"let\" ~idPart\n fun = \"fun\" ~idPart\n return = \"return\" ~idPart\n extend = \"extend\" ~idPart\n native = \"native\" ~idPart\n public = \"public\" ~idPart\n null = \"null\" ~idPart\n if = \"if\" ~idPart\n else = \"else\" ~idPart\n while = \"while\" ~idPart\n repeat = \"repeat\" ~idPart\n do = \"do\" ~idPart\n until = \"until\" ~idPart\n as = \"as\" ~idPart\n mutates = \"mutates\" ~idPart\n extends = \"extends\" ~idPart\n import = \"import\" ~idPart\n with = \"with\" ~idPart\n trait = \"trait\" ~idPart\n initOf = \"initOf\" ~idPart\n virtual = \"virtual\" ~idPart\n override = \"override\" ~idPart\n inline = \"inline\" ~idPart\n const = \"const\" ~idPart\n abstract = \"abstract\" ~idPart\n\n // Attributes\n nameAttribute = \"@name\"\n\n // Reserved\n reservedWord = keyword\n\n // Comments\n space += comment | lineTerminator\n comment = multiLineComment | singleLineComment\n lineTerminator = \"\\n\" | \"\\r\" | \"\\u2028\" | \"\\u2029\"\n multiLineComment = \"/*\" (~\"*/\" any)* \"*/\"\n singleLineComment = \"//\" (~lineTerminator any)*\n}"},"Tact",null,"Program",{"Program":["define",{"sourceInterval":[49,71]},null,[],["star",{"sourceInterval":[59,71]},["app",{"sourceInterval":[59,70]},"ProgramItem",[]]]],"ProgramItem":["define",{"sourceInterval":[76,300]},null,[],["alt",{"sourceInterval":[90,300]},["app",{"sourceInterval":[90,96]},"Struct",[]],["app",{"sourceInterval":[115,123]},"Contract",[]],["app",{"sourceInterval":[142,151]},"Primitive",[]],["app",{"sourceInterval":[170,184]},"StaticFunction",[]],["app",{"sourceInterval":[203,217]},"NativeFunction",[]],["app",{"sourceInterval":[236,249]},"ProgramImport",[]],["app",{"sourceInterval":[268,273]},"Trait",[]],["app",{"sourceInterval":[292,300]},"Constant",[]]]],"ProgramImport":["define",{"sourceInterval":[305,345]},null,[],["seq",{"sourceInterval":[321,345]},["app",{"sourceInterval":[321,327]},"import",[]],["app",{"sourceInterval":[328,341]},"stringLiteral",[]],["terminal",{"sourceInterval":[342,345]},";"]]],"Primitive":["define",{"sourceInterval":[380,412]},null,[],["seq",{"sourceInterval":[392,412]},["terminal",{"sourceInterval":[392,403]},"primitive"],["app",{"sourceInterval":[404,408]},"Type",[]],["terminal",{"sourceInterval":[409,412]},";"]]],"StaticFunction":["define",{"sourceInterval":[441,466]},null,[],["app",{"sourceInterval":[458,466]},"Function",[]]],"NativeFunction_withVoid":["define",{"sourceInterval":[488,592]},null,[],["seq",{"sourceInterval":[488,581]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["terminal",{"sourceInterval":[574,577]},")"],["terminal",{"sourceInterval":[578,581]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[614,727]},null,[],["seq",{"sourceInterval":[614,716]},["app",{"sourceInterval":[614,627]},"nameAttribute",[]],["terminal",{"sourceInterval":[628,631]},"("],["app",{"sourceInterval":[632,638]},"funcId",[]],["terminal",{"sourceInterval":[639,642]},")"],["star",{"sourceInterval":[643,661]},["app",{"sourceInterval":[643,660]},"FunctionAttribute",[]]],["app",{"sourceInterval":[662,668]},"native",[]],["app",{"sourceInterval":[669,671]},"id",[]],["terminal",{"sourceInterval":[672,675]},"("],["app",{"sourceInterval":[676,699]},"ListOf",[["app",{"sourceInterval":[683,694]},"FunctionArg",[]],["terminal",{"sourceInterval":[695,698]},","]]],["terminal",{"sourceInterval":[700,703]},")"],["terminal",{"sourceInterval":[704,707]},":"],["app",{"sourceInterval":[708,712]},"Type",[]],["terminal",{"sourceInterval":[713,716]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,727]},null,[],["alt",{"sourceInterval":[488,727]},["app",{"sourceInterval":[488,581]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[614,716]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[770,796]},null,[],["seq",{"sourceInterval":[770,785]},["app",{"sourceInterval":[770,781]},"typeLiteral",[]],["terminal",{"sourceInterval":[782,785]},"?"]]],"Type_required":["define",{"sourceInterval":[808,830]},null,[],["app",{"sourceInterval":[808,819]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[842,907]},null,[],["seq",{"sourceInterval":[842,901]},["terminal",{"sourceInterval":[842,847]},"map"],["terminal",{"sourceInterval":[848,851]},"<"],["app",{"sourceInterval":[852,863]},"typeLiteral",[]],["opt",{"sourceInterval":[864,872]},["seq",{"sourceInterval":[865,870]},["app",{"sourceInterval":[865,867]},"as",[]],["app",{"sourceInterval":[868,870]},"id",[]]]],["terminal",{"sourceInterval":[873,876]},","],["app",{"sourceInterval":[877,888]},"typeLiteral",[]],["opt",{"sourceInterval":[889,897]},["seq",{"sourceInterval":[890,895]},["app",{"sourceInterval":[890,892]},"as",[]],["app",{"sourceInterval":[893,895]},"id",[]]]],["terminal",{"sourceInterval":[898,901]},">"]]],"Type_bounced":["define",{"sourceInterval":[919,958]},null,[],["seq",{"sourceInterval":[919,948]},["terminal",{"sourceInterval":[919,928]},"bounced"],["terminal",{"sourceInterval":[929,932]},"<"],["app",{"sourceInterval":[933,944]},"typeLiteral",[]],["terminal",{"sourceInterval":[945,948]},">"]]],"Type":["define",{"sourceInterval":[763,958]},null,[],["alt",{"sourceInterval":[770,958]},["app",{"sourceInterval":[770,785]},"Type_optional",[]],["app",{"sourceInterval":[808,819]},"Type_required",[]],["app",{"sourceInterval":[842,901]},"Type_map",[]],["app",{"sourceInterval":[919,948]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[971,996]},null,[],["seq",{"sourceInterval":[971,986]},["app",{"sourceInterval":[971,973]},"id",[]],["terminal",{"sourceInterval":[974,977]},":"],["app",{"sourceInterval":[978,982]},"Type",[]],["terminal",{"sourceInterval":[983,986]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1009,1057]},null,[],["seq",{"sourceInterval":[1009,1039]},["app",{"sourceInterval":[1009,1011]},"id",[]],["terminal",{"sourceInterval":[1012,1015]},":"],["app",{"sourceInterval":[1016,1020]},"Type",[]],["terminal",{"sourceInterval":[1021,1024]},"="],["app",{"sourceInterval":[1025,1035]},"Expression",[]],["terminal",{"sourceInterval":[1036,1039]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1070,1111]},null,[],["seq",{"sourceInterval":[1070,1091]},["app",{"sourceInterval":[1070,1072]},"id",[]],["terminal",{"sourceInterval":[1073,1076]},":"],["app",{"sourceInterval":[1077,1081]},"Type",[]],["app",{"sourceInterval":[1082,1084]},"as",[]],["app",{"sourceInterval":[1085,1087]},"id",[]],["terminal",{"sourceInterval":[1088,1091]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1124,1187]},null,[],["seq",{"sourceInterval":[1124,1160]},["app",{"sourceInterval":[1124,1126]},"id",[]],["terminal",{"sourceInterval":[1127,1130]},":"],["app",{"sourceInterval":[1131,1135]},"Type",[]],["app",{"sourceInterval":[1136,1138]},"as",[]],["app",{"sourceInterval":[1139,1141]},"id",[]],["terminal",{"sourceInterval":[1142,1145]},"="],["app",{"sourceInterval":[1146,1156]},"Expression",[]],["terminal",{"sourceInterval":[1157,1160]},";"]]],"Field":["define",{"sourceInterval":[963,1187]},null,[],["alt",{"sourceInterval":[971,1187]},["app",{"sourceInterval":[971,986]},"Field_default",[]],["app",{"sourceInterval":[1009,1039]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1070,1091]},"Field_withSerialization",[]],["app",{"sourceInterval":[1124,1160]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1233,1253]},null,[],["app",{"sourceInterval":[1233,1240]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1278,1299]},null,[],["app",{"sourceInterval":[1278,1286]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1324,1345]},null,[],["app",{"sourceInterval":[1324,1332]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1213,1345]},null,[],["alt",{"sourceInterval":[1233,1345]},["app",{"sourceInterval":[1233,1240]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1278,1286]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1324,1332]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1361,1433]},null,[],["seq",{"sourceInterval":[1361,1421]},["star",{"sourceInterval":[1361,1379]},["app",{"sourceInterval":[1361,1378]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1380,1384]},["app",{"sourceInterval":[1381,1384]},"fun",[]]],["app",{"sourceInterval":[1385,1390]},"const",[]],["app",{"sourceInterval":[1391,1393]},"id",[]],["terminal",{"sourceInterval":[1394,1397]},":"],["app",{"sourceInterval":[1398,1402]},"Type",[]],["terminal",{"sourceInterval":[1403,1406]},"="],["app",{"sourceInterval":[1407,1417]},"Expression",[]],["terminal",{"sourceInterval":[1418,1421]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1449,1521]},null,[],["seq",{"sourceInterval":[1449,1494]},["star",{"sourceInterval":[1449,1467]},["app",{"sourceInterval":[1449,1466]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1468,1472]},["app",{"sourceInterval":[1469,1472]},"fun",[]]],["app",{"sourceInterval":[1473,1478]},"const",[]],["app",{"sourceInterval":[1479,1481]},"id",[]],["terminal",{"sourceInterval":[1482,1485]},":"],["app",{"sourceInterval":[1486,1490]},"Type",[]],["terminal",{"sourceInterval":[1491,1494]},";"]]],"Constant":["define",{"sourceInterval":[1350,1521]},null,[],["alt",{"sourceInterval":[1361,1521]},["app",{"sourceInterval":[1361,1421]},"Constant_withValue",[]],["app",{"sourceInterval":[1449,1494]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1550,1602]},null,[],["seq",{"sourceInterval":[1550,1590]},["terminal",{"sourceInterval":[1550,1558]},"struct"],["app",{"sourceInterval":[1559,1570]},"typeLiteral",[]],["terminal",{"sourceInterval":[1571,1574]},"{"],["star",{"sourceInterval":[1575,1586]},["app",{"sourceInterval":[1575,1585]},"StructBody",[]]],["terminal",{"sourceInterval":[1587,1590]},"}"]]],"Struct_message":["define",{"sourceInterval":[1616,1667]},null,[],["seq",{"sourceInterval":[1616,1657]},["terminal",{"sourceInterval":[1616,1625]},"message"],["app",{"sourceInterval":[1626,1637]},"typeLiteral",[]],["terminal",{"sourceInterval":[1638,1641]},"{"],["star",{"sourceInterval":[1642,1653]},["app",{"sourceInterval":[1642,1652]},"StructBody",[]]],["terminal",{"sourceInterval":[1654,1657]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1681,1761]},null,[],["seq",{"sourceInterval":[1681,1745]},["terminal",{"sourceInterval":[1681,1690]},"message"],["terminal",{"sourceInterval":[1691,1694]},"("],["app",{"sourceInterval":[1695,1709]},"integerLiteral",[]],["terminal",{"sourceInterval":[1710,1713]},")"],["app",{"sourceInterval":[1714,1725]},"typeLiteral",[]],["terminal",{"sourceInterval":[1726,1729]},"{"],["star",{"sourceInterval":[1730,1741]},["app",{"sourceInterval":[1730,1740]},"StructBody",[]]],["terminal",{"sourceInterval":[1742,1745]},"}"]]],"Struct":["define",{"sourceInterval":[1541,1761]},null,[],["alt",{"sourceInterval":[1550,1761]},["app",{"sourceInterval":[1550,1590]},"Struct_originary",[]],["app",{"sourceInterval":[1616,1657]},"Struct_message",[]],["app",{"sourceInterval":[1681,1745]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1766,1784]},null,[],["app",{"sourceInterval":[1779,1784]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1817,1878]},null,[],["seq",{"sourceInterval":[1817,1869]},["star",{"sourceInterval":[1817,1835]},["app",{"sourceInterval":[1817,1834]},"ContractAttribute",[]]],["app",{"sourceInterval":[1836,1844]},"contract",[]],["app",{"sourceInterval":[1845,1847]},"id",[]],["terminal",{"sourceInterval":[1848,1851]},"{"],["star",{"sourceInterval":[1852,1865]},["app",{"sourceInterval":[1852,1864]},"ContractBody",[]]],["terminal",{"sourceInterval":[1866,1869]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1894,1979]},null,[],["seq",{"sourceInterval":[1894,1966]},["star",{"sourceInterval":[1894,1912]},["app",{"sourceInterval":[1894,1911]},"ContractAttribute",[]]],["app",{"sourceInterval":[1913,1921]},"contract",[]],["app",{"sourceInterval":[1922,1924]},"id",[]],["app",{"sourceInterval":[1925,1929]},"with",[]],["app",{"sourceInterval":[1930,1944]},"ListOf",[["app",{"sourceInterval":[1937,1939]},"id",[]],["terminal",{"sourceInterval":[1940,1943]},","]]],["terminal",{"sourceInterval":[1945,1948]},"{"],["star",{"sourceInterval":[1949,1962]},["app",{"sourceInterval":[1949,1961]},"ContractBody",[]]],["terminal",{"sourceInterval":[1963,1966]},"}"]]],"Contract":["define",{"sourceInterval":[1806,1979]},null,[],["alt",{"sourceInterval":[1817,1979]},["app",{"sourceInterval":[1817,1869]},"Contract_simple",[]],["app",{"sourceInterval":[1894,1966]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1984,2056]},null,[],["seq",{"sourceInterval":[1999,2056]},["terminal",{"sourceInterval":[1999,2005]},"init"],["terminal",{"sourceInterval":[2006,2009]},"("],["app",{"sourceInterval":[2010,2033]},"ListOf",[["app",{"sourceInterval":[2017,2028]},"FunctionArg",[]],["terminal",{"sourceInterval":[2029,2032]},","]]],["terminal",{"sourceInterval":[2034,2037]},")"],["terminal",{"sourceInterval":[2038,2041]},"{"],["star",{"sourceInterval":[2042,2052]},["app",{"sourceInterval":[2042,2051]},"Statement",[]]],["terminal",{"sourceInterval":[2053,2056]},"}"]]],"ContractBody":["define",{"sourceInterval":[2061,2204]},null,[],["alt",{"sourceInterval":[2076,2204]},["app",{"sourceInterval":[2076,2081]},"Field",[]],["app",{"sourceInterval":[2101,2113]},"ContractInit",[]],["app",{"sourceInterval":[2133,2148]},"ReceiveFunction",[]],["app",{"sourceInterval":[2168,2176]},"Function",[]],["app",{"sourceInterval":[2196,2204]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2235,2293]},null,[],["seq",{"sourceInterval":[2235,2281]},["star",{"sourceInterval":[2235,2253]},["app",{"sourceInterval":[2235,2252]},"ContractAttribute",[]]],["app",{"sourceInterval":[2254,2259]},"trait",[]],["app",{"sourceInterval":[2260,2262]},"id",[]],["terminal",{"sourceInterval":[2263,2266]},"{"],["star",{"sourceInterval":[2267,2277]},["app",{"sourceInterval":[2267,2276]},"TraitBody",[]]],["terminal",{"sourceInterval":[2278,2281]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2306,2385]},null,[],["seq",{"sourceInterval":[2306,2372]},["star",{"sourceInterval":[2306,2324]},["app",{"sourceInterval":[2306,2323]},"ContractAttribute",[]]],["app",{"sourceInterval":[2325,2330]},"trait",[]],["app",{"sourceInterval":[2331,2333]},"id",[]],["app",{"sourceInterval":[2334,2338]},"with",[]],["app",{"sourceInterval":[2339,2353]},"ListOf",[["app",{"sourceInterval":[2346,2348]},"id",[]],["terminal",{"sourceInterval":[2349,2352]},","]]],["terminal",{"sourceInterval":[2354,2357]},"{"],["star",{"sourceInterval":[2358,2368]},["app",{"sourceInterval":[2358,2367]},"TraitBody",[]]],["terminal",{"sourceInterval":[2369,2372]},"}"]]],"Trait":["define",{"sourceInterval":[2227,2385]},null,[],["alt",{"sourceInterval":[2235,2385]},["app",{"sourceInterval":[2235,2281]},"Trait_originary",[]],["app",{"sourceInterval":[2306,2372]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2390,2489]},null,[],["alt",{"sourceInterval":[2402,2489]},["app",{"sourceInterval":[2402,2407]},"Field",[]],["app",{"sourceInterval":[2424,2439]},"ReceiveFunction",[]],["app",{"sourceInterval":[2456,2464]},"Function",[]],["app",{"sourceInterval":[2481,2489]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2542,2588]},null,[],["seq",{"sourceInterval":[2542,2576]},["terminal",{"sourceInterval":[2542,2554]},"@interface"],["terminal",{"sourceInterval":[2555,2558]},"("],["app",{"sourceInterval":[2559,2572]},"stringLiteral",[]],["terminal",{"sourceInterval":[2573,2576]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2522,2588]},null,[],["app",{"sourceInterval":[2542,2588]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2630,2648]},null,[],["terminal",{"sourceInterval":[2630,2635]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2673,2692]},null,[],["app",{"sourceInterval":[2673,2680]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2717,2736]},null,[],["app",{"sourceInterval":[2717,2724]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2761,2780]},null,[],["app",{"sourceInterval":[2761,2768]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2805,2825]},null,[],["app",{"sourceInterval":[2805,2813]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2850,2868]},null,[],["app",{"sourceInterval":[2850,2856]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2893,2913]},null,[],["app",{"sourceInterval":[2893,2901]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2610,2913]},null,[],["alt",{"sourceInterval":[2630,2913]},["app",{"sourceInterval":[2630,2635]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2673,2680]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2717,2724]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2761,2768]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2805,2813]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2850,2856]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2893,2901]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2929,3016]},null,[],["seq",{"sourceInterval":[2929,3005]},["star",{"sourceInterval":[2929,2947]},["app",{"sourceInterval":[2929,2946]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2948,2951]},"fun",[]],["app",{"sourceInterval":[2952,2954]},"id",[]],["terminal",{"sourceInterval":[2955,2958]},"("],["app",{"sourceInterval":[2959,2982]},"ListOf",[["app",{"sourceInterval":[2966,2977]},"FunctionArg",[]],["terminal",{"sourceInterval":[2978,2981]},","]]],["terminal",{"sourceInterval":[2983,2986]},")"],["terminal",{"sourceInterval":[2987,2990]},"{"],["star",{"sourceInterval":[2991,3001]},["app",{"sourceInterval":[2991,3000]},"Statement",[]]],["terminal",{"sourceInterval":[3002,3005]},"}"]]],"Function_withType":["define",{"sourceInterval":[3032,3128]},null,[],["seq",{"sourceInterval":[3032,3117]},["star",{"sourceInterval":[3032,3050]},["app",{"sourceInterval":[3032,3049]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3051,3054]},"fun",[]],["app",{"sourceInterval":[3055,3057]},"id",[]],["terminal",{"sourceInterval":[3058,3061]},"("],["app",{"sourceInterval":[3062,3085]},"ListOf",[["app",{"sourceInterval":[3069,3080]},"FunctionArg",[]],["terminal",{"sourceInterval":[3081,3084]},","]]],["terminal",{"sourceInterval":[3086,3089]},")"],["terminal",{"sourceInterval":[3090,3093]},":"],["app",{"sourceInterval":[3094,3098]},"Type",[]],["terminal",{"sourceInterval":[3099,3102]},"{"],["star",{"sourceInterval":[3103,3113]},["app",{"sourceInterval":[3103,3112]},"Statement",[]]],["terminal",{"sourceInterval":[3114,3117]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3144,3220]},null,[],["seq",{"sourceInterval":[3144,3205]},["star",{"sourceInterval":[3144,3162]},["app",{"sourceInterval":[3144,3161]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3163,3166]},"fun",[]],["app",{"sourceInterval":[3167,3169]},"id",[]],["terminal",{"sourceInterval":[3170,3173]},"("],["app",{"sourceInterval":[3174,3197]},"ListOf",[["app",{"sourceInterval":[3181,3192]},"FunctionArg",[]],["terminal",{"sourceInterval":[3193,3196]},","]]],["terminal",{"sourceInterval":[3198,3201]},")"],["terminal",{"sourceInterval":[3202,3205]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3236,3321]},null,[],["seq",{"sourceInterval":[3236,3306]},["star",{"sourceInterval":[3236,3254]},["app",{"sourceInterval":[3236,3253]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3255,3258]},"fun",[]],["app",{"sourceInterval":[3259,3261]},"id",[]],["terminal",{"sourceInterval":[3262,3265]},"("],["app",{"sourceInterval":[3266,3289]},"ListOf",[["app",{"sourceInterval":[3273,3284]},"FunctionArg",[]],["terminal",{"sourceInterval":[3285,3288]},","]]],["terminal",{"sourceInterval":[3290,3293]},")"],["terminal",{"sourceInterval":[3294,3297]},":"],["app",{"sourceInterval":[3298,3302]},"Type",[]],["terminal",{"sourceInterval":[3303,3306]},";"]]],"Function":["define",{"sourceInterval":[2918,3321]},null,[],["alt",{"sourceInterval":[2929,3321]},["app",{"sourceInterval":[2929,3005]},"Function_withVoid",[]],["app",{"sourceInterval":[3032,3117]},"Function_withType",[]],["app",{"sourceInterval":[3144,3205]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3236,3306]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3326,3351]},null,[],["seq",{"sourceInterval":[3340,3351]},["app",{"sourceInterval":[3340,3342]},"id",[]],["terminal",{"sourceInterval":[3343,3346]},":"],["app",{"sourceInterval":[3347,3351]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3379,3436]},null,[],["seq",{"sourceInterval":[3379,3427]},["terminal",{"sourceInterval":[3379,3388]},"receive"],["terminal",{"sourceInterval":[3389,3392]},"("],["app",{"sourceInterval":[3393,3404]},"FunctionArg",[]],["terminal",{"sourceInterval":[3405,3408]},")"],["terminal",{"sourceInterval":[3409,3412]},"{"],["star",{"sourceInterval":[3413,3423]},["app",{"sourceInterval":[3413,3422]},"Statement",[]]],["terminal",{"sourceInterval":[3424,3427]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3459,3503]},null,[],["seq",{"sourceInterval":[3459,3495]},["terminal",{"sourceInterval":[3459,3468]},"receive"],["terminal",{"sourceInterval":[3469,3472]},"("],["terminal",{"sourceInterval":[3473,3476]},")"],["terminal",{"sourceInterval":[3477,3480]},"{"],["star",{"sourceInterval":[3481,3491]},["app",{"sourceInterval":[3481,3490]},"Statement",[]]],["terminal",{"sourceInterval":[3492,3495]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3526,3586]},null,[],["seq",{"sourceInterval":[3526,3576]},["terminal",{"sourceInterval":[3526,3535]},"receive"],["terminal",{"sourceInterval":[3536,3539]},"("],["app",{"sourceInterval":[3540,3553]},"stringLiteral",[]],["terminal",{"sourceInterval":[3554,3557]},")"],["terminal",{"sourceInterval":[3558,3561]},"{"],["star",{"sourceInterval":[3562,3572]},["app",{"sourceInterval":[3562,3571]},"Statement",[]]],["terminal",{"sourceInterval":[3573,3576]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3609,3667]},null,[],["seq",{"sourceInterval":[3609,3657]},["terminal",{"sourceInterval":[3609,3618]},"bounced"],["terminal",{"sourceInterval":[3619,3622]},"("],["app",{"sourceInterval":[3623,3634]},"FunctionArg",[]],["terminal",{"sourceInterval":[3635,3638]},")"],["terminal",{"sourceInterval":[3639,3642]},"{"],["star",{"sourceInterval":[3643,3653]},["app",{"sourceInterval":[3643,3652]},"Statement",[]]],["terminal",{"sourceInterval":[3654,3657]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3690,3756]},null,[],["seq",{"sourceInterval":[3690,3739]},["terminal",{"sourceInterval":[3690,3700]},"external"],["terminal",{"sourceInterval":[3701,3704]},"("],["app",{"sourceInterval":[3705,3716]},"FunctionArg",[]],["terminal",{"sourceInterval":[3717,3720]},")"],["terminal",{"sourceInterval":[3721,3724]},"{"],["star",{"sourceInterval":[3725,3735]},["app",{"sourceInterval":[3725,3734]},"Statement",[]]],["terminal",{"sourceInterval":[3736,3739]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3779,3848]},null,[],["seq",{"sourceInterval":[3779,3830]},["terminal",{"sourceInterval":[3779,3789]},"external"],["terminal",{"sourceInterval":[3790,3793]},"("],["app",{"sourceInterval":[3794,3807]},"stringLiteral",[]],["terminal",{"sourceInterval":[3808,3811]},")"],["terminal",{"sourceInterval":[3812,3815]},"{"],["star",{"sourceInterval":[3816,3826]},["app",{"sourceInterval":[3816,3825]},"Statement",[]]],["terminal",{"sourceInterval":[3827,3830]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3871,3924]},null,[],["seq",{"sourceInterval":[3871,3908]},["terminal",{"sourceInterval":[3871,3881]},"external"],["terminal",{"sourceInterval":[3882,3885]},"("],["terminal",{"sourceInterval":[3886,3889]},")"],["terminal",{"sourceInterval":[3890,3893]},"{"],["star",{"sourceInterval":[3894,3904]},["app",{"sourceInterval":[3894,3903]},"Statement",[]]],["terminal",{"sourceInterval":[3905,3908]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3361,3924]},null,[],["alt",{"sourceInterval":[3379,3924]},["app",{"sourceInterval":[3379,3427]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3459,3495]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3526,3576]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3609,3657]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3690,3739]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3779,3830]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3871,3908]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3948,4273]},null,[],["alt",{"sourceInterval":[3960,4273]},["app",{"sourceInterval":[3960,3972]},"StatementLet",[]],["app",{"sourceInterval":[3989,4003]},"StatementBlock",[]],["app",{"sourceInterval":[4020,4035]},"StatementReturn",[]],["app",{"sourceInterval":[4052,4071]},"StatementExpression",[]],["app",{"sourceInterval":[4088,4103]},"StatementAssign",[]],["app",{"sourceInterval":[4120,4144]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4161,4179]},"StatementCondition",[]],["app",{"sourceInterval":[4196,4210]},"StatementWhile",[]],["app",{"sourceInterval":[4227,4242]},"StatementRepeat",[]],["app",{"sourceInterval":[4259,4273]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4278,4313]},null,[],["seq",{"sourceInterval":[4295,4313]},["terminal",{"sourceInterval":[4295,4298]},"{"],["star",{"sourceInterval":[4299,4309]},["app",{"sourceInterval":[4299,4308]},"Statement",[]]],["terminal",{"sourceInterval":[4310,4313]},"}"]]],"StatementLet":["define",{"sourceInterval":[4318,4367]},null,[],["seq",{"sourceInterval":[4333,4367]},["app",{"sourceInterval":[4333,4336]},"let",[]],["app",{"sourceInterval":[4337,4339]},"id",[]],["terminal",{"sourceInterval":[4340,4343]},":"],["app",{"sourceInterval":[4344,4348]},"Type",[]],["terminal",{"sourceInterval":[4349,4352]},"="],["app",{"sourceInterval":[4353,4363]},"Expression",[]],["terminal",{"sourceInterval":[4364,4367]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4390,4428]},null,[],["seq",{"sourceInterval":[4390,4411]},["app",{"sourceInterval":[4390,4396]},"return",[]],["app",{"sourceInterval":[4397,4407]},"Expression",[]],["terminal",{"sourceInterval":[4408,4411]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4451,4481]},null,[],["seq",{"sourceInterval":[4451,4461]},["app",{"sourceInterval":[4451,4457]},"return",[]],["terminal",{"sourceInterval":[4458,4461]},";"]]],"StatementReturn":["define",{"sourceInterval":[4372,4481]},null,[],["alt",{"sourceInterval":[4390,4481]},["app",{"sourceInterval":[4390,4411]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4451,4461]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4490,4526]},null,[],["seq",{"sourceInterval":[4512,4526]},["app",{"sourceInterval":[4512,4522]},"Expression",[]],["terminal",{"sourceInterval":[4523,4526]},";"]]],"StatementAssign":["define",{"sourceInterval":[4531,4574]},null,[],["seq",{"sourceInterval":[4549,4574]},["app",{"sourceInterval":[4549,4555]},"LValue",[]],["terminal",{"sourceInterval":[4556,4559]},"="],["app",{"sourceInterval":[4560,4570]},"Expression",[]],["terminal",{"sourceInterval":[4571,4574]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4579,4869]},null,[],["alt",{"sourceInterval":[4606,4869]},["app",{"sourceInterval":[4606,4633]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4665,4692]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4724,4751]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4783,4810]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4842,4869]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4874,4930]},null,[],["seq",{"sourceInterval":[4904,4930]},["app",{"sourceInterval":[4904,4910]},"LValue",[]],["terminal",{"sourceInterval":[4911,4915]},"+="],["app",{"sourceInterval":[4916,4926]},"Expression",[]],["terminal",{"sourceInterval":[4927,4930]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4935,4991]},null,[],["seq",{"sourceInterval":[4965,4991]},["app",{"sourceInterval":[4965,4971]},"LValue",[]],["terminal",{"sourceInterval":[4972,4976]},"-="],["app",{"sourceInterval":[4977,4987]},"Expression",[]],["terminal",{"sourceInterval":[4988,4991]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[4996,5052]},null,[],["seq",{"sourceInterval":[5026,5052]},["app",{"sourceInterval":[5026,5032]},"LValue",[]],["terminal",{"sourceInterval":[5033,5037]},"*="],["app",{"sourceInterval":[5038,5048]},"Expression",[]],["terminal",{"sourceInterval":[5049,5052]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5057,5113]},null,[],["seq",{"sourceInterval":[5087,5113]},["app",{"sourceInterval":[5087,5093]},"LValue",[]],["terminal",{"sourceInterval":[5094,5098]},"/="],["app",{"sourceInterval":[5099,5109]},"Expression",[]],["terminal",{"sourceInterval":[5110,5113]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5118,5174]},null,[],["seq",{"sourceInterval":[5148,5174]},["app",{"sourceInterval":[5148,5154]},"LValue",[]],["terminal",{"sourceInterval":[5155,5159]},"%="],["app",{"sourceInterval":[5160,5170]},"Expression",[]],["terminal",{"sourceInterval":[5171,5174]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5200,5247]},null,[],["seq",{"sourceInterval":[5200,5238]},["app",{"sourceInterval":[5200,5202]},"if",[]],["app",{"sourceInterval":[5203,5213]},"Expression",[]],["terminal",{"sourceInterval":[5214,5217]},"{"],["star",{"sourceInterval":[5218,5228]},["app",{"sourceInterval":[5218,5227]},"Statement",[]]],["terminal",{"sourceInterval":[5229,5232]},"}"],["not",{"sourceInterval":[5233,5238]},["app",{"sourceInterval":[5234,5238]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5273,5340]},null,[],["seq",{"sourceInterval":[5273,5329]},["app",{"sourceInterval":[5273,5275]},"if",[]],["app",{"sourceInterval":[5276,5286]},"Expression",[]],["terminal",{"sourceInterval":[5287,5290]},"{"],["star",{"sourceInterval":[5291,5301]},["app",{"sourceInterval":[5291,5300]},"Statement",[]]],["terminal",{"sourceInterval":[5302,5305]},"}"],["app",{"sourceInterval":[5306,5310]},"else",[]],["terminal",{"sourceInterval":[5311,5314]},"{"],["star",{"sourceInterval":[5315,5325]},["app",{"sourceInterval":[5315,5324]},"Statement",[]]],["terminal",{"sourceInterval":[5326,5329]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5366,5435]},null,[],["seq",{"sourceInterval":[5366,5422]},["app",{"sourceInterval":[5366,5368]},"if",[]],["app",{"sourceInterval":[5369,5379]},"Expression",[]],["terminal",{"sourceInterval":[5380,5383]},"{"],["star",{"sourceInterval":[5384,5394]},["app",{"sourceInterval":[5384,5393]},"Statement",[]]],["terminal",{"sourceInterval":[5395,5398]},"}"],["app",{"sourceInterval":[5399,5403]},"else",[]],["app",{"sourceInterval":[5404,5422]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5179,5435]},null,[],["alt",{"sourceInterval":[5200,5435]},["app",{"sourceInterval":[5200,5238]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5273,5329]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5366,5422]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5440,5500]},null,[],["seq",{"sourceInterval":[5457,5500]},["app",{"sourceInterval":[5457,5462]},"while",[]],["terminal",{"sourceInterval":[5463,5466]},"("],["app",{"sourceInterval":[5467,5477]},"Expression",[]],["terminal",{"sourceInterval":[5478,5481]},")"],["terminal",{"sourceInterval":[5482,5485]},"{"],["star",{"sourceInterval":[5486,5496]},["app",{"sourceInterval":[5486,5495]},"Statement",[]]],["terminal",{"sourceInterval":[5497,5500]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5505,5567]},null,[],["seq",{"sourceInterval":[5523,5567]},["app",{"sourceInterval":[5523,5529]},"repeat",[]],["terminal",{"sourceInterval":[5530,5533]},"("],["app",{"sourceInterval":[5534,5544]},"Expression",[]],["terminal",{"sourceInterval":[5545,5548]},")"],["terminal",{"sourceInterval":[5549,5552]},"{"],["star",{"sourceInterval":[5553,5563]},["app",{"sourceInterval":[5553,5562]},"Statement",[]]],["terminal",{"sourceInterval":[5564,5567]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5572,5639]},null,[],["seq",{"sourceInterval":[5589,5639]},["app",{"sourceInterval":[5589,5591]},"do",[]],["terminal",{"sourceInterval":[5592,5595]},"{"],["star",{"sourceInterval":[5596,5606]},["app",{"sourceInterval":[5596,5605]},"Statement",[]]],["terminal",{"sourceInterval":[5607,5610]},"}"],["app",{"sourceInterval":[5611,5616]},"until",[]],["terminal",{"sourceInterval":[5617,5620]},"("],["app",{"sourceInterval":[5621,5631]},"Expression",[]],["terminal",{"sourceInterval":[5632,5635]},")"],["terminal",{"sourceInterval":[5636,5639]},";"]]],"LValue_more":["define",{"sourceInterval":[5669,5689]},null,[],["seq",{"sourceInterval":[5669,5682]},["app",{"sourceInterval":[5669,5671]},"id",[]],["terminal",{"sourceInterval":[5672,5675]},"."],["app",{"sourceInterval":[5676,5682]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5703,5714]},null,[],["app",{"sourceInterval":[5703,5705]},"id",[]]],"LValue":["define",{"sourceInterval":[5660,5714]},null,[],["alt",{"sourceInterval":[5669,5714]},["app",{"sourceInterval":[5669,5682]},"LValue_more",[]],["app",{"sourceInterval":[5703,5705]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5739,5764]},null,[],["app",{"sourceInterval":[5752,5764]},"ExpressionOr",[]]],"ExpressionOr_or":["define",{"sourceInterval":[5784,5820]},null,[],["seq",{"sourceInterval":[5784,5815]},["app",{"sourceInterval":[5784,5796]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5797,5801]},"||"],["app",{"sourceInterval":[5802,5815]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5769,5853]},null,[],["alt",{"sourceInterval":[5784,5853]},["app",{"sourceInterval":[5784,5815]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5840,5853]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[5874,5916]},null,[],["seq",{"sourceInterval":[5874,5910]},["app",{"sourceInterval":[5874,5887]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[5888,5892]},"&&"],["app",{"sourceInterval":[5893,5910]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[5858,5954]},null,[],["alt",{"sourceInterval":[5874,5954]},["app",{"sourceInterval":[5874,5910]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[5937,5954]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[5979,6024]},null,[],["seq",{"sourceInterval":[5979,6018]},["app",{"sourceInterval":[5979,5996]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5997,6001]},"!="],["app",{"sourceInterval":[6002,6018]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6049,6093]},null,[],["seq",{"sourceInterval":[6049,6088]},["app",{"sourceInterval":[6049,6066]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6067,6071]},"=="],["app",{"sourceInterval":[6072,6088]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6118,6161]},null,[],["seq",{"sourceInterval":[6118,6156]},["app",{"sourceInterval":[6118,6135]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6136,6139]},">"],["app",{"sourceInterval":[6140,6156]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6186,6231]},null,[],["seq",{"sourceInterval":[6186,6225]},["app",{"sourceInterval":[6186,6203]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6204,6208]},">="],["app",{"sourceInterval":[6209,6225]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6256,6299]},null,[],["seq",{"sourceInterval":[6256,6294]},["app",{"sourceInterval":[6256,6273]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6274,6277]},"<"],["app",{"sourceInterval":[6278,6294]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6324,6369]},null,[],["seq",{"sourceInterval":[6324,6363]},["app",{"sourceInterval":[6324,6341]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6342,6346]},"<="],["app",{"sourceInterval":[6347,6363]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[5959,6410]},null,[],["alt",{"sourceInterval":[5979,6410]},["app",{"sourceInterval":[5979,6018]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6049,6088]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6118,6156]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6186,6225]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6256,6294]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6324,6363]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6394,6410]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6434,6475]},null,[],["seq",{"sourceInterval":[6434,6469]},["app",{"sourceInterval":[6434,6450]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6451,6455]},">>"],["app",{"sourceInterval":[6456,6469]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6498,6539]},null,[],["seq",{"sourceInterval":[6498,6533]},["app",{"sourceInterval":[6498,6514]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6515,6519]},"<<"],["app",{"sourceInterval":[6520,6533]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6562,6606]},null,[],["seq",{"sourceInterval":[6562,6596]},["app",{"sourceInterval":[6562,6578]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6579,6582]},"&"],["app",{"sourceInterval":[6583,6596]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6629,6672]},null,[],["seq",{"sourceInterval":[6629,6663]},["app",{"sourceInterval":[6629,6645]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6646,6649]},"|"],["app",{"sourceInterval":[6650,6663]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6415,6708]},null,[],["alt",{"sourceInterval":[6434,6708]},["app",{"sourceInterval":[6434,6469]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6498,6533]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6562,6596]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6629,6663]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6695,6708]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6729,6771]},null,[],["seq",{"sourceInterval":[6729,6765]},["app",{"sourceInterval":[6729,6742]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6743,6746]},"+"],["not",{"sourceInterval":[6747,6751]},["terminal",{"sourceInterval":[6748,6751]},"+"]],["app",{"sourceInterval":[6752,6765]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6792,6834]},null,[],["seq",{"sourceInterval":[6792,6828]},["app",{"sourceInterval":[6792,6805]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6806,6809]},"-"],["not",{"sourceInterval":[6810,6814]},["terminal",{"sourceInterval":[6811,6814]},"-"]],["app",{"sourceInterval":[6815,6828]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6713,6868]},null,[],["alt",{"sourceInterval":[6729,6868]},["app",{"sourceInterval":[6729,6765]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6792,6828]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6855,6868]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[6889,6928]},null,[],["seq",{"sourceInterval":[6889,6922]},["app",{"sourceInterval":[6889,6902]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6903,6906]},"*"],["app",{"sourceInterval":[6907,6922]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[6949,6988]},null,[],["seq",{"sourceInterval":[6949,6982]},["app",{"sourceInterval":[6949,6962]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6963,6966]},"/"],["app",{"sourceInterval":[6967,6982]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7009,7048]},null,[],["seq",{"sourceInterval":[7009,7042]},["app",{"sourceInterval":[7009,7022]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7023,7026]},"%"],["app",{"sourceInterval":[7027,7042]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[6873,7084]},null,[],["alt",{"sourceInterval":[6889,7084]},["app",{"sourceInterval":[6889,6922]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[6949,6982]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7009,7042]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7069,7084]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7107,7138]},null,[],["seq",{"sourceInterval":[7107,7132]},["terminal",{"sourceInterval":[7107,7110]},"-"],["app",{"sourceInterval":[7111,7132]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7161,7192]},null,[],["seq",{"sourceInterval":[7161,7186]},["terminal",{"sourceInterval":[7161,7164]},"+"],["app",{"sourceInterval":[7165,7186]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7215,7246]},null,[],["seq",{"sourceInterval":[7215,7240]},["terminal",{"sourceInterval":[7215,7218]},"!"],["app",{"sourceInterval":[7219,7240]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7089,7290]},null,[],["alt",{"sourceInterval":[7107,7290]},["app",{"sourceInterval":[7107,7132]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7161,7186]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7215,7240]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7269,7290]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7319,7349]},null,[],["seq",{"sourceInterval":[7319,7339]},["app",{"sourceInterval":[7319,7334]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7335,7339]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7295,7393]},null,[],["alt",{"sourceInterval":[7319,7393]},["app",{"sourceInterval":[7319,7339]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7378,7393]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7398,7436]},null,[],["seq",{"sourceInterval":[7418,7436]},["terminal",{"sourceInterval":[7418,7421]},"("],["app",{"sourceInterval":[7422,7432]},"Expression",[]],["terminal",{"sourceInterval":[7433,7436]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7468,7858]},null,[],["alt",{"sourceInterval":[7486,7858]},["app",{"sourceInterval":[7486,7500]},"ExpressionCall",[]],["app",{"sourceInterval":[7523,7538]},"ExpressionField",[]],["app",{"sourceInterval":[7561,7581]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7604,7621]},"ExpressionBracket",[]],["app",{"sourceInterval":[7644,7657]},"ExpressionNew",[]],["app",{"sourceInterval":[7680,7694]},"integerLiteral",[]],["app",{"sourceInterval":[7717,7728]},"boolLiteral",[]],["app",{"sourceInterval":[7751,7753]},"id",[]],["app",{"sourceInterval":[7776,7780]},"null",[]],["app",{"sourceInterval":[7803,7819]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7842,7858]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[7863,7895]},null,[],["app",{"sourceInterval":[7882,7895]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[7900,7945]},null,[],["seq",{"sourceInterval":[7918,7945]},["app",{"sourceInterval":[7918,7933]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7934,7937]},"."],["app",{"sourceInterval":[7938,7940]},"id",[]],["not",{"sourceInterval":[7941,7945]},["terminal",{"sourceInterval":[7942,7945]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[7950,8021]},null,[],["seq",{"sourceInterval":[7967,8021]},["app",{"sourceInterval":[7967,7982]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7983,7986]},"."],["app",{"sourceInterval":[7987,7989]},"id",[]],["terminal",{"sourceInterval":[7990,7993]},"("],["app",{"sourceInterval":[7994,8017]},"ListOf",[["app",{"sourceInterval":[8001,8011]},"Expression",[]],["terminal",{"sourceInterval":[8013,8016]},","]]],["terminal",{"sourceInterval":[8018,8021]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8026,8078]},null,[],["seq",{"sourceInterval":[8042,8078]},["app",{"sourceInterval":[8042,8044]},"id",[]],["terminal",{"sourceInterval":[8045,8048]},"{"],["app",{"sourceInterval":[8049,8074]},"ListOf",[["app",{"sourceInterval":[8056,8068]},"NewParameter",[]],["terminal",{"sourceInterval":[8070,8073]},","]]],["terminal",{"sourceInterval":[8075,8078]},"}"]]],"NewParameter":["define",{"sourceInterval":[8083,8115]},null,[],["seq",{"sourceInterval":[8098,8115]},["app",{"sourceInterval":[8098,8100]},"id",[]],["terminal",{"sourceInterval":[8101,8104]},":"],["app",{"sourceInterval":[8105,8115]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8120,8177]},null,[],["seq",{"sourceInterval":[8143,8177]},["app",{"sourceInterval":[8143,8145]},"id",[]],["terminal",{"sourceInterval":[8146,8149]},"("],["app",{"sourceInterval":[8150,8173]},"ListOf",[["app",{"sourceInterval":[8157,8167]},"Expression",[]],["terminal",{"sourceInterval":[8169,8172]},","]]],["terminal",{"sourceInterval":[8174,8177]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8182,8242]},null,[],["seq",{"sourceInterval":[8201,8242]},["app",{"sourceInterval":[8201,8207]},"initOf",[]],["app",{"sourceInterval":[8208,8210]},"id",[]],["terminal",{"sourceInterval":[8211,8214]},"("],["app",{"sourceInterval":[8215,8238]},"ListOf",[["app",{"sourceInterval":[8222,8232]},"Expression",[]],["terminal",{"sourceInterval":[8234,8237]},","]]],["terminal",{"sourceInterval":[8239,8242]},")"]]],"typeLiteral":["define",{"sourceInterval":[8268,8312]},null,[],["seq",{"sourceInterval":[8282,8312]},["app",{"sourceInterval":[8282,8295]},"letterAsciiUC",[]],["star",{"sourceInterval":[8296,8312]},["app",{"sourceInterval":[8296,8311]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8317,8360]},null,[],["alt",{"sourceInterval":[8335,8360]},["app",{"sourceInterval":[8335,8346]},"letterAscii",[]],["app",{"sourceInterval":[8349,8354]},"digit",[]],["terminal",{"sourceInterval":[8357,8360]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8567,8621]},null,[],["alt",{"sourceInterval":[8584,8621]},["app",{"sourceInterval":[8584,8601]},"integerLiteralHex",[]],["app",{"sourceInterval":[8604,8621]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8648,8674]},null,[],["plus",{"sourceInterval":[8668,8674]},["app",{"sourceInterval":[8668,8673]},"digit",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8679,8752]},null,[],["alt",{"sourceInterval":[8699,8752]},["seq",{"sourceInterval":[8699,8713]},["terminal",{"sourceInterval":[8699,8703]},"0x"],["plus",{"sourceInterval":[8704,8713]},["app",{"sourceInterval":[8704,8712]},"hexDigit",[]]]],["seq",{"sourceInterval":[8738,8752]},["terminal",{"sourceInterval":[8738,8742]},"0X"],["plus",{"sourceInterval":[8743,8752]},["app",{"sourceInterval":[8743,8751]},"hexDigit",[]]]]]],"letterAsciiLC":["define",{"sourceInterval":[8773,8797]},null,[],["range",{"sourceInterval":[8789,8797]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[8802,8826]},null,[],["range",{"sourceInterval":[8818,8826]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[8831,8874]},null,[],["alt",{"sourceInterval":[8845,8874]},["app",{"sourceInterval":[8845,8858]},"letterAsciiLC",[]],["app",{"sourceInterval":[8861,8874]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[8879,8938]},null,[],["alt",{"sourceInterval":[8895,8938]},["app",{"sourceInterval":[8895,8908]},"letterAsciiLC",[]],["app",{"sourceInterval":[8911,8924]},"letterAsciiUC",[]],["app",{"sourceInterval":[8927,8932]},"digit",[]],["terminal",{"sourceInterval":[8935,8938]},"_"]]],"idStart":["define",{"sourceInterval":[8962,8989]},null,[],["alt",{"sourceInterval":[8972,8989]},["app",{"sourceInterval":[8972,8983]},"letterAscii",[]],["terminal",{"sourceInterval":[8986,8989]},"_"]]],"idPart":["define",{"sourceInterval":[8994,9028]},null,[],["alt",{"sourceInterval":[9003,9028]},["app",{"sourceInterval":[9003,9014]},"letterAscii",[]],["app",{"sourceInterval":[9017,9022]},"digit",[]],["terminal",{"sourceInterval":[9025,9028]},"_"]]],"id":["define",{"sourceInterval":[9033,9071]},null,[],["seq",{"sourceInterval":[9038,9071]},["not",{"sourceInterval":[9038,9051]},["app",{"sourceInterval":[9039,9051]},"reservedWord",[]]],["lex",{"sourceInterval":[9052,9060]},["app",{"sourceInterval":[9053,9060]},"idStart",[]]],["lex",{"sourceInterval":[9061,9071]},["star",{"sourceInterval":[9063,9070]},["app",{"sourceInterval":[9063,9069]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9092,9153]},null,[],["alt",{"sourceInterval":[9105,9153]},["app",{"sourceInterval":[9105,9116]},"letterAscii",[]],["terminal",{"sourceInterval":[9119,9122]},"_"],["terminal",{"sourceInterval":[9125,9128]},"'"],["terminal",{"sourceInterval":[9131,9134]},"?"],["terminal",{"sourceInterval":[9137,9140]},"!"],["terminal",{"sourceInterval":[9143,9147]},"::"],["terminal",{"sourceInterval":[9150,9153]},"&"]]],"funcId":["define",{"sourceInterval":[9158,9200]},null,[],["seq",{"sourceInterval":[9167,9200]},["app",{"sourceInterval":[9167,9177]},"funcLetter",[]],["star",{"sourceInterval":[9178,9200]},["lex",{"sourceInterval":[9178,9199]},["alt",{"sourceInterval":[9180,9198]},["app",{"sourceInterval":[9180,9190]},"funcLetter",[]],["app",{"sourceInterval":[9193,9198]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9226,9266]},null,[],["seq",{"sourceInterval":[9240,9266]},["alt",{"sourceInterval":[9241,9257]},["terminal",{"sourceInterval":[9241,9247]},"true"],["terminal",{"sourceInterval":[9250,9257]},"false"]],["not",{"sourceInterval":[9259,9266]},["app",{"sourceInterval":[9260,9266]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9294,9354]},null,[],["seq",{"sourceInterval":[9319,9354]},["not",{"sourceInterval":[9319,9350]},["alt",{"sourceInterval":[9321,9349]},["terminal",{"sourceInterval":[9321,9325]},"\""],["terminal",{"sourceInterval":[9328,9332]},"\\"],["app",{"sourceInterval":[9335,9349]},"lineTerminator",[]]]],["app",{"sourceInterval":[9351,9354]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9359,9408]},null,[],["seq",{"sourceInterval":[9375,9408]},["terminal",{"sourceInterval":[9375,9379]},"\""],["star",{"sourceInterval":[9380,9403]},["app",{"sourceInterval":[9380,9402]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9404,9408]},"\""]]],"keyword":["define",{"sourceInterval":[9461,9974]},null,[],["alt",{"sourceInterval":[9471,9974]},["app",{"sourceInterval":[9471,9474]},"fun",[]],["app",{"sourceInterval":[9490,9493]},"let",[]],["app",{"sourceInterval":[9508,9514]},"return",[]],["app",{"sourceInterval":[9530,9536]},"extend",[]],["app",{"sourceInterval":[9552,9558]},"native",[]],["app",{"sourceInterval":[9574,9580]},"public",[]],["app",{"sourceInterval":[9596,9600]},"null",[]],["app",{"sourceInterval":[9616,9618]},"if",[]],["app",{"sourceInterval":[9634,9638]},"else",[]],["app",{"sourceInterval":[9654,9659]},"while",[]],["app",{"sourceInterval":[9675,9681]},"repeat",[]],["app",{"sourceInterval":[9697,9699]},"do",[]],["app",{"sourceInterval":[9715,9720]},"until",[]],["app",{"sourceInterval":[9736,9738]},"as",[]],["app",{"sourceInterval":[9755,9762]},"mutates",[]],["app",{"sourceInterval":[9777,9784]},"extends",[]],["app",{"sourceInterval":[9799,9805]},"import",[]],["app",{"sourceInterval":[9820,9824]},"with",[]],["app",{"sourceInterval":[9839,9844]},"trait",[]],["app",{"sourceInterval":[9859,9865]},"initOf",[]],["app",{"sourceInterval":[9880,9888]},"override",[]],["app",{"sourceInterval":[9903,9911]},"abstract",[]],["app",{"sourceInterval":[9926,9933]},"virtual",[]],["app",{"sourceInterval":[9948,9954]},"inline",[]],["app",{"sourceInterval":[9969,9974]},"const",[]]]],"contract":["define",{"sourceInterval":[9979,10008]},null,[],["seq",{"sourceInterval":[9990,10008]},["terminal",{"sourceInterval":[9990,10000]},"contract"],["not",{"sourceInterval":[10001,10008]},["app",{"sourceInterval":[10002,10008]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10013,10032]},null,[],["seq",{"sourceInterval":[10019,10032]},["terminal",{"sourceInterval":[10019,10024]},"let"],["not",{"sourceInterval":[10025,10032]},["app",{"sourceInterval":[10026,10032]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10037,10056]},null,[],["seq",{"sourceInterval":[10043,10056]},["terminal",{"sourceInterval":[10043,10048]},"fun"],["not",{"sourceInterval":[10049,10056]},["app",{"sourceInterval":[10050,10056]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10061,10086]},null,[],["seq",{"sourceInterval":[10070,10086]},["terminal",{"sourceInterval":[10070,10078]},"return"],["not",{"sourceInterval":[10079,10086]},["app",{"sourceInterval":[10080,10086]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10091,10116]},null,[],["seq",{"sourceInterval":[10100,10116]},["terminal",{"sourceInterval":[10100,10108]},"extend"],["not",{"sourceInterval":[10109,10116]},["app",{"sourceInterval":[10110,10116]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10121,10146]},null,[],["seq",{"sourceInterval":[10130,10146]},["terminal",{"sourceInterval":[10130,10138]},"native"],["not",{"sourceInterval":[10139,10146]},["app",{"sourceInterval":[10140,10146]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10151,10176]},null,[],["seq",{"sourceInterval":[10160,10176]},["terminal",{"sourceInterval":[10160,10168]},"public"],["not",{"sourceInterval":[10169,10176]},["app",{"sourceInterval":[10170,10176]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10181,10202]},null,[],["seq",{"sourceInterval":[10188,10202]},["terminal",{"sourceInterval":[10188,10194]},"null"],["not",{"sourceInterval":[10195,10202]},["app",{"sourceInterval":[10196,10202]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10207,10224]},null,[],["seq",{"sourceInterval":[10212,10224]},["terminal",{"sourceInterval":[10212,10216]},"if"],["not",{"sourceInterval":[10217,10224]},["app",{"sourceInterval":[10218,10224]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10229,10250]},null,[],["seq",{"sourceInterval":[10236,10250]},["terminal",{"sourceInterval":[10236,10242]},"else"],["not",{"sourceInterval":[10243,10250]},["app",{"sourceInterval":[10244,10250]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10255,10278]},null,[],["seq",{"sourceInterval":[10263,10278]},["terminal",{"sourceInterval":[10263,10270]},"while"],["not",{"sourceInterval":[10271,10278]},["app",{"sourceInterval":[10272,10278]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10283,10308]},null,[],["seq",{"sourceInterval":[10292,10308]},["terminal",{"sourceInterval":[10292,10300]},"repeat"],["not",{"sourceInterval":[10301,10308]},["app",{"sourceInterval":[10302,10308]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10313,10330]},null,[],["seq",{"sourceInterval":[10318,10330]},["terminal",{"sourceInterval":[10318,10322]},"do"],["not",{"sourceInterval":[10323,10330]},["app",{"sourceInterval":[10324,10330]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10335,10358]},null,[],["seq",{"sourceInterval":[10343,10358]},["terminal",{"sourceInterval":[10343,10350]},"until"],["not",{"sourceInterval":[10351,10358]},["app",{"sourceInterval":[10352,10358]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10363,10380]},null,[],["seq",{"sourceInterval":[10368,10380]},["terminal",{"sourceInterval":[10368,10372]},"as"],["not",{"sourceInterval":[10373,10380]},["app",{"sourceInterval":[10374,10380]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10385,10412]},null,[],["seq",{"sourceInterval":[10395,10412]},["terminal",{"sourceInterval":[10395,10404]},"mutates"],["not",{"sourceInterval":[10405,10412]},["app",{"sourceInterval":[10406,10412]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10417,10444]},null,[],["seq",{"sourceInterval":[10427,10444]},["terminal",{"sourceInterval":[10427,10436]},"extends"],["not",{"sourceInterval":[10437,10444]},["app",{"sourceInterval":[10438,10444]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10449,10474]},null,[],["seq",{"sourceInterval":[10458,10474]},["terminal",{"sourceInterval":[10458,10466]},"import"],["not",{"sourceInterval":[10467,10474]},["app",{"sourceInterval":[10468,10474]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10479,10500]},null,[],["seq",{"sourceInterval":[10486,10500]},["terminal",{"sourceInterval":[10486,10492]},"with"],["not",{"sourceInterval":[10493,10500]},["app",{"sourceInterval":[10494,10500]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10505,10528]},null,[],["seq",{"sourceInterval":[10513,10528]},["terminal",{"sourceInterval":[10513,10520]},"trait"],["not",{"sourceInterval":[10521,10528]},["app",{"sourceInterval":[10522,10528]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10533,10558]},null,[],["seq",{"sourceInterval":[10542,10558]},["terminal",{"sourceInterval":[10542,10550]},"initOf"],["not",{"sourceInterval":[10551,10558]},["app",{"sourceInterval":[10552,10558]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10563,10590]},null,[],["seq",{"sourceInterval":[10573,10590]},["terminal",{"sourceInterval":[10573,10582]},"virtual"],["not",{"sourceInterval":[10583,10590]},["app",{"sourceInterval":[10584,10590]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10595,10624]},null,[],["seq",{"sourceInterval":[10606,10624]},["terminal",{"sourceInterval":[10606,10616]},"override"],["not",{"sourceInterval":[10617,10624]},["app",{"sourceInterval":[10618,10624]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10629,10654]},null,[],["seq",{"sourceInterval":[10638,10654]},["terminal",{"sourceInterval":[10638,10646]},"inline"],["not",{"sourceInterval":[10647,10654]},["app",{"sourceInterval":[10648,10654]},"idPart",[]]]]],"const":["define",{"sourceInterval":[10659,10682]},null,[],["seq",{"sourceInterval":[10667,10682]},["terminal",{"sourceInterval":[10667,10674]},"const"],["not",{"sourceInterval":[10675,10682]},["app",{"sourceInterval":[10676,10682]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[10687,10716]},null,[],["seq",{"sourceInterval":[10698,10716]},["terminal",{"sourceInterval":[10698,10708]},"abstract"],["not",{"sourceInterval":[10709,10716]},["app",{"sourceInterval":[10710,10716]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[10740,10763]},null,[],["terminal",{"sourceInterval":[10756,10763]},"@name"]],"reservedWord":["define",{"sourceInterval":[10785,10807]},null,[],["app",{"sourceInterval":[10800,10807]},"keyword",[]]],"space":["extend",{"sourceInterval":[10829,10862]},null,[],["alt",{"sourceInterval":[10838,10862]},["app",{"sourceInterval":[10838,10845]},"comment",[]],["app",{"sourceInterval":[10848,10862]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[10867,10913]},null,[],["alt",{"sourceInterval":[10877,10913]},["app",{"sourceInterval":[10877,10893]},"multiLineComment",[]],["app",{"sourceInterval":[10896,10913]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[10918,10968]},null,[],["alt",{"sourceInterval":[10935,10968]},["terminal",{"sourceInterval":[10935,10939]},"\n"],["terminal",{"sourceInterval":[10942,10946]},"\r"],["terminal",{"sourceInterval":[10949,10957]},"\u2028"],["terminal",{"sourceInterval":[10960,10968]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[10973,11014]},null,[],["seq",{"sourceInterval":[10992,11014]},["terminal",{"sourceInterval":[10992,10996]},"/*"],["star",{"sourceInterval":[10997,11009]},["seq",{"sourceInterval":[10998,11007]},["not",{"sourceInterval":[10998,11003]},["terminal",{"sourceInterval":[10999,11003]},"*/"]],["app",{"sourceInterval":[11004,11007]},"any",[]]]],["terminal",{"sourceInterval":[11010,11014]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11019,11066]},null,[],["seq",{"sourceInterval":[11039,11066]},["terminal",{"sourceInterval":[11039,11043]},"//"],["star",{"sourceInterval":[11044,11066]},["seq",{"sourceInterval":[11045,11064]},["not",{"sourceInterval":[11045,11060]},["app",{"sourceInterval":[11046,11060]},"lineTerminator",[]]],["app",{"sourceInterval":[11061,11064]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index bf957d88d..2b9a1d980 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -468,6 +468,51 @@ semantics.addOperation('resolve_statement', { ref: createRef(this) }) }, + StatementAugmentedAssignAdd(arg0, arg1, arg2, arg3) { + return createNode({ + kind: 'statement_augmentedassign', + path: arg0.resolve_lvalue(), + op: '+', + expression: arg2.resolve_expression(), + ref: createRef(this) + }) + }, + StatementAugmentedAssignSub(arg0, arg1, arg2, arg3) { + return createNode({ + kind: 'statement_augmentedassign', + path: arg0.resolve_lvalue(), + op: '-', + expression: arg2.resolve_expression(), + ref: createRef(this) + }) + }, + StatementAugmentedAssignMul(arg0, arg1, arg2, arg3) { + return createNode({ + kind: 'statement_augmentedassign', + path: arg0.resolve_lvalue(), + op: '*', + expression: arg2.resolve_expression(), + ref: createRef(this) + }) + }, + StatementAugmentedAssignDiv(arg0, arg1, arg2, arg3) { + return createNode({ + kind: 'statement_augmentedassign', + path: arg0.resolve_lvalue(), + op: '/', + expression: arg2.resolve_expression(), + ref: createRef(this) + }) + }, + StatementAugmentedAssignRem(arg0, arg1, arg2, arg3) { + return createNode({ + kind: 'statement_augmentedassign', + path: arg0.resolve_lvalue(), + op: '%', + expression: arg2.resolve_expression(), + ref: createRef(this) + }) + }, StatementCondition_simple(arg0, arg1, arg2, arg3, arg4) { return createNode({ kind: 'statement_condition', diff --git a/src/grammar/test/case-27.tact b/src/grammar/test/case-27.tact new file mode 100644 index 000000000..9a08e7f95 --- /dev/null +++ b/src/grammar/test/case-27.tact @@ -0,0 +1,21 @@ +fun testFunc(): Int { + let a: Int = 1; + let b: Int = 2; + a += b; + b += a; + a += 3; + a += b + 4; + b -= 1; + a -= b; + a -= b - 1; + b *= 2; + a *= b; + a *= b * 2; + b /= 2; + a /= b; + a /= b / 2; + a %= 2; + a %= b; + a %= b % 2; + return a; +} \ No newline at end of file diff --git a/src/test/feature-math.spec.ts b/src/test/feature-math.spec.ts index b26782825..679e8baa0 100644 --- a/src/test/feature-math.spec.ts +++ b/src/test/feature-math.spec.ts @@ -30,6 +30,16 @@ describe('feature-math', () => { expect(await contract.getMul(2n, 2n)).toBe(4n); expect(await contract.getDiv(2n, 2n)).toBe(1n); + // Augmented Assign + expect(await contract.getAddAug(1n, 2n)).toBe(3n); + expect(await contract.getAddAug(1n, -2n)).toBe(-1n); + expect(await contract.getSubAug(1n, 2n)).toBe(-1n); + expect(await contract.getSubAug(1n, -2n)).toBe(3n); + expect(await contract.getMulAug(2n, 2n)).toBe(4n); + expect(await contract.getDivAug(2n, 2n)).toBe(1n); + expect(await contract.getModAug(2n, 2n)).toBe(0n); + expect(await contract.getModAug(3n, 2n)).toBe(1n); + // Basic Compare expect(await contract.getCompare1(1n, 2n)).toBe(false); expect(await contract.getCompare1(1n, 1n)).toBe(true); diff --git a/src/test/features/math.tact b/src/test/features/math.tact index 6dfaa691e..b5bebcaae 100644 --- a/src/test/features/math.tact +++ b/src/test/features/math.tact @@ -41,6 +41,35 @@ contract MathTester with Deployable { return a | b; } + // + // Augmented assignment + // + + get fun addAug(a: Int, b: Int): Int { + a += b; + return a; + } + + get fun subAug(a: Int, b: Int): Int { + a -= b; + return a; + } + + get fun mulAug(a: Int, b: Int): Int { + a *= b; + return a; + } + + get fun divAug(a: Int, b: Int): Int { + a /= b; + return a; + } + + get fun modAug(a: Int, b: Int): Int { + a %= b; + return a; + } + // // Int Compare // diff --git a/src/test/features/output/math_MathTester.abi b/src/test/features/output/math_MathTester.abi index 21db3f748..8abc62c1e 100644 --- a/src/test/features/output/math_MathTester.abi +++ b/src/test/features/output/math_MathTester.abi @@ -1 +1 @@ -{"name":"MathTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]},{"name":"Deploy","header":2490013878,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}}]},{"name":"DeployOk","header":2952335191,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}}]},{"name":"FactoryDeploy","header":1829761339,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"cashback","type":{"kind":"simple","type":"address","optional":false}}]}],"receivers":[{"receiver":"internal","message":{"kind":"typed","type":"Deploy"}}],"getters":[{"name":"add","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"sub","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mul","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"div","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mod","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"shr","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"shl","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"and","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"or","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"compare1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare2","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare3","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare4","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare5","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare6","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare7","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare8","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare9","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare10","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare11","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare12","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare13","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare14","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare15","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare16","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare17","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare18","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare19","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare20","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare21","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare22","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare23","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare24","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare25","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare26","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare27","arguments":[{"name":"a","type":{"kind":"dict","key":"int","value":"int"}},{"name":"b","type":{"kind":"dict","key":"int","value":"int"}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare28","arguments":[{"name":"a","type":{"kind":"dict","key":"int","value":"int"}},{"name":"b","type":{"kind":"dict","key":"int","value":"int"}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNull1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNotNull1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNull2","arguments":[{"name":"address","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNotNull2","arguments":[{"name":"address","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNull3","arguments":[{"name":"cell","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNotNull3","arguments":[{"name":"cell","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file +{"name":"MathTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]},{"name":"Deploy","header":2490013878,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}}]},{"name":"DeployOk","header":2952335191,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}}]},{"name":"FactoryDeploy","header":1829761339,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"cashback","type":{"kind":"simple","type":"address","optional":false}}]}],"receivers":[{"receiver":"internal","message":{"kind":"typed","type":"Deploy"}}],"getters":[{"name":"add","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"sub","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mul","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"div","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mod","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"shr","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"shl","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"and","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"or","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"addAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"subAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mulAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"divAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"modAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"compare1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare2","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare3","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare4","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare5","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare6","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare7","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare8","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare9","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare10","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare11","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare12","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare13","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare14","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare15","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare16","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":false}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare17","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare18","arguments":[{"name":"a","type":{"kind":"simple","type":"address","optional":true}},{"name":"b","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare19","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare20","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare21","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare22","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare23","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare24","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":false}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare25","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":false}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare26","arguments":[{"name":"a","type":{"kind":"simple","type":"cell","optional":true}},{"name":"b","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare27","arguments":[{"name":"a","type":{"kind":"dict","key":"int","value":"int"}},{"name":"b","type":{"kind":"dict","key":"int","value":"int"}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"compare28","arguments":[{"name":"a","type":{"kind":"dict","key":"int","value":"int"}},{"name":"b","type":{"kind":"dict","key":"int","value":"int"}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNull1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNotNull1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNull2","arguments":[{"name":"address","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNotNull2","arguments":[{"name":"address","type":{"kind":"simple","type":"address","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNull3","arguments":[{"name":"cell","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}},{"name":"isNotNull3","arguments":[{"name":"cell","type":{"kind":"simple","type":"cell","optional":true}}],"returnType":{"kind":"simple","type":"bool","optional":false}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file diff --git a/src/test/features/output/math_MathTester.code.boc b/src/test/features/output/math_MathTester.code.boc index 9ce72765a..4c7226653 100644 Binary files a/src/test/features/output/math_MathTester.code.boc and b/src/test/features/output/math_MathTester.code.boc differ diff --git a/src/test/features/output/math_MathTester.code.boc.html b/src/test/features/output/math_MathTester.code.boc.html deleted file mode 100644 index d419f33ce..000000000 --- a/src/test/features/output/math_MathTester.code.boc.html +++ /dev/null @@ -1,1459 +0,0 @@ - - - - - -

Code coverage

-
-                        PROGRAM{
-            ..DECLPROC recv_internal;
-            ..DECLPROC ?fun_68387;
-            ..DECLPROC ?fun_72450;
-            ..DECLPROC ?fun_75056;
-            ..DECLPROC ?fun_80400;
-            ..DECLPROC ?fun_80704;
-            ..DECLPROC ?fun_83393;
-            ..DECLPROC ?fun_83863;
-            ..DECLPROC ?fun_84903;
-            ..DECLPROC ?fun_88966;
-            ..DECLPROC ?fun_89158;
-            ..DECLPROC ?fun_89358;
-            ..DECLPROC ?fun_90178;
-            ..DECLPROC ?fun_93157;
-            ..DECLPROC ?fun_93221;
-            ..DECLPROC ?fun_94307;
-            ..DECLPROC ?fun_97220;
-            ..DECLPROC ?fun_97284;
-            ..DECLPROC ?fun_98700;
-            ..DECLPROC ?fun_99260;
-            ..DECLPROC ?fun_99450;
-            ..DECLPROC ?fun_99590;
-            ..DECLPROC ?fun_102829;
-            ..DECLPROC ?fun_103515;
-            ..DECLPROC ?fun_103719;
-            ..DECLPROC ?fun_106958;
-            ..DECLPROC ?fun_107576;
-            ..DECLPROC ?fun_108636;
-            ..DECLPROC ?fun_109161;
-            ..DECLPROC ?fun_110321;
-            ..DECLPROC ?fun_111087;
-            ..DECLPROC ?fun_111641;
-            ..DECLPROC ?fun_111973;
-            ..DECLPROC ?fun_113224;
-            ..DECLPROC supported_interfaces;
-            ..DECLPROC ?fun_114952;
-            ..DECLPROC lazy_deployment_completed;
-            ..DECLPROC ?fun_115966;
-            ..DECLPROC ?fun_119081;
-            ..DECLPROC ?fun_120031;
-            ..DECLPROC get_abi_ipfs;
-            ..DECLPROC ?fun_123210;
-            ..DECLPROC ?fun_124092;
-            ..DECLPROC ?fun_125000;
-            ..DECLPROC ?fun_126476;
-            ..DECLPROC ?fun_127339;
-            ..DECLPROC ?fun_128157;
-            ..DECLPROC ?fun_ref_0bddee3e66194d71;
-            ..DECLPROC ?fun_ref_1665824c3631042e;
-            ..DECLPROC ?fun_ref_1a5aedf76777daf0;
-            ..DECLPROC ?fun_ref_1dd4b06caa854cc5;
-            ..DECLPROC ?fun_ref_1e8474cb72f85f98;
-            ..DECLPROC ?fun_ref_251a304e2f13da63;
-            ..DECLPROC ?fun_ref_2de3f30de2cef910;
-            ..DECLPROC ?fun_ref_2e8105a0f1ba34b1;
-            ..DECLPROC ?fun_ref_2f14994fd76434ab;
-            ..DECLPROC ?fun_ref_39d09f18c03b037a;
-            ..DECLPROC ?fun_ref_3df1ed9c149f3ddc;
-            ..DECLPROC ?fun_ref_4473d19174b70b6c;
-            ..DECLPROC ?fun_ref_45e06f8a133863ea;
-            ..DECLPROC ?fun_ref_49c7034f83091de6;
-            ..DECLPROC ?fun_ref_5026e72acd3f4702;
-            ..DECLPROC ?fun_ref_52ebac4ebc285034;
-            ..DECLPROC ?fun_ref_5c56423ce8e9ee73;
-            ..DECLPROC ?fun_ref_7299352e77d5a022;
-            ..DECLPROC ?fun_ref_81da9ce5747a9d33;
-            ..DECLPROC ?fun_ref_8b1b2058f0ba717f;
-            ..DECLPROC ?fun_ref_8ffaafaa854bd141;
-            ..DECLPROC ?fun_ref_943f0cebd640e361;
-            ..DECLPROC ?fun_ref_9a0c5e8798cc0509;
-            ..DECLPROC ?fun_ref_a05e0042bce184fb;
-            ..DECLPROC ?fun_ref_acf9c214ccee2d81;
-            ..DECLPROC ?fun_ref_ad657d0473ebdc2c;
-            ..DECLPROC ?fun_ref_b35400841b15fc2d;
-            ..DECLPROC ?fun_ref_b4fde213ffa24781;
-            ..DECLPROC ?fun_ref_b78be06772ce3abe;
-            ..DECLPROC ?fun_ref_b93b9862cda1783c;
-            ..DECLPROC ?fun_ref_bf9d36be65618269;
-            ..DECLPROC ?fun_ref_c0ca23818e24f3c9;
-            ..DECLPROC ?fun_ref_c29a788970be0722;
-            ..DECLPROC ?fun_ref_c4dfd32efb676592;
-            ..DECLPROC ?fun_ref_d078cffef374dca6;
-            ..DECLPROC ?fun_ref_d5c7d946856b384e;
-            ..DECLPROC ?fun_ref_d90a47bc5659815b;
-            ..DECLPROC ?fun_ref_dbbd90e91bdad5c0;
-            ..DECLPROC ?fun_ref_e31d986f279fa0fb;
-            ..DECLPROC ?fun_ref_ebb984d6b6cfd144;
-            ..DECLPROC ?fun_ref_edec8407367eca46;
-            ..DECLPROC ?fun_ref_ff17a983a407f70d;
-            x2..recv_internal PROC:<{
-            18x2....s0 s1 XCHG
-            118x2....CTOS
-            26x2....4 LDU
-            18x2....s0 s1 XCHG
-            18x2....1 PUSHINT
-            18x2....AND
-            18x2....-1 MULCONST
-            18x2....s0 s1 XCHG
-            26x2....LDMSGADDR
-            18x2....s0 s1 XCHG
-            18x2....s0 PUSH
-            26x2....SBITS
-            34x2....267 PUSHINT
-            18x2....EQUAL
-            34x2....136 THROWIFNOT
-            18x2....s0 PUSH
-            34x2....11 PLDU
-            18x2....s0 PUSH
-            34x2....1279 PUSHINT
-            18x2....EQUAL
-            34x2....137 THROWIF
-            26x2....10 PUSHPOW2
-            18x2....EQUAL
-            34x2....136 THROWIFNOT
-            34x2....s0 s6 s4 PUXCPU
-            18x2....s0 s3 XCHG
-            30x2....4 TUPLE
-            28x2....1 SETGLOBVAR
-            18x2....s0 s2 XCHG
-            29x2....2 SETGLOBVAR
-            126x2....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x2....ROTREV
-            126x2....?fun_ref_1dd4b06caa854cc5 INLINECALLDICT
-            34x2....130 THROWIFNOT
-            18x2....s0 POP
-            18x2....NEWC
-            26x2....3 GETGLOBVAR
-            18x2....s0 s1 XCHG
-            18x2....STREF
-            18x2....-1 PUSHINT
-            18x2....s0 s1 XCHG
-            26x2....1 STI
-            518x2....ENDC
-            26x2....c4 POP
-            x2..}>
-            x5..?fun_68387 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_b35400841b15fc2d INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x3..?fun_72450 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_2de3f30de2cef910 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x3..?fun_75056 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_81da9ce5747a9d33 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x2..?fun_80400 PROC:<{
-            126x2....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x2....ROTREV
-            126x2....?fun_ref_edec8407367eca46 INLINECALLDICT
-            18x2....s1 POP
-            x2..}>
-            x5..?fun_80704 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_d078cffef374dca6 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            ..?fun_83393 PROC:<{
-            ....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            ....ROTREV
-            ....?fun_ref_3df1ed9c149f3ddc INLINECALLDICT
-            ....s1 POP
-            ..}>
-            x2..?fun_83863 PROC:<{
-            126x2....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x2....ROTREV
-            126x2....?fun_ref_2e8105a0f1ba34b1 INLINECALLDICT
-            18x2....s1 POP
-            x2..}>
-            x5..?fun_84903 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_943f0cebd640e361 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x3..?fun_88966 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_9a0c5e8798cc0509 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x4..?fun_89158 PROC:<{
-            126x4....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x4....s0 s1 XCHG
-            126x4....?fun_ref_0bddee3e66194d71 INLINECALLDICT
-            18x4....s1 POP
-            x4..}>
-            ..?fun_89358 PROC:<{
-            ....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            ....ROTREV
-            ....?fun_ref_49c7034f83091de6 INLINECALLDICT
-            ....s1 POP
-            ..}>
-            x3..?fun_90178 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_ebb984d6b6cfd144 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x3..?fun_93157 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_d5c7d946856b384e INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x3..?fun_93221 PROC:<{
-            18x3....s0 PUSH
-            18x3....ISNULL
-            18x3....<{
-            18x1......s0 POP
-            18x1......NULL
-            18x3....}> PUSHCONT
-            26x3....<{
-            18x2......s0 PUSH
-            26x2......SBITS
-            34x2......267 PUSHINT
-            18x2......EQUAL
-            34x2......136 THROWIFNOT
-            18x2......s0 PUSH
-            34x2......11 PLDU
-            18x2......s0 PUSH
-            34x2......1279 PUSHINT
-            18x2......EQUAL
-            34x2......137 THROWIF
-            26x2......10 PUSHPOW2
-            18x2......EQUAL
-            34x2......136 THROWIFNOT
-            26x3....}> PUSHCONT
-            18x3....IFELSE
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....s0 s1 XCHG
-            126x3....?fun_ref_0bddee3e66194d71 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x9..?fun_94307 PROC:<{
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....<{
-            18x4......s1 POP
-            18x4......NULL
-            18x9....}> PUSHCONT
-            26x9....<{
-            18x5......s0 s1 XCHG
-            18x5......s0 PUSH
-            26x5......SBITS
-            34x5......267 PUSHINT
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            18x5......s0 PUSH
-            34x5......11 PLDU
-            18x5......s0 PUSH
-            34x5......1279 PUSHINT
-            18x5......EQUAL
-            34x5......137 THROWIF
-            26x5......10 PUSHPOW2
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            26x9....}> PUSHCONT
-            18x9....IFELSE
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....<{
-            18x4......s1 POP
-            18x4......NULL
-            18x9....}> PUSHCONT
-            26x9....<{
-            18x5......s0 s1 XCHG
-            18x5......s0 PUSH
-            26x5......SBITS
-            34x5......267 PUSHINT
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            18x5......s0 PUSH
-            34x5......11 PLDU
-            18x5......s0 PUSH
-            34x5......1279 PUSHINT
-            18x5......EQUAL
-            34x5......137 THROWIF
-            26x5......10 PUSHPOW2
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            26x9....}> PUSHCONT
-            18x9....IFELSE
-            126x9....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x9....ROTREV
-            126x9....?fun_ref_8ffaafaa854bd141 INLINECALLDICT
-            18x9....s1 POP
-            x9..}>
-            x5..?fun_97220 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_251a304e2f13da63 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x3..?fun_97284 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....s0 s1 XCHG
-            126x3....?fun_ref_0bddee3e66194d71 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x5..?fun_98700 PROC:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......s1 POP
-            18x2......NULL
-            18x5....}> PUSHCONT
-            26x5....<{
-            18x3......s0 s1 XCHG
-            18x3......s0 PUSH
-            26x3......SBITS
-            34x3......267 PUSHINT
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            18x3......s0 PUSH
-            34x3......11 PLDU
-            18x3......s0 PUSH
-            34x3......1279 PUSHINT
-            18x3......EQUAL
-            34x3......137 THROWIF
-            26x3......10 PUSHPOW2
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            26x5....}> PUSHCONT
-            18x5....IFELSE
-            18x5....s0 s1 XCHG
-            18x5....s0 PUSH
-            26x5....SBITS
-            34x5....267 PUSHINT
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            18x5....s0 PUSH
-            34x5....11 PLDU
-            18x5....s0 PUSH
-            34x5....1279 PUSHINT
-            18x5....EQUAL
-            34x5....137 THROWIF
-            26x5....10 PUSHPOW2
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_c4dfd32efb676592 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x1..?fun_99260 PROC:<{
-            126x1....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x1....ROTREV
-            126x1....?fun_ref_1e8474cb72f85f98 INLINECALLDICT
-            18x1....s1 POP
-            x1..}>
-            x9..?fun_99450 PROC:<{
-            126x9....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x9....ROTREV
-            126x9....?fun_ref_52ebac4ebc285034 INLINECALLDICT
-            18x9....s1 POP
-            x9..}>
-            x3..?fun_99590 PROC:<{
-            18x3....s0 PUSH
-            18x3....ISNULL
-            18x3....<{
-            18x1......s0 POP
-            18x1......NULL
-            18x3....}> PUSHCONT
-            26x3....<{
-            18x2......s0 PUSH
-            26x2......SBITS
-            34x2......267 PUSHINT
-            18x2......EQUAL
-            34x2......136 THROWIFNOT
-            18x2......s0 PUSH
-            34x2......11 PLDU
-            18x2......s0 PUSH
-            34x2......1279 PUSHINT
-            18x2......EQUAL
-            34x2......137 THROWIF
-            26x2......10 PUSHPOW2
-            18x2......EQUAL
-            34x2......136 THROWIFNOT
-            26x3....}> PUSHCONT
-            18x3....IFELSE
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....s0 s1 XCHG
-            126x3....?fun_ref_dbbd90e91bdad5c0 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x5..?fun_102829 PROC:<{
-            18x5....s0 s1 XCHG
-            18x5....s0 PUSH
-            26x5....SBITS
-            34x5....267 PUSHINT
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            18x5....s0 PUSH
-            34x5....11 PLDU
-            18x5....s0 PUSH
-            34x5....1279 PUSHINT
-            18x5....EQUAL
-            34x5....137 THROWIF
-            26x5....10 PUSHPOW2
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......s1 POP
-            18x2......NULL
-            18x5....}> PUSHCONT
-            26x5....<{
-            18x3......s0 s1 XCHG
-            18x3......s0 PUSH
-            26x3......SBITS
-            34x3......267 PUSHINT
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            18x3......s0 PUSH
-            34x3......11 PLDU
-            18x3......s0 PUSH
-            34x3......1279 PUSHINT
-            18x3......EQUAL
-            34x3......137 THROWIF
-            26x3......10 PUSHPOW2
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            26x5....}> PUSHCONT
-            18x5....IFELSE
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_ad657d0473ebdc2c INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x3..?fun_103515 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_bf9d36be65618269 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x3..?fun_103719 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....s0 s1 XCHG
-            126x3....?fun_ref_dbbd90e91bdad5c0 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x3..?fun_106958 PROC:<{
-            18x3....s0 s1 XCHG
-            18x3....s0 PUSH
-            26x3....SBITS
-            34x3....267 PUSHINT
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            18x3....s0 PUSH
-            34x3....11 PLDU
-            18x3....s0 PUSH
-            34x3....1279 PUSHINT
-            18x3....EQUAL
-            34x3....137 THROWIF
-            26x3....10 PUSHPOW2
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            18x3....s0 s1 XCHG
-            18x3....s0 PUSH
-            26x3....SBITS
-            34x3....267 PUSHINT
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            18x3....s0 PUSH
-            34x3....11 PLDU
-            18x3....s0 PUSH
-            34x3....1279 PUSHINT
-            18x3....EQUAL
-            34x3....137 THROWIF
-            26x3....10 PUSHPOW2
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_d90a47bc5659815b INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x5..?fun_107576 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_39d09f18c03b037a INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            ..?fun_108636 PROC:<{
-            ....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            ....ROTREV
-            ....?fun_ref_acf9c214ccee2d81 INLINECALLDICT
-            ....s1 POP
-            ..}>
-            x3..?fun_109161 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_8b1b2058f0ba717f INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            ..?fun_110321 PROC:<{
-            ....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            ....ROTREV
-            ....?fun_ref_1665824c3631042e INLINECALLDICT
-            ....s1 POP
-            ..}>
-            x9..?fun_111087 PROC:<{
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....<{
-            18x4......s1 POP
-            18x4......NULL
-            18x9....}> PUSHCONT
-            26x9....<{
-            18x5......s0 s1 XCHG
-            18x5......s0 PUSH
-            26x5......SBITS
-            34x5......267 PUSHINT
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            18x5......s0 PUSH
-            34x5......11 PLDU
-            18x5......s0 PUSH
-            34x5......1279 PUSHINT
-            18x5......EQUAL
-            34x5......137 THROWIF
-            26x5......10 PUSHPOW2
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            26x9....}> PUSHCONT
-            18x9....IFELSE
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....<{
-            18x4......s1 POP
-            18x4......NULL
-            18x9....}> PUSHCONT
-            26x9....<{
-            18x5......s0 s1 XCHG
-            18x5......s0 PUSH
-            26x5......SBITS
-            34x5......267 PUSHINT
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            18x5......s0 PUSH
-            34x5......11 PLDU
-            18x5......s0 PUSH
-            34x5......1279 PUSHINT
-            18x5......EQUAL
-            34x5......137 THROWIF
-            26x5......10 PUSHPOW2
-            18x5......EQUAL
-            34x5......136 THROWIFNOT
-            26x9....}> PUSHCONT
-            18x9....IFELSE
-            126x9....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x9....ROTREV
-            126x9....?fun_ref_45e06f8a133863ea INLINECALLDICT
-            18x9....s1 POP
-            x9..}>
-            x5..?fun_111641 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_c29a788970be0722 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x4..?fun_111973 PROC:<{
-            126x4....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x4....s0 s1 XCHG
-            126x4....?fun_ref_dbbd90e91bdad5c0 INLINECALLDICT
-            18x4....s1 POP
-            x4..}>
-            x3..?fun_113224 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_5026e72acd3f4702 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            ..supported_interfaces PROC:<{
-            ....123515602279859691144772641439386770278 PUSHINT
-            ....209801025412363888721030803524359905849 PUSHINT
-            ....42980537499636128163026532310500881091 PUSHINT
-            ....36993126140238121407019133875791708966 PUSHINT
-            ....209474421377847335869795010607481022628 PUSHINT
-            ..}>
-            x5..?fun_114952 PROC:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......s1 POP
-            18x2......NULL
-            18x5....}> PUSHCONT
-            26x5....<{
-            18x3......s0 s1 XCHG
-            18x3......s0 PUSH
-            26x3......SBITS
-            34x3......267 PUSHINT
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            18x3......s0 PUSH
-            34x3......11 PLDU
-            18x3......s0 PUSH
-            34x3......1279 PUSHINT
-            18x3......EQUAL
-            34x3......137 THROWIF
-            26x3......10 PUSHPOW2
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            26x5....}> PUSHCONT
-            18x5....IFELSE
-            18x5....s0 s1 XCHG
-            18x5....s0 PUSH
-            26x5....SBITS
-            34x5....267 PUSHINT
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            18x5....s0 PUSH
-            34x5....11 PLDU
-            18x5....s0 PUSH
-            34x5....1279 PUSHINT
-            18x5....EQUAL
-            34x5....137 THROWIF
-            26x5....10 PUSHPOW2
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_ff17a983a407f70d INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            ..lazy_deployment_completed PROC:<{
-            ....c4 PUSH
-            ....CTOS
-            ....1 LDI
-            ....s0 s1 XCHG
-            ..}>
-            x9..?fun_115966 PROC:<{
-            126x9....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x9....ROTREV
-            126x9....?fun_ref_81da9ce5747a9d33 INLINECALLDICT
-            18x9....s1 POP
-            x9..}>
-            x5..?fun_119081 PROC:<{
-            18x5....s0 s1 XCHG
-            18x5....s0 PUSH
-            26x5....SBITS
-            34x5....267 PUSHINT
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            18x5....s0 PUSH
-            34x5....11 PLDU
-            18x5....s0 PUSH
-            34x5....1279 PUSHINT
-            18x5....EQUAL
-            34x5....137 THROWIF
-            26x5....10 PUSHPOW2
-            18x5....EQUAL
-            34x5....136 THROWIFNOT
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......s1 POP
-            18x2......NULL
-            18x5....}> PUSHCONT
-            26x5....<{
-            18x3......s0 s1 XCHG
-            18x3......s0 PUSH
-            26x3......SBITS
-            34x3......267 PUSHINT
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            18x3......s0 PUSH
-            34x3......11 PLDU
-            18x3......s0 PUSH
-            34x3......1279 PUSHINT
-            18x3......EQUAL
-            34x3......137 THROWIF
-            26x3......10 PUSHPOW2
-            18x3......EQUAL
-            34x3......136 THROWIFNOT
-            26x5....}> PUSHCONT
-            18x5....IFELSE
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_2f14994fd76434ab INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x3..?fun_120031 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_52ebac4ebc285034 INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            ..get_abi_ipfs PROC:<{
-            ....x{697066733A2F2F516D514571415837596F73704D3343774259647431666B454444716E6A79733546744A48785765615A636D4D413682_} PUSHSLICE
-            ..}>
-            x3..?fun_123210 PROC:<{
-            18x3....s0 s1 XCHG
-            18x3....s0 PUSH
-            26x3....SBITS
-            34x3....267 PUSHINT
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            18x3....s0 PUSH
-            34x3....11 PLDU
-            18x3....s0 PUSH
-            34x3....1279 PUSHINT
-            18x3....EQUAL
-            34x3....137 THROWIF
-            26x3....10 PUSHPOW2
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            18x3....s0 s1 XCHG
-            18x3....s0 PUSH
-            26x3....SBITS
-            34x3....267 PUSHINT
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            18x3....s0 PUSH
-            34x3....11 PLDU
-            18x3....s0 PUSH
-            34x3....1279 PUSHINT
-            18x3....EQUAL
-            34x3....137 THROWIF
-            26x3....10 PUSHPOW2
-            18x3....EQUAL
-            34x3....136 THROWIFNOT
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_b78be06772ce3abe INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x5..?fun_124092 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_5c56423ce8e9ee73 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x1..?fun_125000 PROC:<{
-            126x1....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x1....ROTREV
-            126x1....?fun_ref_1a5aedf76777daf0 INLINECALLDICT
-            18x1....s1 POP
-            x1..}>
-            ..?fun_126476 PROC:<{
-            ....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            ....ROTREV
-            ....?fun_ref_b4fde213ffa24781 INLINECALLDICT
-            ....s1 POP
-            ..}>
-            x3..?fun_127339 PROC:<{
-            126x3....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x3....ROTREV
-            126x3....?fun_ref_4473d19174b70b6c INLINECALLDICT
-            18x3....s1 POP
-            x3..}>
-            x5..?fun_128157 PROC:<{
-            126x5....?fun_ref_a05e0042bce184fb INLINECALLDICT
-            18x5....ROTREV
-            126x5....?fun_ref_7299352e77d5a022 INLINECALLDICT
-            18x5....s1 POP
-            x5..}>
-            x10..?fun_ref_0bddee3e66194d71 PROCREF:<{
-            18x10....ISNULL
-            18x10....NOT
-            x10..}>
-            ..?fun_ref_1665824c3631042e PROCREF:<{
-            ....LSHIFTX
-            ..}>
-            x1..?fun_ref_1a5aedf76777daf0 PROCREF:<{
-            26x1....false 0 false 1 0 DIV
-            x1..}>
-            x58..?fun_ref_1dd4b06caa854cc5 PROCREF:<{
-            18x58....s0 s1 XCHG
-            18x58....<{
-            ......s0 POP
-            ......-1 PUSHINT
-            18x58....}> PUSHCONT
-            18x58....IFJMP
-            18x58....0 PUSHINT
-            18x58....s1 PUSH
-            26x58....SBITS
-            26x58....31 GTINT
-            18x58....<{
-            18x58......s0 POP
-            18x58......s0 PUSH
-            34x58......32 PLDU
-            18x58....}> PUSHCONT
-            18x58....IF
-            23x58....2490013878 PUSHINT
-            18x58....EQUAL
-            26x58....<{
-            26x58......32 LDU
-            18x58......s0 s1 XCHG
-            23x58......2490013878 PUSHINT
-            18x58......EQUAL
-            34x58......129 THROWIFNOT
-            26x58......64 LDU
-            18x58......s0 s1 XCHG
-            18x58......s1 POP
-            18x58......NEWC
-            18x58......s0 s1 XCHG
-            23x58......2952335191 PUSHINT
-            18x58......ROT
-            26x58......32 STU
-            26x58......64 STU
-            518x58......ENDC
-            26x58......2 GETGLOBVAR
-            18x58......s0 s1 XCHG
-            18x58......0 PUSHINT
-            18x58......NULL
-            126x58......?fun_ref_e31d986f279fa0fb INLINECALLDICT
-            18x58......-1 PUSHINT
-            26x58....}> PUSHCONT
-            18x58....IFJMP
-            ....s0 POP
-            ....0 PUSHINT
-            x58..}>
-            x1..?fun_ref_1e8474cb72f85f98 PROCREF:<{
-            18x1....MUL
-            x1..}>
-            x5..?fun_ref_251a304e2f13da63 PROCREF:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....DUP2
-            18x5....AND
-            18x5....<{
-            26x1......4 BLKDROP
-            18x1......-1 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x4......s0 s1 XCHG
-            18x4......NOT
-            18x4......s0 s1 XCHG
-            18x4......NOT
-            18x4......AND
-            18x4......<{
-            18x2........EQUAL
-            18x4......}> PUSHCONT
-            18x4......<{
-            18x2........DROP2
-            18x2........0 PUSHINT
-            18x4......}> PUSHCONT
-            18x4......IFELSE
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x3..?fun_ref_2de3f30de2cef910 PROCREF:<{
-            18x3....s1 PUSH
-            18x3....ISNULL
-            18x3....<{
-            18x1......DROP2
-            18x1......0 PUSHINT
-            18x3....}> PUSHCONT
-            18x3....<{
-            18x2......EQUAL
-            18x3....}> PUSHCONT
-            18x3....IFELSE
-            x3..}>
-            x3..?fun_ref_2e8105a0f1ba34b1 PROCREF:<{
-            18x3....ADD
-            x3..}>
-            x5..?fun_ref_2f14994fd76434ab PROCREF:<{
-            18x5....s0 s1 XCHG
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            26x3......SDEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x5..?fun_ref_39d09f18c03b037a PROCREF:<{
-            18x5....s0 s1 XCHG
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......EQUAL
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            ..?fun_ref_3df1ed9c149f3ddc PROCREF:<{
-            ....OR
-            ..}>
-            x3..?fun_ref_4473d19174b70b6c PROCREF:<{
-            18x3....LEQ
-            x3..}>
-            x9..?fun_ref_45e06f8a133863ea PROCREF:<{
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....DUP2
-            18x9....AND
-            18x9....<{
-            26x2......4 BLKDROP
-            18x2......-1 PUSHINT
-            18x9....}> PUSHCONT
-            18x9....<{
-            18x7......s0 s1 XCHG
-            18x7......NOT
-            18x7......s0 s1 XCHG
-            18x7......NOT
-            18x7......AND
-            18x7......<{
-            26x3........SDEQ
-            18x7......}> PUSHCONT
-            18x7......<{
-            18x4........DROP2
-            18x4........0 PUSHINT
-            18x7......}> PUSHCONT
-            18x7......IFELSE
-            18x9....}> PUSHCONT
-            18x9....IFELSE
-            x9..}>
-            ..?fun_ref_49c7034f83091de6 PROCREF:<{
-            ....RSHIFTX
-            ..}>
-            x3..?fun_ref_5026e72acd3f4702 PROCREF:<{
-            18x3....LESS
-            x3..}>
-            x12..?fun_ref_52ebac4ebc285034 PROCREF:<{
-            18x12....s1 PUSH
-            18x12....ISNULL
-            18x12....s1 PUSH
-            18x12....ISNULL
-            18x12....DUP2
-            18x12....AND
-            18x12....<{
-            26x2......4 BLKDROP
-            18x2......-1 PUSHINT
-            18x12....}> PUSHCONT
-            26x12....<{
-            18x10......s0 s1 XCHG
-            18x10......NOT
-            18x10......s0 s1 XCHG
-            18x10......NOT
-            18x10......AND
-            18x10......<{
-            18x6........s0 s1 XCHG
-            26x6........HASHCU
-            18x6........s0 s1 XCHG
-            26x6........HASHCU
-            18x6........EQUAL
-            18x10......}> PUSHCONT
-            18x10......<{
-            18x4........DROP2
-            18x4........0 PUSHINT
-            18x10......}> PUSHCONT
-            18x10......IFELSE
-            26x12....}> PUSHCONT
-            18x12....IFELSE
-            x12..}>
-            x5..?fun_ref_5c56423ce8e9ee73 PROCREF:<{
-            18x5....s0 s1 XCHG
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......-1 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......NEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x5..?fun_ref_7299352e77d5a022 PROCREF:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......-1 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......NEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x12..?fun_ref_81da9ce5747a9d33 PROCREF:<{
-            18x12....s1 PUSH
-            18x12....ISNULL
-            18x12....s1 PUSH
-            18x12....ISNULL
-            18x12....DUP2
-            18x12....AND
-            18x12....<{
-            26x2......4 BLKDROP
-            18x2......0 PUSHINT
-            18x12....}> PUSHCONT
-            26x12....<{
-            18x10......s0 s1 XCHG
-            18x10......NOT
-            18x10......s0 s1 XCHG
-            18x10......NOT
-            18x10......AND
-            18x10......<{
-            18x6........s0 s1 XCHG
-            26x6........HASHCU
-            18x6........s0 s1 XCHG
-            26x6........HASHCU
-            18x6........NEQ
-            18x10......}> PUSHCONT
-            18x10......<{
-            18x4........DROP2
-            18x4........-1 PUSHINT
-            18x10......}> PUSHCONT
-            18x10......IFELSE
-            26x12....}> PUSHCONT
-            18x12....IFELSE
-            x12..}>
-            x3..?fun_ref_8b1b2058f0ba717f PROCREF:<{
-            18x3....GEQ
-            x3..}>
-            x9..?fun_ref_8ffaafaa854bd141 PROCREF:<{
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....s1 PUSH
-            18x9....ISNULL
-            18x9....DUP2
-            18x9....AND
-            18x9....<{
-            26x2......4 BLKDROP
-            18x2......-1 PUSHINT
-            18x9....}> PUSHCONT
-            18x9....<{
-            18x7......s0 s1 XCHG
-            18x7......NOT
-            18x7......s0 s1 XCHG
-            18x7......NOT
-            18x7......AND
-            18x7......<{
-            26x3........SDEQ
-            18x7......}> PUSHCONT
-            18x7......<{
-            18x4........DROP2
-            18x4........0 PUSHINT
-            18x7......}> PUSHCONT
-            18x7......IFELSE
-            18x9....}> PUSHCONT
-            18x9....IFELSE
-            18x9....NOT
-            x9..}>
-            x5..?fun_ref_943f0cebd640e361 PROCREF:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....DUP2
-            18x5....AND
-            18x5....<{
-            26x1......4 BLKDROP
-            18x1......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x4......s0 s1 XCHG
-            18x4......NOT
-            18x4......s0 s1 XCHG
-            18x4......NOT
-            18x4......AND
-            18x4......<{
-            18x2........NEQ
-            18x4......}> PUSHCONT
-            18x4......<{
-            18x2........DROP2
-            18x2........-1 PUSHINT
-            18x4......}> PUSHCONT
-            18x4......IFELSE
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x3..?fun_ref_9a0c5e8798cc0509 PROCREF:<{
-            18x3....GREATER
-            x3..}>
-            x344..?fun_ref_a05e0042bce184fb PROCREF:<{
-            26x344....c4 PUSH
-            118x344....CTOS
-            18x344....LDREF
-            18x344....s0 s1 XCHG
-            30x344....3 SETGLOBVAR
-            26x344....1 LDI
-            18x344....s0 POP
-            18x344....<{
-            18x273......NULL
-            18x344....}> PUSHCONT
-            18x344....IFJMP
-            26x71....MYADDR
-            34x71....11 PLDU
-            26x71....10 PUSHPOW2
-            18x71....EQUAL
-            34x71....137 THROWIFNOT
-            126x71....?fun_ref_c0ca23818e24f3c9 INLINECALLDICT
-            x344..}>
-            ..?fun_ref_acf9c214ccee2d81 PROCREF:<{
-            ....AND
-            ..}>
-            x5..?fun_ref_ad657d0473ebdc2c PROCREF:<{
-            18x5....s0 s1 XCHG
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            26x3......SDEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            18x5....NOT
-            x5..}>
-            x5..?fun_ref_b35400841b15fc2d PROCREF:<{
-            18x5....s0 s1 XCHG
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x1......DROP2
-            18x1......-1 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x4......NEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            ..?fun_ref_b4fde213ffa24781 PROCREF:<{
-            ....false 0 false 2 0 DIV
-            ..}>
-            x3..?fun_ref_b78be06772ce3abe PROCREF:<{
-            18x3....s0 s1 XCHG
-            26x3....SDEQ
-            x3..}>
-            x71..?fun_ref_b93b9862cda1783c PROCREF:<{
-            18x71....NEWC
-            18x71....1 PUSHINT
-            18x71....s0 s1 XCHG
-            26x71....2 STI
-            26x71....s0 s7 XCHG2
-            18x71....s0 s1 XCHG
-            26x71....1 STI
-            18x71....0 PUSHINT
-            18x71....s0 s1 XCHG
-            26x71....3 STI
-            26x71....s0 s5 XCHG2
-            18x71....s0 PUSH
-            26x71....SBITS
-            34x71....267 PUSHINT
-            18x71....EQUAL
-            34x71....136 THROWIFNOT
-            18x71....s0 PUSH
-            34x71....11 PLDU
-            18x71....s0 PUSH
-            34x71....1279 PUSHINT
-            18x71....EQUAL
-            34x71....137 THROWIF
-            26x71....10 PUSHPOW2
-            18x71....EQUAL
-            34x71....136 THROWIFNOT
-            26x71....STSLICER
-            26x71....s0 s3 XCHG2
-            26x71....STGRAMS
-            18x71....0 PUSHINT
-            18x71....s0 s1 XCHG
-            26x71....105 STI
-            18x71....s3 PUSH
-            18x71....ISNULL
-            18x71....NOT
-            18x71....<{
-            18x4......-1 PUSHINT
-            18x71....}> PUSHCONT
-            18x71....<{
-            18x67......s4 PUSH
-            18x67......ISNULL
-            18x67......NOT
-            18x71....}> PUSHCONT
-            18x71....IFELSE
-            18x71....<{
-            18x67......s3 POP
-            18x67......s3 POP
-            18x67......s0 s1 XCHG
-            18x67......0 PUSHINT
-            18x67......s0 s1 XCHG
-            26x67......1 STI
-            18x71....}> PUSHCONT
-            126x71....<{
-            18x4......-1 PUSHINT
-            18x4......s0 s1 XCHG
-            26x4......1 STI
-            18x4......NEWC
-            18x4......0 PUSHINT
-            18x4......s0 s1 XCHG
-            26x4......1 STI
-            18x4......0 PUSHINT
-            18x4......s0 s1 XCHG
-            26x4......1 STI
-            18x4......s4 PUSH
-            18x4......ISNULL
-            18x4......NOT
-            18x4......<{
-            18x4........-1 PUSHINT
-            18x4........s0 s1 XCHG
-            26x4........1 STI
-            18x4........s0 s4 XCHG
-            18x4........s0 PUSH
-            18x4........ISNULL
-            34x4........128 THROWIF
-            26x4........s0 s4 XCHG2
-            18x4........STREF
-            18x4......}> PUSHCONT
-            18x4......<{
-            ........s4 POP
-            ........s0 s3 XCHG
-            ........0 PUSHINT
-            ........s0 s1 XCHG
-            ........1 STI
-            18x4......}> PUSHCONT
-            18x4......IFELSE
-            18x4......s4 PUSH
-            18x4......ISNULL
-            18x4......NOT
-            18x4......<{
-            18x4........-1 PUSHINT
-            18x4........s0 s1 XCHG
-            26x4........1 STI
-            18x4........s0 s4 XCHG
-            18x4........s0 PUSH
-            18x4........ISNULL
-            34x4........128 THROWIF
-            26x4........s0 s4 XCHG2
-            18x4........STREF
-            18x4......}> PUSHCONT
-            18x4......<{
-            ........s4 POP
-            ........s0 s3 XCHG
-            ........0 PUSHINT
-            ........s0 s1 XCHG
-            ........1 STI
-            18x4......}> PUSHCONT
-            18x4......IFELSE
-            18x4......0 PUSHINT
-            18x4......s0 s1 XCHG
-            26x4......1 STI
-            18x4......s0 s2 XCHG
-            18x4......-1 PUSHINT
-            18x4......s0 s1 XCHG
-            26x4......1 STI
-            18x4......s0 s2 XCHG
-            518x4......ENDC
-            18x4......ROT
-            18x4......STREF
-            126x71....}> IFREFELSE
-            18x71....s1 PUSH
-            18x71....ISNULL
-            18x71....NOT
-            18x71....<{
-            18x70......-1 PUSHINT
-            18x70......s0 s1 XCHG
-            26x70......1 STI
-            18x70......s0 s1 XCHG
-            18x70......s0 PUSH
-            18x70......ISNULL
-            34x70......128 THROWIF
-            18x70......s0 s1 XCHG
-            18x70......STREF
-            18x71....}> PUSHCONT
-            18x71....<{
-            18x1......s1 POP
-            18x1......0 PUSHINT
-            18x1......s0 s1 XCHG
-            26x1......1 STI
-            18x71....}> PUSHCONT
-            18x71....IFELSE
-            518x71....ENDC
-            18x71....s0 s1 XCHG
-            526x71....SENDRAWMSG
-            x71..}>
-            x3..?fun_ref_bf9d36be65618269 PROCREF:<{
-            18x3....s0 s1 XCHG
-            18x3....s0 s1 XCHG
-            26x3....HASHCU
-            18x3....s0 s1 XCHG
-            26x3....HASHCU
-            18x3....NEQ
-            x3..}>
-            x80..?fun_ref_c0ca23818e24f3c9 PROCREF:<{
-            18x80....NULL
-            x80..}>
-            x5..?fun_ref_c29a788970be0722 PROCREF:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......s0 s1 XCHG
-            26x3......HASHCU
-            18x3......EQUAL
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x5..?fun_ref_c4dfd32efb676592 PROCREF:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            26x3......SDEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            18x5....NOT
-            x5..}>
-            x5..?fun_ref_d078cffef374dca6 PROCREF:<{
-            18x5....s0 s1 XCHG
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x1......DROP2
-            18x1......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            18x4......EQUAL
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            x3..?fun_ref_d5c7d946856b384e PROCREF:<{
-            18x3....s1 PUSH
-            18x3....ISNULL
-            18x3....<{
-            18x1......DROP2
-            18x1......-1 PUSHINT
-            18x3....}> PUSHCONT
-            18x3....<{
-            18x2......NEQ
-            18x3....}> PUSHCONT
-            18x3....IFELSE
-            x3..}>
-            x3..?fun_ref_d90a47bc5659815b PROCREF:<{
-            18x3....s0 s1 XCHG
-            26x3....SDEQ
-            18x3....NOT
-            x3..}>
-            x10..?fun_ref_dbbd90e91bdad5c0 PROCREF:<{
-            18x10....ISNULL
-            x10..}>
-            x63..?fun_ref_e31d986f279fa0fb PROCREF:<{
-            18x63....NULL
-            18x63....NULL
-            18x63....s2 PUSH
-            18x63....ISNULL
-            18x63....NOT
-            18x63....<{
-            ......DROP2
-            ......s0 PUSH
-            ......ISNULL
-            ......128 THROWIF
-            ......2 UNTUPLE
-            ......s0 s1 XCHG
-            18x63....}> PUSHCONT
-            18x63....<{
-            18x63......s2 POP
-            18x63....}> PUSHCONT
-            18x63....IFELSE
-            26x63....s2 s4 XCHG
-            18x63....0 PUSHINT
-            18x63....s0 s3 XCHG
-            18x63....s0 s4 XCHG
-            26x63....66 PUSHINT
-            26x63....s2 s3 XCHG2
-            126x63....?fun_ref_b93b9862cda1783c INLINECALLDICT
-            x63..}>
-            x3..?fun_ref_ebb984d6b6cfd144 PROCREF:<{
-            18x3....s0 s1 XCHG
-            18x3....s0 s1 XCHG
-            26x3....HASHCU
-            18x3....s0 s1 XCHG
-            26x3....HASHCU
-            18x3....EQUAL
-            x3..}>
-            x2..?fun_ref_edec8407367eca46 PROCREF:<{
-            18x2....SUB
-            x2..}>
-            x5..?fun_ref_ff17a983a407f70d PROCREF:<{
-            18x5....s1 PUSH
-            18x5....ISNULL
-            18x5....<{
-            18x2......DROP2
-            18x2......0 PUSHINT
-            18x5....}> PUSHCONT
-            18x5....<{
-            26x3......SDEQ
-            18x5....}> PUSHCONT
-            18x5....IFELSE
-            x5..}>
-            }END>c
-        
- - \ No newline at end of file diff --git a/src/test/features/output/math_MathTester.code.fc b/src/test/features/output/math_MathTester.code.fc index d09dfba18..93bee5362 100644 --- a/src/test/features/output/math_MathTester.code.fc +++ b/src/test/features/output/math_MathTester.code.fc @@ -60,6 +60,36 @@ tuple $MathTester$_contract_init() impure inline_ref { return ($self, ($a | $b)); } +(tuple, int) $MathTester$_fun_addAug(tuple $self, int $a, int $b) impure inline_ref { + var ($self) = $self; + $a = $a + $b; + return ($self, $a); +} + +(tuple, int) $MathTester$_fun_subAug(tuple $self, int $a, int $b) impure inline_ref { + var ($self) = $self; + $a = $a - $b; + return ($self, $a); +} + +(tuple, int) $MathTester$_fun_mulAug(tuple $self, int $a, int $b) impure inline_ref { + var ($self) = $self; + $a = $a * $b; + return ($self, $a); +} + +(tuple, int) $MathTester$_fun_divAug(tuple $self, int $a, int $b) impure inline_ref { + var ($self) = $self; + $a = $a / $b; + return ($self, $a); +} + +(tuple, int) $MathTester$_fun_modAug(tuple $self, int $a, int $b) impure inline_ref { + var ($self) = $self; + $a = $a % $b; + return ($self, $a); +} + (tuple, int) $MathTester$_fun_compare1(tuple $self, int $a, int $b) impure inline_ref { var ($self) = $self; return ($self, __tact_int_eq_nullable_one($b, $a)); @@ -317,6 +347,46 @@ _ %or(int $$a, int $$b) method_id(83393) { return res; } +_ %addAug(int $$a, int $$b) method_id(120881) { + int $a = $$a; + int $b = $$b; + var self = $MathTester$_contract_load(); + var res = self~$MathTester$_fun_addAug($a, $b); + return res; +} + +_ %subAug(int $$a, int $$b) method_id(114791) { + int $a = $$a; + int $b = $$b; + var self = $MathTester$_contract_load(); + var res = self~$MathTester$_fun_subAug($a, $b); + return res; +} + +_ %mulAug(int $$a, int $$b) method_id(129050) { + int $a = $$a; + int $b = $$b; + var self = $MathTester$_contract_load(); + var res = self~$MathTester$_fun_mulAug($a, $b); + return res; +} + +_ %divAug(int $$a, int $$b) method_id(85125) { + int $a = $$a; + int $b = $$b; + var self = $MathTester$_contract_load(); + var res = self~$MathTester$_fun_divAug($a, $b); + return res; +} + +_ %modAug(int $$a, int $$b) method_id(81709) { + int $a = $$a; + int $b = $$b; + var self = $MathTester$_contract_load(); + var res = self~$MathTester$_fun_modAug($a, $b); + return res; +} + _ %compare1(int $$a, int $$b) method_id(80704) { int $a = $$a; int $b = $$b; @@ -594,7 +664,7 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() method_id { - return "ipfs://QmQEqAX7YospM3CwBYdt1fkEDDqnjys5FtJHxWeaZcmMA6"; + return "ipfs://QmavmjWAsXUiS6LRjoUL1VZENKLNHo9rWT4Ab3RSx4E5Rr"; } _ lazy_deployment_completed() method_id { diff --git a/src/test/features/output/math_MathTester.code.fif b/src/test/features/output/math_MathTester.code.fif index 822c5776b..7284e7878 100644 --- a/src/test/features/output/math_MathTester.code.fif +++ b/src/test/features/output/math_MathTester.code.fif @@ -36,6 +36,11 @@ PROGRAM{ DECLPROC $MathTester$_fun_shl DECLPROC $MathTester$_fun_and DECLPROC $MathTester$_fun_or + DECLPROC $MathTester$_fun_addAug + DECLPROC $MathTester$_fun_subAug + DECLPROC $MathTester$_fun_mulAug + DECLPROC $MathTester$_fun_divAug + DECLPROC $MathTester$_fun_modAug DECLPROC $MathTester$_fun_compare1 DECLPROC $MathTester$_fun_compare2 DECLPROC $MathTester$_fun_compare3 @@ -84,6 +89,11 @@ PROGRAM{ 110321 DECLMETHOD %shl 108636 DECLMETHOD %and 83393 DECLMETHOD %or + 120881 DECLMETHOD %addAug + 114791 DECLMETHOD %subAug + 129050 DECLMETHOD %mulAug + 85125 DECLMETHOD %divAug + 81709 DECLMETHOD %modAug 80704 DECLMETHOD %compare1 68387 DECLMETHOD %compare2 72450 DECLMETHOD %compare3 @@ -559,6 +569,21 @@ PROGRAM{ $MathTester$_fun_or PROCREF:<{ OR }> + $MathTester$_fun_addAug PROCREF:<{ + ADD + }> + $MathTester$_fun_subAug PROCREF:<{ + SUB + }> + $MathTester$_fun_mulAug PROCREF:<{ + MUL + }> + $MathTester$_fun_divAug PROCREF:<{ + DIV + }> + $MathTester$_fun_modAug PROCREF:<{ + MOD + }> $MathTester$_fun_compare1 PROCREF:<{ SWAP __tact_int_eq_nullable_one INLINECALLDICT @@ -770,6 +795,36 @@ PROGRAM{ $MathTester$_fun_or INLINECALLDICT NIP }> + %addAug PROC:<{ + $MathTester$_contract_load INLINECALLDICT + -ROT + $MathTester$_fun_addAug INLINECALLDICT + NIP + }> + %subAug PROC:<{ + $MathTester$_contract_load INLINECALLDICT + -ROT + $MathTester$_fun_subAug INLINECALLDICT + NIP + }> + %mulAug PROC:<{ + $MathTester$_contract_load INLINECALLDICT + -ROT + $MathTester$_fun_mulAug INLINECALLDICT + NIP + }> + %divAug PROC:<{ + $MathTester$_contract_load INLINECALLDICT + -ROT + $MathTester$_fun_divAug INLINECALLDICT + NIP + }> + %modAug PROC:<{ + $MathTester$_contract_load INLINECALLDICT + -ROT + $MathTester$_fun_modAug INLINECALLDICT + NIP + }> %compare1 PROC:<{ $MathTester$_contract_load INLINECALLDICT -ROT @@ -1086,7 +1141,7 @@ PROGRAM{ 209474421377847335869795010607481022628 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d514571415837596f73704d3343774259647431666b454444716e6a79733546744a48785765615a636d4d4136} PUSHSLICE + x{697066733a2f2f516d61766d6a57417358556953364c526a6f554c31565a454e4b4c4e486f39725754344162335253783445355272} PUSHSLICE }> lazy_deployment_completed PROC:<{ c4 PUSH diff --git a/src/test/features/output/math_MathTester.code.rev.fif b/src/test/features/output/math_MathTester.code.rev.fif index 0de453726..76513d914 100644 --- a/src/test/features/output/math_MathTester.code.rev.fif +++ b/src/test/features/output/math_MathTester.code.rev.fif @@ -5,9 +5,11 @@ PROGRAM{ DECLPROC ?fun_75056; DECLPROC ?fun_80400; DECLPROC ?fun_80704; + DECLPROC ?fun_81709; DECLPROC ?fun_83393; DECLPROC ?fun_83863; DECLPROC ?fun_84903; + DECLPROC ?fun_85125; DECLPROC ?fun_88966; DECLPROC ?fun_89158; DECLPROC ?fun_89358; @@ -34,11 +36,13 @@ PROGRAM{ DECLPROC ?fun_111973; DECLPROC ?fun_113224; DECLPROC supported_interfaces; + DECLPROC ?fun_114791; DECLPROC ?fun_114952; DECLPROC lazy_deployment_completed; DECLPROC ?fun_115966; DECLPROC ?fun_119081; DECLPROC ?fun_120031; + DECLPROC ?fun_120881; DECLPROC get_abi_ipfs; DECLPROC ?fun_123210; DECLPROC ?fun_124092; @@ -46,6 +50,7 @@ PROGRAM{ DECLPROC ?fun_126476; DECLPROC ?fun_127339; DECLPROC ?fun_128157; + DECLPROC ?fun_129050; DECLPROC ?fun_ref_0bddee3e66194d71; DECLPROC ?fun_ref_1665824c3631042e; DECLPROC ?fun_ref_1a5aedf76777daf0; @@ -164,6 +169,12 @@ PROGRAM{ ?fun_ref_d078cffef374dca6 INLINECALLDICT s1 POP }> + ?fun_81709 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ROTREV + ?fun_ref_b4fde213ffa24781 INLINECALLDICT + s1 POP + }> ?fun_83393 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT ROTREV @@ -182,6 +193,12 @@ PROGRAM{ ?fun_ref_943f0cebd640e361 INLINECALLDICT s1 POP }> + ?fun_85125 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ROTREV + ?fun_ref_1a5aedf76777daf0 INLINECALLDICT + s1 POP + }> ?fun_88966 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT ROTREV @@ -589,6 +606,12 @@ PROGRAM{ 36993126140238121407019133875791708966 PUSHINT 209474421377847335869795010607481022628 PUSHINT }> + ?fun_114791 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ROTREV + ?fun_ref_edec8407367eca46 INLINECALLDICT + s1 POP + }> ?fun_114952 PROC:<{ s1 PUSH ISNULL @@ -697,8 +720,14 @@ PROGRAM{ ?fun_ref_52ebac4ebc285034 INLINECALLDICT s1 POP }> + ?fun_120881 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ROTREV + ?fun_ref_2e8105a0f1ba34b1 INLINECALLDICT + s1 POP + }> get_abi_ipfs PROC:<{ - x{697066733A2F2F516D514571415837596F73704D3343774259647431666B454444716E6A79733546744A48785765615A636D4D413682_} PUSHSLICE + x{697066733A2F2F516D61766D6A57417358556953364C526A6F554C31565A454E4B4C4E486F3972575434416233525378344535527282_} PUSHSLICE }> ?fun_123210 PROC:<{ s0 s1 XCHG @@ -766,6 +795,12 @@ PROGRAM{ ?fun_ref_7299352e77d5a022 INLINECALLDICT s1 POP }> + ?fun_129050 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ROTREV + ?fun_ref_1e8474cb72f85f98 INLINECALLDICT + s1 POP + }> ?fun_ref_0bddee3e66194d71 PROCREF:<{ ISNULL NOT diff --git a/src/test/features/output/math_MathTester.headers.fc b/src/test/features/output/math_MathTester.headers.fc index 47f57090d..a93fc04d6 100644 --- a/src/test/features/output/math_MathTester.headers.fc +++ b/src/test/features/output/math_MathTester.headers.fc @@ -114,6 +114,21 @@ tuple $MathTester$_contract_load() impure inline_ref; ;; $MathTester$_fun_or (tuple, int) $MathTester$_fun_or(tuple $self, int $a, int $b) impure inline_ref; +;; $MathTester$_fun_addAug +(tuple, int) $MathTester$_fun_addAug(tuple $self, int $a, int $b) impure inline_ref; + +;; $MathTester$_fun_subAug +(tuple, int) $MathTester$_fun_subAug(tuple $self, int $a, int $b) impure inline_ref; + +;; $MathTester$_fun_mulAug +(tuple, int) $MathTester$_fun_mulAug(tuple $self, int $a, int $b) impure inline_ref; + +;; $MathTester$_fun_divAug +(tuple, int) $MathTester$_fun_divAug(tuple $self, int $a, int $b) impure inline_ref; + +;; $MathTester$_fun_modAug +(tuple, int) $MathTester$_fun_modAug(tuple $self, int $a, int $b) impure inline_ref; + ;; $MathTester$_fun_compare1 (tuple, int) $MathTester$_fun_compare1(tuple $self, int $a, int $b) impure inline_ref; diff --git a/src/test/features/output/math_MathTester.md b/src/test/features/output/math_MathTester.md index 864d82faf..5ab0108f5 100644 --- a/src/test/features/output/math_MathTester.md +++ b/src/test/features/output/math_MathTester.md @@ -1,6 +1,6 @@ # TACT Compilation Report Contract: MathTester -BOC Size: 2339 bytes +BOC Size: 2423 bytes # Types Total Types: 6 @@ -30,7 +30,7 @@ TLB: `factory_deploy#6d0ff13b queryId:uint64 cashback:address = FactoryDeploy` Signature: `FactoryDeploy{queryId:uint64,cashback:address}` # Get Methods -Total Get Methods: 43 +Total Get Methods: 48 ## add Argument: a @@ -68,6 +68,26 @@ Argument: b Argument: a Argument: b +## addAug +Argument: a +Argument: b + +## subAug +Argument: a +Argument: b + +## mulAug +Argument: a +Argument: b + +## divAug +Argument: a +Argument: b + +## modAug +Argument: a +Argument: b + ## compare1 Argument: a Argument: b diff --git a/src/test/features/output/math_MathTester.pkg b/src/test/features/output/math_MathTester.pkg index c42c470df..fe1efdac3 100644 --- a/src/test/features/output/math_MathTester.pkg +++ b/src/test/features/output/math_MathTester.pkg @@ -1 +1 @@ -{"name":"MathTester","code":"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","abi":"{\"name\":\"MathTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]},{\"name\":\"Deploy\",\"header\":2490013878,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}}]},{\"name\":\"DeployOk\",\"header\":2952335191,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}}]},{\"name\":\"FactoryDeploy\",\"header\":1829761339,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"cashback\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"Deploy\"}}],\"getters\":[{\"name\":\"add\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"sub\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mul\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"div\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mod\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"shr\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"shl\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"and\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"or\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"compare1\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare2\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare3\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare4\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare5\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare6\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare7\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare8\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare9\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare10\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare11\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare12\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare13\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare14\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare15\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare16\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare17\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare18\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare19\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare20\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare21\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare22\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare23\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare24\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare25\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare26\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare27\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}},{\"name\":\"b\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare28\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}},{\"name\":\"b\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNull1\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNotNull1\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNull2\",\"arguments\":[{\"name\":\"address\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNotNull2\",\"arguments\":[{\"name\":\"address\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNull3\",\"arguments\":[{\"name\":\"cell\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNotNull3\",\"arguments\":[{\"name\":\"cell\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"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"}},"sources":{"src\\test\\features\\math.tact":"aW1wb3J0ICJAc3RkbGliL2RlcGxveSI7DQoNCmNvbnRyYWN0IE1hdGhUZXN0ZXIgd2l0aCBEZXBsb3lhYmxlIHsNCiAgICBpbml0KCkgew0KDQogICAgfQ0KDQogICAgZ2V0IGZ1biBhZGQoYTogSW50LCBiOiBJbnQpOiBJbnQgew0KICAgICAgICByZXR1cm4gYSArIGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBzdWIoYTogSW50LCBiOiBJbnQpOiBJbnQgew0KICAgICAgICByZXR1cm4gYSAtIGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBtdWwoYTogSW50LCBiOiBJbnQpOiBJbnQgew0KICAgICAgICByZXR1cm4gYSAqIGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBkaXYoYTogSW50LCBiOiBJbnQpOiBJbnQgew0KICAgICAgICByZXR1cm4gYSAvIGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBtb2QoYTogSW50LCBiOiBJbnQpOiBJbnQgew0KICAgICAgICByZXR1cm4gYSAlIGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBzaHIoYTogSW50LCBiOiBJbnQpOiBJbnQgew0KICAgICAgICByZXR1cm4gYSA+PiBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gc2hsKGE6IEludCwgYjogSW50KTogSW50IHsNCiAgICAgICAgcmV0dXJuIGEgPDwgYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGFuZChhOiBJbnQsIGI6IEludCk6IEludCB7DQogICAgICAgIHJldHVybiBhICYgYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIG9yKGE6IEludCwgYjogSW50KTogSW50IHsNCiAgICAgICAgcmV0dXJuIGEgfCBiOw0KICAgIH0NCg0KICAgIC8vDQogICAgLy8gSW50IENvbXBhcmUNCiAgICAvLw0KDQogICAgZ2V0IGZ1biBjb21wYXJlMShhOiBJbnQsIGI6IEludD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUyKGE6IEludCwgYjogSW50Pyk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSAhPSBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gY29tcGFyZTMoYTogSW50PywgYjogSW50KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhID09IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlNChhOiBJbnQ/LCBiOiBJbnQpOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgIT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmU1KGE6IEludD8sIGI6IEludD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmU2KGE6IEludD8sIGI6IEludD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgIT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmU3KGE6IEludCwgYjogSW50KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhID4gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmU4KGE6IEludCwgYjogSW50KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhID49IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlOShhOiBJbnQsIGI6IEludCk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSA8IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlMTAoYTogSW50LCBiOiBJbnQpOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPD0gYjsNCiAgICB9DQoNCiAgICAvLw0KICAgIC8vIEFkZHJlc3MgQ29tcGFyZQ0KICAgIC8vDQoNCiAgICBnZXQgZnVuIGNvbXBhcmUxMShhOiBBZGRyZXNzLCBiOiBBZGRyZXNzKTogQm9vbCB7DQogICAgICAgIHJldHVybiBhID09IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlMTIoYTogQWRkcmVzcywgYjogQWRkcmVzcz8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUxMyhhOiBBZGRyZXNzPywgYjogQWRkcmVzcyk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSA9PSBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gY29tcGFyZTE0KGE6IEFkZHJlc3M/LCBiOiBBZGRyZXNzPyk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSA9PSBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gY29tcGFyZTE1KGE6IEFkZHJlc3MsIGI6IEFkZHJlc3MpOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgIT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUxNihhOiBBZGRyZXNzLCBiOiBBZGRyZXNzPyk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSAhPSBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gY29tcGFyZTE3KGE6IEFkZHJlc3M/LCBiOiBBZGRyZXNzKTogQm9vbCB7DQogICAgICAgIHJldHVybiBhICE9IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlMTgoYTogQWRkcmVzcz8sIGI6IEFkZHJlc3M/KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhICE9IGI7DQogICAgfQ0KDQogICAgLy8NCiAgICAvLyBDZWxsIGNvbXBhcmUNCiAgICAvLw0KDQogICAgZ2V0IGZ1biBjb21wYXJlMTkoYTogQ2VsbCwgYjogQ2VsbCk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSA9PSBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gY29tcGFyZTIwKGE6IENlbGwsIGI6IENlbGw/KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhID09IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlMjEoYTogQ2VsbD8sIGI6IENlbGwpOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUyMihhOiBDZWxsPywgYjogQ2VsbD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUyMyhhOiBDZWxsLCBiOiBDZWxsKTogQm9vbCB7DQogICAgICAgIHJldHVybiBhICE9IGI7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBjb21wYXJlMjQoYTogQ2VsbCwgYjogQ2VsbD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgIT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUyNShhOiBDZWxsPywgYjogQ2VsbCk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSAhPSBiOw0KICAgIH0NCg0KICAgIGdldCBmdW4gY29tcGFyZTI2KGE6IENlbGw/LCBiOiBDZWxsPyk6IEJvb2wgew0KICAgICAgICByZXR1cm4gYSAhPSBiOw0KICAgIH0NCg0KICAgIC8vIENvbXBhcmUgZGljdHMNCg0KICAgIGdldCBmdW4gY29tcGFyZTI3KGE6IG1hcDxJbnQsIEludD4sIGI6IG1hcDxJbnQsIEludD4pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgPT0gYjsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGNvbXBhcmUyOChhOiBtYXA8SW50LCBJbnQ+LCBiOiBtYXA8SW50LCBJbnQ+KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhICE9IGI7DQogICAgfQ0KDQogICAgLy8NCiAgICAvLyBJc051bGwvSXNOb3ROdWxsDQogICAgLy8NCg0KICAgIGdldCBmdW4gaXNOdWxsMShhOiBJbnQ/KTogQm9vbCB7DQogICAgICAgIHJldHVybiBhID09IG51bGw7DQogICAgfQ0KDQogICAgZ2V0IGZ1biBpc05vdE51bGwxKGE6IEludD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGEgIT0gbnVsbDsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGlzTnVsbDIoYWRkcmVzczogQWRkcmVzcz8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGFkZHJlc3MgPT0gbnVsbDsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGlzTm90TnVsbDIoYWRkcmVzczogQWRkcmVzcz8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGFkZHJlc3MgIT0gbnVsbDsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGlzTnVsbDMoY2VsbDogQ2VsbD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGNlbGwgPT0gbnVsbDsNCiAgICB9DQoNCiAgICBnZXQgZnVuIGlzTm90TnVsbDMoY2VsbDogQ2VsbD8pOiBCb29sIHsNCiAgICAgICAgcmV0dXJuIGNlbGwgIT0gbnVsbDsNCiAgICB9DQp9"},"compiler":{"name":"tact","version":"invalid","parameters":"{\"entrypoint\":\"./src/test/features/math.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file +{"name":"MathTester","code":"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","abi":"{\"name\":\"MathTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]},{\"name\":\"Deploy\",\"header\":2490013878,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}}]},{\"name\":\"DeployOk\",\"header\":2952335191,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}}]},{\"name\":\"FactoryDeploy\",\"header\":1829761339,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"cashback\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"Deploy\"}}],\"getters\":[{\"name\":\"add\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"sub\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mul\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"div\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mod\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"shr\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"shl\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"and\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"or\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"addAug\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"subAug\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mulAug\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"divAug\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"modAug\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"compare1\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare2\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare3\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare4\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare5\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare6\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare7\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare8\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare9\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare10\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare11\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare12\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare13\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare14\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare15\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare16\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare17\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare18\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare19\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare20\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare21\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare22\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare23\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare24\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare25\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare26\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"b\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare27\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}},{\"name\":\"b\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"compare28\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}},{\"name\":\"b\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNull1\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNotNull1\",\"arguments\":[{\"name\":\"a\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNull2\",\"arguments\":[{\"name\":\"address\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNotNull2\",\"arguments\":[{\"name\":\"address\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNull3\",\"arguments\":[{\"name\":\"cell\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"isNotNull3\",\"arguments\":[{\"name\":\"cell\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"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"}},"sources":{"src/test/features/math.tact":"aW1wb3J0ICJAc3RkbGliL2RlcGxveSI7Cgpjb250cmFjdCBNYXRoVGVzdGVyIHdpdGggRGVwbG95YWJsZSB7CiAgICBpbml0KCkgewoKICAgIH0KCiAgICBnZXQgZnVuIGFkZChhOiBJbnQsIGI6IEludCk6IEludCB7CiAgICAgICAgcmV0dXJuIGEgKyBiOwogICAgfQoKICAgIGdldCBmdW4gc3ViKGE6IEludCwgYjogSW50KTogSW50IHsKICAgICAgICByZXR1cm4gYSAtIGI7CiAgICB9CgogICAgZ2V0IGZ1biBtdWwoYTogSW50LCBiOiBJbnQpOiBJbnQgewogICAgICAgIHJldHVybiBhICogYjsKICAgIH0KCiAgICBnZXQgZnVuIGRpdihhOiBJbnQsIGI6IEludCk6IEludCB7CiAgICAgICAgcmV0dXJuIGEgLyBiOwogICAgfQoKICAgIGdldCBmdW4gbW9kKGE6IEludCwgYjogSW50KTogSW50IHsKICAgICAgICByZXR1cm4gYSAlIGI7CiAgICB9CgogICAgZ2V0IGZ1biBzaHIoYTogSW50LCBiOiBJbnQpOiBJbnQgewogICAgICAgIHJldHVybiBhID4+IGI7CiAgICB9CgogICAgZ2V0IGZ1biBzaGwoYTogSW50LCBiOiBJbnQpOiBJbnQgewogICAgICAgIHJldHVybiBhIDw8IGI7CiAgICB9CgogICAgZ2V0IGZ1biBhbmQoYTogSW50LCBiOiBJbnQpOiBJbnQgewogICAgICAgIHJldHVybiBhICYgYjsKICAgIH0KCiAgICBnZXQgZnVuIG9yKGE6IEludCwgYjogSW50KTogSW50IHsKICAgICAgICByZXR1cm4gYSB8IGI7CiAgICB9CgogICAgLy8KICAgIC8vIEF1Z21lbnRlZCBhc3NpZ25tZW50CiAgICAvLwoKICAgIGdldCBmdW4gYWRkQXVnKGE6IEludCwgYjogSW50KTogSW50IHsKICAgICAgICBhICs9IGI7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9CgogICAgZ2V0IGZ1biBzdWJBdWcoYTogSW50LCBiOiBJbnQpOiBJbnQgewogICAgICAgIGEgLT0gYjsKICAgICAgICByZXR1cm4gYTsKICAgIH0KCiAgICBnZXQgZnVuIG11bEF1ZyhhOiBJbnQsIGI6IEludCk6IEludCB7CiAgICAgICAgYSAqPSBiOwogICAgICAgIHJldHVybiBhOwogICAgfQoKICAgIGdldCBmdW4gZGl2QXVnKGE6IEludCwgYjogSW50KTogSW50IHsKICAgICAgICBhIC89IGI7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9CgogICAgZ2V0IGZ1biBtb2RBdWcoYTogSW50LCBiOiBJbnQpOiBJbnQgewogICAgICAgIGEgJT0gYjsKICAgICAgICByZXR1cm4gYTsKICAgIH0KCiAgICAvLwogICAgLy8gSW50IENvbXBhcmUKICAgIC8vCgogICAgZ2V0IGZ1biBjb21wYXJlMShhOiBJbnQsIGI6IEludD8pOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTIoYTogSW50LCBiOiBJbnQ/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgIT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmUzKGE6IEludD8sIGI6IEludCk6IEJvb2wgewogICAgICAgIHJldHVybiBhID09IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlNChhOiBJbnQ/LCBiOiBJbnQpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSAhPSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTUoYTogSW50PywgYjogSW50Pyk6IEJvb2wgewogICAgICAgIHJldHVybiBhID09IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlNihhOiBJbnQ/LCBiOiBJbnQ/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgIT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmU3KGE6IEludCwgYjogSW50KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgPiBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTgoYTogSW50LCBiOiBJbnQpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA+PSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTkoYTogSW50LCBiOiBJbnQpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA8IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlMTAoYTogSW50LCBiOiBJbnQpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA8PSBiOwogICAgfQoKICAgIC8vCiAgICAvLyBBZGRyZXNzIENvbXBhcmUKICAgIC8vCgogICAgZ2V0IGZ1biBjb21wYXJlMTEoYTogQWRkcmVzcywgYjogQWRkcmVzcyk6IEJvb2wgewogICAgICAgIHJldHVybiBhID09IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlMTIoYTogQWRkcmVzcywgYjogQWRkcmVzcz8pOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTEzKGE6IEFkZHJlc3M/LCBiOiBBZGRyZXNzKTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmUxNChhOiBBZGRyZXNzPywgYjogQWRkcmVzcz8pOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTE1KGE6IEFkZHJlc3MsIGI6IEFkZHJlc3MpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSAhPSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTE2KGE6IEFkZHJlc3MsIGI6IEFkZHJlc3M/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgIT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmUxNyhhOiBBZGRyZXNzPywgYjogQWRkcmVzcyk6IEJvb2wgewogICAgICAgIHJldHVybiBhICE9IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlMTgoYTogQWRkcmVzcz8sIGI6IEFkZHJlc3M/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgIT0gYjsKICAgIH0KCiAgICAvLwogICAgLy8gQ2VsbCBjb21wYXJlCiAgICAvLwoKICAgIGdldCBmdW4gY29tcGFyZTE5KGE6IENlbGwsIGI6IENlbGwpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTIwKGE6IENlbGwsIGI6IENlbGw/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmUyMShhOiBDZWxsPywgYjogQ2VsbCk6IEJvb2wgewogICAgICAgIHJldHVybiBhID09IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlMjIoYTogQ2VsbD8sIGI6IENlbGw/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmUyMyhhOiBDZWxsLCBiOiBDZWxsKTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgIT0gYjsKICAgIH0KCiAgICBnZXQgZnVuIGNvbXBhcmUyNChhOiBDZWxsLCBiOiBDZWxsPyk6IEJvb2wgewogICAgICAgIHJldHVybiBhICE9IGI7CiAgICB9CgogICAgZ2V0IGZ1biBjb21wYXJlMjUoYTogQ2VsbD8sIGI6IENlbGwpOiBCb29sIHsKICAgICAgICByZXR1cm4gYSAhPSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTI2KGE6IENlbGw/LCBiOiBDZWxsPyk6IEJvb2wgewogICAgICAgIHJldHVybiBhICE9IGI7CiAgICB9CgogICAgLy8gQ29tcGFyZSBkaWN0cwoKICAgIGdldCBmdW4gY29tcGFyZTI3KGE6IG1hcDxJbnQsIEludD4sIGI6IG1hcDxJbnQsIEludD4pOiBCb29sIHsKICAgICAgICByZXR1cm4gYSA9PSBiOwogICAgfQoKICAgIGdldCBmdW4gY29tcGFyZTI4KGE6IG1hcDxJbnQsIEludD4sIGI6IG1hcDxJbnQsIEludD4pOiBCb29sIHsKICAgICAgICByZXR1cm4gYSAhPSBiOwogICAgfQoKICAgIC8vCiAgICAvLyBJc051bGwvSXNOb3ROdWxsCiAgICAvLwoKICAgIGdldCBmdW4gaXNOdWxsMShhOiBJbnQ/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGEgPT0gbnVsbDsKICAgIH0KCiAgICBnZXQgZnVuIGlzTm90TnVsbDEoYTogSW50Pyk6IEJvb2wgewogICAgICAgIHJldHVybiBhICE9IG51bGw7CiAgICB9CgogICAgZ2V0IGZ1biBpc051bGwyKGFkZHJlc3M6IEFkZHJlc3M/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGFkZHJlc3MgPT0gbnVsbDsKICAgIH0KCiAgICBnZXQgZnVuIGlzTm90TnVsbDIoYWRkcmVzczogQWRkcmVzcz8pOiBCb29sIHsKICAgICAgICByZXR1cm4gYWRkcmVzcyAhPSBudWxsOwogICAgfQoKICAgIGdldCBmdW4gaXNOdWxsMyhjZWxsOiBDZWxsPyk6IEJvb2wgewogICAgICAgIHJldHVybiBjZWxsID09IG51bGw7CiAgICB9CgogICAgZ2V0IGZ1biBpc05vdE51bGwzKGNlbGw6IENlbGw/KTogQm9vbCB7CiAgICAgICAgcmV0dXJuIGNlbGwgIT0gbnVsbDsKICAgIH0KfQ=="},"compiler":{"name":"tact","version":"1.1.3","parameters":"{\"entrypoint\":\"./src/test/features/math.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file diff --git a/src/test/features/output/math_MathTester.ts b/src/test/features/output/math_MathTester.ts index 72a83a40a..8844b9bd6 100644 --- a/src/test/features/output/math_MathTester.ts +++ b/src/test/features/output/math_MathTester.ts @@ -332,8 +332,8 @@ function initMathTester_init_args(src: MathTester_init_args) { } async function MathTester_init() { - const __code = Cell.fromBase64('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'); - const __system = Cell.fromBase64('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'); + const __code = Cell.fromBase64('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'); + const __system = Cell.fromBase64('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'); let builder = beginCell(); builder.storeRef(__system); builder.storeUint(0, 1); @@ -388,6 +388,11 @@ const MathTester_getters: ABIGetter[] = [ {"name":"shl","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"and","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"or","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"addAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"subAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"mulAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"divAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"modAug","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"compare1","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}}, {"name":"compare2","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":true,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}}, {"name":"compare3","arguments":[{"name":"a","type":{"kind":"simple","type":"int","optional":true,"format":257}},{"name":"b","type":{"kind":"simple","type":"int","optional":false,"format":257}}],"returnType":{"kind":"simple","type":"bool","optional":false}}, @@ -551,6 +556,51 @@ export class MathTester implements Contract { return result; } + async getAddAug(provider: ContractProvider, a: bigint, b: bigint) { + let builder = new TupleBuilder(); + builder.writeNumber(a); + builder.writeNumber(b); + let source = (await provider.get('addAug', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getSubAug(provider: ContractProvider, a: bigint, b: bigint) { + let builder = new TupleBuilder(); + builder.writeNumber(a); + builder.writeNumber(b); + let source = (await provider.get('subAug', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getMulAug(provider: ContractProvider, a: bigint, b: bigint) { + let builder = new TupleBuilder(); + builder.writeNumber(a); + builder.writeNumber(b); + let source = (await provider.get('mulAug', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getDivAug(provider: ContractProvider, a: bigint, b: bigint) { + let builder = new TupleBuilder(); + builder.writeNumber(a); + builder.writeNumber(b); + let source = (await provider.get('divAug', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getModAug(provider: ContractProvider, a: bigint, b: bigint) { + let builder = new TupleBuilder(); + builder.writeNumber(a); + builder.writeNumber(b); + let source = (await provider.get('modAug', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + async getCompare1(provider: ContractProvider, a: bigint, b: bigint | null) { let builder = new TupleBuilder(); builder.writeNumber(a); diff --git a/src/types/resolveStatements.ts b/src/types/resolveStatements.ts index b9e73d36b..1f0fb9890 100644 --- a/src/types/resolveStatements.ts +++ b/src/types/resolveStatements.ts @@ -169,6 +169,29 @@ function processStatements(statements: ASTStatement[], sctx: StatementContext, c } } + } else if (s.kind == 'statement_augmentedassign') { + + // Process lvalue + ctx = resolveLValueRef(s.path, sctx, ctx); + + // Process expression + ctx = resolveExpression(s.expression, sctx, ctx); + + // Check type + let expressionType = getExpType(ctx, s.expression); + let tailType = getExpType(ctx, s.path[s.path.length - 1]); + if (!isAssignable(expressionType, tailType)) { + throwError(`Type mismatch: ${printTypeRef(expressionType)} is not assignable to ${printTypeRef(tailType)}`, s.ref); + } + + // Mark as assigned + if (s.path.length === 2 && s.path[0].name === 'self') { + const field = s.path[1].name; + if (sctx.requiredFields.findIndex((v) => v === field) >= 0) { + sctx = removeRequiredVariable(field, sctx); + } + } + } else if (s.kind === 'statement_expression') { // Process expression