diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg index bad905d5cc..6046c68fd7 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg +++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg @@ -373,8 +373,8 @@ Expression = (. nextTokenIsPotentialStartOfXmlMode = true; .) ( SimpleExpressionWithSuffix { BinaryOperator SimpleExpressionWithSuffix } - /* TODO: operators */ | NewExpression + | ConditionalExpression ) . @@ -383,7 +383,7 @@ BinaryOperator = | "=" | "<>" | "<" | ">" | "<=" | ">=" | "Like" | "&" | "And" | "AndAlso" | "Or" | "OrElse" | "Xor" | "<<" | ">>" | "Is" | "IsNot" - | "^=" | "*=" | "/=" | "\\=" | "+=" | "-=" | "&=" | "To" | ":=" + | "^=" | "*=" | "/=" | "\\=" | "+=" | "-=" | "&=" | "<<=" | ">>=" | "To" | ":=" . UnaryOperator = @@ -396,6 +396,7 @@ SimpleExpressionWithSuffix = ( SimpleExpression { ExpressionSuffix } | "TypeOf" SimpleExpressionWithSuffix "Is" TypeName + | CastExpression ). SimpleExpression = @@ -427,6 +428,36 @@ ExpressionSuffix = | ( "." | "!" ) IdentifierOrKeyword . +CastExpression = + SimpleCastExpression | ("DirectCast" | "TryCast" | "CType") "(" Expression "," TypeName ")" +. + +SimpleCastExpression = + ( + "CBool" | + "CByte" | + "CChar" | + "CDate" | + "CDec" | + "CDbl" | + "CInt" | + "CLng" | + "CObj" | + "CSByte" | + "CShort" | + "CSng" | + "CStr" | + "CUInt" | + "CULng" | + "CUShort" + ) + "(" Expression ")" +. + +ConditionalExpression = + "If" "(" Expression "," Expression [ "," Expression ] ")" +. + XmlLiteral = (. PushContext(Context.Xml, t); .) { XmlComment } XmlElement { XmlComment } diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs index 5ad5bfb5ad..125969b48a 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs @@ -52,7 +52,7 @@ int currentState = 0; if (t == null) { currentState = 1; break; } if (t.kind == 172) { stateStack.Push(1); - goto case 209; + goto case 222; } else { goto case 2; } @@ -61,7 +61,7 @@ int currentState = 0; if (t == null) { currentState = 2; break; } if (t.kind == 136) { stateStack.Push(2); - goto case 206; + goto case 219; } else { goto case 3; } @@ -70,7 +70,7 @@ int currentState = 0; if (t == null) { currentState = 3; break; } if (t.kind == 39) { stateStack.Push(3); - goto case 138; + goto case 151; } else { goto case 4; } @@ -89,7 +89,7 @@ int currentState = 0; case 5: { if (t == null) { currentState = 5; break; } if (t.kind == 159) { - goto case 202; + goto case 215; } else { if (set[1, t.kind]) { goto case 7; @@ -107,7 +107,7 @@ int currentState = 0; if (t == null) { currentState = 7; break; } if (t.kind == 39) { stateStack.Push(7); - goto case 138; + goto case 151; } else { goto case 8; } @@ -119,7 +119,7 @@ int currentState = 0; break; } else { if (t.kind == 83 || t.kind == 154) { - goto case 201; + goto case 214; } else { Error(t); goto case 9; @@ -129,7 +129,7 @@ int currentState = 0; case 9: { if (t == null) { currentState = 9; break; } if (set[3, t.kind]) { - goto case 201; + goto case 214; } else { stateStack.Push(10); goto case 15; @@ -190,7 +190,7 @@ int currentState = 0; if (t == null) { currentState = 18; break; } if (t.kind == 39) { stateStack.Push(18); - goto case 138; + goto case 151; } else { goto case 19; } @@ -203,23 +203,23 @@ int currentState = 0; } else { if (set[6, t.kind]) { stateStack.Push(20); - goto case 194; + goto case 207; } else { if (t.kind == 126 || t.kind == 208) { stateStack.Push(20); - goto case 182; + goto case 195; } else { if (t.kind == 100) { stateStack.Push(20); - goto case 171; + goto case 184; } else { if (t.kind == 118) { stateStack.Push(20); - goto case 161; + goto case 174; } else { if (t.kind == 97) { stateStack.Push(20); - goto case 148; + goto case 161; } else { if (t.kind == 171) { stateStack.Push(20); @@ -259,7 +259,7 @@ int currentState = 0; } case 24: { stateStack.Push(25); - goto case 143; + goto case 156; } case 25: { if (t == null) { currentState = 25; break; } @@ -270,7 +270,7 @@ int currentState = 0; case 26: { if (t == null) { currentState = 26; break; } if (t.kind == 62) { - currentState = 137; + currentState = 150; break; } else { goto case 27; @@ -327,16 +327,16 @@ int currentState = 0; case 35: { if (t == null) { currentState = 35; break; } if (t.kind == 87 || t.kind == 104 || t.kind == 202) { - goto case 120; + goto case 133; } else { if (t.kind == 209 || t.kind == 231) { - goto case 114; + goto case 127; } else { if (t.kind == 55 || t.kind == 191) { - goto case 111; + goto case 124; } else { if (t.kind == 187) { - goto case 108; + goto case 121; } else { if (set[9, t.kind]) { goto case 36; @@ -351,7 +351,7 @@ int currentState = 0; case 36: { if (t == null) { currentState = 36; break; } if (t.kind == 72) { - goto case 107; + goto case 120; } else { goto case 37; } @@ -366,426 +366,525 @@ int currentState = 0; case 39: { if (t == null) { currentState = 39; break; } if (set[10, t.kind]) { - goto case 76; + goto case 84; } else { if (t.kind == 161) { - goto case 40; + goto case 49; } else { - goto case 6; + if (t.kind == 134) { + goto case 40; + } else { + goto case 6; + } } } } case 40: { if (t == null) { currentState = 40; break; } - Expect(161, t); // "New" + Expect(134, t); // "If" currentState = 41; break; } case 41: { if (t == null) { currentState = 41; break; } + Expect(36, t); // "(" + currentState = 42; + break; + } + case 42: { + stateStack.Push(43); + goto case 38; + } + case 43: { + if (t == null) { currentState = 43; break; } + Expect(23, t); // "," + currentState = 44; + break; + } + case 44: { + stateStack.Push(45); + goto case 38; + } + case 45: { + if (t == null) { currentState = 45; break; } + if (t.kind == 23) { + goto case 47; + } else { + goto case 46; + } + } + case 46: { + if (t == null) { currentState = 46; break; } + Expect(37, t); // ")" + currentState = stateStack.Pop(); + break; + } + case 47: { + if (t == null) { currentState = 47; break; } + currentState = 48; + break; + } + case 48: { + stateStack.Push(46); + goto case 38; + } + case 49: { + if (t == null) { currentState = 49; break; } + Expect(161, t); // "New" + currentState = 50; + break; + } + case 50: { + if (t == null) { currentState = 50; break; } if (set[11, t.kind]) { - stateStack.Push(52); - goto case 57; + stateStack.Push(61); + goto case 66; } else { - goto case 42; + goto case 51; } } - case 42: { - if (t == null) { currentState = 42; break; } + case 51: { + if (t == null) { currentState = 51; break; } if (t.kind == 231) { - currentState = 43; + currentState = 52; break; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 43: { - goto case 44; + case 52: { + goto case 53; } - case 44: { - if (t == null) { currentState = 44; break; } + case 53: { + if (t == null) { currentState = 53; break; } Expect(34, t); // "{" - currentState = 45; + currentState = 54; break; } - case 45: { - if (t == null) { currentState = 45; break; } + case 54: { + if (t == null) { currentState = 54; break; } if (t.kind == 146) { - currentState = 46; + currentState = 55; break; } else { - goto case 46; + goto case 55; } } - case 46: { - if (t == null) { currentState = 46; break; } + case 55: { + if (t == null) { currentState = 55; break; } Expect(27, t); // "." - currentState = 47; + currentState = 56; break; } - case 47: { - stateStack.Push(48); + case 56: { + stateStack.Push(57); goto case 16; } - case 48: { - if (t == null) { currentState = 48; break; } + case 57: { + if (t == null) { currentState = 57; break; } Expect(21, t); // "=" - currentState = 49; + currentState = 58; break; } - case 49: { - stateStack.Push(50); + case 58: { + stateStack.Push(59); goto case 38; } - case 50: { - if (t == null) { currentState = 50; break; } + case 59: { + if (t == null) { currentState = 59; break; } if (t.kind == 23) { - currentState = 45; + currentState = 54; break; } else { - goto case 51; + goto case 60; } } - case 51: { - if (t == null) { currentState = 51; break; } + case 60: { + if (t == null) { currentState = 60; break; } Expect(35, t); // "}" currentState = stateStack.Pop(); break; } - case 52: { - if (t == null) { currentState = 52; break; } + case 61: { + if (t == null) { currentState = 61; break; } if (t.kind == 125) { - currentState = 53; + currentState = 62; break; } else { - goto case 42; + goto case 51; } } - case 53: { - stateStack.Push(42); - goto case 54; + case 62: { + stateStack.Push(51); + goto case 63; } - case 54: { - if (t == null) { currentState = 54; break; } + case 63: { + if (t == null) { currentState = 63; break; } Expect(34, t); // "{" - currentState = 55; + currentState = 64; break; } - case 55: { - if (t == null) { currentState = 55; break; } + case 64: { + if (t == null) { currentState = 64; break; } if (set[12, t.kind]) { - stateStack.Push(56); + stateStack.Push(65); goto case 38; } else { if (t.kind == 34) { - stateStack.Push(56); - goto case 54; + stateStack.Push(65); + goto case 63; } else { Error(t); - goto case 56; + goto case 65; } } } - case 56: { - if (t == null) { currentState = 56; break; } + case 65: { + if (t == null) { currentState = 65; break; } if (t.kind == 23) { - currentState = 55; + currentState = 64; break; } else { - goto case 51; + goto case 60; } } - case 57: { - if (t == null) { currentState = 57; break; } + case 66: { + if (t == null) { currentState = 66; break; } if (t.kind == 129) { - goto case 72; + goto case 80; } else { if (set[13, t.kind]) { - stateStack.Push(58); - goto case 73; + stateStack.Push(67); + goto case 81; } else { if (set[14, t.kind]) { - goto case 72; + goto case 80; } else { Error(t); - goto case 58; + goto case 67; } } } } - case 58: { - if (t == null) { currentState = 58; break; } + case 67: { + if (t == null) { currentState = 67; break; } if (t.kind == 36) { - stateStack.Push(58); - goto case 62; + stateStack.Push(67); + goto case 71; } else { - goto case 59; + goto case 68; } } - case 59: { - if (t == null) { currentState = 59; break; } + case 68: { + if (t == null) { currentState = 68; break; } if (t.kind == 27) { - currentState = 60; + currentState = 69; break; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 60: { - stateStack.Push(61); + case 69: { + stateStack.Push(70); goto case 16; } - case 61: { - if (t == null) { currentState = 61; break; } + case 70: { + if (t == null) { currentState = 70; break; } if (t.kind == 36) { - stateStack.Push(61); - goto case 62; + stateStack.Push(70); + goto case 71; } else { - goto case 59; + goto case 68; } } - case 62: { - if (t == null) { currentState = 62; break; } + case 71: { + if (t == null) { currentState = 71; break; } Expect(36, t); // "(" - currentState = 63; + currentState = 72; break; } - case 63: { - if (t == null) { currentState = 63; break; } + case 72: { + if (t == null) { currentState = 72; break; } if (t.kind == 168) { - goto case 69; + goto case 77; } else { if (set[15, t.kind]) { - goto case 65; + goto case 73; } else { Error(t); - goto case 64; + goto case 46; } } } - case 64: { - if (t == null) { currentState = 64; break; } - Expect(37, t); // ")" - currentState = stateStack.Pop(); - break; - } - case 65: { - if (t == null) { currentState = 65; break; } + case 73: { + if (t == null) { currentState = 73; break; } if (set[12, t.kind]) { - goto case 66; + goto case 74; } else { - goto case 64; + goto case 46; } } - case 66: { - stateStack.Push(64); - goto case 67; + case 74: { + stateStack.Push(46); + goto case 75; } - case 67: { - stateStack.Push(68); + case 75: { + stateStack.Push(76); goto case 38; } - case 68: { - if (t == null) { currentState = 68; break; } + case 76: { + if (t == null) { currentState = 76; break; } if (t.kind == 23) { - currentState = 67; + currentState = 75; break; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 69: { - if (t == null) { currentState = 69; break; } - currentState = 70; + case 77: { + if (t == null) { currentState = 77; break; } + currentState = 78; break; } - case 70: { - if (t == null) { currentState = 70; break; } + case 78: { + if (t == null) { currentState = 78; break; } if (set[11, t.kind]) { - stateStack.Push(71); - goto case 57; + stateStack.Push(79); + goto case 66; } else { - goto case 71; + goto case 79; } } - case 71: { - if (t == null) { currentState = 71; break; } + case 79: { + if (t == null) { currentState = 79; break; } if (t.kind == 23) { - goto case 69; + goto case 77; } else { - goto case 64; + goto case 46; } } - case 72: { - if (t == null) { currentState = 72; break; } - currentState = 58; + case 80: { + if (t == null) { currentState = 80; break; } + currentState = 67; break; } - case 73: { + case 81: { PushContext(Context.IdentifierExpected, t); - goto case 74; + goto case 82; } - case 74: { - if (t == null) { currentState = 74; break; } + case 82: { + if (t == null) { currentState = 82; break; } if (set[13, t.kind]) { - currentState = 75; + currentState = 83; break; } else { Error(t); - goto case 75; + goto case 83; } } - case 75: { + case 83: { PopContext(); currentState = stateStack.Pop(); goto switchlbl; } - case 76: { - stateStack.Push(77); - goto case 78; + case 84: { + stateStack.Push(85); + goto case 86; } - case 77: { - if (t == null) { currentState = 77; break; } + case 85: { + if (t == null) { currentState = 85; break; } if (set[16, t.kind]) { - currentState = 76; + currentState = 84; break; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 78: { + case 86: { nextTokenIsPotentialStartOfXmlMode = true; - goto case 79; + goto case 87; } - case 79: { - if (t == null) { currentState = 79; break; } + case 87: { + if (t == null) { currentState = 87; break; } if (set[17, t.kind]) { - currentState = 79; + currentState = 87; break; } else { if (set[18, t.kind]) { - stateStack.Push(83); - goto case 92; + stateStack.Push(98); + goto case 107; } else { if (t.kind == 218) { - currentState = 80; + currentState = 95; break; } else { - goto case 6; + if (set[19, t.kind]) { + goto case 88; + } else { + goto case 6; + } } } } } - case 80: { - stateStack.Push(81); - goto case 78; + case 88: { + if (t == null) { currentState = 88; break; } + if (set[20, t.kind]) { + goto case 93; + } else { + if (t.kind == 93 || t.kind == 105 || t.kind == 217) { + currentState = 89; + break; + } else { + goto case 6; + } + } } - case 81: { - if (t == null) { currentState = 81; break; } + case 89: { + if (t == null) { currentState = 89; break; } + Expect(36, t); // "(" + currentState = 90; + break; + } + case 90: { + stateStack.Push(91); + goto case 38; + } + case 91: { + if (t == null) { currentState = 91; break; } + Expect(23, t); // "," + currentState = 92; + break; + } + case 92: { + stateStack.Push(46); + goto case 66; + } + case 93: { + if (t == null) { currentState = 93; break; } + if (set[20, t.kind]) { + currentState = 94; + break; + } else { + Error(t); + goto case 94; + } + } + case 94: { + if (t == null) { currentState = 94; break; } + Expect(36, t); // "(" + currentState = 48; + break; + } + case 95: { + stateStack.Push(96); + goto case 86; + } + case 96: { + if (t == null) { currentState = 96; break; } Expect(143, t); // "Is" - currentState = 82; + currentState = 97; break; } - case 82: { - goto case 57; + case 97: { + goto case 66; } - case 83: { - if (t == null) { currentState = 83; break; } + case 98: { + if (t == null) { currentState = 98; break; } if (t.kind == 27 || t.kind == 28 || t.kind == 36) { - stateStack.Push(83); - goto case 84; + stateStack.Push(98); + goto case 99; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 84: { - if (t == null) { currentState = 84; break; } + case 99: { + if (t == null) { currentState = 99; break; } if (t.kind == 36) { - currentState = 87; + currentState = 102; break; } else { if (t.kind == 27 || t.kind == 28) { - goto case 85; + goto case 100; } else { goto case 6; } } } - case 85: { - if (t == null) { currentState = 85; break; } - currentState = 86; + case 100: { + if (t == null) { currentState = 100; break; } + currentState = 101; break; } - case 86: { + case 101: { goto case 16; } - case 87: { + case 102: { nextTokenIsPotentialStartOfXmlMode = true; - goto case 88; + goto case 103; } - case 88: { - if (t == null) { currentState = 88; break; } + case 103: { + if (t == null) { currentState = 103; break; } if (t.kind == 168) { - goto case 89; + goto case 104; } else { if (set[12, t.kind]) { - goto case 66; + goto case 74; } else { goto case 6; } } } - case 89: { - if (t == null) { currentState = 89; break; } - currentState = 90; + case 104: { + if (t == null) { currentState = 104; break; } + currentState = 105; break; } - case 90: { - stateStack.Push(91); - goto case 57; + case 105: { + stateStack.Push(106); + goto case 66; } - case 91: { - if (t == null) { currentState = 91; break; } + case 106: { + if (t == null) { currentState = 106; break; } if (t.kind == 23) { - goto case 89; + goto case 104; } else { - goto case 64; + goto case 46; } } - case 92: { + case 107: { nextTokenIsPotentialStartOfXmlMode = true; - goto case 93; + goto case 108; } - case 93: { - if (t == null) { currentState = 93; break; } - if (set[19, t.kind]) { + case 108: { + if (t == null) { currentState = 108; break; } + if (set[21, t.kind]) { goto case 16; } else { if (t.kind == 36) { - currentState = 106; - break; + goto case 47; } else { if (set[13, t.kind]) { - goto case 73; + goto case 81; } else { if (t.kind == 27 || t.kind == 28) { - goto case 85; + goto case 100; } else { if (t.kind == 128) { - currentState = 104; + currentState = 119; break; } else { if (t.kind == 235) { - currentState = 102; + currentState = 117; break; } else { if (t.kind == 10 || t.kind == 17) { - goto case 94; + goto case 109; } else { goto case 6; } @@ -796,24 +895,24 @@ int currentState = 0; } } } - case 94: { + case 109: { PushContext(Context.Xml, t); - goto case 95; + goto case 110; } - case 95: { - if (t == null) { currentState = 95; break; } + case 110: { + if (t == null) { currentState = 110; break; } if (t.kind == 17) { - currentState = 95; + currentState = 110; break; } else { - stateStack.Push(96); - goto case 97; + stateStack.Push(111); + goto case 112; } } - case 96: { - if (t == null) { currentState = 96; break; } + case 111: { + if (t == null) { currentState = 111; break; } if (t.kind == 17) { - currentState = 96; + currentState = 111; break; } else { PopContext(); @@ -821,58 +920,58 @@ int currentState = 0; goto switchlbl; } } - case 97: { - if (t == null) { currentState = 97; break; } + case 112: { + if (t == null) { currentState = 112; break; } Expect(10, t); // XmlOpenTag - currentState = 98; + currentState = 113; break; } - case 98: { - if (t == null) { currentState = 98; break; } - if (set[20, t.kind]) { - currentState = 98; + case 113: { + if (t == null) { currentState = 113; break; } + if (set[22, t.kind]) { + currentState = 113; break; } else { if (t.kind == 14) { goto case 16; } else { if (t.kind == 11) { - goto case 99; + goto case 114; } else { goto case 6; } } } } - case 99: { - if (t == null) { currentState = 99; break; } - currentState = 100; + case 114: { + if (t == null) { currentState = 114; break; } + currentState = 115; break; } - case 100: { - if (t == null) { currentState = 100; break; } - if (set[21, t.kind]) { - if (set[22, t.kind]) { - goto case 99; + case 115: { + if (t == null) { currentState = 115; break; } + if (set[23, t.kind]) { + if (set[24, t.kind]) { + goto case 114; } else { if (t.kind == 10) { - stateStack.Push(100); - goto case 97; + stateStack.Push(115); + goto case 112; } else { Error(t); - goto case 100; + goto case 115; } } } else { Expect(15, t); // XmlOpenEndTag - currentState = 101; + currentState = 116; break; } } - case 101: { - if (t == null) { currentState = 101; break; } - if (set[23, t.kind]) { - currentState = 101; + case 116: { + if (t == null) { currentState = 116; break; } + if (set[25, t.kind]) { + currentState = 116; break; } else { Expect(11, t); // XmlCloseTag @@ -880,273 +979,265 @@ int currentState = 0; break; } } - case 102: { - if (t == null) { currentState = 102; break; } + case 117: { + if (t == null) { currentState = 117; break; } Expect(36, t); // "(" - currentState = 103; + currentState = 118; break; } - case 103: { + case 118: { readXmlIdentifier = true; - stateStack.Push(64); - goto case 73; + stateStack.Push(46); + goto case 81; } - case 104: { - if (t == null) { currentState = 104; break; } + case 119: { + if (t == null) { currentState = 119; break; } Expect(36, t); // "(" - currentState = 105; + currentState = 92; break; } - case 105: { - stateStack.Push(64); - goto case 57; - } - case 106: { - stateStack.Push(64); - goto case 38; - } - case 107: { - if (t == null) { currentState = 107; break; } + case 120: { + if (t == null) { currentState = 120; break; } currentState = 37; break; } - case 108: { - if (t == null) { currentState = 108; break; } + case 121: { + if (t == null) { currentState = 121; break; } Expect(187, t); // "RaiseEvent" - currentState = 109; + currentState = 122; break; } - case 109: { - stateStack.Push(110); + case 122: { + stateStack.Push(123); goto case 16; } - case 110: { - if (t == null) { currentState = 110; break; } + case 123: { + if (t == null) { currentState = 123; break; } if (t.kind == 36) { - currentState = 65; + currentState = 73; break; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 111: { - if (t == null) { currentState = 111; break; } + case 124: { + if (t == null) { currentState = 124; break; } if (t.kind == 55 || t.kind == 191) { - currentState = 112; + currentState = 125; break; } else { Error(t); - goto case 112; + goto case 125; } } - case 112: { - stateStack.Push(113); + case 125: { + stateStack.Push(126); goto case 38; } - case 113: { - if (t == null) { currentState = 113; break; } + case 126: { + if (t == null) { currentState = 126; break; } Expect(23, t); // "," currentState = 37; break; } - case 114: { - if (t == null) { currentState = 114; break; } + case 127: { + if (t == null) { currentState = 127; break; } if (t.kind == 209 || t.kind == 231) { - currentState = 115; + currentState = 128; break; } else { Error(t); - goto case 115; + goto case 128; } } - case 115: { - stateStack.Push(116); + case 128: { + stateStack.Push(129); goto case 38; } - case 116: { - stateStack.Push(117); + case 129: { + stateStack.Push(130); goto case 15; } - case 117: { - stateStack.Push(118); + case 130: { + stateStack.Push(131); goto case 32; } - case 118: { - if (t == null) { currentState = 118; break; } + case 131: { + if (t == null) { currentState = 131; break; } Expect(112, t); // "End" - currentState = 119; + currentState = 132; break; } - case 119: { - if (t == null) { currentState = 119; break; } + case 132: { + if (t == null) { currentState = 132; break; } if (t.kind == 209 || t.kind == 231) { goto case 16; } else { goto case 6; } } - case 120: { - if (t == null) { currentState = 120; break; } + case 133: { + if (t == null) { currentState = 133; break; } if (t.kind == 87 || t.kind == 104 || t.kind == 202) { - currentState = 121; + currentState = 134; break; } else { Error(t); - goto case 121; + goto case 134; } } - case 121: { - stateStack.Push(122); - goto case 73; + case 134: { + stateStack.Push(135); + goto case 81; } - case 122: { - if (t == null) { currentState = 122; break; } + case 135: { + if (t == null) { currentState = 135; break; } if (t.kind == 32) { - currentState = 123; + currentState = 136; break; } else { - goto case 123; + goto case 136; } } - case 123: { - if (t == null) { currentState = 123; break; } + case 136: { + if (t == null) { currentState = 136; break; } if (t.kind == 36) { - goto case 135; + goto case 148; } else { - goto case 124; + goto case 137; } } - case 124: { - if (t == null) { currentState = 124; break; } + case 137: { + if (t == null) { currentState = 137; break; } if (t.kind == 23) { - currentState = 129; + currentState = 142; break; } else { if (t.kind == 62) { - currentState = 126; + currentState = 139; break; } else { - goto case 125; + goto case 138; } } } - case 125: { - if (t == null) { currentState = 125; break; } + case 138: { + if (t == null) { currentState = 138; break; } if (t.kind == 21) { - goto case 107; + goto case 120; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 126: { - if (t == null) { currentState = 126; break; } + case 139: { + if (t == null) { currentState = 139; break; } if (t.kind == 161) { - goto case 128; + goto case 141; } else { - goto case 127; + goto case 140; } } - case 127: { - stateStack.Push(125); - goto case 57; + case 140: { + stateStack.Push(138); + goto case 66; } - case 128: { - if (t == null) { currentState = 128; break; } - currentState = 127; + case 141: { + if (t == null) { currentState = 141; break; } + currentState = 140; break; } - case 129: { - stateStack.Push(130); - goto case 73; + case 142: { + stateStack.Push(143); + goto case 81; } - case 130: { - if (t == null) { currentState = 130; break; } + case 143: { + if (t == null) { currentState = 143; break; } if (t.kind == 32) { - currentState = 131; + currentState = 144; break; } else { - goto case 131; + goto case 144; } } - case 131: { - if (t == null) { currentState = 131; break; } + case 144: { + if (t == null) { currentState = 144; break; } if (t.kind == 36) { - goto case 132; + goto case 145; } else { - goto case 124; + goto case 137; } } - case 132: { - if (t == null) { currentState = 132; break; } - currentState = 133; + case 145: { + if (t == null) { currentState = 145; break; } + currentState = 146; break; } - case 133: { - if (t == null) { currentState = 133; break; } + case 146: { + if (t == null) { currentState = 146; break; } if (t.kind == 23) { - goto case 132; + goto case 145; } else { - goto case 134; + goto case 147; } } - case 134: { - if (t == null) { currentState = 134; break; } + case 147: { + if (t == null) { currentState = 147; break; } Expect(37, t); // ")" - currentState = 124; + currentState = 137; break; } - case 135: { - if (t == null) { currentState = 135; break; } - currentState = 136; + case 148: { + if (t == null) { currentState = 148; break; } + currentState = 149; break; } - case 136: { - if (t == null) { currentState = 136; break; } + case 149: { + if (t == null) { currentState = 149; break; } if (t.kind == 23) { - goto case 135; + goto case 148; } else { - goto case 134; + goto case 147; } } - case 137: { - if (t == null) { currentState = 137; break; } + case 150: { + if (t == null) { currentState = 150; break; } if (t.kind == 39) { - stateStack.Push(137); - goto case 138; + stateStack.Push(150); + goto case 151; } else { stateStack.Push(27); - goto case 57; + goto case 66; } } - case 138: { - if (t == null) { currentState = 138; break; } + case 151: { + if (t == null) { currentState = 151; break; } Expect(39, t); // "<" - currentState = 139; + currentState = 152; break; } - case 139: { + case 152: { PushContext(Context.Attribute, t); - goto case 140; + goto case 153; } - case 140: { - if (t == null) { currentState = 140; break; } - if (set[24, t.kind]) { - currentState = 140; + case 153: { + if (t == null) { currentState = 153; break; } + if (set[26, t.kind]) { + currentState = 153; break; } else { Expect(38, t); // ">" - currentState = 141; + currentState = 154; break; } } - case 141: { + case 154: { PopContext(); - goto case 142; + goto case 155; } - case 142: { - if (t == null) { currentState = 142; break; } + case 155: { + if (t == null) { currentState = 155; break; } if (t.kind == 1) { goto case 16; } else { @@ -1154,340 +1245,340 @@ int currentState = 0; goto switchlbl; } } - case 143: { - stateStack.Push(144); - goto case 145; + case 156: { + stateStack.Push(157); + goto case 158; } - case 144: { - if (t == null) { currentState = 144; break; } + case 157: { + if (t == null) { currentState = 157; break; } if (t.kind == 23) { - currentState = 143; + currentState = 156; break; } else { currentState = stateStack.Pop(); goto switchlbl; } } - case 145: { - if (t == null) { currentState = 145; break; } + case 158: { + if (t == null) { currentState = 158; break; } if (t.kind == 39) { - stateStack.Push(145); - goto case 138; + stateStack.Push(158); + goto case 151; } else { - goto case 146; + goto case 159; } } - case 146: { - if (t == null) { currentState = 146; break; } - if (set[25, t.kind]) { - currentState = 146; + case 159: { + if (t == null) { currentState = 159; break; } + if (set[27, t.kind]) { + currentState = 159; break; } else { - stateStack.Push(147); - goto case 73; + stateStack.Push(160); + goto case 81; } } - case 147: { - if (t == null) { currentState = 147; break; } + case 160: { + if (t == null) { currentState = 160; break; } if (t.kind == 62) { - goto case 128; + goto case 141; } else { - goto case 125; + goto case 138; } } - case 148: { - if (t == null) { currentState = 148; break; } + case 161: { + if (t == null) { currentState = 161; break; } Expect(97, t); // "Custom" - currentState = 149; + currentState = 162; break; } - case 149: { - stateStack.Push(150); - goto case 161; + case 162: { + stateStack.Push(163); + goto case 174; } - case 150: { - if (t == null) { currentState = 150; break; } - if (set[26, t.kind]) { - goto case 152; + case 163: { + if (t == null) { currentState = 163; break; } + if (set[28, t.kind]) { + goto case 165; } else { Expect(112, t); // "End" - currentState = 151; + currentState = 164; break; } } - case 151: { - if (t == null) { currentState = 151; break; } + case 164: { + if (t == null) { currentState = 164; break; } Expect(118, t); // "Event" currentState = 31; break; } - case 152: { - if (t == null) { currentState = 152; break; } + case 165: { + if (t == null) { currentState = 165; break; } if (t.kind == 39) { - stateStack.Push(152); - goto case 138; + stateStack.Push(165); + goto case 151; } else { if (t.kind == 55 || t.kind == 187 || t.kind == 191) { - currentState = 153; + currentState = 166; break; } else { Error(t); - goto case 153; + goto case 166; } } } - case 153: { - if (t == null) { currentState = 153; break; } + case 166: { + if (t == null) { currentState = 166; break; } Expect(36, t); // "(" - currentState = 154; + currentState = 167; break; } - case 154: { - stateStack.Push(155); - goto case 143; + case 167: { + stateStack.Push(168); + goto case 156; } - case 155: { - if (t == null) { currentState = 155; break; } + case 168: { + if (t == null) { currentState = 168; break; } Expect(37, t); // ")" - currentState = 156; + currentState = 169; break; } - case 156: { - if (t == null) { currentState = 156; break; } + case 169: { + if (t == null) { currentState = 169; break; } Expect(1, t); // EOL - currentState = 157; + currentState = 170; break; } - case 157: { - stateStack.Push(158); + case 170: { + stateStack.Push(171); goto case 32; } - case 158: { - if (t == null) { currentState = 158; break; } + case 171: { + if (t == null) { currentState = 171; break; } Expect(112, t); // "End" - currentState = 159; + currentState = 172; break; } - case 159: { - if (t == null) { currentState = 159; break; } + case 172: { + if (t == null) { currentState = 172; break; } if (t.kind == 55 || t.kind == 187 || t.kind == 191) { - currentState = 160; + currentState = 173; break; } else { Error(t); - goto case 160; + goto case 173; } } - case 160: { - stateStack.Push(150); + case 173: { + stateStack.Push(163); goto case 15; } - case 161: { - if (t == null) { currentState = 161; break; } + case 174: { + if (t == null) { currentState = 174; break; } Expect(118, t); // "Event" - currentState = 162; + currentState = 175; break; } - case 162: { - stateStack.Push(163); - goto case 73; + case 175: { + stateStack.Push(176); + goto case 81; } - case 163: { - if (t == null) { currentState = 163; break; } + case 176: { + if (t == null) { currentState = 176; break; } if (t.kind == 62) { - currentState = 170; + currentState = 183; break; } else { - if (set[27, t.kind]) { + if (set[29, t.kind]) { if (t.kind == 36) { - currentState = 168; + currentState = 181; break; } else { - goto case 164; + goto case 177; } } else { Error(t); - goto case 164; + goto case 177; } } } - case 164: { - if (t == null) { currentState = 164; break; } + case 177: { + if (t == null) { currentState = 177; break; } if (t.kind == 135) { - goto case 165; + goto case 178; } else { goto case 31; } } - case 165: { - if (t == null) { currentState = 165; break; } - currentState = 166; + case 178: { + if (t == null) { currentState = 178; break; } + currentState = 179; break; } - case 166: { - stateStack.Push(167); - goto case 57; + case 179: { + stateStack.Push(180); + goto case 66; } - case 167: { - if (t == null) { currentState = 167; break; } + case 180: { + if (t == null) { currentState = 180; break; } if (t.kind == 23) { - goto case 165; + goto case 178; } else { goto case 31; } } - case 168: { - if (t == null) { currentState = 168; break; } - if (set[28, t.kind]) { - stateStack.Push(169); - goto case 143; + case 181: { + if (t == null) { currentState = 181; break; } + if (set[30, t.kind]) { + stateStack.Push(182); + goto case 156; } else { - goto case 169; + goto case 182; } } - case 169: { - if (t == null) { currentState = 169; break; } + case 182: { + if (t == null) { currentState = 182; break; } Expect(37, t); // ")" - currentState = 164; + currentState = 177; break; } - case 170: { - stateStack.Push(164); - goto case 57; + case 183: { + stateStack.Push(177); + goto case 66; } - case 171: { - if (t == null) { currentState = 171; break; } + case 184: { + if (t == null) { currentState = 184; break; } Expect(100, t); // "Declare" - currentState = 172; + currentState = 185; break; } - case 172: { - if (t == null) { currentState = 172; break; } + case 185: { + if (t == null) { currentState = 185; break; } if (t.kind == 61 || t.kind == 65 || t.kind == 221) { - currentState = 173; + currentState = 186; break; } else { - goto case 173; + goto case 186; } } - case 173: { - if (t == null) { currentState = 173; break; } + case 186: { + if (t == null) { currentState = 186; break; } if (t.kind == 126 || t.kind == 208) { - currentState = 174; + currentState = 187; break; } else { Error(t); - goto case 174; + goto case 187; } } - case 174: { - stateStack.Push(175); - goto case 73; + case 187: { + stateStack.Push(188); + goto case 81; } - case 175: { - if (t == null) { currentState = 175; break; } + case 188: { + if (t == null) { currentState = 188; break; } Expect(148, t); // "Lib" - currentState = 176; + currentState = 189; break; } - case 176: { - if (t == null) { currentState = 176; break; } + case 189: { + if (t == null) { currentState = 189; break; } Expect(3, t); // LiteralString - currentState = 177; + currentState = 190; break; } - case 177: { - if (t == null) { currentState = 177; break; } + case 190: { + if (t == null) { currentState = 190; break; } if (t.kind == 58) { - currentState = 181; + currentState = 194; break; } else { - goto case 178; + goto case 191; } } - case 178: { - if (t == null) { currentState = 178; break; } + case 191: { + if (t == null) { currentState = 191; break; } if (t.kind == 36) { - currentState = 179; + currentState = 192; break; } else { goto case 31; } } - case 179: { - if (t == null) { currentState = 179; break; } - if (set[28, t.kind]) { - stateStack.Push(180); - goto case 143; + case 192: { + if (t == null) { currentState = 192; break; } + if (set[30, t.kind]) { + stateStack.Push(193); + goto case 156; } else { - goto case 180; + goto case 193; } } - case 180: { - if (t == null) { currentState = 180; break; } + case 193: { + if (t == null) { currentState = 193; break; } Expect(37, t); // ")" currentState = 31; break; } - case 181: { - if (t == null) { currentState = 181; break; } + case 194: { + if (t == null) { currentState = 194; break; } Expect(3, t); // LiteralString - currentState = 178; + currentState = 191; break; } - case 182: { - if (t == null) { currentState = 182; break; } + case 195: { + if (t == null) { currentState = 195; break; } if (t.kind == 126 || t.kind == 208) { - currentState = 183; + currentState = 196; break; } else { Error(t); - goto case 183; + goto case 196; } } - case 183: { + case 196: { PushContext(Context.IdentifierExpected, t); - goto case 184; + goto case 197; } - case 184: { - if (t == null) { currentState = 184; break; } - currentState = 185; + case 197: { + if (t == null) { currentState = 197; break; } + currentState = 198; break; } - case 185: { + case 198: { PopContext(); - goto case 186; + goto case 199; } - case 186: { - if (t == null) { currentState = 186; break; } + case 199: { + if (t == null) { currentState = 199; break; } if (t.kind == 36) { - currentState = 192; + currentState = 205; break; } else { - goto case 187; + goto case 200; } } - case 187: { - if (t == null) { currentState = 187; break; } + case 200: { + if (t == null) { currentState = 200; break; } if (t.kind == 62) { - currentState = 191; + currentState = 204; break; } else { - goto case 188; + goto case 201; } } - case 188: { - stateStack.Push(189); + case 201: { + stateStack.Push(202); goto case 32; } - case 189: { - if (t == null) { currentState = 189; break; } + case 202: { + if (t == null) { currentState = 202; break; } Expect(112, t); // "End" - currentState = 190; + currentState = 203; break; } - case 190: { - if (t == null) { currentState = 190; break; } + case 203: { + if (t == null) { currentState = 203; break; } if (t.kind == 126 || t.kind == 208) { currentState = 31; break; @@ -1496,139 +1587,139 @@ int currentState = 0; goto case 31; } } - case 191: { - stateStack.Push(188); - goto case 57; + case 204: { + stateStack.Push(201); + goto case 66; } - case 192: { - if (t == null) { currentState = 192; break; } - if (set[28, t.kind]) { - stateStack.Push(193); - goto case 143; + case 205: { + if (t == null) { currentState = 205; break; } + if (set[30, t.kind]) { + stateStack.Push(206); + goto case 156; } else { - goto case 193; + goto case 206; } } - case 193: { - if (t == null) { currentState = 193; break; } + case 206: { + if (t == null) { currentState = 206; break; } Expect(37, t); // ")" - currentState = 187; + currentState = 200; break; } - case 194: { - if (t == null) { currentState = 194; break; } + case 207: { + if (t == null) { currentState = 207; break; } if (t.kind == 87) { - currentState = 195; + currentState = 208; break; } else { - goto case 195; + goto case 208; } } - case 195: { - stateStack.Push(196); - goto case 200; + case 208: { + stateStack.Push(209); + goto case 213; } - case 196: { - if (t == null) { currentState = 196; break; } + case 209: { + if (t == null) { currentState = 209; break; } if (t.kind == 62) { - currentState = 199; + currentState = 212; break; } else { - goto case 197; + goto case 210; } } - case 197: { - if (t == null) { currentState = 197; break; } + case 210: { + if (t == null) { currentState = 210; break; } if (t.kind == 21) { - currentState = 198; + currentState = 211; break; } else { goto case 31; } } - case 198: { + case 211: { stateStack.Push(31); goto case 38; } - case 199: { - stateStack.Push(197); - goto case 57; + case 212: { + stateStack.Push(210); + goto case 66; } - case 200: { - if (t == null) { currentState = 200; break; } - if (set[29, t.kind]) { + case 213: { + if (t == null) { currentState = 213; break; } + if (set[31, t.kind]) { goto case 16; } else { goto case 6; } } - case 201: { - if (t == null) { currentState = 201; break; } + case 214: { + if (t == null) { currentState = 214; break; } currentState = 9; break; } - case 202: { - if (t == null) { currentState = 202; break; } + case 215: { + if (t == null) { currentState = 215; break; } Expect(159, t); // "Namespace" - currentState = 203; + currentState = 216; break; } - case 203: { - if (t == null) { currentState = 203; break; } + case 216: { + if (t == null) { currentState = 216; break; } if (set[3, t.kind]) { - currentState = 203; + currentState = 216; break; } else { - stateStack.Push(204); + stateStack.Push(217); goto case 15; } } - case 204: { - if (t == null) { currentState = 204; break; } - if (set[30, t.kind]) { - stateStack.Push(204); + case 217: { + if (t == null) { currentState = 217; break; } + if (set[32, t.kind]) { + stateStack.Push(217); goto case 5; } else { Expect(112, t); // "End" - currentState = 205; + currentState = 218; break; } } - case 205: { - if (t == null) { currentState = 205; break; } + case 218: { + if (t == null) { currentState = 218; break; } Expect(159, t); // "Namespace" currentState = 31; break; } - case 206: { - if (t == null) { currentState = 206; break; } + case 219: { + if (t == null) { currentState = 219; break; } Expect(136, t); // "Imports" - currentState = 207; + currentState = 220; break; } - case 207: { + case 220: { nextTokenIsPotentialStartOfXmlMode = true; - goto case 208; + goto case 221; } - case 208: { - if (t == null) { currentState = 208; break; } + case 221: { + if (t == null) { currentState = 221; break; } if (set[3, t.kind]) { - currentState = 208; + currentState = 221; break; } else { goto case 31; } } - case 209: { - if (t == null) { currentState = 209; break; } + case 222: { + if (t == null) { currentState = 222; break; } Expect(172, t); // "Option" - currentState = 210; + currentState = 223; break; } - case 210: { - if (t == null) { currentState = 210; break; } + case 223: { + if (t == null) { currentState = 223; break; } if (set[3, t.kind]) { - currentState = 210; + currentState = 223; break; } else { goto case 31; @@ -1652,18 +1743,20 @@ int currentState = 0; {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, T,x,x,T, T,x,T,x, x,x,x,x, x,x,x,T, x,x,T,x, T,x,x,x, T,T,T,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, x,x,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,T,x,T, x,x,x,T, x,T,T,T, x,T,T,T, x,T,T,x, x,x,x,x, x,x,x,x, x,T,T,x, x,T,x,x, x,x,x,x, T,x,T,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, T,x,T,x, T,x,x,x, x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,T,T, x,T,x,T, x,T,T,x, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, T,x,x,x, x,x}, {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x}, - {x,T,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,T,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, T,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,T, x,x,x,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,T,T,T, x,x,x,T, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,T, x,x,x,T, x,x}, - {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, T,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,T, x,x,x,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,T,T,T, x,x,x,T, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,T, x,x,x,T, x,x}, - {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, - {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,x,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, + {x,T,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,T,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, T,x,x,T, T,T,T,T, T,x,T,x, T,T,T,T, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,T, T,T,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,T,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,T, x,x,x,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,T,T,T, x,x,x,T, x,T,T,x, x,T,T,x, x,x,x,x, T,x,x,T, x,x,x,T, x,x}, + {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, T,x,x,T, T,T,T,T, T,x,T,x, T,T,T,T, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,T, T,T,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,T,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,T, x,x,x,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,T,T,T, x,x,x,T, x,T,T,x, x,T,T,x, x,x,x,x, T,x,x,T, x,x,x,T, x,x}, + {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, T,x,x,T, T,T,T,T, T,x,T,x, T,T,T,x, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,T, x,T,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,T,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,T,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, + {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,T, T,T,T,T, T,x,T,x, T,T,T,x, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,T, x,T,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,x,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,T,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,T, x,T,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,T,T, x,x,x,T, x,x,T,x, T,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,T,x,x, T,x,x,x, x,x,T,x, T,x,T,x, x,T,T,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,T, T,T,x,x, x,x,T,x, x,x,T,T, x,x,x,x, x,x,x,T, T,T,T,T, x,x,x,x, T,x,x,x, x,x,x,x, x,x}, - {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, + {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,T, T,T,T,T, T,x,T,x, T,T,T,x, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,T, x,T,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,T,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,T,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, {x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,T, T,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x}, - {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, - {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, T,T,T,x, x,T,T,T, x,T,x,x, x,x,T,T, T,T,T,T, T,T,T,T, T,T,T,x, x,T,T,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,T,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x}, + {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,T,T,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,T, T,T,T,T, T,x,T,x, T,T,T,x, x,T,T,T, T,T,T,T, T,T,x,x, x,x,x,T, x,T,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,T,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,T,x,T, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,T,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, + {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, T,T,T,x, x,T,T,T, x,T,x,x, x,x,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,T,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x}, {x,x,T,T, T,T,T,T, T,T,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,T,x,x, x,T,x,x, T,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,T,x, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,T,T, x,x,x,T, x,x,x,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,T, x,x}, + {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,T,T, T,x,T,x, T,T,x,x, x,T,T,T, T,T,T,T, T,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x}, + {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,T,T, T,x,T,x, T,T,x,x, x,T,T,T, T,x,T,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x}, {x,x,x,T, T,T,T,T, T,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,T,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x}, {x,T,T,T, T,T,T,T, T,T,T,x, T,T,x,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,x}, {x,T,T,T, T,T,T,T, T,T,T,T, T,T,T,x, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,x},