// Code generated by goyacc DO NOT EDIT. // Copyright 2020 PingCAP, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // See the License for the specific language governing permissions and // limitations under the License. package parser import __yyfmt__ "fmt" import ( "math" "strconv" "github.com/pingcap/parser/ast" "github.com/pingcap/parser/model" ) type yyhintSymType struct { yys int offset int ident string number uint64 hint *ast.TableOptimizerHint hints []*ast.TableOptimizerHint table ast.HintTable modelIdents []model.CIStr } type yyhintXError struct { state, xsym int } const ( yyhintDefault = 57415 yyhintEOFCode = 57344 yyhintErrCode = 57345 hintAggToCop = 57376 hintBCJoin = 57389 hintBCJoinPreferLocal = 57390 hintBKA = 57354 hintBNL = 57356 hintDupsWeedOut = 57411 hintFalse = 57407 hintFirstMatch = 57412 hintForceIndex = 57401 hintGB = 57410 hintHashAgg = 57378 hintHashJoin = 57358 hintIdentifier = 57347 hintIgnoreIndex = 57379 hintIgnorePlanCache = 57377 hintIndexMerge = 57362 hintInlHashJoin = 57380 hintInlJoin = 57381 hintInlMergeJoin = 57382 hintIntLit = 57346 hintJoinFixedOrder = 57350 hintJoinOrder = 57351 hintJoinPrefix = 57352 hintJoinSuffix = 57353 hintLimitToCop = 57400 hintLooseScan = 57413 hintMB = 57409 hintMRR = 57364 hintMaterialization = 57414 hintMaxExecutionTime = 57372 hintMemoryQuota = 57383 hintMerge = 57360 hintNoBKA = 57355 hintNoBNL = 57357 hintNoHashJoin = 57359 hintNoICP = 57366 hintNoIndexMerge = 57363 hintNoMRR = 57365 hintNoMerge = 57361 hintNoRangeOptimization = 57367 hintNoSemijoin = 57371 hintNoSkipScan = 57369 hintNoSwapJoinInputs = 57384 hintNthPlan = 57399 hintOLAP = 57402 hintOLTP = 57403 hintPartition = 57404 hintQBName = 57375 hintQueryType = 57385 hintReadConsistentReplica = 57386 hintReadFromStorage = 57387 hintResourceGroup = 57374 hintSMJoin = 57388 hintSemijoin = 57370 hintSetVar = 57373 hintSingleAtIdentifier = 57348 hintSkipScan = 57368 hintStreamAgg = 57391 hintStringLit = 57349 hintSwapJoinInputs = 57392 hintTiFlash = 57406 hintTiKV = 57405 hintTimeRange = 57397 hintTrue = 57408 hintUseCascades = 57398 hintUseIndex = 57394 hintUseIndexMerge = 57393 hintUsePlanCache = 57395 hintUseToja = 57396 yyhintMaxDepth = 200 yyhintTabOfs = -172 ) var ( yyhintXLAT = map[int]int{ 41: 0, // ')' (130x) 57376: 1, // hintAggToCop (122x) 57389: 2, // hintBCJoin (122x) 57390: 3, // hintBCJoinPreferLocal (122x) 57354: 4, // hintBKA (122x) 57356: 5, // hintBNL (122x) 57401: 6, // hintForceIndex (122x) 57378: 7, // hintHashAgg (122x) 57358: 8, // hintHashJoin (122x) 57379: 9, // hintIgnoreIndex (122x) 57377: 10, // hintIgnorePlanCache (122x) 57362: 11, // hintIndexMerge (122x) 57380: 12, // hintInlHashJoin (122x) 57381: 13, // hintInlJoin (122x) 57382: 14, // hintInlMergeJoin (122x) 57350: 15, // hintJoinFixedOrder (122x) 57351: 16, // hintJoinOrder (122x) 57352: 17, // hintJoinPrefix (122x) 57353: 18, // hintJoinSuffix (122x) 57400: 19, // hintLimitToCop (122x) 57372: 20, // hintMaxExecutionTime (122x) 57383: 21, // hintMemoryQuota (122x) 57360: 22, // hintMerge (122x) 57364: 23, // hintMRR (122x) 57355: 24, // hintNoBKA (122x) 57357: 25, // hintNoBNL (122x) 57359: 26, // hintNoHashJoin (122x) 57366: 27, // hintNoICP (122x) 57363: 28, // hintNoIndexMerge (122x) 57361: 29, // hintNoMerge (122x) 57365: 30, // hintNoMRR (122x) 57367: 31, // hintNoRangeOptimization (122x) 57371: 32, // hintNoSemijoin (122x) 57369: 33, // hintNoSkipScan (122x) 57384: 34, // hintNoSwapJoinInputs (122x) 57399: 35, // hintNthPlan (122x) 57375: 36, // hintQBName (122x) 57385: 37, // hintQueryType (122x) 57386: 38, // hintReadConsistentReplica (122x) 57387: 39, // hintReadFromStorage (122x) 57374: 40, // hintResourceGroup (122x) 57370: 41, // hintSemijoin (122x) 57373: 42, // hintSetVar (122x) 57368: 43, // hintSkipScan (122x) 57388: 44, // hintSMJoin (122x) 57391: 45, // hintStreamAgg (122x) 57392: 46, // hintSwapJoinInputs (122x) 57397: 47, // hintTimeRange (122x) 57398: 48, // hintUseCascades (122x) 57394: 49, // hintUseIndex (122x) 57393: 50, // hintUseIndexMerge (122x) 57395: 51, // hintUsePlanCache (122x) 57396: 52, // hintUseToja (122x) 44: 53, // ',' (120x) 57411: 54, // hintDupsWeedOut (100x) 57412: 55, // hintFirstMatch (100x) 57413: 56, // hintLooseScan (100x) 57414: 57, // hintMaterialization (100x) 57406: 58, // hintTiFlash (100x) 57405: 59, // hintTiKV (100x) 57407: 60, // hintFalse (99x) 57402: 61, // hintOLAP (99x) 57403: 62, // hintOLTP (99x) 57408: 63, // hintTrue (99x) 57410: 64, // hintGB (98x) 57409: 65, // hintMB (98x) 57347: 66, // hintIdentifier (97x) 57348: 67, // hintSingleAtIdentifier (82x) 93: 68, // ']' (76x) 57404: 69, // hintPartition (70x) 46: 70, // '.' (66x) 61: 71, // '=' (66x) 40: 72, // '(' (61x) 57344: 73, // $end (24x) 57435: 74, // QueryBlockOpt (17x) 57427: 75, // Identifier (13x) 57346: 76, // hintIntLit (8x) 57349: 77, // hintStringLit (5x) 57417: 78, // CommaOpt (4x) 57423: 79, // HintTable (4x) 57424: 80, // HintTableList (4x) 91: 81, // '[' (3x) 57416: 82, // BooleanHintName (2x) 57418: 83, // HintIndexList (2x) 57420: 84, // HintStorageType (2x) 57421: 85, // HintStorageTypeAndTable (2x) 57425: 86, // HintTableListOpt (2x) 57430: 87, // JoinOrderOptimizerHintName (2x) 57431: 88, // NullaryHintName (2x) 57434: 89, // PartitionListOpt (2x) 57437: 90, // StorageOptimizerHintOpt (2x) 57438: 91, // SubqueryOptimizerHintName (2x) 57441: 92, // SubqueryStrategy (2x) 57442: 93, // SupportedIndexLevelOptimizerHintName (2x) 57443: 94, // SupportedTableLevelOptimizerHintName (2x) 57444: 95, // TableOptimizerHintOpt (2x) 57446: 96, // UnsupportedIndexLevelOptimizerHintName (2x) 57447: 97, // UnsupportedTableLevelOptimizerHintName (2x) 57419: 98, // HintQueryType (1x) 57422: 99, // HintStorageTypeAndTableList (1x) 57426: 100, // HintTrueOrFalse (1x) 57428: 101, // IndexNameList (1x) 57429: 102, // IndexNameListOpt (1x) 57432: 103, // OptimizerHintList (1x) 57433: 104, // PartitionList (1x) 57436: 105, // Start (1x) 57439: 106, // SubqueryStrategies (1x) 57440: 107, // SubqueryStrategiesOpt (1x) 57445: 108, // UnitOfBytes (1x) 57448: 109, // Value (1x) 57415: 110, // $default (0x) 57345: 111, // error (0x) } yyhintSymNames = []string{ "')'", "hintAggToCop", "hintBCJoin", "hintBCJoinPreferLocal", "hintBKA", "hintBNL", "hintForceIndex", "hintHashAgg", "hintHashJoin", "hintIgnoreIndex", "hintIgnorePlanCache", "hintIndexMerge", "hintInlHashJoin", "hintInlJoin", "hintInlMergeJoin", "hintJoinFixedOrder", "hintJoinOrder", "hintJoinPrefix", "hintJoinSuffix", "hintLimitToCop", "hintMaxExecutionTime", "hintMemoryQuota", "hintMerge", "hintMRR", "hintNoBKA", "hintNoBNL", "hintNoHashJoin", "hintNoICP", "hintNoIndexMerge", "hintNoMerge", "hintNoMRR", "hintNoRangeOptimization", "hintNoSemijoin", "hintNoSkipScan", "hintNoSwapJoinInputs", "hintNthPlan", "hintQBName", "hintQueryType", "hintReadConsistentReplica", "hintReadFromStorage", "hintResourceGroup", "hintSemijoin", "hintSetVar", "hintSkipScan", "hintSMJoin", "hintStreamAgg", "hintSwapJoinInputs", "hintTimeRange", "hintUseCascades", "hintUseIndex", "hintUseIndexMerge", "hintUsePlanCache", "hintUseToja", "','", "hintDupsWeedOut", "hintFirstMatch", "hintLooseScan", "hintMaterialization", "hintTiFlash", "hintTiKV", "hintFalse", "hintOLAP", "hintOLTP", "hintTrue", "hintGB", "hintMB", "hintIdentifier", "hintSingleAtIdentifier", "']'", "hintPartition", "'.'", "'='", "'('", "$end", "QueryBlockOpt", "Identifier", "hintIntLit", "hintStringLit", "CommaOpt", "HintTable", "HintTableList", "'['", "BooleanHintName", "HintIndexList", "HintStorageType", "HintStorageTypeAndTable", "HintTableListOpt", "JoinOrderOptimizerHintName", "NullaryHintName", "PartitionListOpt", "StorageOptimizerHintOpt", "SubqueryOptimizerHintName", "SubqueryStrategy", "SupportedIndexLevelOptimizerHintName", "SupportedTableLevelOptimizerHintName", "TableOptimizerHintOpt", "UnsupportedIndexLevelOptimizerHintName", "UnsupportedTableLevelOptimizerHintName", "HintQueryType", "HintStorageTypeAndTableList", "HintTrueOrFalse", "IndexNameList", "IndexNameListOpt", "OptimizerHintList", "PartitionList", "Start", "SubqueryStrategies", "SubqueryStrategiesOpt", "UnitOfBytes", "Value", "$default", "error", } yyhintReductions = []struct{ xsym, components int }{ {0, 1}, {105, 1}, {103, 1}, {103, 3}, {103, 1}, {103, 3}, {95, 4}, {95, 4}, {95, 4}, {95, 4}, {95, 4}, {95, 4}, {95, 5}, {95, 5}, {95, 5}, {95, 6}, {95, 4}, {95, 4}, {95, 6}, {95, 6}, {95, 5}, {95, 4}, {95, 5}, {90, 5}, {99, 1}, {99, 3}, {85, 4}, {74, 0}, {74, 1}, {78, 0}, {78, 1}, {89, 0}, {89, 4}, {104, 1}, {104, 3}, {86, 1}, {86, 1}, {80, 2}, {80, 3}, {79, 3}, {79, 5}, {83, 4}, {102, 0}, {102, 1}, {101, 1}, {101, 3}, {107, 0}, {107, 1}, {106, 1}, {106, 3}, {109, 1}, {109, 1}, {109, 1}, {108, 1}, {108, 1}, {100, 1}, {100, 1}, {87, 1}, {87, 1}, {87, 1}, {97, 1}, {97, 1}, {97, 1}, {97, 1}, {97, 1}, {97, 1}, {97, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, {94, 1}, {96, 1}, {96, 1}, {96, 1}, {96, 1}, {96, 1}, {96, 1}, {96, 1}, {93, 1}, {93, 1}, {93, 1}, {93, 1}, {91, 1}, {91, 1}, {92, 1}, {92, 1}, {92, 1}, {92, 1}, {82, 1}, {82, 1}, {88, 1}, {88, 1}, {88, 1}, {88, 1}, {88, 1}, {88, 1}, {88, 1}, {88, 1}, {98, 1}, {98, 1}, {84, 1}, {84, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, {75, 1}, } yyhintXErrors = map[yyhintXError]string{} yyhintParseTab = [255][]uint16{ // 0 {1: 232, 206, 207, 198, 200, 224, 230, 213, 222, 236, 214, 209, 208, 212, 177, 195, 196, 197, 233, 184, 189, 203, 215, 199, 201, 202, 217, 234, 204, 216, 218, 226, 220, 211, 185, 188, 193, 235, 194, 187, 225, 186, 219, 205, 231, 210, 190, 228, 221, 223, 229, 227, 82: 191, 87: 178, 192, 90: 176, 183, 93: 182, 180, 175, 181, 179, 103: 174, 105: 173}, {73: 172}, {1: 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 324, 73: 171, 78: 424}, {1: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 73: 170}, {1: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 73: 168}, // 5 {72: 421}, {72: 418}, {72: 415}, {72: 410}, {72: 407}, // 10 {72: 396}, {72: 384}, {72: 380}, {72: 376}, {72: 368}, // 15 {72: 365}, {72: 362}, {72: 355}, {72: 350}, {72: 344}, // 20 {72: 341}, {72: 335}, {72: 237}, {72: 115}, {72: 114}, // 25 {72: 113}, {72: 112}, {72: 111}, {72: 110}, {72: 109}, // 30 {72: 108}, {72: 107}, {72: 106}, {72: 105}, {72: 104}, // 35 {72: 103}, {72: 102}, {72: 101}, {72: 100}, {72: 99}, // 40 {72: 98}, {72: 97}, {72: 96}, {72: 95}, {72: 94}, // 45 {72: 93}, {72: 92}, {72: 91}, {72: 90}, {72: 89}, // 50 {72: 88}, {72: 87}, {72: 86}, {72: 85}, {72: 84}, // 55 {72: 79}, {72: 78}, {72: 77}, {72: 76}, {72: 75}, // 60 {72: 74}, {72: 73}, {72: 72}, {72: 71}, {72: 70}, // 65 {58: 145, 145, 67: 239, 74: 238}, {58: 244, 243, 84: 242, 241, 99: 240}, {144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 68: 144, 144, 76: 144}, {332, 53: 333}, {148, 53: 148}, // 70 {81: 245}, {81: 67}, {81: 66}, {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 247, 80: 246}, {53: 330, 68: 329}, // 75 {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 248}, {135, 53: 135, 68: 135}, {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 145, 145, 316, 74: 315}, {65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}, {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, // 80 {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62}, {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, // 85 {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, // 90 {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, // 95 {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, // 100 {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, // 105 {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, // 110 {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, // 115 {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, // 120 {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, // 125 {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, // 130 {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, // 135 {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, // 140 {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 68: 141, 319, 89: 328}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 317}, // 145 {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 145, 145, 74: 318}, {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 68: 141, 319, 89: 320}, {72: 321}, {132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 68: 132}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 323, 104: 322}, // 150 {325, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 324, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 78: 326}, {139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139}, {142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 54: 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 77: 142}, {140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 68: 140}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 327}, // 155 {138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138}, {133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 68: 133}, {146, 53: 146}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 331}, {134, 53: 134, 68: 134}, // 160 {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 73: 149}, {58: 244, 243, 84: 242, 334}, {147, 53: 147}, {61: 145, 145, 67: 239, 74: 336}, {61: 338, 339, 98: 337}, // 165 {340}, {69}, {68}, {1: 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 73: 150}, {145, 67: 239, 74: 342}, // 170 {343}, {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 73: 151}, {60: 145, 63: 145, 67: 239, 74: 345}, {60: 348, 63: 347, 100: 346}, {349}, // 175 {117}, {116}, {1: 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 73: 152}, {77: 351}, {53: 324, 77: 143, 352}, // 180 {77: 353}, {354}, {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 73: 153}, {67: 239, 74: 356, 76: 145}, {76: 357}, // 185 {64: 360, 359, 108: 358}, {361}, {119}, {118}, {1: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 73: 154}, // 190 {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 363}, {364}, {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 73: 155}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 366}, {367}, // 195 {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 73: 156}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 369}, {71: 370}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 373, 374, 372, 109: 371}, {375}, // 200 {122}, {121}, {120}, {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 73: 157}, {67: 239, 74: 377, 76: 145}, // 205 {76: 378}, {379}, {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 73: 158}, {67: 239, 74: 381, 76: 145}, {76: 382}, // 210 {383}, {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 73: 159}, {145, 54: 145, 145, 145, 145, 67: 239, 74: 385}, {126, 54: 389, 390, 391, 392, 92: 388, 106: 387, 386}, {395}, // 215 {125, 53: 393}, {124, 53: 124}, {83, 53: 83}, {82, 53: 82}, {81, 53: 81}, // 220 {80, 53: 80}, {54: 389, 390, 391, 392, 92: 394}, {123, 53: 123}, {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 73: 160}, {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 398, 83: 397}, // 225 {406}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 399}, {143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 324, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 78: 400}, {130, 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 403, 101: 402, 401}, {131}, // 230 {129, 53: 404}, {128, 53: 128}, {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 405}, {127, 53: 127}, {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 73: 161}, // 235 {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 398, 83: 408}, {409}, {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 73: 162}, {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 413, 80: 412, 86: 411}, {414}, // 240 {137, 53: 330}, {136, 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 248}, {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 73: 163}, {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 413, 80: 412, 86: 416}, {417}, // 245 {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 73: 164}, {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 247, 80: 419}, {420, 53: 330}, {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 73: 165}, {145, 67: 239, 74: 422}, // 250 {423}, {1: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 73: 166}, {1: 232, 206, 207, 198, 200, 224, 230, 213, 222, 236, 214, 209, 208, 212, 177, 195, 196, 197, 233, 184, 189, 203, 215, 199, 201, 202, 217, 234, 204, 216, 218, 226, 220, 211, 185, 188, 193, 235, 194, 187, 225, 186, 219, 205, 231, 210, 190, 228, 221, 223, 229, 227, 82: 191, 87: 178, 192, 90: 426, 183, 93: 182, 180, 425, 181, 179}, {1: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 73: 169}, {1: 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 73: 167}, } ) var yyhintDebug = 0 type yyhintLexer interface { Lex(lval *yyhintSymType) int Errorf(format string, a ...interface{}) error AppendError(err error) Errors() (warns []error, errs []error) } type yyhintLexerEx interface { yyhintLexer Reduced(rule, state int, lval *yyhintSymType) bool } func yyhintSymName(c int) (s string) { x, ok := yyhintXLAT[c] if ok { return yyhintSymNames[x] } return __yyfmt__.Sprintf("%d", c) } func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) { n = yylex.Lex(lval) if n <= 0 { n = yyhintEOFCode } if yyhintDebug >= 3 { __yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yyhintSymName(n), n, n, lval) } return n } func yyhintParse(yylex yyhintLexer, parser *hintParser) int { const yyError = 111 yyEx, _ := yylex.(yyhintLexerEx) var yyn int parser.yylval = yyhintSymType{} yyS := parser.cache Nerrs := 0 /* number of errors */ Errflag := 0 /* error recovery flag */ yyerrok := func() { if yyhintDebug >= 2 { __yyfmt__.Printf("yyerrok()\n") } Errflag = 0 } _ = yyerrok yystate := 0 yychar := -1 var yyxchar int var yyshift int yyp := -1 goto yystack ret0: return 0 ret1: return 1 yystack: /* put a state and value onto the stack */ yyp++ if yyp+1 >= len(yyS) { nyys := make([]yyhintSymType, len(yyS)*2) copy(nyys, yyS) yyS = nyys parser.cache = yyS } parser.yyVAL = &yyS[yyp+1] yyS[yyp].yys = yystate yynewstate: if yychar < 0 { yychar = yyhintlex1(yylex, &parser.yylval) var ok bool if yyxchar, ok = yyhintXLAT[yychar]; !ok { yyxchar = len(yyhintSymNames) // > tab width } } if yyhintDebug >= 4 { var a []int for _, v := range yyS[:yyp+1] { a = append(a, v.yys) } __yyfmt__.Printf("state stack %v\n", a) } row := yyhintParseTab[yystate] yyn = 0 if yyxchar < len(row) { if yyn = int(row[yyxchar]); yyn != 0 { yyn += yyhintTabOfs } } switch { case yyn > 0: // shift yychar = -1 *parser.yyVAL = parser.yylval yystate = yyn yyshift = yyn if yyhintDebug >= 2 { __yyfmt__.Printf("shift, and goto state %d\n", yystate) } if Errflag > 0 { Errflag-- } goto yystack case yyn < 0: // reduce case yystate == 1: // accept if yyhintDebug >= 2 { __yyfmt__.Println("accept") } goto ret0 } if yyn == 0 { /* error ... attempt to resume parsing */ switch Errflag { case 0: /* brand new error */ if yyhintDebug >= 1 { __yyfmt__.Printf("no action for %s in state %d\n", yyhintSymName(yychar), yystate) } msg, ok := yyhintXErrors[yyhintXError{yystate, yyxchar}] if !ok { msg, ok = yyhintXErrors[yyhintXError{yystate, -1}] } if !ok && yyshift != 0 { msg, ok = yyhintXErrors[yyhintXError{yyshift, yyxchar}] } if !ok { msg, ok = yyhintXErrors[yyhintXError{yyshift, -1}] } if !ok || msg == "" { msg = "syntax error" } // ignore goyacc error message yylex.AppendError(yylex.Errorf("")) Nerrs++ fallthrough case 1, 2: /* incompletely recovered error ... try again */ Errflag = 3 /* find a state where "error" is a legal shift action */ for yyp >= 0 { row := yyhintParseTab[yyS[yyp].yys] if yyError < len(row) { yyn = int(row[yyError]) + yyhintTabOfs if yyn > 0 { // hit if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys) } yystate = yyn /* simulate a shift of "error" */ goto yystack } } /* the current p has no shift on "error", pop stack */ if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) } yyp-- } /* there is no state on the stack with an error shift ... abort */ if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery failed\n") } goto ret1 case 3: /* no shift yet; clobber input char */ if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery discards %s\n", yyhintSymName(yychar)) } if yychar == yyhintEOFCode { goto ret1 } yychar = -1 goto yynewstate /* try again in the same state */ } } r := -yyn x0 := yyhintReductions[r] x, n := x0.xsym, x0.components yypt := yyp _ = yypt // guard against "declared and not used" yyp -= n if yyp+1 >= len(yyS) { nyys := make([]yyhintSymType, len(yyS)*2) copy(nyys, yyS) yyS = nyys parser.cache = yyS } parser.yyVAL = &yyS[yyp+1] /* consult goto table to find next state */ exState := yystate yystate = int(yyhintParseTab[yyS[yyp].yys][x]) + yyhintTabOfs /* reduction by production r */ if yyhintDebug >= 2 { __yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yyhintSymNames[x], yystate) } switch r { case 1: { parser.result = yyS[yypt-0].hints } case 2: { if yyS[yypt-0].hint != nil { parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint} } } case 3: { if yyS[yypt-0].hint != nil { parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint) } else { parser.yyVAL.hints = yyS[yypt-2].hints } } case 4: { parser.yyVAL.hints = yyS[yypt-0].hints } case 5: { parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hints...) } case 6: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 7: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 8: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 9: { h := yyS[yypt-1].hint h.HintName = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 10: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 11: { h := yyS[yypt-1].hint h.HintName = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 12: { parser.warnUnsupportedHint(yyS[yypt-4].ident) parser.yyVAL.hint = nil } case 13: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-4].ident), QBName: model.NewCIStr(yyS[yypt-2].ident), HintData: yyS[yypt-1].number, } } case 14: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-4].ident), QBName: model.NewCIStr(yyS[yypt-2].ident), HintData: int64(yyS[yypt-1].number), } } case 15: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-5].ident), HintData: ast.HintSetVar{ VarName: yyS[yypt-3].ident, Value: yyS[yypt-1].ident, }, } } case 16: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 17: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-3].ident), QBName: model.NewCIStr(yyS[yypt-1].ident), } } case 18: { maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number if yyS[yypt-2].number <= maxValue { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-5].ident), HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number), QBName: model.NewCIStr(yyS[yypt-3].ident), } } else { yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(int64(math.MaxInt64))) parser.lastErrorAsWarn() parser.yyVAL.hint = nil } } case 19: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-5].ident), HintData: ast.HintTimeRange{ From: yyS[yypt-3].ident, To: yyS[yypt-1].ident, }, } } case 20: { h := yyS[yypt-1].hint h.HintName = model.NewCIStr(yyS[yypt-4].ident) h.QBName = model.NewCIStr(yyS[yypt-2].ident) parser.yyVAL.hint = h } case 21: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-3].ident), QBName: model.NewCIStr(yyS[yypt-1].ident), } } case 22: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-4].ident), QBName: model.NewCIStr(yyS[yypt-2].ident), HintData: model.NewCIStr(yyS[yypt-1].ident), } } case 23: { hs := yyS[yypt-1].hints name := model.NewCIStr(yyS[yypt-4].ident) qb := model.NewCIStr(yyS[yypt-2].ident) for _, h := range hs { h.HintName = name h.QBName = qb } parser.yyVAL.hints = hs } case 24: { parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint} } case 25: { parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint) } case 26: { h := yyS[yypt-1].hint h.HintData = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 27: { parser.yyVAL.ident = "" } case 31: { parser.yyVAL.modelIdents = nil } case 32: { parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents } case 33: { parser.yyVAL.modelIdents = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)} } case 34: { parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, model.NewCIStr(yyS[yypt-0].ident)) } case 36: { parser.yyVAL.hint = &ast.TableOptimizerHint{ QBName: model.NewCIStr(yyS[yypt-0].ident), } } case 37: { parser.yyVAL.hint = &ast.TableOptimizerHint{ Tables: []ast.HintTable{yyS[yypt-0].table}, QBName: model.NewCIStr(yyS[yypt-1].ident), } } case 38: { h := yyS[yypt-2].hint h.Tables = append(h.Tables, yyS[yypt-0].table) parser.yyVAL.hint = h } case 39: { parser.yyVAL.table = ast.HintTable{ TableName: model.NewCIStr(yyS[yypt-2].ident), QBName: model.NewCIStr(yyS[yypt-1].ident), PartitionList: yyS[yypt-0].modelIdents, } } case 40: { parser.yyVAL.table = ast.HintTable{ DBName: model.NewCIStr(yyS[yypt-4].ident), TableName: model.NewCIStr(yyS[yypt-2].ident), QBName: model.NewCIStr(yyS[yypt-1].ident), PartitionList: yyS[yypt-0].modelIdents, } } case 41: { h := yyS[yypt-0].hint h.Tables = []ast.HintTable{yyS[yypt-2].table} h.QBName = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 42: { parser.yyVAL.hint = &ast.TableOptimizerHint{} } case 44: { parser.yyVAL.hint = &ast.TableOptimizerHint{ Indexes: []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)}, } } case 45: { h := yyS[yypt-2].hint h.Indexes = append(h.Indexes, model.NewCIStr(yyS[yypt-0].ident)) parser.yyVAL.hint = h } case 52: { parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10) } case 53: { parser.yyVAL.number = 1024 * 1024 } case 54: { parser.yyVAL.number = 1024 * 1024 * 1024 } case 55: { parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true} } case 56: { parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: false} } } yyhintSetOffset(parser.yyVAL, parser.yyVAL.offset) if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) { return -1 } goto yystack /* stack new state and value */ }